From 84b422a120e769f39cbd665d7583967db274ba1e Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Fri, 8 Jan 2021 11:42:04 -0500
Subject: [PATCH 01/38] ui: Refactor AdvancedMultiSelect as a class

AdvancedMultiSelect can be broken up and composed of smaller, more
focused components. This commit refactors AdvancedMultiSelect from a
functional component to a class component.
---
 .../ui-components/AdvancedMultiSelect.js      | 162 ++++++++++--------
 1 file changed, 87 insertions(+), 75 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 9c1468d8d..38e52271e 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -1,5 +1,4 @@
-import React, {useState} from 'react';
-
+import React from "react";
 import {Card, Button, Form} from 'react-bootstrap';
 import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
 import {faCheckSquare} from '@fortawesome/free-solid-svg-icons';
@@ -22,14 +21,6 @@ function getSelectValuesAfterClick(valueArray, clickedValue) {
   }
 }
 
-function onMasterCheckboxClick(checkboxValue, defaultArray, onChangeFnc) {
-  if (checkboxValue) {
-    onChangeFnc([]);
-  } else {
-    onChangeFnc(defaultArray);
-  }
-}
-
 // Definitions passed to components only contains value and label,
 // custom fields like "info" or "links" must be pulled from registry object using this function
 function getFullDefinitionsFromRegistry(refString, registry) {
@@ -46,76 +37,97 @@ function getFullDefinitionByKey(refString, registry, itemKey) {
   return fullArray.filter(e => (e.enum[0] === itemKey))[0];
 }
 
-function setPaneInfo(refString, registry, itemKey, setPaneInfoFnc) {
-  let definitionObj = getFullDefinitionByKey(refString, registry, itemKey);
-  setPaneInfoFnc({title: definitionObj.title, content: definitionObj.info, link: definitionObj.link});
-}
-
 function getDefaultPaneParams(refString, registry) {
   let configSection = getObjectFromRegistryByRef(refString, registry);
   return ({title: configSection.title, content: configSection.description});
 }
 
-function AdvancedMultiSelect(props) {
-  const [masterCheckbox, setMasterCheckbox] = useState(true);
-  const {
-    schema,
-    id,
-    options,
-    value,
-    required,
-    disabled,
-    readonly,
-    multiple,
-    autofocus,
-    onChange,
-    registry
-  } = props;
-  const {enumOptions} = options;
-  const [infoPaneParams, setInfoPaneParams] = useState(getDefaultPaneParams(schema.items.$ref, registry));
-  getDefaultPaneParams(schema.items.$ref, registry);
-  const selectValue = cloneDeep(value);
-  return (
-    <div className={'advanced-multi-select'}>
-      <Card.Header>
-        <Button key={`${props.schema.title}-button`} value={value}
-                variant={'link'} disabled={disabled}
-                onClick={() => {
-                  onMasterCheckboxClick(masterCheckbox, schema.default, onChange);
-                  setMasterCheckbox(!masterCheckbox);
-                }}
-        >
-          <FontAwesomeIcon icon={masterCheckbox ? faCheckSquare : faSquare}/>
-        </Button>
-        <span className={'header-title'}>{props.schema.title}</span>
-      </Card.Header>
-      <Form.Group
-        style={{height: `${getComponentHeight(enumOptions.length)}px`}}
-        id={id}
-        multiple={multiple}
-        className='choice-block form-control'
-        required={required}
-        disabled={disabled || readonly}
-        autoFocus={autofocus}>
-        {enumOptions.map(({value, label}, i) => {
-          return (
-            <Form.Group
-              key={i}
-              onClick={() => setPaneInfo(schema.items.$ref, registry, value, setInfoPaneParams)}>
-              <Button value={value} variant={'link'} disabled={disabled}
-                      onClick={() => onChange(getSelectValuesAfterClick(selectValue, value))}>
-                <FontAwesomeIcon icon={selectValue.includes(value) ? faCheckSquare : faSquare}/>
-              </Button>
-              <span className={'option-text'}>
-                {label}
-              </span>
-            </Form.Group>
-          );
-        })}
-      </Form.Group>
-      <InfoPane title={infoPaneParams.title} body={infoPaneParams.content} link={infoPaneParams.link}/>
-    </div>
-  );
+class AdvancedMultiSelect extends React.Component {
+    constructor(props) {
+        super(props)
+        this.state = {masterCheckbox: true, infoPaneParams: getDefaultPaneParams(props.schema.items.$ref, props.registry)};
+        this.onMasterCheckboxClick = this.onMasterCheckboxClick.bind(this);
+    }
+
+    onMasterCheckboxClick() {
+        if (this.state.masterCheckbox) {
+            this.props.onChange([]);
+        } else {
+            this.props.onChange(this.props.schema.default);
+        }
+
+        this.toggleMasterCheckbox();
+    }
+
+    toggleMasterCheckbox() {
+        this.setState((state) => ({
+            masterCheckbox: !state.masterCheckbox
+        }));
+    }
+
+    setPaneInfo(refString, registry, itemKey) {
+        let definitionObj = getFullDefinitionByKey(refString, registry, itemKey);
+        this.setState({infoPaneParams: {title: definitionObj.title, content: definitionObj.info, link: definitionObj.link}});
+    }
+    render() {
+        const {
+            schema,
+            id,
+            options,
+            value,
+            required,
+            disabled,
+            readonly,
+            multiple,
+            autofocus,
+            onChange,
+            registry
+        } = this.props;
+        const {enumOptions} = options;
+        getDefaultPaneParams(schema.items.$ref, registry);
+        const selectValue = cloneDeep(value);
+        return (
+            <div className={'advanced-multi-select'}>
+                <Card.Header>
+                    <Button key={`${schema.title}-button`} value={value}
+                        variant={'link'} disabled={disabled}
+                        onClick={this.onMasterCheckboxClick}>
+                        <FontAwesomeIcon icon={this.state.masterCheckbox ? faCheckSquare : faSquare}/>
+                    </Button>
+                    <span className={'header-title'}>{schema.title}</span>
+                </Card.Header>
+                <Form.Group
+                    style={{height: `${getComponentHeight(enumOptions.length)}px`}}
+                    id={id}
+                    multiple={multiple}
+                    className='choice-block form-control'
+                    required={required}
+                    disabled={disabled || readonly}
+                    autoFocus={autofocus}>
+                    {
+                        enumOptions.map(({value, label}, i) => {
+                            return (
+                                <Form.Group
+                                    key={i}
+                                    onClick={() => this.setPaneInfo(schema.items.$ref, registry, value)}>
+
+                                    <Button value={value} variant={'link'} disabled={disabled}
+                                        onClick={() => onChange(getSelectValuesAfterClick(selectValue, value))}>
+
+                                        <FontAwesomeIcon icon={selectValue.includes(value) ? faCheckSquare : faSquare}/>
+                                    </Button>
+                                    <span className={'option-text'}>
+                                        {label}
+                                    </span>
+                                </Form.Group>
+                            );
+                        }
+                    )}
+                </Form.Group>
+                <InfoPane title={this.state.infoPaneParams.title} body={this.state.infoPaneParams.content} link={this.state.infoPaneParams.link}/>
+            </div>
+        );
+    }
 }
 
 export default AdvancedMultiSelect;

From af329d56d826a5092cb3a2535bf0de65bd14600f Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Fri, 8 Jan 2021 16:18:24 -0500
Subject: [PATCH 02/38] ui: Factor MasterCheckbox() out of AdvancedMultiSelect

---
 .../ui-components/AdvancedMultiSelect.js      | 33 ++++++++++++++-----
 1 file changed, 25 insertions(+), 8 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 38e52271e..b875a6426 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -42,6 +42,27 @@ function getDefaultPaneParams(refString, registry) {
   return ({title: configSection.title, content: configSection.description});
 }
 
+function MasterCheckbox(props) {
+    const {
+        title,
+        value,
+        disabled,
+        onClick,
+        checkboxState
+    } = props;
+
+    return (
+        <Card.Header>
+            <Button key={`${title}-button`} value={value}
+                variant={'link'} disabled={disabled}
+                onClick={onClick}>
+                <FontAwesomeIcon icon={checkboxState ? faCheckSquare : faSquare} />
+            </Button>
+            <span className={'header-title'}>{title}</span>
+        </Card.Header>
+    );
+}
+
 class AdvancedMultiSelect extends React.Component {
     constructor(props) {
         super(props)
@@ -69,6 +90,7 @@ class AdvancedMultiSelect extends React.Component {
         let definitionObj = getFullDefinitionByKey(refString, registry, itemKey);
         this.setState({infoPaneParams: {title: definitionObj.title, content: definitionObj.info, link: definitionObj.link}});
     }
+
     render() {
         const {
             schema,
@@ -88,14 +110,9 @@ class AdvancedMultiSelect extends React.Component {
         const selectValue = cloneDeep(value);
         return (
             <div className={'advanced-multi-select'}>
-                <Card.Header>
-                    <Button key={`${schema.title}-button`} value={value}
-                        variant={'link'} disabled={disabled}
-                        onClick={this.onMasterCheckboxClick}>
-                        <FontAwesomeIcon icon={this.state.masterCheckbox ? faCheckSquare : faSquare}/>
-                    </Button>
-                    <span className={'header-title'}>{schema.title}</span>
-                </Card.Header>
+                <MasterCheckbox title={schema.title} value={value}
+                    disabled={disabled} onClick={this.onMasterCheckboxClick}
+                    checkboxState={this.state.masterCheckbox} />
                 <Form.Group
                     style={{height: `${getComponentHeight(enumOptions.length)}px`}}
                     id={id}

From 878f959a8f697b05fa35e48221692278f1b8250d Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Mon, 11 Jan 2021 19:11:27 -0500
Subject: [PATCH 03/38] ui: Factor ChildCheckbox out of AdvancedMultiSelect

---
 .../ui-components/AdvancedMultiSelect.js      | 191 ++++++++++--------
 1 file changed, 107 insertions(+), 84 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index b875a6426..7507f234f 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -10,17 +10,6 @@ import {resolveObjectPath} from './utils/ObjectPathResolver';
 import InfoPane from './InfoPane';
 
 
-function getSelectValuesAfterClick(valueArray, clickedValue) {
-  if (valueArray.includes(clickedValue)) {
-    return valueArray.filter((e) => {
-      return e !== clickedValue;
-    });
-  } else {
-    valueArray.push(clickedValue);
-    return valueArray;
-  }
-}
-
 // Definitions passed to components only contains value and label,
 // custom fields like "info" or "links" must be pulled from registry object using this function
 function getFullDefinitionsFromRegistry(refString, registry) {
@@ -56,95 +45,129 @@ function MasterCheckbox(props) {
             <Button key={`${title}-button`} value={value}
                 variant={'link'} disabled={disabled}
                 onClick={onClick}>
-                <FontAwesomeIcon icon={checkboxState ? faCheckSquare : faSquare} />
+                <FontAwesomeIcon icon={checkboxState ? faCheckSquare : faSquare}/>
             </Button>
             <span className={'header-title'}>{title}</span>
         </Card.Header>
     );
 }
 
+function ChildCheckbox(props) {
+    const {
+        onPaneClick,
+        onClick,
+        value,
+        disabled,
+        label,
+        checkboxState
+    } = props;
+
+    return (
+        <Form.Group onClick={() => onPaneClick(value)}>
+            <Button value={value} variant={'link'} disabled={disabled} onClick={() => onClick(value)}>
+                <FontAwesomeIcon icon={checkboxState ? faCheckSquare : faSquare}/>
+            </Button>
+            <span className={'option-text'}>
+                {label}
+            </span>
+        </Form.Group>
+    );
+}
+
 class AdvancedMultiSelect extends React.Component {
-    constructor(props) {
-        super(props)
-        this.state = {masterCheckbox: true, infoPaneParams: getDefaultPaneParams(props.schema.items.$ref, props.registry)};
-        this.onMasterCheckboxClick = this.onMasterCheckboxClick.bind(this);
+  constructor(props) {
+    super(props)
+    this.state = {masterCheckbox: true, infoPaneParams: getDefaultPaneParams(props.schema.items.$ref, props.registry)};
+    this.onMasterCheckboxClick = this.onMasterCheckboxClick.bind(this);
+    this.onChildCheckboxClick = this.onChildCheckboxClick.bind(this);
+    this.setPaneInfo = this.setPaneInfo.bind(this, props.schema.items.$ref, props.registry);
+  }
+
+  onMasterCheckboxClick() {
+    if (this.state.masterCheckbox) {
+      this.props.onChange([]);
+    } else {
+      this.props.onChange(this.props.schema.default);
     }
 
-    onMasterCheckboxClick() {
-        if (this.state.masterCheckbox) {
-            this.props.onChange([]);
-        } else {
-            this.props.onChange(this.props.schema.default);
-        }
+    this.toggleMasterCheckbox();
+  }
 
-        this.toggleMasterCheckbox();
+  onChildCheckboxClick(value) {
+    this.props.onChange(this.getSelectValuesAfterClick(value));
+  }
+
+  getSelectValuesAfterClick(clickedValue) {
+    const valueArray = cloneDeep(this.props.value);
+
+    if (valueArray.includes(clickedValue)) {
+      return valueArray.filter((e) => {
+        return e !== clickedValue;
+      });
+    } else {
+      valueArray.push(clickedValue);
+      return valueArray;
     }
+  }
 
-    toggleMasterCheckbox() {
-        this.setState((state) => ({
-            masterCheckbox: !state.masterCheckbox
-        }));
-    }
+  toggleMasterCheckbox() {
+    this.setState((state) => ({
+      masterCheckbox: !state.masterCheckbox
+    }));
+  }
 
-    setPaneInfo(refString, registry, itemKey) {
-        let definitionObj = getFullDefinitionByKey(refString, registry, itemKey);
-        this.setState({infoPaneParams: {title: definitionObj.title, content: definitionObj.info, link: definitionObj.link}});
-    }
+  setPaneInfo(refString, registry, itemKey) {
+    let definitionObj = getFullDefinitionByKey(refString, registry, itemKey);
+    this.setState({infoPaneParams: {title: definitionObj.title, content: definitionObj.info, link: definitionObj.link}});
+  }
 
-    render() {
-        const {
-            schema,
-            id,
-            options,
-            value,
-            required,
-            disabled,
-            readonly,
-            multiple,
-            autofocus,
-            onChange,
-            registry
-        } = this.props;
-        const {enumOptions} = options;
-        getDefaultPaneParams(schema.items.$ref, registry);
-        const selectValue = cloneDeep(value);
-        return (
-            <div className={'advanced-multi-select'}>
-                <MasterCheckbox title={schema.title} value={value}
-                    disabled={disabled} onClick={this.onMasterCheckboxClick}
-                    checkboxState={this.state.masterCheckbox} />
-                <Form.Group
-                    style={{height: `${getComponentHeight(enumOptions.length)}px`}}
-                    id={id}
-                    multiple={multiple}
-                    className='choice-block form-control'
-                    required={required}
-                    disabled={disabled || readonly}
-                    autoFocus={autofocus}>
-                    {
-                        enumOptions.map(({value, label}, i) => {
-                            return (
-                                <Form.Group
-                                    key={i}
-                                    onClick={() => this.setPaneInfo(schema.items.$ref, registry, value)}>
+  render() {
+    const {
+      schema,
+      id,
+      options,
+      value,
+      required,
+      disabled,
+      readonly,
+      multiple,
+      autofocus,
+      onChange,
+      registry
+    } = this.props;
 
-                                    <Button value={value} variant={'link'} disabled={disabled}
-                                        onClick={() => onChange(getSelectValuesAfterClick(selectValue, value))}>
+    const {enumOptions} = options;
+    getDefaultPaneParams(schema.items.$ref, registry);
 
-                                        <FontAwesomeIcon icon={selectValue.includes(value) ? faCheckSquare : faSquare}/>
-                                    </Button>
-                                    <span className={'option-text'}>
-                                        {label}
-                                    </span>
-                                </Form.Group>
-                            );
-                        }
-                    )}
-                </Form.Group>
-                <InfoPane title={this.state.infoPaneParams.title} body={this.state.infoPaneParams.content} link={this.state.infoPaneParams.link}/>
-            </div>
-        );
-    }
+    return (
+      <div className={'advanced-multi-select'}>
+        <MasterCheckbox title={schema.title} value={value}
+          disabled={disabled} onClick={this.onMasterCheckboxClick}
+          checkboxState={this.state.masterCheckbox}/>
+        <Form.Group
+          style={{height: `${getComponentHeight(enumOptions.length)}px`}}
+          id={id}
+          multiple={multiple}
+          className='choice-block form-control'
+          required={required}
+          disabled={disabled || readonly}
+          autoFocus={autofocus}>
+          {
+            enumOptions.map(({value, label}, i) => {
+              return (
+                <ChildCheckbox key={i} onPaneClick={this.setPaneInfo}
+                onClick={this.onChildCheckboxClick} value={value}
+                disabled={disabled} label={label} checkboxState={this.props.value.includes(value)}/>
+              );
+            }
+          )}
+        </Form.Group>
+        <InfoPane title={this.state.infoPaneParams.title}
+          body={this.state.infoPaneParams.content}
+          link={this.state.infoPaneParams.link}/>
+      </div>
+    );
+  }
 }
 
 export default AdvancedMultiSelect;

From 19bc09196f22e6c1f65e3fd9190c894c4d621a20 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Mon, 11 Jan 2021 20:24:50 -0500
Subject: [PATCH 04/38] ui: Enable mixed-state behavior for master checkbox in
 AdavncedMultiSelect

The AdvancedMultiSelect should adhere to some set of human interface
guidelines. In the absence of a formal, agreed upon set of guidelines
for Infection Monkey, this commit uses KDE's guidelines for checkboxes:
https://hig.kde.org/components/editing/checkbox.html

When child checkboxes are not all checked, the master checkbox displays
a mixed-state icon, instead of a checked icon. Clicking the mixed-state
icon checks all child checkboxes. Clicking an unchecked master checkbox
also enables all child checkboxes.

In the past, clicking an unchecked master checkbox checked only the
*default* child checkboxes. While this may seem desirable so that unsafe
exploits do not accidentally get selected by the user, it will confuse
and frustrate users, as master/child checkboxes do not normally function
this way. If there is concern that users may unknowingly select unsafe
exploits/options, we should pop up a warning to inform the user when the
config is saved/submitted.

Issue #891
---
 .../ui-components/AdvancedMultiSelect.js      | 60 ++++++++++++++-----
 1 file changed, 44 insertions(+), 16 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 7507f234f..db759b013 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -2,6 +2,7 @@ import React from "react";
 import {Card, Button, Form} from 'react-bootstrap';
 import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
 import {faCheckSquare} from '@fortawesome/free-solid-svg-icons';
+import {faMinusSquare} from '@fortawesome/free-solid-svg-icons';
 import {faSquare} from '@fortawesome/free-regular-svg-icons';
 import {cloneDeep} from 'lodash';
 
@@ -9,6 +10,12 @@ import {getComponentHeight} from './utils/HeightCalculator';
 import {resolveObjectPath} from './utils/ObjectPathResolver';
 import InfoPane from './InfoPane';
 
+const MasterCheckboxState = {
+  NONE: 0,
+  MIXED: 1,
+  ALL: 2
+}
+
 
 // Definitions passed to components only contains value and label,
 // custom fields like "info" or "links" must be pulled from registry object using this function
@@ -40,12 +47,19 @@ function MasterCheckbox(props) {
         checkboxState
     } = props;
 
+    var newCheckboxIcon = faCheckSquare;
+
+    if (checkboxState == MasterCheckboxState.NONE)
+      newCheckboxIcon = faSquare;
+    else if (checkboxState == MasterCheckboxState.MIXED)
+      newCheckboxIcon = faMinusSquare;
+
     return (
         <Card.Header>
             <Button key={`${title}-button`} value={value}
                 variant={'link'} disabled={disabled}
                 onClick={onClick}>
-                <FontAwesomeIcon icon={checkboxState ? faCheckSquare : faSquare}/>
+                <FontAwesomeIcon icon={newCheckboxIcon}/>
             </Button>
             <span className={'header-title'}>{title}</span>
         </Card.Header>
@@ -77,42 +91,57 @@ function ChildCheckbox(props) {
 class AdvancedMultiSelect extends React.Component {
   constructor(props) {
     super(props)
-    this.state = {masterCheckbox: true, infoPaneParams: getDefaultPaneParams(props.schema.items.$ref, props.registry)};
+    this.state = {
+      masterCheckboxState: this.getMasterCheckboxState(props.value),
+      infoPaneParams: getDefaultPaneParams(props.schema.items.$ref, props.registry)
+    };
     this.onMasterCheckboxClick = this.onMasterCheckboxClick.bind(this);
     this.onChildCheckboxClick = this.onChildCheckboxClick.bind(this);
     this.setPaneInfo = this.setPaneInfo.bind(this, props.schema.items.$ref, props.registry);
   }
 
   onMasterCheckboxClick() {
-    if (this.state.masterCheckbox) {
-      this.props.onChange([]);
-    } else {
-      this.props.onChange(this.props.schema.default);
+    var newValues = this.props.options.enumOptions.map(({value}) => value);
+
+    if (this.state.masterCheckboxState == MasterCheckboxState.ALL) {
+      newValues = [];
     }
 
-    this.toggleMasterCheckbox();
+    this.props.onChange(newValues);
+    this.setMasterCheckboxState(newValues);
   }
 
   onChildCheckboxClick(value) {
-    this.props.onChange(this.getSelectValuesAfterClick(value));
+    var selectValues = this.getSelectValuesAfterClick(value)
+    this.props.onChange(selectValues);
+
+    this.setMasterCheckboxState(selectValues);
   }
 
   getSelectValuesAfterClick(clickedValue) {
     const valueArray = cloneDeep(this.props.value);
 
     if (valueArray.includes(clickedValue)) {
-      return valueArray.filter((e) => {
-        return e !== clickedValue;
-      });
+      return valueArray.filter(e => e !== clickedValue);
     } else {
       valueArray.push(clickedValue);
       return valueArray;
     }
   }
 
-  toggleMasterCheckbox() {
-    this.setState((state) => ({
-      masterCheckbox: !state.masterCheckbox
+  getMasterCheckboxState(selectValues) {
+    if (selectValues.length == 0)
+      return MasterCheckboxState.NONE;
+
+    if (selectValues.length != this.props.options.enumOptions.length)
+      return MasterCheckboxState.MIXED;
+
+    return MasterCheckboxState.ALL;
+  }
+
+  setMasterCheckboxState(selectValues) {
+    this.setState(() => ({
+      masterCheckboxState: this.getMasterCheckboxState(selectValues)
     }));
   }
 
@@ -132,7 +161,6 @@ class AdvancedMultiSelect extends React.Component {
       readonly,
       multiple,
       autofocus,
-      onChange,
       registry
     } = this.props;
 
@@ -143,7 +171,7 @@ class AdvancedMultiSelect extends React.Component {
       <div className={'advanced-multi-select'}>
         <MasterCheckbox title={schema.title} value={value}
           disabled={disabled} onClick={this.onMasterCheckboxClick}
-          checkboxState={this.state.masterCheckbox}/>
+          checkboxState={this.state.masterCheckboxState}/>
         <Form.Group
           style={{height: `${getComponentHeight(enumOptions.length)}px`}}
           id={id}

From 701d9383308f4e9d74fad68b19fa57529ebb81f4 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Tue, 12 Jan 2021 15:14:29 -0500
Subject: [PATCH 05/38] ui: refactor AdvancedMultiSelect.js for readability and
 flow

---
 .../ui-components/AdvancedMultiSelect.js      | 236 +++++++++---------
 1 file changed, 118 insertions(+), 118 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index db759b013..c418a20c6 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -16,6 +16,10 @@ const MasterCheckboxState = {
   ALL: 2
 }
 
+function getFullDefinitionByKey(refString, registry, itemKey) {
+  let fullArray = getFullDefinitionsFromRegistry(refString, registry);
+  return fullArray.filter(e => (e.enum[0] === itemKey))[0];
+}
 
 // Definitions passed to components only contains value and label,
 // custom fields like "info" or "links" must be pulled from registry object using this function
@@ -28,16 +32,121 @@ function getObjectFromRegistryByRef(refString, registry) {
   return resolveObjectPath(refArray, registry);
 }
 
-function getFullDefinitionByKey(refString, registry, itemKey) {
-  let fullArray = getFullDefinitionsFromRegistry(refString, registry);
-  return fullArray.filter(e => (e.enum[0] === itemKey))[0];
-}
-
 function getDefaultPaneParams(refString, registry) {
   let configSection = getObjectFromRegistryByRef(refString, registry);
   return ({title: configSection.title, content: configSection.description});
 }
 
+class AdvancedMultiSelect extends React.Component {
+  constructor(props) {
+    super(props)
+
+    this.state = {
+      masterCheckboxState: this.getMasterCheckboxState(props.value),
+      infoPaneParams: getDefaultPaneParams(props.schema.items.$ref, props.registry)
+    };
+
+    this.onMasterCheckboxClick = this.onMasterCheckboxClick.bind(this);
+    this.onChildCheckboxClick = this.onChildCheckboxClick.bind(this);
+    this.setPaneInfo = this.setPaneInfo.bind(this, props.schema.items.$ref, props.registry);
+  }
+
+  onMasterCheckboxClick() {
+    let newValues = this.props.options.enumOptions.map(({value}) => value);
+
+    if (this.state.masterCheckboxState == MasterCheckboxState.ALL) {
+      newValues = [];
+    }
+
+    this.props.onChange(newValues);
+    this.setMasterCheckboxState(newValues);
+  }
+
+  onChildCheckboxClick(value) {
+    let selectValues = this.getSelectValuesAfterClick(value)
+    this.props.onChange(selectValues);
+
+    this.setMasterCheckboxState(selectValues);
+  }
+
+  getSelectValuesAfterClick(clickedValue) {
+    const valueArray = cloneDeep(this.props.value);
+
+    if (valueArray.includes(clickedValue)) {
+      return valueArray.filter(e => e !== clickedValue);
+    } else {
+      valueArray.push(clickedValue);
+      return valueArray;
+    }
+  }
+
+  setMasterCheckboxState(selectValues) {
+    this.setState(() => ({
+      masterCheckboxState: this.getMasterCheckboxState(selectValues)
+    }));
+  }
+
+  getMasterCheckboxState(selectValues) {
+    if (selectValues.length == 0) {
+      return MasterCheckboxState.NONE;
+    }
+
+    if (selectValues.length != this.props.options.enumOptions.length) {
+      return MasterCheckboxState.MIXED;
+    }
+
+    return MasterCheckboxState.ALL;
+  }
+
+  setPaneInfo(refString, registry, itemKey) {
+    let definitionObj = getFullDefinitionByKey(refString, registry, itemKey);
+    this.setState({infoPaneParams: {title: definitionObj.title, content: definitionObj.info, link: definitionObj.link}});
+  }
+
+  render() {
+    const {
+      schema,
+      id,
+      options,
+      value,
+      required,
+      disabled,
+      readonly,
+      multiple,
+      autofocus,
+      registry
+    } = this.props;
+
+    const {enumOptions} = options;
+    getDefaultPaneParams(schema.items.$ref, registry);
+
+    return (
+      <div className={'advanced-multi-select'}>
+        <MasterCheckbox title={schema.title} value={value}
+          disabled={disabled} onClick={this.onMasterCheckboxClick}
+          checkboxState={this.state.masterCheckboxState}/>
+        <Form.Group
+          style={{height: `${getComponentHeight(enumOptions.length)}px`}}
+          id={id} multiple={multiple} className='choice-block form-control'
+          required={required} disabled={disabled || readonly} autoFocus={autofocus}>
+          {
+            enumOptions.map(({value, label}, i) => {
+              return (
+                <ChildCheckbox key={i} onPaneClick={this.setPaneInfo}
+                onClick={this.onChildCheckboxClick} value={value}
+                disabled={disabled} label={label} checkboxState={this.props.value.includes(value)}/>
+              );
+            }
+          )}
+        </Form.Group>
+        <InfoPane title={this.state.infoPaneParams.title}
+          body={this.state.infoPaneParams.content}
+          link={this.state.infoPaneParams.link}/>
+      </div>
+    );
+  }
+}
+
 function MasterCheckbox(props) {
     const {
         title,
@@ -47,12 +156,13 @@ function MasterCheckbox(props) {
         checkboxState
     } = props;
 
-    var newCheckboxIcon = faCheckSquare;
+    let newCheckboxIcon = faCheckSquare;
 
-    if (checkboxState == MasterCheckboxState.NONE)
+    if (checkboxState == MasterCheckboxState.NONE) {
       newCheckboxIcon = faSquare;
-    else if (checkboxState == MasterCheckboxState.MIXED)
+    } else if (checkboxState == MasterCheckboxState.MIXED) {
       newCheckboxIcon = faMinusSquare;
+    }
 
     return (
         <Card.Header>
@@ -88,114 +198,4 @@ function ChildCheckbox(props) {
     );
 }
 
-class AdvancedMultiSelect extends React.Component {
-  constructor(props) {
-    super(props)
-    this.state = {
-      masterCheckboxState: this.getMasterCheckboxState(props.value),
-      infoPaneParams: getDefaultPaneParams(props.schema.items.$ref, props.registry)
-    };
-    this.onMasterCheckboxClick = this.onMasterCheckboxClick.bind(this);
-    this.onChildCheckboxClick = this.onChildCheckboxClick.bind(this);
-    this.setPaneInfo = this.setPaneInfo.bind(this, props.schema.items.$ref, props.registry);
-  }
-
-  onMasterCheckboxClick() {
-    var newValues = this.props.options.enumOptions.map(({value}) => value);
-
-    if (this.state.masterCheckboxState == MasterCheckboxState.ALL) {
-      newValues = [];
-    }
-
-    this.props.onChange(newValues);
-    this.setMasterCheckboxState(newValues);
-  }
-
-  onChildCheckboxClick(value) {
-    var selectValues = this.getSelectValuesAfterClick(value)
-    this.props.onChange(selectValues);
-
-    this.setMasterCheckboxState(selectValues);
-  }
-
-  getSelectValuesAfterClick(clickedValue) {
-    const valueArray = cloneDeep(this.props.value);
-
-    if (valueArray.includes(clickedValue)) {
-      return valueArray.filter(e => e !== clickedValue);
-    } else {
-      valueArray.push(clickedValue);
-      return valueArray;
-    }
-  }
-
-  getMasterCheckboxState(selectValues) {
-    if (selectValues.length == 0)
-      return MasterCheckboxState.NONE;
-
-    if (selectValues.length != this.props.options.enumOptions.length)
-      return MasterCheckboxState.MIXED;
-
-    return MasterCheckboxState.ALL;
-  }
-
-  setMasterCheckboxState(selectValues) {
-    this.setState(() => ({
-      masterCheckboxState: this.getMasterCheckboxState(selectValues)
-    }));
-  }
-
-  setPaneInfo(refString, registry, itemKey) {
-    let definitionObj = getFullDefinitionByKey(refString, registry, itemKey);
-    this.setState({infoPaneParams: {title: definitionObj.title, content: definitionObj.info, link: definitionObj.link}});
-  }
-
-  render() {
-    const {
-      schema,
-      id,
-      options,
-      value,
-      required,
-      disabled,
-      readonly,
-      multiple,
-      autofocus,
-      registry
-    } = this.props;
-
-    const {enumOptions} = options;
-    getDefaultPaneParams(schema.items.$ref, registry);
-
-    return (
-      <div className={'advanced-multi-select'}>
-        <MasterCheckbox title={schema.title} value={value}
-          disabled={disabled} onClick={this.onMasterCheckboxClick}
-          checkboxState={this.state.masterCheckboxState}/>
-        <Form.Group
-          style={{height: `${getComponentHeight(enumOptions.length)}px`}}
-          id={id}
-          multiple={multiple}
-          className='choice-block form-control'
-          required={required}
-          disabled={disabled || readonly}
-          autoFocus={autofocus}>
-          {
-            enumOptions.map(({value, label}, i) => {
-              return (
-                <ChildCheckbox key={i} onPaneClick={this.setPaneInfo}
-                onClick={this.onChildCheckboxClick} value={value}
-                disabled={disabled} label={label} checkboxState={this.props.value.includes(value)}/>
-              );
-            }
-          )}
-        </Form.Group>
-        <InfoPane title={this.state.infoPaneParams.title}
-          body={this.state.infoPaneParams.content}
-          link={this.state.infoPaneParams.link}/>
-      </div>
-    );
-  }
-}
-
 export default AdvancedMultiSelect;

From 819e1778c854c36171f25bf862cdcccbc29e4e70 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Tue, 12 Jan 2021 15:25:23 -0500
Subject: [PATCH 06/38] docs: Update network-breach.PNG with mixed-state
 Exploiters checkbox

---
 .../images/usage/use-cases/network-breach.PNG | Bin 88525 -> 103676 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/docs/static/images/usage/use-cases/network-breach.PNG b/docs/static/images/usage/use-cases/network-breach.PNG
index 5dfd38ffbbf2471af19e874cd63e75664e4ec8cb..871a36bb67f258057fa58868052b4c0ed443e780 100644
GIT binary patch
literal 103676
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%0DaZs4rvhCV$4q((<!&I&w)9L{
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
U(2hfm9=@WYsG*Q2_t5jd092aGr~m)}

literal 88525
zcmc$FcQ~8h-+w<{s?{M>t5%H|wP~w%2V&IhP-;}|+I!PhRqZ0gRzY<bwKt_INJv8~
z)JTmCHG&`_lKi6mJkQg9pXdMIeO)fseRH4tocB7f_xt@iaVAEf<44aO-M4SwaXnov
zvwiyxo9^3p;P8>d%qI^mpk>To|M;1KuJ5ZH;$2|g9CW^Bcx~Ul>Xc)<c88evtlqj7
ze*5;F__X))56tV0!@hltQa!C}w}Wk#XeYt9H}i?Knw5~1Nk1obKhM#865>-HX<pgR
zF^^?P1^>9Q(5{sDU{&r@){(g3UiKFYsi(e{fOv0T2M9U6!alR{IDB0AENix0-Qk1z
znWr+cPh30uC7A~5F)O-Oa@^y9<<pm*Y-?dr7+Tqmd23|ryFdo<9oY?Ad;QLGyBoUl
zg8Nok6jjN{=A78GQ)VYZ@cBUpnX}%z;<e+hACbs4f&RYTr~4ETbIR;;k=8%IAG|yW
zJSte?em!pg@B8zt`kdEw$DaZAmd(7b0>I+WUe>Sz_k_p19*c;Z9uaip(C7SpzfaEu
zdg}UsC|La8`?ObDg3rK);!FYmx<s!1|C)eKbAoH?EkhyD<@h#%NtQPT>bTl!gZa(S
zRB*;z1<sE{>cFoV${qZ7Nnn(yv~QiwJeFHXdai=}sG~2eOGw-c(xPRCBRz;n@w3-Z
zl|{$5jc}Cz7O!0Jf4}+q+petTE0;&nFw@bY6@|i-RYm#!-H@Wb_m^-C$qJ<YSrWHO
z!HK&)eFS#ph9LpLjl1UF0>8d*FYvDl6!fiE0Ll*S=F7*s4v62+-tYLdFBMElJV=g}
zDb=1XKjX@(p;&=Kq8#PglJ9Ot#M-u)&6{`8evOjo^Gi|vA0XnPX-avmGn<D~)0vBB
z+0OkA3kY-K@yhYw!;Cf3zD@~wvA`3xw^;A#gEfd{yGVqfUwDnq143USw~%ZuS=~{C
zMeM%zP{shZ91%2!ec(UL1B<3Uv{FbBP=H}Ck#^*tBEm-bBQHn$%bojWCno292_k()
z+LTx9^zufTcvCr~)7Kpi&k!nmitQC@)e70X>g~+E_+4;)U1X6atx)Q%_r5Wcr3$vo
zsEVc@wc{K(vdFH?n~f&8ub%oX7v5iTQ4oTVe(EK(-B}zfd^az~9d)O$HUDzH$%Gp0
zo@SgoMEtFSjH$oFXGz6!a&TH-5f-<-v<^~m^*=Z~6B7Zc8R#ij!d2aK)_~8HPT9y;
zowkR?fGI1ZS!Cp{`ezZw-nSkDuK%*qL_(f8j0?9if_esN4Ot%OyS!uClXw>_F0>%(
zR)S*lyJ@K{b10?R$|!-iTGKq}jHa)Boyx=)a%ftl=C4Wbd%o}Ytf4^tGW&}IMSNY+
z+TJz;aQE8VW55B_e$oRl^cc&|G-mW%>PQ#u(B_Mhr@j>d_THGYfwL<e$ZO8t0y;xL
z5@o=A{+ExM9R4j^c4<=;9F@8jACR_P8Y4txNjU?s8CW!_xP;b^OV*NTWIqB)Asd!V
z7dDF+9rk;{`~CE!{PXd`1Nz`pY*L~^A^dte^_Rt)%>MU?ZRwvx%T78F(bYm?`;8BY
zji)r4LBTmslDk<!${F2`U(C9Ez9hZ|VB3W{%Sxec_Lw|XtGmbdmTH3gbChcfc1RC1
z1mOwXZViA4S$p)sGs*z$uRlM3qSkm*lxMJTa4Uh2onx4lWPB;k|B5I><FxyIu^VVT
zVuI-#EoJA1;%ZrG&S`T5>xyCp{n=8BZI#js{~Y^M`P7}7<{OPc@=X;R0nd?s1LYjU
zaNZd51l3=@scI~aj!}Y%hfm2$6ES(Bc5!A){hkr|#4NI!8b1g@Erkg$IOb|xS&2$E
z(kURPH7|RF<@e>XYTOSkKN$-XLW)qf!T>s&30^tmrhB1m{`tZ?d~(X3^zebU0`IWU
z@Z=m?lycTQ1Dj<)48a^A@dt8U+1d#wX4~(+wrI$jD}rqql9UIP8@eJFgSM`F+ve5c
zf`hA!JLhmnr*BU;+6^o)+J?gl2Au~&Z$>)OJMR^5Dzfeg@G&zoK9`nN-wN|xY}3q)
zk3TBA<J^v{mlC{@nks1;s%3+UID(U7l^w*E>dfaw1(mOgP-b3zAP~J4gD$<OGbG$s
zlAP1FxlBDBHa*hz+<sB(#GSahXOIGg5a5{Dw`Nr5uJLG~p(O-A?)g#1G#SLzAjT6^
zI>i)>ZLM2j8)1I=uKarPcog3En&sdc>o_$x{YQjMZ>k%0l;>xvhzdIm)k@VlJMWOz
zdD7?5mqUK#HcCXtFcYa~%ItahXpV27CHS`(c^KmkNjYv}C9JhZ^A^pp1NmgxkVNm{
zkIri2;=I^-!l+lk#zo`gXplr`zohzT%jA0;b;{D!10L>a^|{Q`{MbopkEMvk4+D=I
z5p!GimBfxrcCT#WTT+<kO4w9eauazbuj3>tVD@2#6)_hXvl6yJJRF9ZOB_Xt><Mxo
zmp-S0RLFb>BTK><>UxjFG8AxxdnwT>Zuqp-Q%SYv=|^<u<@?hHp_?ywM>*0(XY_7S
z4@SxZ;|tz|ORHIUHH_R9p7sh`WS!1SM>{p!9uhlW%lks=jFvHfp>Z5<yrlEfx*T)?
zQ3+3K7xnrYtNa`m-K?pA;wbm&9QPXSZ*!`hv?GNE)IBL!@@OP~Yoo6MEJGExw^eGZ
zQtgL5nejxXl3fgsXsKc$O}SW}iO&<Cov((KyG5Po=IFdJ(?&tm$5g?2Q*Pky{dE5E
z^3LotS4DE`^!pD8xW2c-RLAZut66<$<7QTFgl|Q<NQ}NXji2|#vEwA}FZQpBOWW3k
zc6M<Q;qY*qX?bF42XZEisCHOXEE;yB`m^nJ&{eI;_35B4x>T$WSl+UrhwJ%WvulE!
zrND<M;tjbAMtn+9DNUIY8$ly3^qaqsz=I+!!5jR19<vvWm)h385>?PZ2RTJwpuS1Y
zSf>Qz`DX4&>_eH;C6QC}vc<*cyD>Qp$6^Wn6TIp|Z-4aoz^|uP`g?a`2VIm?oqb8Q
zt-EM|%mmkx0lZ$QDi`e|Dt=~K9`2ZNS`;MIS>Yx5`fQEy#l~+qflKK}ldB5C)deO!
zR3DudK%uUlIpNUR>&<yR4-uKYEYf__WHinXrnlDhu(RL>k6%hGy@CEd6*HgG8lI8t
zA3Q=Iq)QG`dHLN)I{`!dRaOcU;Um1%^7JvBqOZzWGCYK2f#f9%C4)xSMMK1{Hg>S=
zPy&}@3;a(uo^EVkRm}=m*SO+J^zG+OFt31<>vQlgiYGL@I+U`Pb2g2#X^~T=7YL=8
zB~#99B2t7Dj`J(U+>nlx`AIz`eGY*+K+z~GTb?@=BG5*@YriG=Q<_Rl-A}~aqx>sZ
z6X;7pq_r*G;k8sY?F_@PAd*0CClr375~+*ESN@gqz&}v}O90@amSaJB&P<#hRg12-
z=-^lsBB#&^w2|<=(1Zl;@Jwwvwm_GZtv8f*ZaG<?Cl5hVa?$P{iWqF>(F}2XMS5kZ
zMQu1_hBd{w10|as;`CGt^n_QDsJDG@vVX#)$-SrsI1nk2&|H4MvqbyEq0VKmGd{{o
zY1iyW<M_DkZOW`|>axfy6<J6-|7Y4oNH?5Wz#*gV*d>Dr?8KG?>H8<_deZKN9d&uw
z`C6+d5%rz-KU?`C3P^-El|11v|H^_74sn_CD)I9##~a?u-9{0ErcI5v$fLX|;h0PJ
zM}vMLEShrfm@{C{jZL=1P5WNr{q9;kv~4k9@J@HSOba+y+~_lL=+OtSmROIL+9xN}
zSy1t6)e{_uQUJv;i2BT>gX8gxIG5p-LVYQ9J6DKsh!NXF45$MI{P}E?XI6T%EB^#V
zA6z#cL_D~#-L3uEana$?G`u8x&gqOAYHpjJ+yPrMID<XXIFf>KX|(lA3%Q-vmv}-B
zwo(x;Hk4$0Upqr|>se>S62h&I+VTnM{j$kGFXpfrv?qB$f%?N5U<{GGeOJ2!QZ2T;
z3@!Q?<{V{9%19TaUUH>`bkliRU>#Wsq6SZpVO(M3B83L6TK%=t_o%<^VSpcalzZLf
z8Xyz6Y0C)4MbZ?R4~7!&#Q}`&@wd}EA^=kXz9wR!qp<HnodKQ<(SQy!LB*Vh;hyp{
zX_r)bMLZw6gmoUHaW%GAQH*wbGsLsuvDxTVoeNEhDTuyYwa>9O-|_7qvRKndDoY#{
zAx2xzVNw|2_$*sU9JF)I%cC=k{m_;cxw@EDNUZ!=2A`gW>;VbWhnjOZRe;Pbgiiy=
z^7D#UYRr=w1MoxKj}NxDhR733NJ(5+MBR&Jt?>!IYJekKr06fS;+O)6aaezkj|6r2
z!NlfAL!y?n8Rg{WOhZ7cRP)X|iRr*gJNQ+4SC$ohm&DNFSDZjabcW4{IpWDtm{#WQ
zCxP5se1TR{K{>poJaMka_8!x2!^Rdr7l7-HFW_41k_XjNtfhK9!kYBKwW?1k$9i*N
z#}b3r#>8C2vd{{jdOCPb3Yv}zhjAKCR<9a0omu1Al(7KnR})S5Z&l0s>(!Xt+m7+!
z;@EPAuQex~TLYA4rBk`WqUPeY!g6DDV%SQw;vx)bCL4jv<i;0s8Kyn*+zEwxdp3G?
zyjV-nX3Kr|-rcu$AiS(k#Vz-`zATNwc8{c?B!w?E!k!GgwWg~{{CTr;+|__m`;N|&
z%3_O4>2y&GN4;RPFFx156omcwmX%&(LE;d(!v3hxB}tXt@~a;1am4UNOlhLRMB8v-
zE7rfsrutC4T_^6YAL7=gcCQ-5ZH1HS>!K2L<96`Ehc=SRyqy3nJUyKZQSSuFixJhg
z@Vz}DPnCDwAH|DDEupi6WKI-gfchQSW%TWyNktSAnqEIB0@R=GCmy(A1I;3S)y)vM
zU;B+l#KXYiJ(Ao|Y&4&=*mUsEp!`LyT+j+NWyr&ALmsX2S%)lLxo?<|CsnzrOL5$D
z$Y=SBJ*DbTnj^+5+aPflW*thcZA6rr3$l`WttH`~hMrCd7c*3xxX6gQY$kI$tma!}
z<#n-!gkk%^(wQqo{6otoE;d<Lwsg-7J}5-gW6Ge$_a?-O4UZOlkeRK`m?tSPCp&)$
zn=c95S<;p*hLpY_KIoG%jpyE!%K{E)lfu2SX{rv%DN64QZV|>TVUj5Fn-}&9T$<^7
zs(M@lio0GT(^!h4=t0R-WOSi-<$d>Aonk_SPqB$j=n^@;1p!&fZC9TP3ghP*yb2n5
zIo$UmLwrWh6y4wAJ<TCI8n@%k|9GyFqXTxVaGp02fPFcx1Q8KCZ~Toco$Iw9kGMR@
zV8VuSnt*^Guh8LkEqR6X2e}SOLPv}nWI01Ln<U>79OL6P-ddG(U9nqMTVXZ6=Zrfm
zadCh5*)+iCz6<3zm~1Yk?QTxQp!p+<m}`?RA51z8z>$eYEe>0he9_vZbE%`O5y**0
z8fDq6BogAxeDyR2bq~r${-2<!dw0eg4bjYQwmp`(8p*d{S2a@Dq*FZ469e_j<y6%F
z%pda*BC})JP0em9aM5|K#cJFD%b#Da7L`+46HU`tu@$|r<>1UN##XEULP*AoqsG{`
z*U+-CL`!1ppl_X)>5Su-wt3|>zJbs|I5jA)LY$grQ<-`_mShDje_3u&>59<6t2gJz
zX8ME<PZl_LM;6BCM+q&~o(@ue|4ghrol`j5@mN0LBxkz^NnOo-FlFRnW)wUeDRbzg
z?PbiT#%|<0i<RIal=f(t`5QJuP@GxM+R=O^%s0p~C2FJgLGp}`A4A*vqZ$!DV;?iE
zxJX;}iZi?UkLq2GKUA&H$@iIkx=Q$3H#Oi{Y`am^LoeCHX^7YOLw#`5^0@GAanl!0
z4ot(Hw<$;u*m7Y}|7SaJbz-$zjIcZl#67bcJpwt{=|SsF?AV-@k-cOEjPDpS|AaZK
z<a%kschDM8b1daru6@ta4P2THIzI2j%2s6h6f*-~rVs4uguiTq<O~S&y4szwg}Ie`
z<l39xe#^-fobwMjxFIq_T-)6oIKJiR=YFf}NL3RPPfp%JgvrJ0gW))Jc%p)Q6;dWv
zp`2X)Kt9dE;yydfLF&(tYTaT03UFaBB9#zImS$+@&@D0ReL-|N68@n9XL}oD$R3&^
zCT-dsHy_Ztb>ws_uMjpjRl>BJBOydb$02`LKz0}^wrn^ZFCl*$C-PuYoP*j^tT*{4
zO={*1w_$-P`%t&=^N9V*7+~{kLr52|CN-dk_PiCQk?n5w)lKH9weN!7>MCtO)mbOC
zn_b$@a?lSe8J|~99@OZyfE<&oS*?aQjsaw6^tKSr^)K|M6yc)MrtxPz0tA8U18h;8
z1B;7VHkYG3ze!!3kca)ue>jl-^3GYdaco=scBBL~Eu@OAH!O3NHuxb~&noUOA3ka%
zCD2>%+3~DY?}|i3HE<wkg}`&o3}Gd@wKWT^Le<MiR3+-hrAg=>&EqtRDdu}xH;QLS
zFC&gTR}+@$4!P4dX}vwaOI6*;MCLGrp`FZ_Xevo*aP_(YFD(w)l3u)YCIrxOs&#&t
zqYlQk6SYEolllg|1eeQhdsHCXU)rZ2hAJ+M(S6Gq_H+u+ahVTwiW;y$WL*@BPmP3#
zAIe0hlU1r)lATlpCY8?Lwfpj@A>SC6l_PS&G`@|kkVbnEmLgk*h&&7zkuU{Vb5*?n
zIR2^KU{p=_9gQ)c3W%&qSzP5AF5qXdc;J)SP_=V>^$%r<N7Dz=<%G?k&%~PQIs5VE
zqh9H5N0Xp^;1i-gkf~5iM+ro48k40op?gS-w5jFSK@s1%56xp+@$0wJk#fr2TKuLg
zY1GSk_Dp&AjS<U{AXXWOfs<<4I#_|<&s_mxocp6NQJ`-ZXd0^g8X^qLq4!3}i&fR?
z{JbI)01lv(NDlhI6<hkJ?_R**t2&t|A^)WkQQJx6_M~I3kj-%jQW5%UWXJRLxl3jj
zYxBKxePEm6a_hj_JiWR+HR3&4Qck>-X^l?Ml@84of!HNIoNy_ULI~=YF-5q+Rl7O{
zRYWPtq^zCanCNQU^>P<Gd14D=R!Zn%%+cejff5{*&bF7OZeC$;%M=WfUCKS8k=Sm?
zhXU}K);Q0>d`DS}tAPC)>BGoXh`9Q&QW?mDo*n?XUy(lJ#D|~n|3`hHK)K&Fjo8?n
zGDN&@1oCNXfy>)I9Y-p4V-XCzv<{+XOKaPU>q^%nBxP+6JPl}s@YfFJL5s}h@7<)N
zUh>se>}p#%?AIAW_ro<$D>4|bn<K7-58e@Sei|_M%rE&Fcez1Kj7-*Yy*5ZV8?Sa+
zy~|@kp-PaHjl%M2TMzl<+S!DeufEcj4LB`Bt{M02K>j?`n)hD5F`8;!qk#_5F??IT
zAF*U$rF^yqWKIYYT^Tm9C}bfuheX7NbPoFPed+gWb@`Ho4(#DQGqoZ?Qn5J+GA68D
zCOdDDEK}!jYw1n`C$eEsvEAY-3EQqy11i1eYON!Z#0E(n=fZn8)zx`5Jd-{21x}Jj
z)+k6$WzkSd?Hmh&EV{kId#SMYMk?)YAp2yC41GJf^xxe2Fz{%9+|Z5L3qXH|I5&z*
z-O>lVFiPkK$B^Gc5G3r!q5#rTBT=2ZEmNT-F;jZWFQ(WUD&Zt^+ANZL6o4JX3VDor
zMY&lzy-;HLG-KU$o!xHcR9MI>nN&3K@<g@q)x)g#z&?osp@_g`1FP)1tcj{hlJQE1
z=dyE=DNpC4Qz0Q{TMae}jVE(G>d*-rhv9F@w}d3ZHeU3qAq8t0%cGG$FQ3$waX#HR
zND${R%pJ!U;{w_Qq&Nn4JjiMifkJELA#R8@cu?LBJa=0y6mioMv8L>vtbHMI96#FU
zY`~#poA~|}YHq7VdCO9?{SkdBsS@R}<PCNgtc?P>`DsQ;lV~1VvNIdW<Aqy<ppU$*
zpPa_a(^s8ZVT1VUOFPY%7efmd&%-J>mYoOvv^ABceH37#p-(ZFhQ(@)R@+f??+S(a
zGB&QUe~uZDSQJ7btH>yY3Du=gx~|<@OblVICgq6@PTHs=0)>p>I<+;ak)1{JwdO}Q
zyPvH!1|i6*QkVQMqH}Te&kKv>cDPmDlRaYXsm1i)(Cw;#KId#Amtdu-gv$D-`tY-8
z$1W(x*E2kPrRxa-ky5w7S_$lUzw8JnItKtU!z?Y;fZVh=l;Q>3q>$_|JrMHAq=%zp
z2qtduO?qYe*J~Rhvx|lyMz`PXuadCbb&!F~4NP^F<_xD@+7CQup6wq9!t{T;iEEV&
z+o%jNR4z3>rQW~uT6u^P*{YsUUlnQ=B;M{ejW<7|VpAquaR+x#DGQk#)Sywobuk;o
zo=jj}YUC~c$K66ZP1pkR?!u}?J;?a<ch4*Y_6LFt+YCNyp3P}=foM6M0qx-EWmSJ7
zV2x2jn!a~1aURrgOyZI+><n6}dHpfyTDn((&}K4)*C7HHO*`V6?O;1<0Dn0~i9vL<
zuZVBd`6Ir26`N#pDnVT?M*YrEJ}@)zF#;jgMX#t>4_bWfqNP<&(oyb2M6y~Hef&~Q
z3_K_`oN2ni{6L0ISW2@dE)Pm5fva2>QF$lysr(J(E6TvE*@%AT))4|Wctb(MF3oC`
z5S@iCfr{l~SR0ltr)@6xU%mlpK@@!#_jQQX^gX{7e0U=($g-;0Wafv%=$esl%9)V&
zUpP)c{cxM(MDw%i4Yctj1E<oU6Za+_C27)4A%ng<;|cfG7HJCbg@(DzM##5iuGW(U
z2PcwST#}tZasyD{>j$;P#kEHVsp$bX2O~d6dJfV<3vbkxyZKVJVCPTLjPezz?2XOd
zwwU9dct2D)x|=v8L2^c8POJR9*%|8-C5sKy{OYp%KLwu<Ka8!j@kS*o6{upSEr3oH
zs%*Y_Sk>|i!EeDYwAg{S_`bjGa)g*j4tw@J{!+m_;x#;<M1y}fA>DHw<VGmX?M}y8
z*5td^%Lt$5t}adA{Z(&%T*GWat?PioZx&{%+V;C7tQ5OFV-pM%H~pe%otCY&drzh5
zq`gsabK7MSBPRaCt*)9J!aQ*g!|!`l&Q#Y^6zjD0=g%(j>a6O5K1EvBI(hR2!k=fd
z_%%O3^dlxxfB3pr9gYfWQ|s~j@$0q6rb&Pp&O{@^$^{vnThR0&j@hHYqkvkm!Q}i^
zf#Un`H_2D;%qSbFEp)_9b4UDY=UlZY){-b9V9PD}sqKhxU^M#_?wffM9UiivaRP^J
z^M{73XI8@c#*Q;bVwGi-xK=oF4rDn(#1#?LbCdbT_X^r4Kk{DrH36`)J{a(#V3je%
zH_q`fYDJcwyEINP?wQ88NEC6jOib_%q9XWQQlYS$Db`Jf($4(bJ1~~|SAxQ4^f@_!
z`2f8;7KQn1LSpf42RU^FNz;4{q6z4SB6+tpe%4rQ4PxoOmU-4kR#<+0%`pMsm<Tdn
zLAFMk-OYYb)~OxOrATQ|wJfGiVp6XdYi>}7JRbSCa!S~1g2nsZyXBMogx?<M+JClo
zXr(XG`2IVs<SeSnEg^hzLY})qBk?lXZT#W7{((ck+kUGi(8RS#GJ0It1iFB9tgL%>
z_84R}K4B$nSV%j?v<Pj**i2DH1MS6_qgR3EPrLOz4N{0W1M$0Xx-95L-FKqbMO-z+
zO}i!Q!0*Q5Mv)fxr?`S`^mT1w)Iv1|u0n|-cN^o%c_7s`ub$~ymJsA?&}jQN<OyJg
zr(z2~_kE_`ubnXyszT>peBtk>&^}MVwiqq1W9DvWB?&PbRx*d-zl5>xp15hRcb&)w
z<K0DIQ#XuD8>b+FtFb9Hd-Y7BK^J9jUsVQ^3BQ^0mX_7d&mHz>FLdB+O2kuJ{Kglm
z|Fd{?<rW<;d}}$xE#FL6zDm`ScYIL`uNPNo+<W)W{-#1N2cM7c`({4#=PnkjV>z1M
zp3YK6LbmQ3_02Z5{0U8|N}+6<_r8;-HnFp^2|7B?|M7M{qa@4a?P`L+4um`mzoQL*
zYL?j1yXxz_^F2LNXQa%qACZ2&*YnS}%=V)~G&e*#7w0v(gEz)Rvr7sRr~mBomOg`W
zlxX^5qBa0@3)yRzS`Xq?xR(g>!}g8>t*gjNd&6F*zXlXVU4M+a(2TN&!g>P`x(hLX
zwtyWu^En)*0~ntzM8WnO_nwhTUalYcvnM<tg)d|%CF;tf>|epU0}^!?p8xg!*?j7!
zJ5nNX$+K@5J231*Y^3d82CjfIu$Rsu!-fLllel<Wj!$K_dql`Y40UDAX{S6{9D6x@
z;;*mB9gt97VHQd`BUq)R)zcC~QNCJe9}mfMQ?XCL*FxE>CV-`UfA*%q!F#ogQY_QL
z2ELgCJM$pPYADqCN_^j$c8APlaUYM7WSNmdxZ8rprn5sle>A}dWseO#VW#q@S?IIs
zB*YLW*H|f&=dHH%ix0&whNNkMvYHwygzqqmL0NwJ4~wzz2ZmWy*m(X{I;W1qM(m&K
z2XeOeWN_`P^nKNd^6kEKU8``h`cl*nbxhl$SP1r0g-S|)5Zxql?M9FUK-#SCY8(%(
z=ySZMLF3zrQT!MDFy7zV$XzZ0EVq-FXe3ebm!h?xVpOVMc4asU?$CS`{QOds$!c@m
zu6G7si)T}!8=b=%gsyKqoutv2DS-+Iuw}6yX2Li`oW>dM+`ktovSMa&z;Hw1zNH!G
zg)2)g<1-iZ{d-=xJq)tGtjAtL1xSZH|9OufewG^2H^%m-VtRw0KRg)Ud&hTj6Kkvj
zkp>fh)&3pq=!nXIW7w6LLd5rErw_7=r*%Lmt-^%FzZT%g1_Ie}-hbsH0rh*?#P0`G
zIjZf|nkgx&($&6L^T2MS`pM0wnlB^1*{7BG`&dI06Z8LEzatwyl}axrX+@otHd<mA
z(9<a&L#CIM#~IMjng#WSsykV3OzlveAQyL>(Y}?0mYGn?4$cd=HvkW3)*Y7qvUB^3
zG4V-+(y}zpV<>|VZ0pz2h$tE>(I+YMln+O1tISC*(aNST9t)R0Eid{tXO0l&KD&>c
zZheg6yif*(2np{6z~4b=ACm~dUEHtqq$P773R~~sExoAkPir#kx|8VA^~3TmhxO$|
zH;bhA<zMjr(mc{hX^Eb3Tyi<#q|SMsJ2!NK{`5@+9S)@nH$V@XG6i(w0OsON1Lq7U
zCnYP*L_9nFIraT546TZaVZ~WkE1wK;6&2u0z!+qou)X9bX3B^>L#v&=+}O-FDc3aU
z;mM-J=INI^(RDm}ViFhV{prV_e@a9}wjMNvCZc+h`d&z0UQe=$b9x2Tp9HpBIci(Q
zK{*CNkZ(O1!YwJErSS3mJYiFE6d3`WWkDj{1nQkTF*)?taR29*j!wy31B=^VtmL4c
zGdC^LGrOP#Pi+by+GJT<xkPSG60bnMX+e(9S>7$4h?lwVUX(uXYl8~-G_UGZiR~wx
zgpmGasxX-=180*Kdpblthe_cvS1;;`W=74cMiJD@Z0JAFXzpeqS|ii^nw#K>uCt;~
z&`hNTOziOPSXE*#qSnPdHLc<#P5sTn(Cg>W>;K`d_7{Cf0fe|H^tzrtXA;+$nHCC;
zMdC6=)E*f$Uj7hD<(jfZ`})|4=u`e;%Gh7j!)yI&Kw{?r()MYUULd?~wL!AWMs-uj
z?f5umv9Vo*)af#d(~4{L&+4sL<EH)Tf&*s_Cke;%Uryb*H{U7(k!;kFStyN@^gIgm
zEZ|brBg@|07`D$5fvgWVZ5hilC4aX##@IhZ;qssS9k4vpiUOKs^1l_P38|dZ77I<u
z?G%wgnF>+T{Ob}{4C>_cnJzYW!F2t!JVnM(=Rb_?ITKW;v2@Va%Aa0iELqCf&g#^2
zDt5+m@otHbRj%zm5nxcumt8hABBa_X7CCQyZIZeFni{%!ryuVb=XnD()0BD4zEeh_
z;qOW1T^CmJzZk>Csq$0{LPXB5wj4K4g=#<L;to}=@Ydj<)!H~osq8qQCK-~o?OstH
z*O|=_zu-<8`>NuJFCH<FQzQ5<%K971*1+d0_QUXC*NrT~PRk$+;m38s&R+nEH0(9{
z%WHbmH`Xm_dRD1sH@9d6Mt*I(y)i>o7DWxPKwmyu+IdKS*kxuIGj~-7^!Izk#W!~p
zyG2~<O2nO>ZoA|(&JTSarXUz_gN;b*(fXutRKzemS-bHPCyH{{ihA|$?=rV$1JmQ6
zRA@7^t)U2Ek-S_VM8_j`c*>h^ZXjo9Es5<$MFcmQi$VPlp6@Tc_?MUfahXRy`M6fe
zsqD<D28CbWa$m~j)UfrR*F&#Nu4@xVU{G=^6j_Q?wh}hJXlZnsdXDK7e}-axaTVKG
zqc#nzVzX|wRVFMWJIfVg;})A^6;!I#{a%6p!Y*b{Q5=lpZuF~M$LFw>b@ONAyRS9A
zg`DzJ$D3$@NQ7#G(0+ygurGx;qmTSXY?@&&WnxQXq9a)4+YzG=Y<3<oTR57F!`3J~
zkFI}RvIZ#FYQxtBg%>MjV%mSBB9kr#wma<hOrIH?SCTkUaGP=R;xnS1-AEy!1*JFl
z$-r&F?>m{yL`+slLw(gh!>Pn4ErS%g4&Iivk+N~4vrzF&Lb4EwVivjfsk``=KezQ|
z71uV;TaA1&Wk^@eX$(RBLt!EKFWs6sq2PC|BfkB(spbU{KgTDL=JhZv!iLZ8p_r$w
zKTk^qK}|CH4wOLhWvyC2_NQ0}#6z>o3A!myv}7x=q5RSsJF3;~mBouX@N~K80A<-E
zE{OxpOK1Ovllt6R$5`8MXTH}xs~ewht|gX>W*0eU4KoUks^%D8RH=;M*6r|%)x^Xv
zQgmJa+KGT^w(4Znbtam83F;ulX1ge#%6}ChS6pmqMO6TEBT_G-_TpO*qI<6Fb2|Sm
z^@hp_L3`Q1<n@Hmvq;OvYk>lK25rsUpVvP4qI}beYQhAjL#->FR|F(E!+gUO0&o1m
z{sYVN=Z|~}7}m61*;yB>9Y~?lcQ}Ty@o_`84~a+<okDp1$<JE0_Dy^d%S;`?vByYd
ziL}2q<V0A96(qUtOB{L*cN}GU)<^qlR06X|J?f1RgCbFdsLSVCuT~es9tI+?U3Cs9
zd)Jh&DEsB_C%9Gr4u&Zav$nE9r>6zl-7}^e&<Q#Q@pPM?`eM(6JpAN}ku#wy*HP%(
zZ|3`h%At@`wP@kL*Uvpy4bmS2>Tmeo*|PUp@JfXWYsHU8Mio!2AjQECk8&Drq`8DH
zb;HC>^(Frl9QPc`z$iv+yOY_%Y)hx7XyZ<x9IX~xhA~2pZ)6rrC%$^L7AV@rOPh3$
z!Ay%`CMnpdW7GlhuxCgAhE&XS!YIu%MJG-Nzw6Dc?$V^qaC^<c1Wqqa#ARz_hOFK(
zu$&L6_*uwK5hkb-^q-L=&L;UnVx}am9g&%N3T5#0G>5eM4mB^(pNA%4;$KL;KTq&U
zlq{JQEfcf<YY7smOXJ(sHy4Vu9~W#0Br4o!<dEh(s*RT&r_ksr-@h2RZaSX;cZsWP
zWQ}7}lONd~)L-~(D=T@h<L4@yG~@_%)Rz~&!St>MO;VvtR@F1kzsR32pT-%rOcxSL
zoB1h20->lHEsp6Gq+=^|kB>u`47$Gbr)|V=BB0EcuoN>X_ZP6H8ol@ntiNodeDmv^
zlajv3Trm1-8c{jG*1GD+OSwOlBN*cM-kvjF{Yfj=nNW#}aata{B#Y3%GrD{2wFruG
z%Zg)qvEw;a`^8`K5Ud`rU9(r#*6x5iwKMrFp^mTzR&;~LqKRRTmI8yh3!eUk)^Gsy
zPXj#aqXU2OzA7i}mRZ}z7*QD#q<!qvRI<@c%?QhthHip=OQK9})x|g+GO$H@$~m4B
z@K>CBSxzXeS+Uvf&-1<R$866nSe0cF0<DEX{>dB>h<YRWIG#;tmECz}%EJ9;e0+H`
zFp@#W`i0;w>nR-le7arD+&?$8keQGd7aKt**ov#PZPVS<%?kdS>lzd?;(MAs@UTkF
zrvOUD6E4L{51nETOzS8R``5HidGQ0xDW{U$rbM{o0on=qgv-`?3h1K}Q%ptaz9SFE
zt`B9C=Ld&mlq1(U1s%Yk&i6a{--t4M5uEL?K4;n`rX5MMg7OHw;(_e!*0Qe8p<1Z1
ziDP&V6#4<O3tA=L!Y|ReH`;aM?w@+&egaltOyq{Cx9nro&3^~e-YYCT?qZhuYX$(V
z?k_U=w^V5T-eB>qttDSwu~&^~LF}GX^ax(Hi~aZZ*{4JXZK|^E&EWvEn$)Izqr1j#
zdNW-?*mQ|nW}KT=YctF&P!#sL%OV~i%=ZvlLC4_;>1c|Y!xA$Uy9x-kIIr_+pMCmY
z<M`^l2;ZyCOsWu5YFBs&*bjRU)WJg*@y*<@AAFf+SeJ*2K%*aEl+Fs<^o=oh+Q%Xr
zzE}74%5;3%o6O+@z@uxk=YW9T0<qH0{zh7txXThs9OW$`3t(ozR{?pC5A|ODpa1Re
zDY(%ibN*L@9e##KTG_ux&ws*hL*AO%;i^VO<ONMd^^Z4XDpg|jLjKPI;xoC!E=S%x
zH@e&Pn7Q|CiF5MFLnlVZib01}&H)o`8VvB7sO6J&S%SZ|T|MvpTxTb?PwZ9V&a#2U
z9s2BzS1YkP!JX>sF$SKgGt4ypvB;HwjwO18$L>)$_EfAeUoBhfm~w?l0{gV*q5sDq
zwnNPCgfPqh<cG*~g?kW^kccf4MTvB=-h1Fa_e)a`<o3u;DMN-2kx_sojow|L!xbjj
zInQeJalbte#%@o3(N6#|YzBKIsC@1C>9UmOQ9*|f%>C$p|I_^z29_a_dp8LZ=B6?8
zn^XdH5dXgh{7rCwc~I=Zlj<a*9P=~3EbTWBUiT@-hmT{uL1&qdKR)<xw)%fg{9jUg
z+K+=$at&*IdnX0t&i-P&?uEbq6v%Ii{Qr{UZzlc!GJ@ZP`@JP**6=T=G#LcCPXH^N
zpSGI#ZlAFKvgxlkA<N@Pm7SQsY3wcVcm_Rw{?6RHk|M>X<NE~ZksnVn_412jKk%{3
zlAE~mq<>P=bFxY8ZCa<TIkpL7RKa`XvRGQ?fdG=@aBzE6+s&LtBTLOA{LFTxW9(O%
zEcSBybx?-c=C{!CfUi+)i}IvhrOUdID8*vfQW$odGQ8^K&GP)X*n`+{F9iALOsnI}
z)0k$;ql%>~DleR+2K_EYkn~B`ZFfiOfnzHy664#YYwOiKgFza6ld+}=#MM56Iwi4u
zy#Dse_>}lta<u9V0qeA(Od@>U`eff$@_xn)Z_>0^dcCUCKo4Jv?){DWe;j8&>NA|j
zxizowPo_)K=C3pGQyCGO>L)K4rR|UY@%U>F(RI1&htu01L>4yoe@`ite%;g^QG&rU
zZdHQal(gxl<XnEevXShio!1o5lv0r66nbQYjQ3Xo^57HG-wBkIQ+JH&_%Z$!iPYN_
z7Z<!fkp25BOU(ziRS{devBIGxn_=jIZJ&&q)gr#(o!6c1mFS!jJFJT9(IG))1F#a0
z1ASYc6fNDkq5`<`k18T^1gP4fGOf9gmd<TfSh6Hu!t5@8-?b-2Wzi^|5QAH*j)n~1
zVkrhrNBQH6Ow-ss*+k5-XOp&XX1n+<lBxzM@U8<ti%*JdCdA;Xa~%d}f}&LuyeS73
zf@l7*Xm&2lTR6VL!wMFEYz{?ims7?A_1o(XlN}e+p7X%q^@aJ@;`S##Iv{TP{U>&y
zXeaU{XO!lH7yorC11QsO@Mt5p6!yq*7m);DwEA>;eZkU-j2UZ6M(_9&l8>z|>{w_I
zA|a}vRB=8%Uu;viwysg!>}l~iN4h=5hV?msX$BUrwce&BRk8W_j9~zu3Cey}$w4uT
zCD@NYxfMJgCN0ehJSskcnMt*Sh;s;Z-a5C$E=H3!)wpsYw;)F%z0eapl+YC+`~+}l
z)c{PaNXO1qfp;2y7)_v(e3!SeH7iW=(MQ5415jE&w99K4_f+A=zo$mPmx(q191A2!
z7`{!Sf~+6B0>&!=u)WV;y;(?oT{`EutCWi<gbvr(cQs|fY8*4f1+vhq5=X(Qy{uz)
zci(8qrzolWH%eLgH<nL0M<^kAUnXI!#E(I~8r*VD@n60#78DiG>^?bqzW!L9I4V_&
zqvYrGVb|mElq|sK)}?7E_qta!yPWxu;)L?pH!_WO9;kYERCiE`M`UxzXZ((mZRJKL
zpRA(iMe2t)I*$r9WYk@2C&`Z-dKo{xK!uF&sy`h;Jm`HqM&Yp_oxnJSTcS!Dg4z7Q
zO0DLN$~wN_t1Dyj@cYi+Z$(Mw+C&<J%H}S&w;Nwx-ZlHso;#me1{vTpMi2b7CJ(5$
z@~5_Y*{(OPp@0i6^p43|zvgmUsRdb>u`=D5>#$sjtx@Cs>|11TVuf1h3vcii=oBF@
zxu%_X&#COU4Wa{KCzjKn7fOTsTPBS&;X_I}e)^nKotv8XWrCJ=I+h~+*leI|y5hUa
zmd4QJpk1{JO)*;w^iO)o#4fqoZlOK`(nFh^8eYwzVZs^CtKTDBU8imfqv@#(42rcd
zNeX{OFLbw>qCme@@B4Ab*kdQ-a5L2}-Jxx~cbgGfF-g03VcV;Pp}3QQf%6&6(efDM
zyPYo&fuBzTv^yK`;4rUXQFkRtjQ5(?!*`?dWjArE3#y(S#T-uyy*}N;Xj4@+BGar|
zzwRR38D*xjwG|B9CCyt(QrR;RN;INfDkj1)a?6(d?ZR8O%(adQ9G=Lg&-p*00?Y?V
zD&!M8R=5$>G!pf7L34VRtxhYo;O<-6*DG&#aXRC{pwdK!08YTYk|e5b=-Wu?T3MM&
z71-t7(dQ&ZFF<+?O2<39-R#7D_6KI2mIsvLGY(s9vyy1cLp3$;N2H2B542}E<)`%T
z3e<%{zN&V36p>FV5CsCF{3{T)a<=bY)9y0@uR!98we%Ri`L`o(qN!PkCZ7(eJZJhp
z1P|xuUsq1hWpo?$X*c~aVC?Wl??2;BJ-Y{n?u*`YzLxY=V-u=Y|5esY6!DeHHL#n#
zlQPI{7WGA?Hd+uC6zuQ}IFL7$RO4D^8$Vgicw_sBNsyeD8K+vAq`6byO|EU2J7$`D
zBGSTaf(?fJFAfa!%2Kp-?m?G!E5p6e`@OQU(p_Z5vlX)*poH9G^r?L5D9NaYE3J-&
z<FU3u{VUF1M+@AFCLc8fz&YqDQR{UU_`FIVJ(XMt3lfh<7Pj458QT<gT}1H54Nue?
zk7~SyPl`xZ%pMkZ%q}e6^wpRfj5=9MPxqj!Dt~4;zRoLbRMgZYrp+zzFHp`)!=f4{
zcZ2H89z}6`_At122P874qtLBw*p`w_7LsEd%_=p$WJvkoAbp_$!dPnB*zJ`feLwLQ
zWoz~w$H+(3Qawo+5&_u18+EIP&a+QkVg=xsXTz_$Td?&EGvelGF9#{}WrTeXXM7?y
z(I@UjQFIv<yQO@%T)r;=N8D6RcvpSRZa<ikT=u#1Q6STx0&tHnss(<W&?FgVRubr@
z&_5#UO<5kfN}a$MyjVWt&7$HDfcEh4j!8yPn*StzefM<^`G6JOR9>)C%R=n9<mR(g
zHVd-l>OLK|-{DlA@i=D=a?<Y6-IXJe2^Ao-+%p3Qt)2Q$D6f{#i(T^)Z9mA9?t5kf
z9GyHcYCshv3ZmiEpsu$<&!*Ub48R3*HTJ0*WRbTa>%p%--V`WTifYXAh-jFWwOs;y
z&gIZEKt|<8C|7w;gR{F-p74`WwAACGXFf5_gh_#m3NcklQ5sO!%$DGYs=3|J8PcCS
zAz}&5i=we-yJZ&UNysBECu<4@5kgfvWIc%4sx3JV&C?As_y8Q1Wga;gS{v9Yjvowq
z-&lOjlU4s@d*av@2aXa+s^p!lDD8(hEV~KxQP59K6^u26JZ7$D9rNlRDjbxDGp#Rj
z9N2CF9LTR(xa8Jz6X$D#fkeY>!J9U&ilEF+@2@<U4uGRO3XALI;&y9Z(%JZ}?keq&
z0(Tb9kubdhX-7R{%}yeZ=%h<BgHXpr(Se%DUGf#b8nlMqJIF^`F{MU+vGLnT&Ek8U
zb4;J?oe*L4r`ZzNZo5Kc_*Q9RThuKnFdxG2dCe(v=zM0vaTVJ)n_l+l&a!r5u>X{z
zszVVom`I!UCP8w_YCC7NqsaNYv}4E2n6c#af58s_`beTacjMO%hs-&FfXpWu;&k2A
zwZiuqucPU0Ky+kPJ+Zl6;QQ0-Vy<xyBd?aX6?e&+Y21;lSeb&!%^X~ktJMeRjm2mo
zea7p11Quqnouhrp#SyldAGEUVIv`t`-7N(j6Fe3Q_M89cF|}Q3?Mv3GmFBzSR8<1(
z-!E<Z6eZ8(h~YZ;Y&T{7ys=L$$E%4=Ass*D*(5tY34f9?9kOi^;bX}Rjp->=n-b^4
z3jqf}5RrP~d)(Gd3MoHD_Y+;rf%-(OWQM{re^=VDTcO7k8cbdQHW%!smP|9Qs%&9g
zGYf%!JTz13Al`6;P)vmB=uh2rG5(j)&ImvCD&!@Dm0-cJuYDBrPGVAI_STYyvi+8_
zlxg=<QDG_5$Ql#RZ;Yt$<jGpbw<X8N0A~j8vh~h@%0kG4QcClcEG0RnQkRgJX}xdQ
zSxvw$TZi(Fq<(68`;6W&8bK@c9aJaCc81$}E0zF}O_UnpZFWqnNOr*Z6k+in{rflL
ze7!cpa;Qwzk;mIB8N~IQT{96FV&E>*F)$HjeZRaFY!v6a?uF2FFI3R{hq&gq1rp*z
zXESso5$$S%*i$r{v5hd(UJR=~*bK{fkf~hsNDL=%t(x%y{zBH&w=$jg<~{)~2^(&J
zhL^W;RbJFb<>19Z)`rEwIE7?`&?Gsdk0)w{WbmhdDxb3&b(`$WpyYNh=2E)>rH^i5
zUH~%aj_n9Jvaw~0K}%?j0q4~8F5^K1x%9BIXBAlD{)Kk8i)ZdY&#GIqILw&`+|FJp
z?q{@{{EUXjJ=k95<L9;j#wQPL|9Epztpc){10?ghr$-0It>>P6nkr<e+q8bi^$Pzj
z=tdh*wH+QaC2`!V?ZWXS+?q#}r0U5_p~d$^iSFR9Zkp>l%{QqQ>3Pj(H6S4?H%1A7
zV)CHa{M`r*FKPsEpn{44<m&*LN-L*LY&>5KEx5Wcu%rB)zj-EUiJ<C}O(Qi>ymlc=
z6Pe{41wNY5AfuAdMZ`-t&G(v0S8(i0-vvpZ7>DsaD$O~ULTOFz7a2)N+VPNAx0yDo
zj2U6_Z-1y3kRnLw7HCP+M}vx>)08Q59DeC}#xciU#wuQQAmjwoy;7@fp#;{MgpkP3
z=Eg#;qr#<-ubin$ukpAqVw3P#6!N8;dXgKZ8hi`G+Hr)7c~;Jy`x&70;^uC6b7CR1
zQ@tRwF25n5`qLWK7P<{NoV6C+r}?#8$T6UOQr)pliV+gbHHtBsjl<sY=EF~7%0GGU
z`J!Zl7RAu=L^$y~LNjZ_?0z;pkUJZIomuh)deAGs=>4d=h=KW+Xr(Fz=_X|=6y6uB
z*rJ%!8n<TNRDj>vA!Tz~K%WhRHU&av=1JxQzU|<%&yO>~aOy26fyqlsn-vQhSkJ$f
zS_B-xo-C>87f|+HEQm<^8GK0<hDlSj%wcZR2=Pn{U)Tyun?Z=H#W00_zsA~thh*he
zP^(k0+pC7=m-fbO3>E_j%d2oMX&aTW1PN1IUxg|W?7EY)F>F&74SS++N*dH%nBA_d
zQ=?Nl2FFq;6PEy`U*c{PMHYgy8PVVp|LY-P8V6J6dfumNvc#L`@lJ^==5-351i$N&
zGMybwI_nZQ-27>`m8$=CeDWNk6e_f6#@zDQ%C(yPyD<Z~jZFdq$$2!EC;^#H*<qjd
zsOyue*^%|SWJ^YaTf13u$CjD+zBDZiDSZ931U`ygYF=*i7>juvv<m%ORh<8(YZ!RP
zqxVP#$TV2*pZhZctFw_W6c?x6Mh9E`vyi!8%#6V@1N<~7`Z=Gi7I)e$=vkOjF7<U*
z)a`YHN?~RK|EatW0Bo1dDx3F%J5CK;pkz@<i5Z5&rxVwY7=T%Ar|gn0=oz?~v;_;B
zLm{M{^T0)1mIpnSGW@{ymbLMuks>)3$mAKX$DJFuGj`%hr8hIk(dIwo&N+_l`CTP*
z3q9t@$nR1U&goEQ(yB3xUFCLgW{`R12d!$+MDunKZT%C*$s{?vgxQ!f2#X=JKn^Mn
z)zOWsw)<LcLSzJ%CMMNAoC*`fP5mEIYKi(2{0uXP+5(TXp<PBci@weV-o>jR6*;QE
zY!2)17NbTU9kLj@Wczd`hoiI!094caZeJi7Dq+PqQ&^cqpG}We8kpR5$LvINYtv>q
zOjHgxYOQt5ZJp+^I(!f6?~zNqhv`%}1U&lu`$v877u|f9QI0u5=@VA)#7&oL0qaI&
z`^plA#Fg{Uxo%c6OS(IBe0miD9t$WfxgKZsv@Px@v@>KB#sFEbob+X$|EZH|_O&Yg
zsy2GTdio7yZg|I`{WcAC<*n5RlS)2K8=SK>yxt&i%8qWQ6#0Cz{jHvvb(e0o(*4qf
z{sY+&ei`Dp!T|cNr0rD39mIoRZzf=N)CcR;cyH>AH#J{7r!X#9v4cHgkd$(#zxOh!
zV*5Oh=L|t5qFAjP@Ofg09N72dGRb<vzcEOn%7+2F?)rst3kr<i=v#w5YGYm0+-k-S
ze`vj9d2%If=Mb}-DO+&{EPw)NgWgGfa}@3Cj?FFkre^L&(u8BAoA3WrA}S#B({4}v
z<JyFl^{&AgcfXudRa3|V#)mTQjL#ePR4z!G&Mzg@=-{P8!ZRn=t)iDAH}ANHQMg^l
zNROp3v_xB@HZ%_DvA%8Y7-5iGlH76O?JbB_x3aN+uBL@d>!yaVUx-Z7P&VM^y(;AC
zWRYfjq~h?FPVSQWswPcHG;eo0=bnaF+<HfI#8AiWaa4K8-N$AbBtL&<rVz}S8sz_+
zN+mTgju~ZOCV{XK^<mOA%VdUov*!8^WG0>_VakRs^^P{3x|EARPIT#R?iD6xst=57
znzJwpz8FMrCW*2PTw@q;5;2w8wigsI&O{rMUrppm;+QzgG#h<zA|vfJ?A#8HmzSW+
z>188K3hG6UO#5y5*Xw`cQ*_u3W=7!lYHR42*pPKf%H{@sbG-P%z=A_a5dc_ea-psu
z)2wo{S6|$;hG{UNv-)XlL;>w)j@FYUTBbX>tH(64#=I3`#*$v;sR5c~$hS1d=UfsN
zXr~o<hOU(ulU`govBNAnm3B%9NX^KYvU&B@jN4q{7Wh?XVip)!JA^H=1vh02URoOj
z6r`p&4o1%ormTaUvL8I9+>Bd~B0O6ipSV{^N+aki1LIL6Ktl`()G)TVpm|U+{X2+x
z4r1{^yA`!_Lt1lAm2v*P#zc@R;#tV1@8hbq53@{lGmlEl?eZL-c5JNC=bQ@%6-%9j
zpOT!$)^AAuOp>u!vDJXXc`e=!{wxi0B-Z-1QC}~I>Zp9`o$EGrJ#sWx*-)iLqzQ8+
zYI4)cHlyCd`Wh>f<RKqwtTAWojocL%=V;ahk#$FgC*f$7sA>9n;BkYh486I{&ZIfV
zVf;$wbMqzr;zD5jQJJbR@=8ZLA;g1OjeD~Zsn<>QS}S{3;&f}{%(-2ffYNlp!!zQJ
zG+EO+&MC(Z_;k=>3fDm8svwCEQ|()H`zI1NZNKAXL#p-PF6D8Fd)QI+7PgY<7QJk|
z{q_1=OquXdRf$&DOP&d!{uS4)s)?yRg_dbmiva}s;pNAJpd4>N)}bTq1@9d`ByDy-
z0RZ>9CCp;y(yBpccG_3TN?u5%qN{RcROE8-5U_eUpY985-O&fXGpz94tv^t+Sbf+v
z*bMZ<u~0!zz$4>8=fy>>p^z>A()o`gPWiCF{wL^`8soa%*Pxc<pBh=ziU@)-M|o|9
zp5<nuSIRiLp#$%!es284^Fx>!c4o~&C0QUNSq4<JiUKNQLT;Pk))Z$5FHMlG!)uo5
zOKPjn+%?BUSX5i)+af|_t;r6#OA$q;fej6M_^_@w>9t;ZpxBU(k<o5}Y=IDC3UY)}
z*`E5b^kfNXGh*6r**)xz3I=KOnrvNbXiau^n8JjgcQ(qxtDu1GqnLl%t-Cbx6sodO
z;vdg)Sn)Rv1%y1<w=X<Vi+fOF6Rngbar?PAx=nnmkME2=IE_gp-7EB}Uf#?Q?|Q=l
zmS$G>A3xP_No$4SldV|xebk9l$hi?`79KBQY9;J<G>)fB;qLXgG-mR!S2qrHhiYAW
z!K_N3H%g(uT<!81-yGD(2^`$Vc`;O<Q<}}})?~_OM>+k&eEF|98VfNakXlVZ2&rn4
z*)E8XZb@3{T%4$+H_xe%*DKk~<A%57Nme7YxmQ)z<V|xjg<80w9%r!4yTho2v7E~%
ziChS^^|#@qZoh*QTMbyk@|y^Y!*h^G{dwr7q*OMU7D^5ctea=ml-$uE&|^{-wl-@y
zA`3P`HYiJ*))Ea`DB_b2%uYvab)n|DDFJI6@?6d4oKq9A(o{2WBlub2CBqIhbmIS!
z_uf%WZQZ-@DK^xDO0fef9VtpZbd?^Op$Y_0sz?(;hrqD_QlupWLW@#F1VKUx0TK=(
zH4vl-LMT!~=n(=$2<6*=p7OrGF}^YGAK!QHxcP&TF~Z(^?YZXKd(HVg^O=}Bt!mH4
zi-x;sJCI8MTpGo8@bWI~ffXNE;?Fd`x1WPXk&gUy`_HdHjh!R>JscgxW@Z>MD43C)
zmCzxV5}DO|BBiYVlj<Cc8S|+JVXK?k53gFE7J8cN80}$h_-!hOnM%uD%44s8jI^^!
zSC)7tUczLv7C5gAE-sPcQ3l(zS0WbetBSHV`|RCl*lxy~k2-6)EULD$TNekib3oY#
zpLjHwDtw-+%0{=|YQD{>5Z6Uzjn5-!b=jW<RqJz#fqh{8+s$~b4X!vcj}-yd^Ik-x
z_-qs*{tcRb2@F75z~;l=xDz$8y(#4U`gR-FcNpW|H(d^EGsEc93M?1=Z^<YGT|!rF
zd1oHzgJY`W)23N$#D0O0qXeq0hvPg9wQfxB%t1eoN3)tou~CBDyV$3OU7;x~Ih}JN
z!9J=zJBXT+jq2s+dLN(q$io&xe1g{vwgsOr`Xi7(f&H$ZwAPBZT{-(EggIlWf(~i!
zs(5?9bvk<vSDEkSZfuLi>kSEU2ctrWQ#q7aS82Gb;s!28{0!EO(CL@83(Nfr0Xe(P
z)~F&}#Bf<Une}-sbV5bwTKU~)9u3L2U$SrBTX|Y+?ek%wM%?)fOL*vnt*w@}t=iE2
z^TWkiqO6qQ%#E~L#m&}Tu=a}$Ev?>)Yby6$CKS5fMrA$i^v_Tmdwpp5g!0eDbJL+N
z^IejSAs*5C<tyNzu<`^95hpZkXg+h2k+#54imLjhb#<t*#atU#=@KSB-<jGWbF?v(
zmh_Pp;<E$E(M90(&h`hp*2S~@7vQsN`aHqP2?IT{;DZT+c`{3*duLo$ONHUrGi9(~
zb&a99-i3(9SVCnL@zQ{>Q_UKSNB@KuOS~^6$_~BRpTxU(AmpsF!M$@Yn<YE~(~;6%
z&6kygvq~m)(u82FcvXey%NOfkln8@p{>iMxoye^$t(m!QY8Tay^Cyrl4!}=4t&6HU
z>s-^<yiTZIl^ymBzHlBUVZ8!<Nt~lkyT&2SUQWwSRGxux1!Y(tg*n;(kN2QlkU=}}
z+WO*$%(Ip3B2E@HRYFed*Tx9VTTOMaY(lD?K<w$?su!v-^(v=}n<v;7OSZ#St}`dY
z?nra62iv~CawRQcj<1%B`GGLEw9O|Hve0$vgo4N|T72A_BPn}BkKW3PEWhy(zq0`u
zo4#ZP(6Q!l$pphOm8v$Lyv}=`S7Tk%$6PB$dlDA&=cKqpU%Bm4Jeu%v)6^l;Ycthr
zlEpB+W!!UsDe!MltD&VmYCLGjpv8AtA?@}{$A#rf#Rs0nWNrRt_*jc!i@hLX!p-*_
z_RGL(0OY+rSC%N2J?o3OA730-%~Nk>Zjlw6r_2|Sc!nT&%+>#Sz(-~dzxFr6AoFxI
zftn_yoaN=1+T<%-G)-+>9V&kRB6ayPFj7lCUkEkJv$2AUDa9Rq)#^RP8Yq%0>EBig
z&qiD9F5|u{|7GcyAs~*L1Z^Yk@@>ULwVi?a9h<P>X&oD8_nmcvY=)p3IQuE((Ol`R
z(qk<BORSth67%d6#m(?06@$ynRSm=Gx#g}aSB9MXl?1ywi(I9(ucPOtp%FQD02PFP
zG6?;i(SMq;S?t~vb@gZKW_2y_j8}ktHQIK#|4b%Tu+}Y0Y{L>lHU%u%Z#hj*-sOw_
z8)Iw(UeksGbDnKH+xCh5C2aD3Pg<;O={%}<8$P_+<P+Ex;OV4^{v67D6kHROJwgb(
zmR%w|8KfjWRvMR8-uF~+IVO+?!h#d$;RG$)RB;=gXZ{{O-_OnEJAR%s$<qqpH!G~$
zPRqE?_j8G?RLv<LAGNg_V$KXYWx)MeLoS4?V;Agrbo>23+Nj?9FGv?*8?{WfW$ujH
z)-7<l?2LM2=M)B%KYkWmv5s%%SL!Q<9d$W%5>}Kt8O)>BNI28B8qoc@S=hlABc>n$
z@<BX>WkAT?;4@<r=Yx0DyizJL6PBIa_{pH5RqhDdqmI?k`w()wpn}3HRdS19^+HHV
zqs+MAh7BLUH~u%i8nJv8tg`WZXXg#oH}OQ)nLrv#Vo#XFav|px&tdWI>sphms+@t8
zc=f?;d~oo+_Y2hqekY{YSYUgLzrq#$Ue}6~u2Plcxpljg7VfQ_C0(4zzqXB=(kLAu
zR)Y}JUOr;RfSn-FKR(BkcW3uR1EYT`NL9Mn{WROKS-1Q2^r>O3=W)MuugX|D4Uj)o
zjnupo@=~5U|8w%C|DIT=0m6LyGhQ#u4m~aABz-ICGjo1#+WL0lgNsz_x=KnUCKX0r
z-lB!Wj7E0tMn0yY>Rb$z->q#AHY;%`$E|rCY3vYW)9i1R`$cmih--aB&1#6zR-up2
zO+T%x(A^-TvqkY)lZ7;^r*yf`+25N7i1n`JQQU$s(V%m(c|<L2;{Px*z~!`fkAKAu
zl-YUqucoj48bx@OFt=3ow0Y3?7Zs&~V!=0Xq{^CODP%6<DE`b^6ktOgdrt|Dtqd0z
zj%FJJcFwF`>_l22@93N#=Pzsg&C<pF*E#s3@f}rQg)Sl<Hw`>H{8kkEw*04XYu|vk
zEdw8u&fv2Qnep!OW&batgW5VmDDA6y<@RY9f&I^}`++CrW-0|j+;w7Dh8NSrD4}{%
zduN~4*$nCG&uiA7nLgMrxo0`MQNVIlN28~y?cCQLpj^Bu(~@3f<|o(y`e$IcQD4}&
zOu?_e9$_ccRaVhVuakW^^|}&eiWhRxZ8n-YCDyd~?qB#8YsP|hAaKTshbkOEz0ZGo
zo(On;w7Q?2+{nQll&vUwB3lsI@VW8n+y~6nHOJWTw&TGyyN_sY*M63O=gM+grR?pI
zf`h9L0g#_L&o8nynu@41ZpLH9o#TT(l8d|4#Je1&i>bf4yhO&knrL1Rk8E14^%^a-
zt8|IKh8Y+=u~p{!;Tgez%PX6b7`oO#1DOzL__=lKM)({aboRdp2^7=p`}4otH2jI0
zZhzBoFhVeVwfojO=uB`;_|fyhHS3{jqvGIYcZsyGcWMm&boH@XgPaXwQ}SR2g@{)k
zJa*nI#i9GDrhQZrpLp>^j$=~c9U;C&nDDEwAFFIUhlHNnRTh+V@NZaGsK)DXoWE(8
zlD_^S+5dldHT$FpHO3|#;g@&uIKvInJ+Y;~5jXdtrWUz9z^(H_u#KK9b}u`HUxCRR
zX630z8}(a&_W@iggVc~bP(YEj;FpGJ`XJO`I&=m)?MPhteVU-D_3MY{sVwZfR+N$7
zxB=qm=Uee2$8a~_D!=_Km=-OpBt7=}QaaMRiz40V(c`NlHte)QpW*z2C7O2_sJVTR
z`c>+JR(z=|{wYA9`Zr1BTD2~Mk0_w*Vl&_RB}5Q!-8G({3ZD&9I?5@vQR_u+V+1wW
zFDO`eXkmH85RjGMIiVqH;m8VVjrIlsH!hg~JY%M*WSi^F;P`tljoy8Jug2gPDNeZR
zmtO6GKpGc!65@_{aq*^ydcYx}g&$vMRq4*~|M!y(z!QS5m>RdY8Y#Cz<}pFz=7wLU
zYJ5ymAMzaKWb^9Uii&gi2*(9=SJnxRuYM>a92%Bjet1|lY)8G^HQnlHEf|t{Z`pcK
zNU1MeGwx|u|G8rJ#geQ8{lDngM$V~MUmYWG8ncEIS>N-g)iQ1~dPp}aFAQgevc||C
z+Q`@#nN`>r1bC&**woe4s)5eJC??@44HYW8ynuF1_d=@<zw$7|TD3cy*p{eZ38b%E
zy}mK)aW&Z`H_`nv-2$!t0)`Pe>Rs%zPXR@Z0S4*dsM}BWiJ_6!qwcqkTz-1;R?C-s
z#BW6aizT5x?(}t8u{8*Bl{fZZqLdCR>RLIU>4${5xF#$sdHzLqyX^2S$5Cem;~5nA
zZpFCXRv)=-^QIFZg#av_-OrvVWrQjauKR=<E>6P}YzB!Hp{oDnxpLfU`I>(=#ehTZ
za@ga4Q4~)~)&@?@eknmKg$}E{PFXtopNBQ2GbhpN;&nWmG7eqKlfC{!bHCmCCxiU|
zHpR`e{!8N;z+8I&t0e6I5Sh?@kNN5UN1f8d;swl?XdTIWV}9~nLo#<gX~|kV!@^n;
zhp>B^N<aPabM_wLtL=??V1a?aeI4*6MjeN!>JT6}BQMb@zGU0;c)|HGbN^QUc(hLs
zYs09c6m*?B3!*!6-0PPc+>dBxX8^_WsNZp*zKYdDj1~FXd$08FNEu0--apcwb5Fa{
z2+7}eUyL<k+}ozq2(vf~4iVk|{n`WYcd^%;mWN280)5F~X`W;Izr|X97m5Wb(Twgm
ztw%8yl80jMo%8feISB7qD=vT|+dnM0d)KLGy(7(RrB9M@=7D6?!$uC&#(Jao4hfM_
zGcS>ucRR{^J+|Df1Ws1v@$gL2BTSvf(Yx^8E0A}3>csP5xOOE8yzoG+PnI5QU%Y^;
zN-9*?1yXj$$yQ2+{_R8I8;9-g3d}11)SZ3X37P*Gmx{u5CPx{G14nnJK4JcnqUbnx
zOYF3h4y-SP_huC4A>7T{il6<-xI^P$1!mmURMJ%U4E@_=qawwjT)Wjg8{!7v=$s>b
z(`Z^?yiML<7Cp9~wQ~tkywe8&6dA7Y4kz2$6cW9^#;c%rZsAgA))C~fW7$_<wY6Iz
z+qO2o&E`p}iau=LZeEeyH<{4BWGf3l=;t%G2~6L`gjQY30OK(;7H;K9uatqRiBt)4
z02`rJY-`^;#F0!Xa!pfMNc~#N{kYF;lvwGJsTBERveY;``QdVq(`-<GQ8Kb60hPhV
zZ}R0%dC@0ox-f&sC$@fO0g>aW*gUm=*%!z6$zhHb*^@E$9NHxohPu&Fx_-<Y2_J;!
zJ2%pOwnB9r%-LZDG=1mE&<i32f0OmFf8aPkg4qn$47+F}*R!6n1r$#mh%3gLWI0yt
z$yxsN)0KTeP>d+}6)9-|`ew+2K)%kSQ&L`pa_q~za;%b;+##3d4yZIVQ_6NJH38-i
z&ExDbfpOwc-8ESNC2Y8``PiXxL@7tr=)z=Awa1;60~?BL6o)5axDwRpXYoj3K)ZSO
zvnx*sFd(Zk%oD})9jqUo6R*>oInMp;s4hamg=Nu8{@viHnHg?O6ue?&Q|*@QrgD0S
z(p_V2HeC%UJSuyJ>2hS!DFdGOy>jOalP@4WlA6pF^7>^itL&e@4M_6su{4cpfw^D-
zg?kdSV(K&HqpyN9D4Kdv<A!(9o(?hIs-A#Y)1Nr|V1Q`o)au|#7BKcqWcp8$i2GG)
ze=PryKjzS(-bA_eWhynMqbGX`ZBH^9D>m9<e+`U|7}v^vN{1h(Ya?Ed7`V9H;g{1}
z#me;*HTN#>kA@QUU9?&FJ%w~vx<%9?ML}Y0Q)p2h^q!4ha#RQT&;Zdgo%E<Z%Dd>M
z(_HlvX+cm?%+zXNip<s9v->A`;qYVehI0+i8)8D$KA(T8@qUt=d!5Q=buUU%$73{5
zrAp#T#Z9MKNpsJHhI;F)R5lG87J=uswNizbO1W&PXT-Xwv0~uCz98NQ0!5*ht8xOy
z96P)#_dVbb48Z5!W7$sjlPmiqlumo3!22k;ppMFw?I^6{C{S}_iE&dtHN>UBxOFYb
zK3X(jR_~$nrDF9Z@fn#$TW5M{2JwF8NKM;lvuhtncd{Pv^A&>~TyZh{*HU`T?~p}A
zhek)&cjFoXOmN_G2*)T%Uu1ihF=x6~LmWSJ<_-B`%G7K!vI0QgPrK2MFB;#Bl5~Bm
zbRM$iIy;o-y)#(hz0(~iX-YM{9^bjyw5Yvq_W>ysF_5y+>6$31BVZ$AxCp_U&Gr{3
zkxNjs!*ch4mF@#k5v^2j<&dgg6vMoqx80h}!;CwJmiA!QL}+)0LeVPmXlBaD6)C(t
z_*KiiZ~OPEn%l*Ht&5`{BrXO?LD3E=e8>^m0tN^f*tdCUOdFx#`Iynelxxj|mMjAg
z!SFWf8RC|ru{TL(CWOGIVXYz&>EGA7fIfkh(-E+R#tf}b+sL1XW|n+oYpe><WG%9~
z$iZt#GHHz#*zvwgwRw=hX<OK)G^IhzFZtBk2UMos-}i#sK=l{!VuoWxz!4gLKk9xE
z=f4wM9Nz&s&b`lz@*nQ<<oS<E<~%@DVUJsV&JBoe_dY`I-yg4ScXPgP-)^`75_x;{
z<U<#JR8WC{Z<ifRa;f-~$p$Pkc!w4gat+AM?4M*$biCzRK6UuXGTD4vA~B^2wS$&+
z&;VB9{(tPtj`OBv`7>IzB2{KMh3<t0e*;l5zXHM8-~R%-et0f7JKG@5I{uVobT`y5
zK4fJ%j3jbf2z+R2exMB4dG2jLfj`GxK?ARa!QGMA)@XT7Bk<^ah*DTuUh(@P*SuvZ
zsAFpbGnZcLx_-GW%H3!}Iqa=;9#_082}|6tsMdS#rZ^U`djq$cZUm9$k@15&@SGd#
zJ8dOBkr{KxrT^Z^e)zpVs_9<Gx`)e1mG-Mni_2FZh#WG>?p<6&E*gg_SXSx`4}l6G
zLqeG(--t^#QAT2)K5=4lOUd~5dWC`_St3B8XVV@1@U_lI#Ur1w(m9#4rrIKQ+o)%<
zpQ->{OY`rI=k;-ZQ1$vv3m=-SP9|QcWA)do;8|A9#W44n_P2NV$Z;BrJZ}Q{L2rw~
zaxFy`T@Z^Ij@=kf-#imljLidKur`avF^<fWBUf*+T90)=$1M$df;U{&UoY&yjbA`Q
zx6ZGx9=0a=9{NXN&Dr%tA+z0GNS)z>1tvbJ0c@kLdl(PEEDCYbI>X~Aqk@#_G+E;Z
zN3FR<heCC8M7@*^2j@G>`MW=lkHnMkbB?VUGfuYc^p4kU_=_m)mcl^)u&5QmRIJAr
z7d>NyZ<BZ_Nu(fzT%c}+x!$FL`eSP(|29HoiuR}DVHZqw`-lY6mr~@aWQ`q4sfTNb
zbz&hbuXj=3dDO5?r4Hu%!0hsJ7m<e{-p^@WjAiPqzg``67AwSsIK)9}ABsD#*Z)Id
zpb2Ln9cL2Z#20O921s>@I1%R$R&@L1T6NEq`|!9V4FaAroIo{FLoN90PAKDuemg!W
z)mx3FJeh`l+LZG11Kr)i!_FP_%=;-~F}x|f^gb!3jNl#8ytx9zV^u{blBi*0*v#%k
zhPE&0b#;q%iuSmBCa#gnA$tBGI`1bZ)Zx5=bRs{$6(KcP2eUF_Sr+f4*dX6|{2Y4}
zQYbBca9eIhc{tVL6(jTQmA7^2Wka5Eq1Rol)c#RIgm8;WT3jK9i<IH@a0&0!Ek^Cc
z?7NrX8Y4%NKg*jHEd+<Rp22F1(5q~VdS&ytm}7>rb$0#^Pn!n>Ebh@Fv03(n<gMZ@
zhG%{Ux^Su&Wc+)ZdQUO0K2m!^c#d%QJ=0Nj6+7H@n=A0`c3z8<>d*+5_43WoOcl{O
z*s7uT(WH3G9rGC&RZ!r!D`ItU`Zv$G;n|^)+y5wV<TuR@NU3jgs1#-D)c8;#tc9Q1
z@(k8AG$B4JU}K-CaoY_Mqd)WtlVJ+oywyBjOy5%D%1<UO+2{kjmbH|N(Ap0RJJ-uL
zkCzR%ERW26Ym=RMw@BB@H_@i3)i0^$rSKIZ#k3wb=afVyXotcU^>LenJ1xSXTuRvW
zot>Q)+)jhsP7^Nk<v(N$_GkZ)<@ePoAeffxVdm&$q9NersG-M_h~we|N3os5z2sFC
zY3M&a96xn9uiGM9Jx(Wks{}dwKn(sSck%Apk(8-Ok&dl<0~|V2-<)leM2AhTa+dY!
z)>Lra@?Ne#hudtTLXX1ltAx1Xg10XJm-`)}d)ojd(QPgj-42FT+{U*84%WX&5fX4x
z+`f24p;>zc1L^bjqCA80flB#7$-oRc*us)c)Z^6Z`%isH|F!X|L3elgn_E*J2J$Jq
zeCIQ%A563Et0)E5K{I!&eSSPHoAjcR)&!K|W9;n$#l+uS&7D2v%6g*YX$$_M8MC1*
z@|F71)VTu0VC1YrCGyl5rQW;kWSB})2F@S@n$2OAeE{3(-%>e!U{yg7RDRdHvF2$%
z1n_^pinToa5#cKeqdMg`a4T!0@+n-!e+SrhdI+K6&Z302Xi(rgdFD3ZcMu0VK!vW%
z+6)t`mEcdGGSU7tD=;%{pu6FQ^_eeDp0!Xj$xba-%_hgijz1L5&$%a(|EUFuG?-CI
zM=r8&fB0rW(Fz0V^a1_Vw?+@Lj%bz#(9x;x5&^f<Y@|B#Q*J1Jy1ek*Y7(Ul&OX>P
zH2a{SXoL-=7M}2a{cA_f#!-Z^>O*m<jK4Dsdk^hI5F{#T#8$B9>Kliiv3VwQTpTRv
z_{duQVzB0eGwldaSx93!%E)+>kE_HTt^te@5&}GEpT~_q6IN4Tl%()OUj^ssHpYrr
zEPqv*x%lUYZ)@AGFHIcJfT)U&qfL%RTd2FC98l3I@dEg(=}P=oNkW>SLK#gkw*{iG
z`fSBdl@j7s^>^|i%Bz_D`BMjPhZqxc(ZnX>xaK40?EfA#(8!}Ty?5$CK~+AunhSXU
z_5JJpnv_m=(Mk8IbW2QgF~tyuOOIc+|94#_&L#9CTFObYqIX+5BQ`6c6p$6$_m%&R
zntZfO4~icvPUT|<ww68h*1xW;*#xe1WqPmJJ-o0#SbIQGd2j138Ef+f&H_l8v}{Qn
zB%Z+DlmL^6WxAXF<#(B=FW)!%vA#d{FV}$Bp`grRE#u8+rNPrca2;`%uWcsZ10Dr0
zbg;Jad}xSnxZu?GREBreZa=jAX#3A&yDTprZ=}@P<v9$0%K3I@e=wI$|1}sP@J6m|
z>wMRbVESatkIj@O3qacW|1f5DR!JpNDPIkk^7OhxJL~OBA1^qCohY&rmCD~BXH{*4
z6DH1j_>+nVFjPo#JHfG_*V7Z;Q#`R-LI`|-8p!YVWs6tuiW<ldXspjvRpc2uQ#B-P
zb!N78$HE9LGpc<%TXcxes^6^j!wa7~rG9UVzF8*ged=yhQVCo#kUuAObU9h*3^{k3
zUM&H47&kTbX2M+awh4`r%(Q}S*R<+8=SNwQ6_W@d>Yzgzur<%4Z?1YkL{@_oTgn6<
zQxJjApT}%17y=TVL%2cFvY>*Yhskw3#r<DYN8K^2?$8hqdi-#2CllH+^iG%}k=slP
z78QErQ{y@}NwRuBVQ)hW-u}MXZP^bbZf76Q*@lqj#*cZ|k+>uS3zS?lKda(aWj(E=
z<PJ36(7c^}Utm<gYQgB%U$MAUedeRRVEj<{hsPZ_-WvvTZ<A2fBQmae{E`j=`RXj3
zN~iJN7(cVG8O<22afph<;l62m_~apaYDXAB#Nr`Y6!mRgVW5Xo>8`8Q-17(P<;s%$
zJ~(p&?zwjSev6o&&i(CaF;7CgVt<*DnRC&(?$zqCRGgLv<S3CH=k)E8g|M{PSQ{2D
z*Mti`s6x4xu`l9=0LYy+T7&2t&)lXfevjS7!6Rg0EH#)kg2&wAK|=(^`mP^AOIRul
zkha_kuzI9v?)|yu2>;7T?|EJGMfwK{J0od+?ONSe#YS3UgfVxSHUl9!$OA#GZ@!F)
z-ixy1_J98V>qU46)CXmS!JabCzBuyb4ByqYsdMPW!As~q--c|#kE3k-q6*%cM28F(
zacAU~LIah#Qaycyix~Any?Tm_k<m!p4-FDH{&KdX&j~G5Z&2UCl(A(Zg7oFl>v!rb
z0_O2vcPr}N7I`;VWKZYS`V5FfLFBJmIXScp7Eu9_V7Ak8;Znx)1VE|(@DoM5jLiY;
zmTm${kKk3HR4v6Xh>JM0cc(YNdvOsv2yst3fvxd(+$!?L@82rtac756IaO?p79JlE
zLdB<ea6_GBVDu1LL>>%IYHrMmRaskykhtK=bEk>z1=|Yj#i=6n{&_@$SO53^LVra5
zWkY~h>BEg^bsBCp9v9SLtR$a1>^-GBW4x)2pfAs}S^EWOWdnJesCjs&Rnlv9mKld-
z37MAY3;7#NAN|bo4@i^!Y57sL8UY5HtPnHn?<ZJb#C>hvuY-r6h^PD@2LfDlEJG-<
zi~m;?JLS%k_CDXkE(VAm!{I4qmFr`rv*uArr%1|DI!;vg*!@$s?M7(3ji4lBH!QL*
z4l8w9(IUQn*lv`?*;2JoA?ean5WB0QV1d>JMSD%JT-k5*N8b}eb|8*G{#5DEB~sDj
z4}Jlew&m(*smk8_fHS{Fz1s-?68DVZ*S4_nZPGMQ+#2b6mp^)G%@0-5nO;7<Kg~kC
zyZ#M^k4SYY(0BmJzvDTf2qC<?>(+aFASvo%omJTHrb|NySgmdOMP>67&0Gm5J8@?=
zf6)}o5BocXkeAXgIp?N=gq|zy2{vD626R}uL@AxMdXO<PquT$;*ZWV4q!kd+GR&mq
z1MWgD1^>l^+-Tqu$j_7kO2Om@zQq4w@lM&>ZQmpbySbZloVbu&&}5$1$W9G6Pwei{
zfEtY-dDVN(Y;nJL5j`l7w5y`$UbQ@4$gGEn2!Wm6CTl$*hU#b5m@L}Xm@V2W7`~dV
z6`5KBvRGWgwy~et8m}>pb^^n)lA_Ez;ELvRxr>F9Yp#z2)nADtHJd37<GRn^rFQvx
zCUPq1Z0=<m%mTe|##vhtwz&Z%6ZAf>YLPo~M%tXF*|p_;qka8mtNOP+vw}mvS_*`Q
zsu`TyZ&CG!%C2Qk8QyvE^xT^(;cSj)!}&pvz8$>ryQ)?>U+GGv4&EHoUM2uLp_Sbm
z$X<&csnc1^2u=>05iNOkN0dR+YnAWMrLTiHeAjC)j#vm{!&HVw_)sAoV&2r8V9Nb=
zU&1o-d`f4_Bi|UuDU&c%l(}hZ^s6D=gv?NvnxUPFH+nx$*0BPiG*(x4(%VTRS%_BA
zI>kIqoPYPzvZSdK>3XwMaC!zw>hkvvN<!ex-7QvOzOIHwxCtrnc3MxI<B`j1N%tRR
zufN_pkx68gMhN8z)ck;p4v||@goYQo@6@TkaWV<uZ(5Pp&Gqn)3?BF_t($3qU3>x1
zIc5^XK5-iLBqXh@$0RKpC?e10=8_$Iu(P={h>6mdEkKlS9|v6Vt#l)&8kOw0C2IXj
zvoiCcl0nPKCes%!x;vUdqb?7{RX+j>HbA;$-$jnUJtYn{!niE@SgbsR=NkCvG73Cq
z+y<`5^oTeP7}jtRn;n1Rk2aU?)wa){D1DU6JZE7B1jh?Zg$s_Yu^O0#XTGDin}Xdx
z8ChFj);(_@NBt}8zZX|_!)2XoH;y7v4g)JB?=ML`HP=b4?2JylL`7h+iKs`r_@(7t
zp{`8n8tw}>sxPEyYm}>>TMQ_9Yu2Y~B*w{*2KkdDT?Vk#MsIj5Bq{(EfIrs1zNOfl
zS{{q?{GA6oA$r?#CllCljzL1-0qoufKavX9$~6h<Ub*zBw5JEvJ)*iHwwGlLeYBew
z6$;k%@&f3YA+I$1Xtd+V8RQg?7<~52byc&(kHg|*GgD%_%ha}uR9?_0ARDnj4kbxC
zZOuSWw;~&cF(skJCQg+z&1CG|UR^T_FM{!!at2Jki~u|C{f?x_&7}o|UQ2pmWGD0k
z?h(PvI5rXZ*LBPDj!}htIyCs8i*9adW2tR^8Zd#U9oGt%r9K%kjprm?Z?2b@K+#3E
zM*KYuus5DbaUo1~kmS8bY*TyTUPhDrVbB~+$CF_Um{jWDCe4^rpJ)*f(=QZpSmRxY
zYaRzS{31>r$k|W&-CiPMGd_FK$eZW~19r9sL>V>>DhtZ^vT1ekX+dY>?f}nZlffMO
z?vCXb;!v8b%L#FfKCg%9+{ZYr42|0cQQgANW3G1iVFSq8=!KdLiw?M1BG4nO(G7)v
zVU`w`O6hi)Q2~OdsrAAO%k4byK!S%$t)TzFB3hiT^?GtXrM19mU`@TuXZqrGY7efN
zWaV6~S7LLSY^jjPbQ@JMEq;*XQ^jR;ItqCuZS-P|va`JNBY+$_qrBxq!l<1B3Y>m~
z5`VmunFS$y=ueC&=VcP*y!hLKTsqHlc3mbDvUyF49=`_)!6>(UhK&`{>??~rJIi8|
zvq6Zp-4si>w1#F?u763(h~Mq(BF|Qv;t9c+<@nE~S-@*i!XwdS%B${9fjfx0m?BkQ
zdW^{B$<++GDz=f9L<n;zqBdX&nZ|MVLwlCYQI10g+rkn?dTKD0GKjy!m=Dt;U<F@3
zwLJfG;?#-KC}D8ld>OLKr>!#WJ%4oYu%Cr$VTt-zWPxX#Xio}&8GI%p1Bqfu?#++M
zK>AFOc_m!Go|rYzNwuyfirB4`x>R5cwMgn~#LSk`m_>VmUsKT$u`?k7-i`)3+3OvN
zbv|c=7Itb@G6G4sw=e&Zanv-7@~*U)otoyOE^JkCm;m9ju{Q@$)5BlcUhNcI{B7<K
z@%TG+m(bUeuMR}jX1!34G6+QjZ*74@^wzsDRC!#)gM#CXQPb><`$+dyU5CY?yR68f
zex9<pGhw4C(w5Ds2z_ziP`P|jFG|kZ4xh5~b|dcje`X|DgGsW)C(wN2P-GfYKBeg{
zQYc&tbzjqtukBADbS}$mb8%9n8e=FiiD2P1Z^83<PJ?b1YjD4r<5K}%@#?6nRyN0Y
zPQaNq3CnGH*gC4H!FwPpx+ARY%=o>ZYZiE;;me#m+5XCmCP?ZEUsz|OxYZQd-mbc#
z<7_ZhBUuI1-G^zfp4Mq>_s^d3fJkaXvv-5gK1qQ^dGMi^>Rl{!XH(FEny(~zB-8;%
z672BH>7>5BAO=ol53hpGn9l+8{gS1dzNkV~X!r+IAL|z7O;D>8D@LG312q*4e0BZ#
zX1?%+F{G~MVzQ06-QtSStzVErHutXO-+Hq+e5FI{@s@mI63kE<1oeNXS8c()f*cT7
z5ZrWBuxy_Iaz4JjS{l#Y0>#`bQ`T&C%X_O*k*`dXjc@@m*yk$)KOWCafrlq5WrX;n
zb(p+m9hD*ui&G|>-ZnU6e&1k4{FVXweu_H-XoBd{#nw2_JWfAvwY$(PtK+9LWT#S7
zCr0W{Y2+fjXL?Uyjv_|6t8WF3D1U+YRs9`xM<t4ZYuT4LM|5E3?~VBIbq24@O<G?y
zB(6%Gn`F~~%JM&7)y;jN`A${pjYAi<QoBa^%BvcS%8)`!Cj)v4O2s+K?U*hi#>Hjy
z&V;J0`>Ue<Us}KqAWEacOzy>C?%}2leBZXqp;C3+x53jWE3lZAB-16S3}R_y*bAz_
z8!{E~zW}ev>vPgH_^R%kcIHGKDJ_zr<NW*ka0D!<X1iYEwhc;1nTDT+IQ{<P@$l27
z{Y(P~po)I^L!xaRI>{CtMqdB?@L!UqxnTeX_a7;QEkH8u+>^f-Gmw**0aRgH&i*6I
z_I;oIzh7!$|Bb$@+xfrNz*MrW)<lrK_%$5)#c5zKO;M#^>30x&ScjMffcyGZ4_y%=
ztBjCmBV@2+5us^1G^HVUPYwAj0P^lB$h2Ln0l*xkYLh8jDN_N+^;U;yy{%0<i>{9X
z)D<rfVl&8idAeI+fNt}!<_{xrumR16-(U9PF^}hVYC(1c{Y3^r%M>HOb~_`bsj<49
z54V%|rMO<!tSxey@qO|>8vb>ypkS<MjZ>0dhLxZdg9qM2%S?gNeA~t{(<is{A4~m-
z5L(Y15yl$gH7c`?c$~T2#t$M^7f1%K9_zj^goM^mNa19P&qJts)!MxlU4#g3tVwuz
z#<$=L;RtNIl|C6Ezgzu@o(?_HH>d5MU`P$2?IvI}m#%v+O6^+v5|I1ck2xTumcDQx
z3*b(sOj5px17#LBO$}1$3Rq~V-q|s>M%)QC%WL2G+p2#nbQu41Ve;KXjW6b2mL3Fm
zvk#m-c|Mzs^0gX;8?D(5G;+S3m1msWy};i&7J(AC1Vh{FhO%eQ-#nFZTlJw`eo<<0
zvR<z)r#=C6x+wUjftJBZw61%n<x~W-lGqhf{{#sjaxDvElm-CKCg+fkieL9@Fg2DW
zw%b0aOg=ZBumxc+NfW$U$uoE1=TluZ{>cMq1(#B^S{RXB6in?T9rk|>fZGNSZ3C8N
zKMBN#x+C@awyNwNEV_DUPJY_5#olo;_~h%e^Tt5~zM~Wxwfs0^2q!|{5U}x0FH#I>
z3RXhbmaMxE$6F-Hd>g|AD$5xpU3fnS3S<KP%X%bQs=vz21mm1M{Sv1{z@$8fIT+nx
z)&Zt(>@YiIidlU=&pTp%GBf2@*EgG;k2q_ty;J=aUSg54wee)jZ7FU-Y&%qZV8PaA
zas0Xq1P*iaERjR=cxqT>!GzZErWQ1c32MFKx2bOj<K@>==+!%SL4DTBjo>7oG={^g
zqF~CwFkH(-c%544df-kyy}SD^fw$f(HN<{$>tTqvp+}v*fQ|h~812S}-Do7SdZ&vP
zIh*|J)%=zZ$$igw4NK;6owYoP@a;&sc4@MWNT+3|aPxTwzW`ew)nmhcft|JSx}K#f
z>{B&MWu!0l1_MF50R```VOv$_i{Jwz&I8dEwD9fFuFj3kh{_@wj=N6FR$e0i#9&yR
zM*nZ4s!XUO!4UhYH4FPh!){HUc74|$e%fO`0G#WFiRmd3)V2JZafh(>fr7ojs5(oM
zlm$t;G{?jd_F%_G8Te#G#8>q^T#5VJ_F6k+(fwHj^h|Ib18*=;=8e>=a(Y{S$C<}a
z)i+%)BP87|loE>_!WARj2pw)am6<5^v5oW%AWNClVC~dMtZu(9{}Hilm|fT#(GCq{
z(wht{{5m)+zMANrdYR%A-41>!=&uS})k8fT9U-u1ta*>LT9w%vZ^2fxs6OvX)>tMp
z;I+=V;1pDi8Efi<?;@V=z47_jRK>UWAdQAeVaZ^MjeH;}3?`UvhUzzd@lj-420av%
zu2<Dnn}72%8-9T{XMzfuz&g4HY(8OlXTvT6yHC&b-gHN&S(Q5H5poRm2`r0$)g4vg
ztvQe};*m9aosBZoiF8u=6+g9#4t04lbZuY|iABdaHns(NGjrUh<U71pq7UpG*v_Ys
zGv)oL2D!OQcjqU07k52qRh;3lSo8KKD_WMZmX(P7jqYGKDU~TE1h!e$Vw*(#W;qhb
zYqEhn#>wDXHhdqpF>8Uj3k4aZPkansioG~eG+JoteF-AIjGLFC&FDefu}%iPXF_>u
z>v&Jo=9wb}BWE1K*Egq-YTIj=9fPhbnsv@_fILFTNvMFVFpZ}xiNWp|-<tJ|$#oSC
z)%2_?_cKe@^h#$HHMt^KeelQ#G;?_#HbrBHx(V2@Z(6&IH1se#yy|Z0mfdaqvX!pn
zn<Yx-t_^dtrom)squhnppx+-`e<gL5YT13pJQ>u9%-dMQUp5Rp@Qn)cZw1o@Tj%u?
z;R7l0tvS%$gb7e7%m}N2SpaqGrk#y=OnVUPFxIfSL-3T6`HB|}qaWn0P?g!C>NVic
zW}=mmN+sj0r^vh}tZDt{JsK42AJBqtq?8_un2x&R`IKnq5{tS&qPQrZ5;%)^Yb(jb
zD!)1)vL<6IOUAiJt1f@IfU;X7D!6bn(`vyweXh?CLfbkteVC)(m+4pY@cAw{0U*!r
z99L)5*Z6?H1s-36PDM;R{~5*uT~m$!#+LVt(YI>T6!-Cn1?3rbTV%i<Hni$XTC=Ra
z546|yZ&5uYPidmGw47!_3(yC}VlkSmoJ%Sh_Y*E$;a8(=e<LEoI|t5kyK#BhA>F0J
z%s&G+QY4F}e8pEV%2LT1ECj=@?wr?bc~!JDEPmSm{e^q%VyT-8t1#@ui0aPPyB*et
z|C6OPQiOcHFL`%MGbeo(JwHX(QZ2R~hw-jGeH~`!wQUyWpzBFKgi;QC({5X4Z8;Lh
zA&w&QACyxYVR4;1;PKSo;^o8g@T`k#ZS2Zk1Lh;sk|;QSgfNn1ee3nK(DN48=nJq@
zZ3^7yZnm;pW%C7e1icSg2AXuP3u7+*o^{TvM0jIc!^VETb*ROew;B@iD6!^*4OlAh
z?M}vs<N$Bvt$crRWGlRIlBC6G>q^aTLptzemyoR(K)Xzbhh!?616?J%I9Ul3UG26u
z1Ha5M6o};IyV9&g^+V5h>aF?b89Hozg|0{7cG4`Swp$plQyKNOeNByP&&uxd-FB;=
zIrH<_Yj)4YGh0g2RB7YdX-TuLlZ(y}7dE^#Vu%K(OU)1YJ-m1<q(5VHA{F+@F^3<t
z$V{n;C&6~*>wfyM&mt58M@0G;WM!~_VD0L@l;G>Vv0~6QI`5zP6UnmJ{jFZC{N*(0
z`*(%<mBqM@^e6VqV!qvH0V4ia$N>G|(^e?vQ!Oh^Zn}d94?B94bE_kG2RptsYSS5e
z?U`cW1!e9;ie;aHFeH02<E+^2Y`&llJcfE9D9nNTC};4kK~=91Ch5z1nN5yOR=ZoL
zucX|@Aa6;B#oYk(qlcq8ELl>1sxWHYLb6s03Epb1mpGs+OUcanfIFc<z>WmZ3>m^d
z!^s1V5&kaKcY7bnMe~+PBzEU~rrn-*=Eo@0WXxKBlbdx-wL`{dluJy(uGOA8D<}Ic
z%y4BfnNz_|v{>!BWuG44g4>}%;h;Nav%>&Gaed8MYQu)3dSQIay7Z1ym`bXyfOZ`S
zaiz{x!?W`vV94mXnnm}X5Hp}t9bJCcm_L>Nl`ziEyY)DVB9(XZ67z${<bmQw#Z##d
z`9P;LKL;-;c`in1dg8xP+lY!k7v)^oOgw<XsK+;C9Fm{yh_qX<8X{=MYdOeMb%JA<
zAMOK%xb?2ARKlG~hga>=op71$Kgs6(N8(%7cuTIYIe5H-EGG&Tcm9!=>WDD#+j%||
z=<fz3m5<_6Jc=dN&_r|qp0;e!#gN`sCT+0ti-2DR&|h7YEoopDlWD=F&7T2ySmH(y
zqgdqkcq6BCG-j_k@;)v*<vLxn`g5~%HBY#QmhS@MpwrIcP#RliWm8IUYzF!swQ^$g
zu+<Wop7I<iw9P+^(ZJ4xu<lynhA6-sYI&_gLpf(MP5|Vhh^TG9Dg&WVvY-4poC$Dt
zmy<0j_48R;mplv*(@Mv?<iXzSIqIA2>D$midMMv`{Oc+x)6e4GjzFz>@sNNO_OK)9
zq5pg<d3x!YIJHB<=&k`GgFPo4m<?Mxkd59+6Ar!Uvvd%*GmG-xxmjrab?uYaW(<nG
z@%jnP9jZDiNv10xuF9S^-f@tvZXPHQps^Vwwi1rTWIa709#!G@b_lhKYq2h_qTNnn
z;}3a`pTb8W^)+fwaPP3$l*#4Svc0Bt+gz_ryr|p3a53$p{DSvxtUY1%M3SF(*Gag%
zHiYThnmeH)exawRl`+g>&N}6=f%{RC3G(2eV|d41yWD=Y>mE5*QsPabYNbicu>OfB
zKn`ZCCw-7lE+B<Cc<FhGPaBRwO3z5lkyuDpF8Gq`4(5;c(i41{#eX%e-A{ZCL<`Qu
zI6E#1{j7|7lLL~i^KP<QgqVY5M`bkxMx3mhoO-a1^lf`@OG6t*RtlUs*IxM+ELHHE
zWRFrmCPG$zW`Q0k51T(Yuwh~~B5$+8=ER<FkQ`+pcx?;*s*Gx~s_*x9++gIi2)Gv0
zRGWo!rTiI1fE|m^2R!j5Tcgmov@LcDJFj4|ppCWQ;rDESFP3>Kv<3uh8qOzk_UpBA
zSFpjJr^E+BgWDmvekE+6r$ibf*CiRNy6O(|^dPwc-Cc=TcNHfj&aLkl=&YEdfI*hv
zs{WKRs|~T$+^=nFxSnOB%D$x8PyegMr+j>XCab6QEGO6DqRu;~`&BrYBSGljcJM>c
z_KOmpwu+Rmq(gzSeh17KwGWj%m1H<hO)gD}n-BTFR^^W#<8&LKLF*ZpbNR^`fm5{T
zE1Jbo>qYITEAV`SR`I#oL}AmZ;M2H^cXoG}am&C4ke@+Qoxo%9Q#AP7(QBhnIwK7h
zTU%Gs?td>Hc?Vxl{WCqMNwoiAyRF=27RM5UctaNv1<w!4d1{b;!kdQs3X?@E7ruio
z&~d|~vS_OCR4`Ry4<?=76)-%v^z<Mo^`(druq*~#!c-oij0M*PgGy4b7^~LZ>BA%5
z0qOw&t@Y~EAv&8L0pwBTS#!~^{CxfikAz*`q3UR_g*UVM%w&01@9~TgD?zODl-xC@
zlz)MnN0~v(dA#R5f>|f4D-cZ7OKR;Oy5cXJTLkZA9bxGoV*fa%vsg6R7QgpQE~be4
zw{g#<8USc%FOBDJl-*=-$F^fFvaQU5_wEXtk+Fkaz_Q9vf8`km>nbj~irBM@VbtKz
zrBpY(XO^7S^PQ}sq__9FPPf3^@!sFSVKx_FS-yR0z(|u68#+N>Q8i(nUpMRxGtw7i
zM3dLYoT<?Tl5|&Jj36xv*1S8BBKVA<99>F8;p261yR6e3bZXwJ1soTUlliJ8dTTAe
zr!)inO|iF=O#|<~n4Y1$!AD~zyli|HsN`&tNFMu5s-rTyxnJU{Afyzu_Brx$H9Fjb
zI-Q(DHgEl{-rs#$W{Ot)#JLvMqM$jYxL&lr8H8Rhm<ndAO&BqkZT*FYmnng%jUF!l
zI4be082GfCJN(zV_jSDO(9z1v{vJHdDh%!-DXepAj^}~>K0=baE0{O!U#P>MCxruU
zoqss9qIrb^ImEhk8**=tPowSeK^L*upXShmed9P)ezf5A>x8yW6Cx(UX-0)+qarJ~
z*1ExODmm=dFiL`0VBUZS0Z>CrL@+CH(9=E9q`TitNU%~z|7&%F9=c2$=m~5XdXeQ^
zQ`J$9z?o5Pn&NLjz8XLscID?@sMZo=8$0Pw`1Z5(cVEXsGw)xl%uT1%&uSO}I$=H;
zvq%p(3F(fpGYB_P?q0NMPG)~@B=r_Z|366TWeHQ{5_^tu)X&L<5aUhK`iU#&d@&Nn
z^FBl=;sXaViz{mT!&NYls`uNe@JG)gdPnpz4iWNkCuDR7D@fY;-$4xP_(aUJ|G+4A
zwP|nuqVOn?<`PEAMy-Y1Jp0o=SaMc`*DCu%E|4$Iy;9GzMiO+*9gnfnG{0x0XCTv-
z6kRU@_Qt|J-XupyD-6gT)ynaa6W3YchIgS)j9M;oUgpXA7D4w?B>j@NItnE40ZsbD
z01<KTdR>FLBk4O%Z-yR@ddRzUqMrQxVh<bo<E5mCE~0k|XH;6{1t^cwGcmL=ej^z*
zi9i|aH^`zCSZ1PQHQAB;hCqy&aV)L8xW?mJEXVjH=PVJn$2ZgNU<UxCIo7nT!8)7M
zft?k4Su?WnTt#%ybEh&0V?+UUK}kzsH8^i6>nLjBY<N%CZ86SIR=K?1bt$QAl<`C{
zBQE@CD6Gc`wED(9NrB9$A~dB58YKl~o4rvro>}N$nRUeE@egC4Um9K@=la#_74*XV
z-H4+S^dS5Mp{1^O5R>oVzXb{7x*AmLlS$f2cd)3^hsAr?3XoZ;DstznSpW%n9>TgD
zi6Tvszik<27*vDy7FSLEI}NwTXF5e(FZY>;-G1ZTp1j(@VvrFmICnMA2}+Q^vC?g^
zmmV$mPjk;#%v(=<P>?}?Asw00-woI$@5AD-z`~egJ?kRe<ZD0@n`7&&WdXq%F3r=m
zaG<0SczclJmK!c8OS<CAo$+z314izuT72u8*?K)}yj8T2nxg)GY_*O;`TXzcNln3p
z?bm0n7Olvbky3?YxCaHfoa%a<74u-w=O$(*L}dTth3U$49>kkyk%Hmj%K)3wJ6|E!
z#W&gHb8`>5gx{#9+7jt@Tzud(LNwE`cQQ_$1%%cY%S@7GW-Rs*lVo(5!mj5eMcBnO
zr0eAUf=S+h%PiP;2XD+|I7VLiL0tYR=`1IIwEr#Tvx(QBH#4OP$dJjK{&az`-sac`
z7L}zsMqTW*g*ivRMmCpnTEEdfvv5(S3)a7enNPfUP}4REA;by2NEXgk$EA)4R`iHS
z@k-SKu!+OyLRDKTufCCDe)qh&)|3i$jxH`NYt@HkV)6Z{(BswkQ<BN3{^D?x@b)cm
zn`P5v2uK!IdJ8GN(cCjC!Pt}~v1!B`W=$Asda8uXk>x4RrsTN7k}aC7Uu+(pQN~~W
zH`_BdnvG(okO7E7gt{eiLPZ=G8@5tUZiQfT{XCN#KlNxx9IVK_oIDWW-@Sd6d?lq}
znfOOr<fiwZ)=4Y;I#H7T(A>Kp0aycI*eO|wnA3>!HGt+)@cBHlrNGsj7WZtq3$wE=
zXV;wKAxmpv9fTsLxXnsTZkphh<1i6u$l+8V)tP9za-h|6lw5+d;Jx$ycU^=}SrOVw
zxW}^u?tWOYwo7PD!NG^x0KW<av2}RHZRXY707}R6sO?aa`){T{z{a2Wu9JMTy*@w#
z;O%c;CpJxo@UwK|YRumFJk^K^t69Gs7J9<D)-Koh{F%rw(r}i5PSkkqidiCmTO+{#
z4YqtcPZy6#P7<@7zaTadi_O%)<S7f~uzFs{7E0#mZXPJ<T;0%rzvWxk^kO9y=%URa
zX_k}&9g{35+Cy_O;?C5Nd}&p%po{_!F;>H<|Fiki#4faM=4gkoE(8FcRdqU1VO}2g
zLjRE{=gm?Q9E~xIbYp^S<xd88kANVLPBv{-*?J#;5XIL1Xq;29#61zmS<%fwk{XY;
zS6qlU31sieFY3A&Zi8;JaxyhG@JfVjCdI1j+{wN()4T5V%G61-HK8<7*E6isBID`$
zG-by)h_vWctl0aHRXr^V_TkfPlni`TLnHVQ*y@w-hQ_tC1Z1*1TE3M&$ev!)JzSOh
zHAARN*E$dyecUgK4f5XA6khI`mG0{z;S3?mlP5dg+Qr{p0{RhgT<r=dDQ%GlJE>ko
z&3%v;1OZx7`pt%?IYmQTrippBZ=q*|A_cTNYj7zs7yilUbkIdixf_u`3N2`5L$d+;
zrWy>I?W0<DOXR8urGBbq<L1h;A=yt(cUJvfCT|CZq6p3NHprBA2C*wI*$O8g<3_yd
zS9n65OIT|XTW(Lhi}EQ`dff@zMNun1b#)7M)K83r>J=u60jt~~KaZ(i<7NTjFY`4>
z+y>ZT>3JS$7G_ir`7m&|U;RWffCXDy3s(dm(<|pOHVe=Qx4t-|zA-XKwzDyQSY(jv
zFv>n9b0|F7JX^02fh$bUoiG`kH_k8jEMBr<RNBMHeWxTpahe*{)TmW=rcv5U-7Ky7
zIicK$sdr!70Qj%;wRF6DU`K5w-3cb<o+j5C9RZtyt<dIFFov@Ljkfxwr+0{?-~Ssj
zWFSL)<tdhgQ`iZYlhev;&#2*Z=8j$2RzTT+`O{gg<}7CdUYQ}=GXWJ`Sv@C{)}#$h
z7px{GKpud9WX0jLU)NuCAaJ^~xveU#qx+nBsr+?v+CFTA+=Y#*07ArpcvA_uSjRBN
zQ(sk=1MWi<2-`jZTZsS6D-O_vL5wa@wDaV%lq$>>QT?J@v*QB@={^Sjkg{0}p+aNu
z$#?@$M3Bz6s_s7ZyM9S=vU?;nCSzsH-Kgf$?~7A+%t{84uy%T~&`4>~Qhb?(KmN4C
zE^oSZsJ*mgQ?EkQ^*(a(RtY+GaK&%yiS3J8NpR3ea2Kxq;a_Bi8*CF0!Sk*6wJq1)
z7PsRa`c5`WfU81IpR3*6*g|Y>Y?4XM5&vogbnflalr&0g&gx?PZ-7FDw(!4zsT|Rf
z0~^j;>lz{{%DlsIjuDawp<Kk@ix$xO1ScD~K#J&(OxoHT({qQj?uVuVwHzP-uh@;<
zfY1Lj2=vd27VUw5byV3yctGnLU*4BcGNov3t+u|zC3yaif|QfDv=h7N!a+6~oh1m~
zA40R6(}3ET>PmifXIt<L)O+l`#>~vjZUy!C!!$HI^QQwjmFu#p7Hx0!_RHdgz-`0<
z#z+dOxW{{O^Dv3$r+-`oGaYzZc{H19-3EvS?x8P6Dl4j!f+L~L>pa0f&inMF<h$v>
z6mMZ5cG)ZBMJ&Hi1Fgzkf$TgI{QL4x*p+vTSX0)1WR}{V*rdaC15W*Qn&a*(n=x6D
z!ar!XpqZZ0(2qJK$j-fgp5}t`3FFzEzc_f^3=+zpf?tuRhV`=ib+;{FG&>un*Heu&
z_sYHi9*zpvtsuZ8|NUQx4SxKOfp`0FP6A?-AOCTpkLsPx2+1EdUfHd5`eC8tp1a58
zssk*TjooiQ?lnRVz|Bq?U3sZ44BP$o<A8<>z-f*MC+?1B_uKaa62^eSBmhU$26_we
z?0)-xK+D$%fDL#H#0PLs;&;D&KfobiH(<QX&jvztYwdpfet=}{?vy650Y#!SyJb~B
z4mbxi`vg2D3XnftS;eZa*Hr2+C!@oRJ+`SeY?Q*fs(!2f3jM#%vsaq^eK@uNXRuAM
z?h-o>dY}Zd+N)1;k4yGZA!rLgN-bFxxOxA&h%g5Tak=d`xuHv(oSe%gI~ye^X6QQ6
zwr#2-opNFHTSU>F(py<Uv%-N375$h#-lqxM5&PruO6JuWA9V5xw5k*Z$lArvS|2y(
z_25RnIR44sHe>DGIjOVkJZHSv{MV!ybpst?vw;K{Qb+>7k~9=F_ZG#>#!bX2POkRb
z`g=s4ycPW$V1x^0{B5g+lqj^SMBTHgM%KX5?`LIp65CW!qEM_)70+L;rL7am=J<^5
zG@t55S9~r8)6Jx#w`b68XX?IbcyhFjZZC|sZLZU$h%S9^t*ArD6n3V=R+0#cThwYD
zg~K?Q=9K4i5#vl0(jBd~*b354)xH8KO&eC}4x=p1n5PLhPwWmUj*SvWt>a}XgbAYu
zz0{^u`ekEu0bWJJGkDeU4oa;7kzEGvK>4}f{%_Of0l$Oiz18Uyi7<;eZsoMHA$q5(
zgxqKd)Cs2+$x0E0E~)4A0<Wmq$TU9RY^!QRUtKNT95;&|Az@eCnwFF9@J(0zP3=;$
zUR`A)xfw^4)#-7~98vM(aY<>4Jkz=oEmHQp9I6b6ErbKJ@|$l|_CZipoPiL}h^OaO
z3lKnf#Op3rJ^tGZg(LR{^^4=uc;kp8{(Tj)j+zx*>sYs(T+$Lu!>6p?p~7X1mKwz@
z!gUPxYT-DaSY>n6=v#XLf#xSU-NB`RW_B4Pd3Tf&RD^N;$E6*k06D`*!@A35q1D&u
zsra`J!Wi|LL4N<~T3$xoSzK+u{CZ=XY6?pj;DLk-L;iOw^im1`4|(q$)ztcSi@NQK
z3Q|P{qz54&O{9s^2{oZZ0FfqLdXb_?M_LHIX&@Bo9YPZoA%r4bx*!4R0unl$74WyW
z?)!b`-aEz_<J>dupL?rWYrW-p=bX=co>xVW$GO#MbFejiKV;~DDrUOzP$oRzi!av6
zqqv$JzptH!jIHX5mf-DLC^7=$7yy$xO=<kXoCj1ZspW8fwW@wZF1=21=5*Ikyi6(H
zAGq|4!-L6s0zN{B?4S$JM$i5XTl=vz*yamd4rxsiCp?z5du`O7&tdpx;<G{0X&UxU
z-I2eyT&r3ju#_IhgSxBZeDSf`e36H}68q`{CTA3p%p;~y_X`Dg1V=K}85Fap6L(no
zHu(=&n{N}(?eHaCGdU;kfIhKqj=2vbrp<5zyUP5DREy;9oB1(qp{zaEv=OJxUfq}5
znjOyi-ij<2D0mw+L|SFByf9j87}uV-EDjXwE1K^6l=+x%s|;y<qY+Ep9Xz*-0qE!z
z2KLN7VzdGZm!9yV;^%wbv(%}^6g>d0WP-#2wZ(P5k1F<ts0Q2GPI;ec+CB72R}$Ft
z-jvA`_)LxuO*ZW`Qi&DjWQd=w+txhLt<0~(a)~M&EbiKR<ABb@l!rC#rB#Qw__c9P
z5(imuQ4fUDUfVZEfxN|5Zs05z2WO|(cX0~FNmw6@;%E1trn+^k`5ITQ*Vwm_rh7y6
zj68YEmKG7M5_f$!Ubb|sshcgYF+AH{8<nWST6)*nrVh1W`LYib%6x6jMa?DB_e!`9
z+l26Qg->t%y<2FBE+uGbTaY{)XMM27bJ+9DYiYP*C^Gd6n;=yztgOZW)1|*@f!3XG
z#|UT0b^=pyw*FFrk)CtaR{Yr8u@UXZfIjP{S-_QB81v~X3~ssN@wk#!!D=0zORODx
zDn@NSaeaMQThIfq3=}`{`*w20*dg@5_Ii6GV-f~zvAtHNii+7o@#W6+aGw6&x6@5C
zPaF4t=fb!Y2kaf#IPri01g4+l29w^#(XgBc-Tsm6s%j|sqzVCF+=*@4EsDL+tBvDv
z?o+rUV%AAY^iUZB<=2IJ$p&#x^cw948d0)o#gM=ha=c`6e(HS%HtxgOQH7<KQ}1uk
zA!;OGs3(5jPYpV8BSAj|bvDy|N<Za0#q9kE|IzT{i_+bZ&eU?BCo_(JuUz>a;QDTq
z*Y3y!0fMYu#&FJ-EYBz(JPD)iFSRj=$#j(Urqp(SQvNx|D@WK#UlDn67GD`Ul2vt(
z<lWiw-g(ayIw2ni`2R%ttfUoVLUk9=W3@|>TDm=7Qa#|`VtH_B(RM49MktMT-i43U
zivCD#;MALVph(%#OLvH<X-qgNL%|&*_7M7Xf4)7KRJ2G|PUA__n~ZyLhdMr6vDgSG
zBb(ui)!EWYuwx_JhDi+}^eee;lee&$^oU5!d?=Q8J@NEzt$V!0^^b}O@@AeVg`uwk
zR~@GuwmHW-E1!xsIgR}=5x#Dq6+;`cR(I2TV)fqNUmwVd1Z98#12fNTEo;TI7_Phl
zMYwW2>tzmW0l8Jco9o#p2lV=CCF3EMa4BKqc(hte(*s!*s>I6jiA8kVRrS$AVWuM`
z4I6@n-F!<AEeUqJtPpcL$@8ob+H0@KWlU%|lDy7@elonP>xa69{kYb$S8DuzT4v2(
zyi5LC(YxUGhX@6`$*W+fiqLqh#Xh~Td!vV)wIM>96>?{??ml&V!_w)NnFE@#Dr2<M
zib&!@M;@Q%%;?4`4{o!_sJ}m@^{GF(86_*h(J;b!xiI$j!kTtTfSem737`WqM)`=j
z8Hcfkc%U8Z*s`JnE2IawxqgXgLafg2X3*@}f5nxTLoABK1L_LonNb-m9w@?G&p$oF
zk~s?WE8RJpC*AEY19=0?)|la{f+4D|(X9fGr@At<o?(h8lCJr&mji;%92A53wIM2e
z8IX(dAVcnym<%3q4pN@9Zynof6M4S33ZfMQ{sw@i-+_t(2yn}$hntA$i1s3R6V#n3
zR04&x292sBorJNKn<0G9$yvKUu1$K&Rm!^*tGIn5&&?U{(SGmF3<c!Kkgt`1Q`cYm
z=oQPPyT9M$2)IZYZk^oBY7Fq}munUizR)WJMw}D}k1KAzqCRW*f>*a;_wlq(2dE}x
z@S|jNa6FSDrKr6ax35`5<hrBrKXC;C><q-HQ<u2m3*e0Nk{N%tB0kHfE1Zr{Hp&Oe
z@z#-`@!*IjwB6wF%}b6z<pDP3VlLlEYdy;snK^fqEKrFEiP4<)-z{0prW;4sl>&FK
z^`K!^$!p4#sv(l{M5DTWu_E&EHvkL)U5Vh|qrgUqi{OQhmxx3LR=&Ty)E>cI4#T2D
zCcCgaS_d^A`N1K0ms(vJ1>l}Ogo5Kj%o(;g(zc}7XCKUVrj)rPJfdxc<92micc7@B
z2_`?AGZ+2?2^mdq0T3!MU%yJFVXK*^Ew88{Y5mLJpn|gPjZ~0hoTU#+rE<wGt}n!H
z?!K90CSW(TDAef8jhRv6os7R&HYlL52{`2MCtu-?(c}=6P*BiYSy+zpCe_6Kw2YOB
z14Y=*a8XQuxtq&7lDeA;E?ueUd?Yb~UY(TTt4BfRugnxKgg?m5jlSLjq6RLuchsv8
zs}^NV#eicX;$(-`l;ny5GazF(fR`H%;(+d8cSCTRs$<im<_;G^{Srd(zN?Srvd#-*
z%%FDLQ9C8=HIGa8`oGb6Z+ft{Df7+pWVfZnMgnJ%eat}o@o`l<+Mg~XYY9|}v8^!V
z#9O<3#4SnO+3ja5$}&XG(i?%D+P!OHhD0IA&GdLYX3=N>=agH8?#)k6WH}t8!PllI
z+Zf_*)|l+aBo6L;jMT=_`2w9Yx)cw{(d*dS=>fb1fw1yq&{B8@G4yHJYI{W+&N<=T
z?U2a-H^9E60OWY?0SFmLPs$(sR6W!<n6W>Q)haRs`|eixa<0#Ib%|wlmo`^~M_5>y
zVMi0a*Ztdb5Ud;FJ>zt`gfINC1!WN<#@=}GZ^~2SHNN$IURgc0MMutdX^4ok9{~lp
zeOvCP;w=9Lql>dZ0qTB%aw*SpDclfi630KXF(Vt2>2%1ZTY1ZCESAq{nLO9}q9Sl*
zog{FzC5Ja~Dc8?Z1HHg%2*Rs-O=i%=wygTJOcNFF1=*as!^ib|iE*qW`6#B=?iL!X
zbS-=pLg};{ixhM44c|)?THRsUUh#!8bEYfF$Yxh7Qu45;#Rsim6b?)st9>fC4p+l^
z5;b2xxyc%e-7OO1#@Q##H%3U*Xwg^l@VHLeZa44Lnl2lij!YgTu&3w6i4Gi=-2^+T
zAUD-(P4P=ke7o5(xI^6y@3jv!PLWstj(dUJfMY9aX2v`>H+MDcjND9nBJ(rCqC=tL
zdB)~njDsT=sC#Pv_~Y-r&G?cQDCTPC?-KhKez$vDHICch_QGIMe5$Bh+gxvUDvm-@
z9@zdw)<ztj|1hpgCcpDPrQawZ->cuL7%%ZZ{zK~S{7&kc{r^GKj30pJeE*y2;r|)z
z)}wlB!BChmP?Ra|qM=91@b}=JXMA~6d<8XY^ixbJ_dlIQAn6A|`iIOuGh>_hs>XfW
zr##2H4ZJf|ROl<xGa8U{jvCP*@9$qe4^}(=Q?-OVN`>p<4C-yfX*C0i{d%%9)ULfa
z7H!mSYI7h2Jnv^A|I_&dty+Zr)!AmM8WNq!v9Zqk%RNhE<G&hAr4fJh_gOxA*z>6x
z;9vZ{V*bm&-f(arx4T<p6E{NOj-StZMvgY0@E*q;zpqJj9%adT<l$Ci=kC&Pe1B77
z_^^@P9vKqZwWxi6U)AYl!SO$M1ulfKyrKpf!y|+KdGx}HZ@B?p9`WeWu+S(=`q<NZ
z)kn7D6M<oQl-*y>K;8g_VgC^&?DOM5G!ggNt*L!=3u_P9w)3$rRa`Mt$%e?nud9XW
z;|pVlL+1>UiU2%=9fFKLn>8H3&BdcXtZg>k<*!-Am3~cIX^YhFY2vd>oNdRFqQ!O0
zi+>hLZ>z!d8#%2>XME|7UiKC+ZVo^n7dTG+ZzbchT*#Wxt~NGoj7Je4BV@XKBUmxW
z2ee+)sBD!k!o}WY5JfVJL1%0WdpKL?!OzF7UJP$`!xjt{AuUWqUJ@<~;R?)YwL?m0
zJjU#zmW9l^GH}x(>nV{9SGi`siq9h0(adn37}A%lXH^d&$a1k~6CG=V;r8dM!i5f?
z4ex@F8=-~H+?GN7v!(5G6e+=Kk|J-s+z%g=OL#gRTxAQ?ej@gRVtaKedHTlT)Dx(u
zAyQCioK@nWB`AfpZDRHk-CP`<q8)-~Ps%H7O59?gGO+WJK__R$91c!>bdBxv({MBq
zng2({xqL*D<t8K;%X|s3?Ix$7&LL|Xvn(4toT<&9&@V}`E}Q#sm~gY4S4iplf)LiP
zU;q>m?8n-co9d|TEP%sT;a8i5umzK@Bfj5lGd?uHhem5nn+ZaE88*l=Y2nSRMX#^i
z+wa3?N*3(nc({DzUFj<Z*Ni?GNG#p;_0e}7H;Kq_t0}p&*{0$xZ?GIUqs(b`0Qc2j
zU)h(lynjP13zN=Ygb(WR5w?x%g^HNh#O{_6t`aBnIc)mR5d*Giq-OTa<pwLg-xb)t
zNZIiKZgu#^YjS7Av}1je_7I*Z$-M8h{b|Du8<D^K&2Le6E>aB(zJHT=MGk&?ofNxQ
z!-*f-%I30SfoNywny<z<u9faqYNJNo%e*Gj7$EB-G}ExIpq`CSF^+@bTHTL<<6qpo
zk!GA_eQ-HGX7;|og29i?p_|!_5|oB2?c7kW<*Q&zpeQ_Up<z2Sv&Vdlw72Jg6gQ0t
zkU$dB9$hVx*5$As7-yYu=c>-v+ag{Md*TFZyJjfMKS~~v)6`3AgScQ9sX$3DM7DWI
zTm5d>BNpDS#8ya%a~VWi%I#dd+;|6j{oxc9Cn@%TUVC*i9yG)((7rR_1xxBW6ZY{(
zC0<7;FSB|SEZXQ%W)$qstiBvem+jYri~|k&>e4HpsXDbX7o2p%Wje@LRL=+gW!+$V
zQQMb^&X|_syZhpm?L}{i_{}<f0E~&KLYx7YqkU^eKahtIZ_=RvV7kK0Y)##f|NR8I
z_5bqz9sKN@XE%3bAfUnr-Iqd1Ytj4JH>L~clksIj<BZma6)X9T1`+P@%Wn_l6aq3N
z+D!%vHh9iaYokn+xqJ)tVG`aCsN3tM4jRM{{4~ca;S@MIxhE-}D$AJFySh&oIvll4
zOrL~lqimvP<Y}kkslDSzLgN^gud>Px5P<$^dxItXe5g-68HLXTbOuJ!MW<J*_L7fA
z8%aWp!2js1FQGsiTP7Jir<%aa`L#21Up$N87U5~Fx8>>-rayGk+2bObg)D&1KEOq8
zogw6}=3Djd>MvJL!K1_{>J{!k+jlclb#@NZ_S{o*%r@=rnVM-oAG^553=BN2I?6Pb
zry0mwr0`FIlAgRbV@4kt+D_n^xFiY7W6Af9-s3S5HN6Dd>Aq(|tGz(cI>+mq0Y+84
zT>0lG6Hm+F*=OGAtG4;I<{*K~MeKF8o34T?rE5MPNG1AytB2LD;rJ#N)d#*%7fG-3
z2*#OJ%b_Se>5kJ3&-r9RVAuYm!S9^?o7!}|t}QmQDr(d{IEeD)&pt1|pW!w6DQJ2{
z$V<1OIM<#&l7$sw)f-P2Uo)?+vHi5k#&@!#^s(yjUXA8}mapzWrH&v#YkxYaQ0Cpd
zxbaMd(kY+NVpQ|$xQ~}wB?x-)?}K#W5zwMH>#(Qvkimzk>uw_>`%7Wq&W@FMxs@8-
z!rd9C9xBoIAJebxmqmMsO+k>0!qD+JLN<NW_TV|Z+$DScLSblUK-sua6yb6e)`fHP
z96GRO*2twH?sCsfYHGuf$A-89Qox4K(~3?bMK6T2;|p)tcN+P?ee~&#ykgpoYA0^S
zlXiI0Oat3K(YrzU;6QC_uZA_Ws%vI@a{;&WIe(U}v3yb2l3<J_HS1bk{wi1p&h_<x
z5&T;seti<)w)^LkjC>C>4BDT>RD12D&z#ktizMl3*r;6_toqq8;$X00P&!pIp!5O-
z&yWNR+fw&y-Lq3J+2sLuE?Lt@9Yw~2!o6x?Uz4x4oE8S*z8CHs@)=IVF4E8VE&6^n
zuUURUvybxx*a+}4-Ls}0Q#?2q%mEN;J5(pyF^lm|r?CM-X0xZ<urzjkvwhyjakdQ%
zop!8R<Xzb6S~u_@*tq-ZB{A$4j=qf{ESL!S=u(f?J|qO?!B9s#p^cIiV*EGMARgcw
zzr%K!S3t30vfJ?~{)!8NeE&C~(Vjo-rg!?4Qoq*!`?xT$w*4n}{VqrL_q7Lt%KoQ+
zl&s+Izb5ye9(H2?FaPhS`ky_D0I0^39VIk=AuQsr92_q0lelZlrq1pXhIW6>-H+ja
z=IN>0wP?EY^HsKJ{pxbc*H`TA3id77Gyw&Q6zWQ-)HOlgud=Q-^7$o~{m=W|;dRuv
zrBz~*qrUdU?k)`{)7h&pPmq{UlD%&YHCvX{i3^X0+`bYox4+l5+hASrwnD4mtsW~C
zAD6d8*ShcPw^{|y#s*YZc6-PJP&rrC{XyMw!N)I1M$ZUw^#@VPgeNdbhuoJuE>e5`
z<2<yKS^5pg>LVp1<mc7nDLUaV7mT1|yeI=@&N>f8MUoxQ#w{^P<l=cKDD*n7Ofb2(
z|F4YV<W-cZT(BgxFPK9T`JMR}c03<R#wsdF8H$osx{8u!U_9>4^uXO8G;|fEMk)9>
zl#F%f?CzWTy{+pU<3dJR%RXY+p3@xxGc`xc<U|$IA5VL^|M>t{5Wr{k;mgDRu_EQl
z+2ikeYRxE(jUfBa=L&rxU3&eLCH_5GMPF<61;L)j6UW^GKD_+>eI~#(sPaDfCV$`(
z@#co5?}hP*3o)iMl`6XtnU(R`xav~bki0`TTb@`4D~tnG&~(zq)3=osd{EVO(|YG2
zw~+F-i!KwPO1S~`SIiF@+P3PNu9*h+RQM)xeR2KNa6Dd)GQW?a{XIz}!(Hw;sj-%6
zPW=_tQK2W=R}{AWQAjnW@#4OVTw+Z@17H_b6@+DS{?lfEP?@6Xj6dJdkjXNn8>Y#^
z-!Jfz1h^P4kisFPrOw6nT^gIwSz1(i0T;p#-+?{BF#sZg5suGB`Jg{OHv9_I`T5l6
zQ*EM~q-jEwCGhx9p$cnHG{ccfI=3(L?%F8_ou<fAbg6ae^#@ViFxyyE;M)v;PAL;4
z5WrgMxm5Zv5QK&e+D<e?ul1!4qJ`Q{`mrC)Qq+~-S5?CeT2%EZBt^XiK5dXeN$f5q
zU9vg08n~tk+W<aQP>NDJ$C_F?IjI2i`HI<pKDBUw^9QL8DC#Hu_&VHV1}lCVSw7T@
z7nI(9ts-uia^CsXUlpBY>{umsO1|}+=&Y~~n1NpYfH&fm`iNHPRFrd#e%a{&PzgUw
z8_GmM;zILShR=b(mn-^4lvmLz7Z#~m@%FG8ZQ0CaeNYIonRrkoP{0+#5mVry%wdo>
zfb~%-8!R(>EvGEhk`y^+cKzs+pt66=S`K6A6<KF(1Ccup%e}E254r_eR<=ILSOS_H
z$;KIP>%ADiwrO{Ewx<pTqi&MO!ZdL{H^~s2)k|;4;{*Bf0w9k?cB8#2r03phuBX;(
ziYz|(=sS`m7fmS!V{};>BX4vxm`V+Y-8Vr{YTSebQXY`uL-iyCJCJR%bHN7j*4k4&
zCBBJDiE3P&;|hTgELk%Gld2avOln0pV;fsZzcIQX-m|uLlOy3x-0Y%LS(+KlP?yPR
z5HM?g>c<R69#Jzg<3F}t;C0k@Zp=-UC<K`JJ?3zvDUAUe$l+}0;LG<TFG8=Jnx9cd
z$XUna%JK;mpQKQ&dc>wv@;<RC2!z$5!#W1gof@-B4b6{Z&oYDL+HAiA268sKr$2#q
zah&S&mLw%VTl<F__{`dhP)Eo5VIdOWHiRYri%@3}o`K)|wZYqL6~vj#uCGjrW|8q@
z9acx<9(@0g{VsJG>b&&*i^YWX8IB0&zd{S&l)S&nd7|W#yaIew)p-ehutK6Q;P&JZ
zW;qF?HJqZwIM16+h5IUneEkA%FcxOXkTZ8N%xt)wiNoQHSfDtmYVqT(xD^uU-lV)=
zVj(1H(e@GrDq)vCZ~ZK%>vs(`TZzH^S+1d{otPtD{7(L1Fk)<F)MGYP5=tpZP7GIT
zS5e;`&vEEwosbz+W5vwzoocDA{akuBQRuI*IRYo`ttV-p-(6yoFnBxiGhAheuNHI_
zcIm$K1^!|$`1QDX>e~$ue^ivO7spAs#gB=7q(JGsfjtVIN;XO$L!&YB9r{H^4}`le
z*B?_}X_7zomRA4>lX8ny|2fLK)%gKThdKOQ9JV^B3KHa9Wsa%zEHzBBn$5iAx=eam
z?`>%2gL9{5E87H&@{l*EP#^WJOd-a(Vw!givU1F72fLEw)JP(Y?Lww%dCnY%=12Za
zzsJ$|E;5;TdgkNDDQO!xP3NM^Oi{k@D^4#OCB^S5Kq{XVt!1A+ZGI`%tQ2L1QGzF?
zbX_KaPFdaO4>f%#6}jVErlFF`9V-Xt4NYvh)gtW>@F3!0WC)6&kikB-%6NQEyi)sP
zWv<bo{0rWcefoY)h;itQHexwRQDTOUR7Uag<@~>TTekIliQ{>lf|YwvsrqVs+}p<-
zAZsQ6>#L_c;c>Su9Z!<*M>26Fz;E9eu4VPXV?K)BKzn^+vCpG23T8T$TKdp-{lDB;
z5m-deW0{WZN0PZV!r580YF+#bLm7kuy`UDW%*k@Sb7hxPdkCMjET0mt{+HuLJa_IC
zDEAy6O?(2tp1Od`Tn+UO3iHS>meunD^ZV%;CRkbwdSFi9@CrtqO6=?DD#NVm-Nsyn
zz~I+8Lo;7bMNvh4nfw^%mW0NX>s<V~PLi#NZ8NW#9;fyVMm2ZI8_0wxarNQ25Fusp
z3S$@Soe+I?jZ;094Sk*}kG-w|p)6^DCpJ-iX%*UM(hJGU?7pCU9(uIBn1S>CpYy+=
z$>+&}U9Iyqa!Q2hZMuf<vrL!YAL~JOR)5S0>fntx?$=~}&H5uYMv~##q>kamJLT}-
zPaFouHs!!$)bKp{`tJ|^UkyCm!h%3X2<01xYSTYfa(2XPwx(!KWxWA~mJ&DYuWvu`
zo>>~pUBuXi3_5_1=N+D^8OW5nY|zLvNZ1n<CiIG)%x16>*I3n!ewiLiH&LtJz<+Qh
zabMdF(t-13p)su1e2?V84!iiWWOLfJAG`sz>Hiy9d5}QUcDEU@6(1Toy&LP4UE8-&
z?K~K%nZqBhmZMw3mPr(QDQ^a>M||W=aZ81}4J@LShlTKwEt<kzJH+iB{+jB|yB?iR
zhcxKb!A5p(9^WPx1{tW(+kfM)H42oNWAe|r6J~gtY0-y~6R&$1Aro!-8T|@FVTZCT
ztVA$(FYMnR&%@Z3rF{_4dT@A)^CbQH;2y&S8x7&m2UT0tuvCQ|mfRFDLT1%BGG`x7
zUKuJUL?R4cE*-k{2&^a$2(bDBf7k0%T9CnrY+{Sj0_E;u*1<eUPxZc$M|OYzPg)Oq
z2S<-w<93j6L6&HJUyW^1JjURF)R)WKy#7G`de~1BBSccVugcDqdm|gq9BsSOTiMDC
z+*%`y4sg?sOQkb6>K4~73Ld^}v{23)D6_|bI1a7W95~B&QWg^&Yj5VcRVst|&5U4_
zc<z5;%vv#jkWrM$IUl*g0^B%jzm&v&3S4xLwx)QIgzvC{2fK*kX<c4Qzbd>X?6D-;
z>8w?J>zo9$_kvygnt~A`Xn7Z9qnCXy>M(y%UWsOuy!i&oOJVGQhN<W<5qTK9;l53B
z*eR4gDv1mmk>DKk*=JuHCS8fzmN7zb5Pk|u9Fmqk>!gv1#PQ*uRpCm+8#zn&yYP&=
ztFu}M4}qGRJ~IjJf~s{={1-o-HVP{Sao*mv!88fw`-A=<tJ*8Wz2VxsJ&BzaN};H_
zf1~R7AhPC*H@FYPM!tS`lQ*fqqJQvy1V5;KC^;_rI_(g(?j<U{y^#({w7@_en<%XO
zFF@@!&oE;AK13HYhThyW(Os~kLS!|plcrM%?+JT!G|+KN*BFe8<`A0sYMaB=1AvJo
zJtXn4kM<t%2Q7P>$NDBx%6R;H_1ImLqVxqtb5VHhIU?x_zcfj<JzB`^>Y_)T2CGkO
z);jKFcP;@VbO&sw1m1@)GlpJ}J9v;p@1XiEsdI?E)49y6cRNl2imU=wvwbncFfOtv
zddhp<Y<{`L>8;#2{7KsJRSQo!fkTMfe#`?MNZ*jOot?EItrk3W`P%!y>&BA67K~VG
z<Xpo^#BaMUL~m22Z&a{h!O{w;D*f6kQAuXLOf;Lodb-A)<#-9|^HwVAHCc0&!Q6Xl
zfQGc`06Uf#q#H-|KpA&m(P@nB51T&YK8lSes;B|%vBp=t2kcLwkMGtV7D(pv{q>@e
z6=En!sTttQ*h08>s$ro-=0L|)EFtCo(ptm%Y{T-0o`S*n=?ZW<bmUNYX!XPNHI5Ge
z^8(0-<85G>-dGHBRlA2!oMh{PF@Iz0lMnNzIC@?tK(7o8C6Oy!TP8KGTW)B3JWbuV
zRQI;)6f%Z2;(ZCA?TgU%M+A{NdC`avp4Y_-qG1PLPV)>&QCg2u9qya)93+oQQCcWb
zPUx^VnV`r}Y8r*a#Zv`v5Ca}o3N~!@@#&L3@t{^iwZ9h$F{tuRzxx@i%!xB?Gu=;k
z`+knEz&Ww6!l;T}4U>Fy-n8?vDKz!z@>QV>hxc%pFSlJd>(-NMOfv*(;w`KJIIUeV
zTqP-QV`5d%>Nd>VN`|&R<kKx)dgXmId(Wd^kg?X*`GYWmpN7K^AwWP@n23{zRhFoe
znxV-}+NN0>E|rL{kQs2ENL*)_9-i!K4KOo`+TQe5FsJc;=xTrXs<o*LYdzsG6FWiH
z>`w!1!FE^WZ$%Y1HblI%T=Ren)b`>{4@eJ{xEBv;7^NshZw@;p_l;&(I_%MvqNbdB
z27lJ3J@_Wd_I2x&FkvfxTGSU^xnJZrE4*9do1L{QC0zM6Y|VdIPPM(xAY!Q-{NzA@
z_8l;MeXohfMIf{Ew(+;e!hPOK4W%0gAHAg>p9~~V6n=(i_s(c(=*>pUUNq0M6k~)`
z^>uI}{D|1Vx$2{dLx@`?uCqh4blsmnB+1P<T1;;Y#9rI~%_=E^AYN+ROfPJyiZT$@
zw#Z7>s_YgmiUkT2Bunz2gp8=`ouxswM_*>ocX>Kk@z=8?FIr#@D`87Ge1~I41Gq$1
z_Xm-23LWA2U?L}8qeSUwHf-G$uAk*+^D3U-#1E%Q#0@Tz$qX)fRAB@5RW|h+dAvvL
zV=B}~*Rl4&YpJ@vw`s(`A#<#Dq=f6+`>kg3jG{g*iJb0<TzEI-R9ZVtVlG}91hS$f
zee0s=Olxl6%Qfctk?x6?!d=_F4<7|qzyq6Sy2|z#4s>>|9Ha@__F81x<I)vtE*LB_
zNx#W?NCk)oW8cYS&VjCozpisSj7oTJoS1K@&-9IYIa-l0rZ9*uDU~-b90TE($?zzj
zaU#%ep!?br0i)ggp*2@*f3BwhZmxvj&@7k=hj1B;D576K%@wF#OKl1OHE0P4LDDem
zn4hwVuYL&((l-HE;c*#iSLykrDP4Zzg#;q&j8VDXr!N(chb-{JlM=|R#HOwc(CsAR
z&Jg00b~p!O_v~sDFOo=bw~<eI{>C=4{qn`@g*Opv?*W=UL&CI1h5D|=P0_d4E8ypV
zA?F-QgO}6=ff)L7Tf)$ov4(=n&TWB1fKHI5vQU{Q7cOAn?4qi5&j6xz6T$6f9rv1y
z)m3)>HpKMtn`Oy-dA3eNHW&7uioy`Z-ca3;<t{%A-GY@KrxOE+Z<9t$jjdm9RJ2Hc
zKCL{f(b=>>%nBo?Po(3<M?u1l3BX}8BGTOju)>1%2$#q6c^T7w^d_b+R(wKHOa{bw
z)(4C@GbWFlF5%whTpQ)<@7EF1?>;k&(x@O3M;1T7qqf(vs!&t7z?2`hab~@;4eLzv
zy~8Oq)3ld1Bzx{|o=Gnk?WT^wCu$mH96Po;R4Syf&`w$rSvU-%6?&HE3|v6nxMZW)
z#7qSn90#v*4zi99f$;o&_th5Sf~EHu+hVnJ-{=o(+=a+3V&Jvp@e%tt)6nIt#nkC9
zya%>D;HQ3iC^)Po<8`sd-SW-WiWduxxn>1odf(IHUEniX+%btHLJ-C5<;r$J*~>?t
zEp!!F;!Jd?e4X7QX~IE>jpq-=kiuGe&mTOQtMP}h>8}j9;qsRq>XcN?fRNSjCJ=-P
z;|`+8G$m1Uz8u2&=+29fY<w_PK9ZrD{-*RtJ+qB(7#Znk+S3h_&Q?x{EzuhV17tCZ
zrcFDt!gI+V{m<c&m-L%3R<rIW1Aw(QFU*0zD0()Z*H8&Z(aVR{sPuXyku|g~Pb-uK
zbP#Y}p)m@6ywn@+*h9mV3YWn3dh1n_HCx4gGYYDV?KOkzX3$ORFt%0GTBE_rPmhG4
zcO8B}V3ZF6x%q5d87f(gTzojbp~Ld_%E1fx=$1t(>dqt2-)3|$BEp+cuN5^VPXkOS
zx!b+R0LA6*w;hn0DS1!Ss}33^q)QA$#z1-T$OP`3i_`;Hg~P9Gr^Fo{4}owIOjX@J
z=E~OXXtE_qB*Wfdf%~6F^tpP?sTC9o?4_1G-2JFBG_`V;RGh2uB+#D1ydysRnpq<l
zVNR!{rv9C)_aZb)cr5BD=scw$qUT|v9Ei*V4sad@#!zmzD3sYn;()W?EIAvUUfpy3
zW~PaL2<1H*0>3}#!kE^kR_FRl=fuK%#KVq`p450&?#qh(buT}WDTtDCN+;Ih?C7R0
zKs__<43k_oI(RgK*COa8WQ&Z{JftW$ukjtNh0**!)JZ(2bT|Gq$IwYi1F0#}b9z>p
z52~y_pURV1w2mcb3jR@bU7;VWPw!+fJ&4;aKNnZk+>cS>;EK&|%fe9#`l`OX&L8>u
z#m}HxR!HU2tz-T<D)Q$e_@%qiE%I1u;>aHccu?q3DtNerE2Yd|*Jd^)Gyb%bpq+kg
zfw}n|t?vF07LFm~Y&K61&#x}NPmFtwB_B@0ET0B&39(3rEd2E~%=Cq!TAl9gY?b&n
z=0ZWf^=s1!pymB1H}(=h^IvYBA6CC|EW^Gl_(PmDYLG$}3$pz6m(&QZSD6Ny<{-G&
zThXtGC&*d~kJ(1@^l*SjZky^E11Crc_ga;05dyPc;8;3B|1z^ovr>#-@uGQOuy{x_
zQ0m3fo0c2HX5o{%RO*BWM53sa^be=6#D)_b4X8H59j5Lq&<n6Z;Dw1#nG0uhxz3n{
zho~|8JW8ZgDnPJVbeq%5!0yxldpFOe&e5PCqu)D`{lr=T2&MnCU8^@|W9gSfWsDI}
zAK6fG^j7y{6ih!^(O8wD-g_x$c8IYZ9f*dh-ILQ=lwdX>+;uKriN1WfvxMot9RAA$
zDN!Zs7-yGF>zJjQORxvQOn`_{eu1^LS^RE|FUBbxW+<Y_My<m4B8>iy55zKdQ7rnB
zn8@`wz;)Cc^UYm}JFbS4(5i6g&OF?#m8%bBQ)d%hPiCQDFyg$NI(|Zi|HVswRX6m4
zY<vE*cR$}c3&FL7495q!MRY9lK?uK4DXj;O?GKL`_?O|V_j9n)QeEyE{lqOPO0W+x
zxG#EZvQSv?#E1;~^uY87Kca2Db2n~oK00heGv6?4vax7<yWPPR)Aq9S#V^|YuQdjI
zq`un-`a{&~C>Hg(A2Jd`p~HsUaSj1!*yaoGmTWM{=2+U6lKfqX<e6s}{$TZ5e}0Av
zd(U^!C>?;cN4sP#;!o-gNt^qMdWxWI&x_}tc(?c=;ujIG1Ge!$Lb+TpIUoui{lGNc
zf6LH!Q*rS;Br?!GdC<Rj*Z-}y|2y~o{jvYwPe*tFSqMIt&2Pf7J`q004B=ft@b7~>
z@kpY4#mBbv)$pCWcR*N;9pRn-Hf!N}5(yW6c#)~F))2yWgu{=z`9BZ7_4{<VDF%XO
zPVTeN3K=H~7?!N8-*^%~pX+&jB4F=@ou!^Gu#Oj6G^kYKEz!8l!hMYR3vvl&7b;f1
z5;awI7XEmf*tmrK1e4b-{ONwVtgwdtS0B$Uw(wU2xT4+rb*qnIuEz38Im7C_)i8*J
zo+s{PSwT#usa)i~d|rO>3Q7K3t!E;QKf3_PGh1#_%m{JIK=S0q#4r*}8eD)Zh+nB}
zjj5gPu9Zw!O*9G(SrQub8R()DGRA1ohX9q|E{bC@xx4p#P=;+5s;W09{Lam^`o#ui
z;(SI6(2!If)q!*O&A}tj#0uVCE!znhRJ2N5QZEVtt5WB#hkZPv5AXjRkA*-GE1wgA
zC2=>9f@_PItFaLbpOy6aZ;`in$WM8x#3b`^Ez1S1$QBXwn^K)m9pks@LP&N8(P%4-
zpmHQt1AM^-xkgJ&^?ZH6^2WP>D6HdmMLX7NhpQk8#?eTIr$%0l+_np|@=epiu(8an
z-mq)c+=Fo8F2VX`4j0)<u|!L{{70|7eBU`4tapYr1%hm?`(3pa)R}IE<$dG51lIGs
zZuZbP#O9vG1ieNuYB?Fo4CZJuv<h}yO1<txFIG{YDbmjSJuXIh16H4_Yg^J4D+M#W
zXTYWcjt2h~G{Ci6QsCI*t7JlWDA@8i!sgzjuNe1Wij&^bW=H@olNWUAXbZWM{hoHK
zb&*1vm3rESywb03u@nC4YH*!1%yecr9JbsL<qMUtk6V!Rc<!WcHVmYc<~q%l^5U2{
zB)+p;9ymj2V<sr;YcHjg7o6d;s=v*K{TRDMu*Css9@Ei95dfR(KU5^D{0($*dYg#{
zE}N}4FHQG9lA>$`k{v<}>sZthey+jEl8mu!tpX-)f>81pdgk>~5*atoM62x}UpQ37
zA0osBTuGMNr%8n^SI*@K)pgBU=k6={js%xU`9D7jLy}0cf0Bz;cEPaQF1D83#mSAM
zJTa-Z4Ph;el1N2Sh}me}4)T$#(NFFiSMDTznw0&5N5fhw@qXn7mX<({saRgC&Sb(l
zVFR|{(T&NiwY!~j$?b(W_F@E|1do0&d3+Y$>IS)ip6=ASIE9C(SU;-s`S+%lJBfHb
z4<YOJJ!a;;x3+pIXPHAxnAtK>eqF}op=HI*U8Jb&-y$rt6a}?w2t~D``O<Dy1e2sI
zBF<0WWIwaYGMsVFCCuIk?B5viJG)tS?kY;-CPFbQAf#3%>@JcFE$7Nz-X%DOv6|Pj
zTz7GaODAhiixh1?YN~Sj5B1$mF$gp^0JJJH>H<E0u;3z$n_i!$%tZ*!zHgH9WsjzX
z?tr9!HST&M?4Dv;56yDXru;}HAIE0{VYB%w981kMn`d@ahJF+u`uUvCYL<QKrm8R`
zNy$3S6^rQ)@2yWbtSlpCkI%8Sk1yPEsiCf_6?1YsM^#*4APPYrVRbjfy*8H+w<_G(
zvHD>#?Gs-wLSH%Ww)caRmJ##AbK+}#msYCjcXU+pbl992auKPno3<g#d87ApV&v50
zc!SBBQy8?!(E1V1tZ}i|QE>GU;qLrK-w$3Q3y6X+rLdei*qFKabgOpo<BIosw=Y{7
z9^Y|7%z1cRfOa<S1dndFays7s${UKxNk#*>b7kNPbn)HvWI<tLT9sey+Nr^pJoGI`
z_+HZwKm!>9DTGS43pY?t2FJT;*7|>9%+H1gOvVr%SMK`N?;q}uH!Wo&3uD=8(U7PJ
z+d0f#r?QzP%OT^oS{1DanWwIDk|k7+imL=sozLXL(YH!mrOdR++t^ay^`2C#gQoR>
zrBfc=0(NwZf<iAi$u8G;;%-YRKvFZ8#@k&p+iI17z!^$D2!1pALd7Z=<x&SV)*Gf&
z0>`#374%Tu;SLur1mM-ay`Jc{-i-hfXo|@a_r%==YWO@{(URkcD*X5}2<8QWI$w{3
zg#Fmzr91Kc0rQWOb@-k+S>5`~kMkF;j8jv}i(o-OqU`e>+cmCSuWzrMUGC!MOLYOv
zrZmqNZh~<2hDjm)5{dN9q$1_o_vlJxH0%y@1t<H5#Z#LJ;5nW3E7x_#M<kgG2~s6`
zLArcqR<Qyej-;Gq?&Wt~vONi@zWTj(we~)5Bq^;$_e^@e4{%Uyl!w@L_wD$9=i|KR
ze@!wN1-H_<eJ11t`#oviLN`Sm;WkI29?Q3j{oBs(Qnz%PVlJGfGrzI4K4KnMFd&E)
zYhilw$m4MPaXP~?{)l40{)}aKDavPDWZ9a22e|!@)hw1gqqWXLknLBdd1v{xWGcy;
zuh`v=bl2B(wo&hG{{mv~KisFO>}YnkSd2k#I2aYHIx#+bFvcK|778@hze-u`ZhGac
zn2L=+flXGvxXHw%Jj3~fM@^P*rY1I5`s5!bnM___dG8N0mtfm0s6zDayo_+RlMa4N
zh*^G{KNa<nKL8Z*qB^DTVPdaK{6N+zip@$^oH%`?F2Mv7CSoK%bsB7JcrLJ_gLd#p
z-+K^D{{BY*Xbim8HkHdqC=|taiZ(KtWQ(&Fl@r{v=R`RwLM-7M6U#BN$^!zkH?-SQ
zEKTs7GbKe>Z_*BhR8kqJ#sk1KF;T#P0)Yi#YC6o|Q=Vd1fm|LLO=PXrEDQH@i|aZ*
zqig27fh&@YAL{EC#z}^?6e9&5246Tc(@NbN+HB<=<+(bJAxrmc6l|^cg(o~>ltTW+
zc_N{-ToQ7zpWv=HsI$Opt3JOb*5v0qku6R=uy?kXoOQ%?nps-Ga_KRS9z|3>T+#~%
z)-j3qt?%)E=86qjD*ezjZ{FpRnP*#HwNUwW!|lSh$kWQixFaYTMGI`-MhfRQyn}7m
zQ9lK+>zm^ooBPgHDSNNwJh@$QSOZn8x7#>-myqyZ@{t1K&mu?5+=Eh9%F^6?TGSo8
zfIm(aCwPq?vL|}ZGMBEkddxw4e>$hfS9;f?@uzkjfM9TmsOLnVhqk-llz|x<FjI_y
z`6La+?$`Ke@!fMEon9(#*_FRUu+!6Yuhrlyz0$s9EBNh4B>qiHeM05<;K`4#w0RBQ
z)~i;W1-X%aPlHzfcxZ%l!(3T-+fVad{hR{BBEZt9DL;{Yl1`*0o30MH3@xP7p(YC*
zYH8!Af7L;6Ga=rfh`E(vq8{=}eYe!p1BiBuB%-EHnA~+b`wuA@09_g1s|x_l+$6bL
zN?hRY&I5|?Sg}87Y-F}I_0St#J~SDuZkxx3ON|_aRMm{JbWONqi#dH3SB?>L%3f%A
z+0~l*&6gY8u&qWZ6F~IUgh>aZ%In3(oSmjE87I>V3k+{p2|;jkcDqG8qG+>Z`q5e)
zt@3*`9}AlLNQlk=JL{ytw#QD4VpluAzkBqFB@tF5r$W&2t?(@<)728wVo`sqr_O_^
zO&qw;3~OlY&6m>N)#BjbLY!Id?%MFobMdr#R_i>sv1k{MK{s2a?$NXrJp8%;M#<Av
z@#S+~=#<L0m!$b-?A+rE1L9@u3JQ-eQF2Oid_I+J4_nAia|bUkW?WZT{Pf&}QleN%
zyog95_kHo0p~A};9OtI%wiIP=c%t4xrAlwoY!U^$V&UO_|NY^C+jIa+Otp){&|&u(
z?n;-uFM1x;v>3+ZQSKR8?jnMFBG59F@5H3jMrI0!E);cAdE2o`A?Yo>JTew-tlSEo
zWoSsGr4(HlFdtM1+P}oJP%T;z`91*j&;+&h>AeHtrFhnnN%___V6A>2M*)j4dvx1I
zecnU_xIdZJqt~CQ;oV1M!wTnG-B@hAUH95L)+oA2{O7AW#~+!N;fRzt6zH}Saep4O
z07oWyEc&O@Pp2T3uP5tW{<^n4xE=TpSJk7bXi)|sIM76Sn1=ww;H+3Q!PzsZqG!6X
z_@*d;;++6V-rDetI#HAY;6?)|Rd!Fh9w`Asx*Kj2_;Z^SEiyDZlkLtnFlgU1FxTp1
zKijDKqe8y5^CC3gb~CQ#-HP+KjZz*YbXSYV;)AgFhl@~%m45&I+htXa0IXSG%6M&(
z2^T5Vnz{eTcDEYa%;#oS#{TO3{B7`fW%qS=1D=)&yH$#3nWg1lhUMN~q)%WbsjOf>
ziy);#eR-&iLPzVnmE{}45ce!nzAfrnu&PI0m4KOjx~mWfa<CjK*PwSHNVR#@Gb)g6
z-n%ym92LR`j#VPO>mKgbNnejTbbbX+HoI$*$aR>gsB*9)fyx7DCOREkw&NOEx7}OR
zDvq~@RMAB^uRN1ot{EI$%Ur1wsNZ=dwl-)KEqXXIf#a{R?fE7q3#E*G^II0_nW67z
zf2JBFk*V2fx&|W(tl#RtT9yQ(!%DBR#+SGdq2(h}fch@8S%skHABXMrnwa!^dw$+3
zYW*@K5iitLo3+`$?cIgzt8HM4v=L|6x(5hdwM3x{VBD=$PXa+&*5Poy4QZv3;hUcZ
zi2M0@G?4DDHNF6CPXPU8lIY$dUBe}=+=cVDy3g+PJ!@h5QzPk>C!kQ2*Kta(Rash!
zQpU|fQ*GehnqI~wXIvc6E6h~xX9NfF{YK9NQZJrI+T%xhCjO<}96=*eP}wMXueVPW
z-;ll>7c<|G7B=SSIH>M8k-CXpS0)H_dO_T>SJLt<(Of#4S>>skU2_Z3%bOEOi$1UH
zLQz^V@n32kVBV_<u{+MvKe%@M9A1N`+Y7Xoj#;%|*owH)Zkw$1Z2HQ4Qh5e3w45V!
zE@%|A(=Md8Xdmoc^)Qd8L!^v>yTtAer3LxeylvMVL|&5$0JebozkPlCDxU*Bsb+ZU
zX|?rXNv30&XT=M2^Qk!_<!u8?0NWty{l7hiW6Bh$?@hDpMV5-*`76pEGo8<-XTc4-
z9HA&ju73#*waIMK!Zmhp0aysJ6i&a%jGpyM?u%26D;iA}0Rf+ToC5pZmFNc8+2VIQ
zamhR#(Ye0+RQ%&1g+*h#n|!nAF~_yX?|xFsK!vIQ<$E0KpaA@dGGkx=|6r4p<i?<v
zu?n!#`jLiX{rx`p5BrB*KN;&WtB>~s9Fi$-|6%s<vr~?ayL^el6|G|T?Ifd>JiKx>
z7?jRl1#8Y9yw%!`Q+2CHDuH4#mudn$8tT1N#dXu+k#&Gi(h+TNmn#?XiGKI^y7+5+
zfad=X_xo@awO8y=a&!JZo6(S`?^MH^YJy5Qk*TZNTE|A{z^6*=goiYE`jeAb?Xs%5
z!TrsAcCrCBmU9}Bd6t+i`CdXr=^Jd4Bu+6HHuR)p!eDiQK)KD=N`{}JPZaftu$e2j
z=d|Tfji&+=j=wsJ|Bp8i0@5yjg-VfvRz@W#!TmCPg;P=RGW%?+SgL@S%)JLQcbIt?
zA(+`&O&}|Eov75r{F1w_o&58M{*`tD*~J3mnF(Q|=8iq<=BBp_Fn^uQfex#y8MDyR
z{a4uwC4O>oZGn}hVTsO+q1lRMK%TY?WvJqrHZvUPw6XTxRL}rp*YemRvk)a+V4vhs
z(Wlef((l~W&WB6ca;)9IMGPn>n9uz#=@FA8BG<YNT;|?=tWniIvai9dbE88jLeXBn
z82@jWat-Bp2mUyP509jx>dK{ogw@&{OwFNn*}R?TR&1J{TYKVC=KQe`SHU^fQ<<xA
zkqy}z=tPkIi!rnpt-F1o5@H1H3Uh%-p_kw1%jy+=p+MV6<>e=keI}QwQcL7j$O4i?
zK|af|{H0EoC6w(>0bC-|9`1=q9<Jy%p-%bu<w~xJ`ncnS1IZsOh?wPa>&8FzL)s8+
zfb;Gdl37$L2)|r3tfpQQvq$suoQPSrB`=hPVpdbZK(PvbqnM#Ak?i9bA2V9gAM{t(
zdik}Gs<u#CEn-FoAUM^5W+gMcE(PTt0|fvn*BFUA|74F50>9qIhArQ)SRAQ*!C$&F
z37B9n*Ul-nlCh2#3%JmE5?V(u^rD9?ZBSB_6+ATVN&QD-eP`_t_HqNDe%5j=_je6B
z<sCACq!hk+!_IQZkd+m4BmccF%;VO^$-@d#J+z%n?p)T}N9M5thUE-uO3$wf+^H+1
z(8qV*VT62M_kN*LhnCIC*+{-?0*Gu5o6%-nCLU$poVnJ|a`S4zzQKqrnUJYOBjEMi
z>GD_AA+BF``}{$;%x+8kkwEnB{2%_~-_thu{s(ZCB<|uiQwvNWc?o~1v0*eI9LaGH
zxh4Mi8t6KUzsH<skz;9LgN%7tV0>~0a9?1p(H*0J^iQ*aITHj*`@yOa+{5g$-Y1f?
z`|@^)5(TPH{vFfN{9S|onN#^EZQ~&Xa0m*&mjV9FnrXKlRZCLR*-*CUL}jOOt+{TX
z6Fg2|LP#uvp{2Ixei_Ek{;`g|fMnm#YeyL%4;p)9HX9{2)NOI(uc=*5Q~2Z^AXS^Q
zO-Ze966U35F;jy-wZPcXZW3jJQi9K2(s_KNEdf*p_$7;CU;Q^f9|SVC{^6OqiVrU>
z%QX;L<dw&$2thW!0ZEV|LyR-o)72=Aq6uc@rBuQ_R^UKB)bnsItzwl2yd1B2p(zic
zXEA6yLm(0g)4Dp_+>Ulo9nf9KP4J+k#tI0gM|^RqaYgG7I}e%$SPg{~Hv{wzNN=<g
z@wbufH>!;~oooROYFss~V9(SmeMITy0WUUg36}W2wW8cv+EYtM+M2E&J2(}9$m!8p
zOB+4pWo*B)4DbHP77$%F#(K$_d9_B#HeF_Srg};(bH#QZMBn@73P=*sXBLtvn*4$6
z=m&%_pIPa~R`ms<cN(TUHmxkZMvnTj@Rg(X26x^K9wW|}7b-({01w1ypQWAN!e<bB
z6;Di}=X0-(Js?&AHpI;nKY=hnE&=7imt`xyFf^ZZPSl0+u%~{OA{h=Oy^h|y`b^ji
zyK2nhBkNiSQd};>Hm`k0h*&zEr2Un{xb#QV1ibzOW3F>|SU@aT4H2*It^ih(sN*YI
z?L_`Ko`~+mvR{sXuLFOK0N_sSmHFjPEC~2ry$9Th*<rtuBKm)rZ2up)6M?1<_q}ug
zFe5AZZ~W8!e@4;8f1Q{idZX|ygYv5l+ef*Ner9`afv)31hH9!mN<08x6T!$1jD+6!
zbmi?bkOmPyzG(FMpMy#Cn4Sw@uIUROfC(ym(ge&yfhfT3kix<`QoA(rGSO{b%r0dT
zK5)x<P!a17%dJ(=CM8DH=Qe-DkFmFm5F#DwO5;8QIGgTio*`|IKEp|>5Wl}w90)q)
zAY9{}*q)+iI$$>H&y={f1<SqvU2K+(6slBgyd>va@T4Rg8xQF8W8tudOcj+YU#gD6
z)E4s3xE(=;4+;;%t8Mabw+-x4Y+i1zaI-RP^MCANrJv{gaf&?B1&7V@%pLFJa(I?B
zNdhfYRCFnMl?-Ln*AwZ-<ZR5{XI35=Yzt(wu(b;yGXs?SH=F3HLcD1CH5<Uwqjix@
zTcMX~w^F3%vRV0)qj$I@@yEjdZ*a#s+6FSTrWU0N0uViyMjjG>J>g`C7dX!%vK_5|
zhd5~OvY-FH#wWrrK}Y{;3mGqS>{=jYqrVaQgAr2ZTo=7)p7+QKz-e<O+4A#8W|ZP=
zkJs%&%JfpmVg8=d2Bj<|t*$|wr)gqe>QlYEFF;7ML|Z2zH%gj2j||8fxXP?vu)@z%
ze=)Y5+knAzxHu!W;_$81HaRZCs2O2A-gWniVoMhJk%c5-;P!x{c8-g3p>MQOiZ*LF
zLjo535O=Yx11vaSa=p7gtU39uX;S@Ih~pV^<A`j)Jkk?gv6iDd1G5YsB0bvmQD^=*
z1^%aKX2<+I+jkHb!ZJ3z=V~K2-%|q-0#6JF1;kV_TRhq^*EpAw5&&2P`kJh)n!Zvk
z`u-OmL{&ftuyjqKo$3(?k{a$WnSs6@$Tn361Q71rLO@*4g1JoaSt>b0(OJpbEP$5=
zqVEPTGzd{7iYDD%Ba=znfER`r$bIPQ*=O~R*}0SpC<Y})+IxTV)Z5ro0;|6-zXFuC
zD62Ew=tS2n*?gNO_pquRmaXV2Y8EBts_4#DgomVc?BOofbQF>`%a?T;N6wD6nejPI
z%399#?eeIfI3m)|<0<?v0eUzPf|y{xOhA9aqxa>qp9>UkS5-mcS465Wh-4MU-t9`D
zA1lT4y4~vG?pJ5WjtbQk&=a#J4rbwmt=kQ1lB<EBwg=gZUgmL>U%))`dKhn$5S{gF
zRZk<~r7OH=lhBTS);|b@3O)zP0D-ORuRd;SyH^r{(W8-@g&TCmCqog+7UU+)r}<v^
z>op=B1E?W`1Q^F1uxfrB2W!RhY38xJdb{^Z4)-SIT5Ye;p!_A$zL{r^_!1ZI2~%py
z&}ltlc^dR8QSJJlfT-HSBM{}WI(nLpXx+J@{qB+7Jjtq)X;^J7N3%a=K<Alf6HZ7Z
zS+ncXOQHwB3a~OJ=(2{>ES+2Q5Szb1R}Rb+BQ5HC)Z@{ZjUKZxrL_VJ3|>EFLp&pk
zGmgUw^Xjiq^DYUOM;=CeW<h-F=A8&X_JvH&TOi1o?8MH_`^e&vo42J`C0eMR#j<T3
z1?7$a*R698-^c?#Oi3v8?Uq?c?d_-6Z<i7UfbH{8=bD$4VD;xH&LV&{!Q8?H-zd2b
z3qziM{(AZnA$HTvs?Vv<`9<urU<8>c^Nks*8a=bj&JR<Uq3t?64`29MVCZv`<1M#c
z<?qyfw9#)86Ku2rbNihP5l|wzDmZcGAdA_us(ak1v*8DrbM!7JfY%<<s~!!l<JDh7
zOZ6sn(<n~$el?c?`;_CH)Pn10XAJ?O*O%yfb3BIEb?YwSRJVbfz3DRzox851p2)qG
zgjY8@0L@jdF|(`Y%mT<eaY)a=|1vaXRWpt|HiW;g(!-I`y5=EROl)C6U+X|0HSHsI
z6x~{7)IbPppxjU6G$e>soWUSY-M$4sh~Hmp`@lQ24o^?93sqcc@#kPB=686~0bh~0
zETr;;jP`i*4SenenbIk`1@j!T=2vf^EckPLF7C0O-Qr5YkM(R!zmvC5S=$<aI;T*X
z<*?OquI8t#ZZ$6y>8=Pc#jo@_;tz6uFcwzU>RfEQjz{eH0)&Ro!J{lM?~ZlN%NrD|
zyLW>aC|EbY9Th!1;P#V@hKB*hUAxtuF;|!L1}^)9IwLLBP^|hPFI(9CK~BYkeC>g~
z&4jvoj1i_wulJ02dZ-G30FKQ%?&3XLYqCQ_ecW_}FLVakH_$t)Osa#LfD{(3c$w&B
zjL84uD~nm&b~!S@sDy>~&AQKc|Ar@-e&I>S=mp_9?$KRI$`D19fboceo&h?b46LuR
z!af!uDOf~TIBVDqmSn>s(HrI>7ODE3bLaMPrSBshIKXmnrCV18*h2NrJ@ZYvlLh3a
z?itJNMImX34x~<{0zCD1m$5!>fDb!@$2l&?Hkf7mGcZ;SF`zExc&p`9I_YQYwpeTD
z*Pe6w*9`W7_4ax5779Nk@0h7Oq>G7)u$djM7;a-{HM|FQ+*Z?n{twpPJDSb^|Nrk+
z)uL2&7}eHjZK_I(R%vUmT8UA+HImv5LN}^Ljl|ZbwMwWNLTIaI)Fw3|En<b(l!$yU
zqp$J)yg$Ele&>A7@mEfeJg@6|J|E+Lzdba`LE()#k&BI2z1=%O>D78lY1aj#H*bF+
zoMY|mJ8!wIxPAuMc67AJ?M$z}ot#14a}E_VBTb#8opTLASt=G99B)pAL}miHoD)KW
ze8VYmbD4Nu;*MyIHpDjeVB^PHtuE#y4dCzi{u%`0=e<fD#f4(h)lZq4KJ>{-CYeJ*
zPktLr$diy#Gnm@_i{&C~IVhqm{$7oF5H!KNsA3Kjbw^)pZZH1B+lL945)=CHXg6<k
zbszUakEW6BW4K_}evNpy<zNxbO1Jm1+TCMMKrQ&`Wn4M`e>_dzVQ~<H4uZeAuKW_d
zG+G(9A!%1Q9%=bY<NCxy@{9a>dx{;rV@}s%&9+!O)OM#_?2WNhJj{GZLne;ZdeQT!
z-1Du5(c?D)BF7p_fIWTk_yu0Sag*~zr=db9EG;)-Ks3&p`X&=XiBo4NU%93c%WBqj
ziDknr@@~XLT#5tTW3Ez8<!kKtW@SyCe)DwAi|xQxN@m}Sv*pJH4sn$$R{N$@{vHaO
zACipRubi3}K{r&otpp_wE<A}00+F8!7wAc7_2&;4y5G{a`t2NfZN=JegulA$Tx$gN
zP1*)5l38QV-eblp8wA|^$jovBCj-L=n`aE3OJ`tj2X2JNR~iu{3$&hJFxdA0-Uwtz
zZS6d_UcS{oPXP46XH5+N^WUd;6;wqA#3E23Qx5?L8dUQGDN6H^jNU^A+C-Zd7qm8v
z@-xBt`x&LCqZ@(w%zAtb-ij_p+V3<!?X3Ctt&0tHOtcS0auRT*FO=&<#hubB+m42=
zfqi?QQ!p9Y1K01)jSdG-I?P-hOPBmv-ZgtSRy8&?QWF2`2z)-Qni|(6o!53gYomxa
zZyjj`8x1pwml<2h{jA0$9Lip6>d8n`nqM6ACpU=Fg+4KZBEf}2NWsB;=Y2;$=mB^1
zUq#0KTZ^n25htzYPUz#Er`G<2>C2a*j-iqjc#xC+eh$6XLKQQIav1~XS{VdBbA@-N
zfpjlzkQD`K$~PI4wvlO-u)r8^Jb@a|!)?s9Sivaift-D6f)CqvYmQa8Ph0^AdRmjp
zC6?HJ8RF0_mE()aU>vYp{$<Lp++O6y0vXG<GpoOIdHU%ebJt$*e#q??b-LYP{h6fA
zmCjD~>U1zy5D=2wDB)wObq=3T22wkE5D`a^tXpc5ObgNI&kLNO|2T9=!YTy+u7qAV
zKNv5z=9=H!Ziiae>nRh_TW>WnwQ3D`XIiS%BP`7NEqw*m4L57^`>hqs?sswwG~}^v
zO7AE{TSs&+<Nf`I=6^MoJ!qeQz{KU3i!3qfs-ih+E8mYyl6KI&R7d`-MfVuJGqCUC
zjn;~|e;H0#4yk*HtH$z(Ht$~xt9N#YOTE?IQ={~xQ(rz0bsUw8l^5zBwi6OrUA10n
zny<)pH}ImwkbRdL5a!YkKm<wdtHXor-ypDed!JkCt!Q-rh;ODVx!hYVRH4Q#k&K|b
zl4#@@2^Y|chb$s-IfgCw@hCY|+I&9E&;D2S^c(dwiZR9hh0M$hMm6m77@N^jfR{NU
zVlr-(p%s~|bP5^SVu>JdFJ>=Iy|I>@mKD%yTY!-NRV>~<Oa$u>`99gGoU(MXj0$=%
z2Hne-39(m~R)akV(EeEM76*x&Uw|$)snA!fdKs!|$rz>=Y_6+EF;oK4Yr^D2N#sfb
z;sPzGN0`47=^u7f$!(^#Y$|&^COv3SRF58P)qCZfkhdpoqy*S}=D^YyXe&6!lbM4N
zNfX|m?7s5)>f4dHA65HBum&xf32o>%z#=aA4~Eto3#R65;JV=Eh>aPX48wZ4p?9>5
z**KzlP_p{sbWEvreY(o1Uut4xVCsSeBS5DYuPq;5r0eLv$e5m2$wRticq++TZ$Ern
zkNK`&f1U!a<vlph8_LsOa}WjZEGsL^3Qa2yEMu)!tI)Z|q!&IO>s299l{l#&241=(
znHNnIhDR!R=k_E<eneMmbnY1)fmFmbn<xy#tUa=JD(b2(yk&wLvC8aw{frFm$LcQo
zm|-eN{i0w(Wvm%e?ue67s%JS3<M9)D+QB#+$73vsh8s^lD<xVNEOb=*=eSzLS=5Ee
zopzv59ToU1#FVOgor&_X?CRpfKL$Z0nVyE6rQngfn3?i9Ux#2EuQ`~{n>Q-lG0??+
zW#Vx?JdOjE738uZB$UIrEEF!;ht?~!j54JaS?er(p}8xReQformiw`L#Cz96FPG}|
z8b+q+C?kijw<1>$+Z6!V(bFtKv?vjQtF_kkBlVL7bkQ{(ZX2X>mtBknf=y2l+_acO
z_Dw4n;~p$ZrR-zHdN=f*bBAT-SqD~B08xezMo+SWqBii_6P4N7pI84{`rXSws_<m_
zZ8WvEWnD;uKYO8_7d1W><Ru}IxnwsMedFbZY5p*DC5yaKXsyfd;qB&_pT7~*dfQ!L
z&Sby~>@#$|+G4U4Q=d9Iyx^_?2+NRIi6l40^wG}uEnG_BR`rorhdQeCX3oi3<^U5?
zS0~F?H?2&6Q5__=4=Rsbz~@8!UPyPKxmzk`J?iDk7}q=*Uj=4$E#%W87@jTAw(Mus
z())ag2z4vwBY9oN!Xs1Qoq^g&oNlO;diO``%S;D&dOXk%$8w8;EK26kkk&=+NH@KR
z)9)t*aXhB+^FwPmkBg(0w@?y12y~7`XHV7`c7^y6?eSaZs`e?@komfekvX8B>rW3X
zFj!7oP+sYx%JtZtW^G`~qtTbX?Dpr+?-w20%eP{BR;~PYx3BH|JY9M<lff5rq|?^J
z-l+P4<(moB%Bn{}b6*`eS*Ji9!u^5qt^ypF;H4cmYIE3D8lN&sZksUN@|jta*>AQQ
z1vA~Ynnr$)TuyK|TwI&DJ~BoMX>?(nb1aEB=$yRnQ2$lg+}m0^koJ;G#4DxDH5D@@
zX=gZ>ZUv*_aTyg-yr6h?)#(M(YW|py1vrn9xIlAr_87SsJI4epzAz<h&Ayi4_ubRF
zEXNc$C0o6~qma<~ByV~KSXL>d%8FZwWS4JFj8<B)?(zgCF&5@8Hudl?COoby?lR~s
z&h{RVQW9#-sZTZT+zb!ANu73WKhTf6E>D98B_#)VV_r4|_TF_3w|T!;fVXY@$;Oh*
z#riDrK(D9@4JzGh4s10kCClKpD!zX+JGRrBXgff&q}vFgon6PutIR4NXP~DZsy;61
zPhU;OkX2jD9eb;K0t0Zq_tw4@?%flGpR+T}dG;JhXjFuMVQ}9N*YO*fJ?=8NaYjfX
z0)MgBZ#;Lg43PsyR66G`U>}<Z>i(XcltjaF`zlQXX*Ox}M`?@Yd*68aJEZVF%Jm<{
zbWHncW1hN~($fivWYhvr=8zL7@k0WfFd<g+G1W7;ayS0W&0|J6rA-2)f_AjiGQ`S3
zrOI;9dxjJi?2yx&r!B7C1uLjaWYq1gS~#nd(k{>hm*)I1expPF8hcE5r)}YbTh05J
zbwybj3ybizp^e68^b88xO(mpJG>AXuJ6nAh{27}8R<B-1>jbf5q|I40M9R`Mdv)Tv
zDn_c^E_Xai4bw1Q;bqR6H;L>BBA%1mk27ImlS4yv3aK-;8Csu4P0^p!eVLbI7-+(C
zb(+<9j4A)Cgip7iD=;}YfrivMu`nFeE!w)y-{Wb0fhvpES{A3sx5BA->1>)o+LT$B
zQ(Z*DN<yky$b2IcGW}P1p!sj8e|n&MTCXqGp`nmrg!wojxBGjZAl>l{Lp^Q!jd+oF
z!%?IWbOo=qve@)AsPi19yNa|BNiUqcp;W4wKT$PBmq#DJpje!+BI#$}=!Tmw24SoN
zt~vr2r)zyU1(&hZLP@80m~}&!e;F|f2>T@b()LYLzWl45%l#+(if0$>J!SWvr|p?f
z1)o;2+N||+UqY>8b_rP7H308jK%96*;V$uL4*IoD<eiTWoHDKFu(>`hO}eDpHZ;T0
z+|ApK#qG9)W=|@ZxO`VRlk6VMmeUoe!K}iu^n~X}lmj*bSJ=`lD))L^!PU2ODXfd0
zD8k$EgCg^r-63UaspOJItmwW4CV`nMh&O$ygEHes)w?_Nd%th`@w-^LZ`f?055$}5
znhY_{U{@zm6&<{ZOCSwxtAqzS)e~Rd1&i?34;e0*ngB{aZfUesS0%Rf8#&x*%^s|g
z<_g#DW~14!6!nyeGMPHE8F+o3%UOlb>#0jm+z(AUlL3cXAm|SH*BFdxWBjWem^r`?
zQ8&?foj`3|T<~&X<8{17U$yG|s>URP?OU1rd>$TxLcU`nSkG23H$|j<8;N0=gb|VC
z*gh4}jeM)@HOKs7>J-wNUZ!`P4mF`1Bc{ajS>J*}r(>jxEc?4k>$(E7;DxQvFG~i<
zIUeW%tS`UU9eT5tX+}XEE}*7y{ad7b@Tc(`zrAy~iD>ix_2EuGV&Esyw95Itu>V2!
z+lz8hcUZ5ap#@bR=ERWtZ0fZN-+#Y~^W1G6`6Aj!JL>Y)``Nt$)!w9;*XbO`TFy6_
z`#4{TImq7?K+>TF7>7PSuMnu|oK7hf>wP8UcE{$T0`V<?=0GUtY4)ETUxb*ypV8xt
zwm)LNM>Dd(fTpHxbs-{Q_rT3y5#b>r{kCU-w^41vH5?yCdfgbwK=PGTM*|CKieRMS
z=3{~gqADBD_!4L|rTO)s>9`nZ_EHuzfkWNb-&^<lZ77oOw-rVNHY(|-^W$yBfr?o$
z(1Ln*yFVZ8Zs~;s^ULoYFeP!yK6z!Ohhvj~pFqwVG*T<q1ztgn-&bgKQgZ4Ir7eB4
z$0polhD)-@6OgZ72MyPPCoB89pjcU1yXHm9%i`LjIrLc%o95?&ifXIvPJZ^SD$5Bs
zrk8vs-SrpOC<t+^`gflaoqXhSV`=?bGZx4SEy7A#R{v$B`0F_RwtrE3Da?3&@`+LQ
z-h%q1^d9XPn}-0t>+^6eNMRI9DsQWv3^!_gz$vbAxoNl3I1Hoos9f@x!qQ8w*~;Pt
zOyk%`#r}JdV+Debc(`(+cSlu=N;##hFX&{y_c2?ThbV9@mRW{M)o?ydj>GwwT0da=
zju9<TdIqrPA@y_9J?rrLI%0>A;CU^c_g%Zhj3z$)0`N8&Ia%V7Ahf1eJV)u(e9mz9
zUOF4R(7V)6mk+zp@vNNEcHK9-gw|`H^|t0sr;dB4pIW51;qr|C_aB0Ok5_;eHpF}A
zxd^|n#bu(s_^KYR(Ccn~<*XcWkDw3>Bg=GSPAiX{oNqfH)4FW7x2ZnYEg(}uB22m8
zr6;FI{N$Z+xRLwqNM^;Ss>g_$quj%}J?D96%oaLZJ1K;mQc4WlkdT@*+IT}J@}$0X
zB+)j*pg(tII<ni-bntW$IAgIfa>H85<85D`q~9rGcRZ_>m;UhU7bwh);2T)4kYTH_
zcmI-q{I!SO3$bNWt{RO4^}>H*JTAZGdYY{-E<L3w>xPPJT%$McZcfRo<PblX9JUI$
z(tT6L0?*J06q-!&d1mto)mX2+gIBpOKK4Kg?^AGO(%(&tUA<V4eB-4^Z|OOhD{!Ob
z;H62s7D8zRd)BD+^qK>_nyzUiVef^tkrGC`a1wvP*H~?VS4P;{Z?!;}hDBRXrWJy&
zA9lD0;{}a-OAki^S*wC?*QsMxn4vbtWZQL2ahtgOV*FXGdh<Iu`lwI0yj=#1xYG0l
z>05fn86iD}dH$uG>EF}TvTF-LW_F>)RfEvc&MFni*JA)$1nixxU<>$vt+47LfrGE|
zYe#TOjWo$hUvtEI{UQ+t_o5auUkCb@eye`;CC?=<MX6p)W$Qk{B>wij6Dv&{X)6gm
z;(n)iqj?6~Bp13p851+P)0)pkBztYb6eYM@txfvxy-<gur;w3Xm##0kPbi;8uAHWk
z>GCukmgKi^rA;W=X2VEQrRvtJmG8*x3jWq?KA7h_*dGIq$e+mbi`85CH~?_f-ZWBc
zj|8~$2B%4ry4qu}anbjU+da)n*HXvso>eQTdF#6L(Leb(VFB1x1dv4^2Z__&=%c9f
z;N-G;FAX2*<3876nF9i^sE0I>khnthw?jaYlP^K_n9-y=Z^k%+yV{%t1-T!-tk&Mz
zDXts1VTyBPU-Bk}HU0{x3%Rygy3+j~q@7f=WXl^YZaH<ylEeVErgM4>SY&Y*2v6Ai
zks_@fxR&Pk-DkW<WQ~Dc3Z)KeM*5<F?HF-^>!fOIS)T+h5{NIGpPvKLy~gaD?y`BI
zd=^$r=O<K;Db3;r)37XsCF;@(JW7%{rPiR@Q<tpRu2l!U0AW<7<1TvBe&?_0;NJj3
z5`nfMl?geb?^3pRdp*!t9)~npF*MQ=AoRT^BAwnc65{z2U&!4ajEe48g7>Z2Ho0z_
zJ>sD968&3lC$45;X(f%z7TXCOMEp<0cjSUv<4s>HDg+o>@^hvMpU_g?HuE}Y=(RtG
z)L?Mucf#9J4dWlP0`0FHiB<~yvyVm<1uLve5k~%(#^>yh$f-5<rI^|tPMDsDd>+p9
z0TV+7>y#%vu%;|3Z!3*-Lr_eX@&d2cR!r03g`VzdCl|gQz8CoAkjA1q?JevIuzT!w
z&m$LBG8`?Gubq^C_Ri_Zy@2#g!a~QpIxSLYBdT@j6(2^;H*BehA?o<`0MV^GFKs!&
zVZ4nDq&McUG%gRZYEdDVs?)NaDhn^HE>z=8L8Z${KR>MX0|~R8sOt}zoYrPWW{~3%
zvHW`L2|q?5Y|x1Du3kHza5F!W)!8eDU1>Q4^2ShBKqyDJ);@jBw|&gd{tJKhL}cyv
zD}pq{N|M9)r`sxetxiOMDG}c-PN<uJ7Y<RRi;h4y22KT7F)5blEhc!kKbwTc^8s<c
zwE0@~N+RM0_n=XKcF#@z)5K{)e@<?JZF69x0{&B}spN26@R~MIYY8kcT~>yc2p#Gp
zJlpDu>;NT*eSfRA!i%w#bbHn8u7aGci+6OV+^^6Rr5by9_|<RG0v=zCr4Ov`viny=
z?89&72)P6GP+t(*cn^~De2;nEMGez(%+CfT?b*X(X@Vp71HUIi00&rUl<-l-^wW=(
zk0zSgbzDI|J>c0=b~AP}5b=?ijImZB3j3!{$Gi-hiUIOk?VJNjZ?T@g236SL)qMRo
zBVPd3Aa|Hk1w@WR9xdzj*=ElPl4oHYWH+i}f9H*x!~x~rOGSE@RZhiNYUM7q@BNt6
zBjF5REXMAyYsp+AcL$@T#(#bcG{UOC;)}Jy4BYQeFI^Jusr1T;r~_UG%JZbdpYp-c
z<6~1BOfHAHd|eX5Qh@OJ{oV{9y^^&=;wm~5eFz*b@I@J~$BUHtDm9F?;(FU~Y2~VH
zPEL`ItX;;{!uLruoyRDCLjPNE8c^9Md1YtRBij3O3F<SZPD&u(#iWOnMS&S*xf@OG
zWmDiDs46#*Z`-Xd<DGFW;050dUgyoqF8UPen_idJ>ePgxlnp?qGoJm-WBzGA%Bwe$
zWF~(`?WF!pHuNswQQdHJj*Xx!Us|<&dc@`A2B_UuFGlj&5d$oMsnSSE=J^EOYIr`3
zIk-~<bGa|j<gofvoc46>BS^tV`cWdD8wd`HB{VweF`UUjjW2kbWsRCwne5Tyt#h+T
zNyI<#xKwD5nBqZ&q_szgL%gW616J1Q%cR=R4?0Y3EshdV=ccQ!ih+Y{#O>OE&F__{
zrPjMtyM)N_Y(9m`?}-`9KYH!s<4&Xr1thSOh2a@q6jr4>0XJW8y&dnPC4U@4n_Q^J
ztR$Hn#kyR8+gMvyGRAYe=?GSl2xw%|jUPJM4E`V`iJ9qet@^pL37;ljO?y#ZiSdVO
zOqUc7wxQ*eucg=1J|QU2*;<NCwBqrOua7C=_{uCLjgWlRYOPv&@0mPj3>P{CLLnDW
z6{4M;i#ZP#1H5yNc!KF9UgdFb0>xwQX}2Z93Q>h-bf=HyXSUyXm72Lh=(WOGz`--3
zI9_gVJReS%x|;KVqrVS=POEYowb9G0*O0cW%A(P~gjl^C<iowr<1`r`wh9i|q*old
z9Wq~2SL=~Qiw|(1&_ii2hx)F{$vCJMY#H`!0q7!@Y;T0S3w1`6DSZ!*8v|rv65Wwp
zjb$et3fIDYS}z;tsl+neWWLn#^u8Tb8Fn;p#3E+eY=LK~9|SPT1a(ZO`kf^&#kQli
zy*?9vDxEG_0!`%K=DjX#vl~Nw(;Wl7W3b9Giy~L~C&3?={K>g9wz<aDI$pm@+Mjb&
z0oPg)2kseP%>|E5pQ4fgY@vC9hT4t0eWGtA_;TWm{Z1KE0=vbWB>f0EGea;~H7wsX
z$iY{W+vL~HW5#34O^R1X%t~PS>!msMv`4M#3jIFUeW1M(OcG^O0+)(l1;MNp?mo?`
zux#@Zp6LSIBp;3Qn+8iE6P`+gE5D!)7~Va&GR<lHXFEGWg-P2|M@D#0RjWI2ntB1w
zaNQ~Q{lZU{EYg7IMHret8AGB@AldXNc@;yBpS?QQzA@|V`RMI5@S6TEtut*bY^`f{
zGYI=9K19FxF83ym0wAC$t<RrCSpcNB2|(i+o`w1GOFG%omF!}!<ZmxQe7e<VgzWk2
zyi!nW_nx!N##AiHEJZ6tt!d@adZ<ypoh7CE<no_sdEg655h0w4Sxr4hdU`QdamKo$
z5yf$e@qW6%w+x%<5q=uG80R=k_hcIBHqM)H&V{c;%T^nM$+H3#=`C+nV~q_-0cNF&
z_=g9+V8Cf+D{is$v8Q8i#Ad2my*C%YWj|5r?r<y39_n!Y(a=TWMF-LX+~X})j}=;o
z?LKr!XFdHUqEvn;Bkp;{(tdBs7CEJXy_WZF^0<=dO6A7Ap@Me@xlk4pu`jtCWZXU`
zn)n*am79&`L05_=?`J2TkA%3yWyCoEs;%x6<1c$13bEo6$cWsya<(h2;&0}soh({Q
zZpMOEJj3jVDoZ-N+Ec&zWIMbUdsO*@iqg`N^-s72AT6>I9=^TP#O63rgnxciu0y8n
zJwl;A(c1jISCxU#@TO$IzwmjBVuHduwNkG>46$(k>Al24bvIHhvVZ!j7;lm$U=Brh
z*no1(X!mN5;*_ayeZg?*Gz$okSRIsRnzQ<-xGSr^YxyIi4iI>N-pRS4K7!B_v3VII
z1)3>HT&nY}wRmM`METuQw#zkJXV=JIG2SLcXh_MU6ozpn{yem6aX;+{*kR?JQAY~d
z*2gx=2mVC)t*B%s$FOgf%-(h;?cr>ykw?~sv3XI`shhRgNGq#z`5VspJXgnD6i^ol
z?6r5NDtY?BqNlBw#htn@_LezdcocuR?H>w)6j|N&{bcaIC%?+Pg#t;Hn8E;%K_Rt*
zdTEW^G=G&c<k8uHAi+9S4T7PFHV|D|YD`FE4E7E}K}q9M>P$jFRL878#h~2iBz-KX
zJJmkyHZFZFu&Bx!R9f3zT1)1&r0%Mvc4$S0qbd@cd<lkKv)r5ejhtHhmk{blEheEB
zI96uA2=?U=2<TlWZ~BpCFKL~)a_*|Ud{ZMtG`Xy+%2@Ld&gKQH!Qu<X?VP0abAgt5
zo2n68>}#V=u4Xf#BPs6XK4h$y+yu1-0J)yc{v^@NeXJ!qvlN3DRKjm-c8M76Q<fUv
z)6Xp#5;`t8FP|k;Y@4L>Vpu6Q<v#ZkKuk-?Y8c}O@lq)5CQ&VWs$a!vS$eW)@P~mS
z2qMBwP=?yL_EXyS-&&TbXN`i6{9Xz)J!qOg{|7NGC1`42^`=AyGg$3DQ5dPy$Vxa=
zu6pd;cSUPwvyaQLY}flUZ(Q~g$cA_jtoW0eN#!t)lZ(>W4iF|xF=Nhbo@eWxIAi)p
zR3V==2q&`ME9FI`KCZusWHnrqOe(n9Qhgd(bDHMBU}=<6j|`n34Qu?;$ChWvAOQK3
z%NluBl-@C)$eZCB2~^_ClCRtgpME!{!xDRcvv{?65iGqFcCeaRii25FXwE|!2u<>`
z$;2Ud%gP7kiB*cdPrp1DVS_HRS_MLKw3GBlPT#YPtp7!=!egaWAiwy^?MZeMu}9dP
zCPpdG6k&IRcl(6J<xQu55!YDP4vFehRP$x(F*85EKM!%zPpPyy^}Hu(wuJid$HIK^
zloa`p_%R%0e+D_UTPFQO56<$z@|R6$m-qDEpx^CPCPKPdQ3tFE4s&#_p1_9@>VO;q
zgb2FYZ=x%Y_R3ZNK~boYgKjO=%QJtv$hYoB%6_K*JP^w!c2#?Iqz3PJI3^=#61lhf
zVX&~z<DonxjRS3%*t4Xig_he0<@+>v__gjMj_f}`9Urf$qM4GX$8KW*ErylF3<5E2
zY>29ux|l2&$JFusz-7+Fvabg`{Q*5P9+6S|EVYLp1qf@n#5Np0%zjtFusa}f1Vgm?
zK?zylpetx|AeeP1lqFK777hV!Q>5CFtm$Oa^M7<Tz_^;{157viPj{)-S!Igrn%=Wf
zJ;v~KoqL%+8SpUG1wB@*bAz6^wbe&e?DUkgPV0w4NCy<&2GqT>Mr>5!=iAMBLl(6b
z97WH!+h}NppqiKsA|TVqm6iJR%%s`#AOE`&C!Ng7YMavWDG*S{ev;)2wcKE@<$tu#
zGS~DeAnH9X?3kL@bJ9|L$<SO;RN-=1_Q*P#TKVzA1+Zx7C5l6Q4}W7`lj7y?9wpxn
zMm?}n&Ug_58rziP*sMH(nmb-g`V6T9IlKVrqW0^@vy)R!%@i!f%BwMhw&er|&h1>X
zi}~Hc#F?omxeTtRi@kx@ybmV?03AXUQ)=~Wf7!Z^Z}r3|{*aN^Lt8>(pu)U!btR!q
zlD`t_&3x-I2XXVd{mq9Jo!OFW!H;fe0t$R-4M!6>tzehjqe1s&y4VG?yr21}Zu-3M
zO&a#v)={K<(_2UbtXDq;to^Kc{lxYuXO33E{N9tJNCzuscN{<9Q<^YLxbprM=$e9N
z8T_a9rozX*e+ON2J#f4EcS!w6c|_wf(xmYt(ir!lhBL>6J{fOuI9Zv|z2I)qQu2-b
zJ0eh_xbBc4E8Qq<v!uCz?)f}-qxC(?7*MhOgEuQWGZa1_%ZDG~T?*<{{SxGk12p>0
z(2!_FzJ`<LDJMA7Z%>ZyZ?^WukrRR<FU0~8SZvf+Veq|s*jbQJxEt6ZvBD+)%)76_
zWqqTYeAv7FCjirbr^C>^qbUX9MLPqywz4h5j|6JR0t|#G_xc^|`TWJ5i{ad`l-ET#
zUlW7usl2%K9gq+_>^p6Q_13VSDhvovmdH%<!pD{+D{vrzlq21mm|wAr#gC5*y>%J>
zQ$t>G?QaeF;3>>G0MjjWOhaS(Wapj{P^D4g$FVy%Yz(Xbn|5Po`ljNrHeVR|>(I?U
zt5nF>HyNpvvwI2YIXJ7-#O$6<6$bSd%=u*^srgWEhZmqHnx4E5MWl%PXhr6J3FhMX
zo@{w`e;j}-heOZE<^!7aq0r;9TbzKhyQh*roeR9v1TbaO*LXhtpk1FfT2a2ACANG(
z^#X+#S$7DYySZh92D!Y~0T@PTYAY+DZuMsD6BBcTtcWkAx|H}nfp!4r1CXa1UeT%a
z(%Y9WT@kn6(G#z7{iQRLvC(XGm{@I?#D>k<+iykJ{|5WqvH)EckGsu(Cqmj#szmL0
zE_C^DK;T3J$mKJPHV1?-AGFx6q;75_u2<U6Z8HmTe1JfG5cB|hUvCG6s|30IM*Bi{
zB&COQw@nD^nN9R<UV+h;d(j7Q?E(U|SJA_-KG=;qh}T$;mix$Cv2ZZI63iR5ehV&-
zfBcPA*cmK4^X%;s-@_SsT#ADsafI}%id{Vv<5nD*y)FD%GlRzNFUk~NUig;aU<hl2
z15B!|-FB7p&-X3q_`>|FF=W%Q21uhzsij)M0yhLSGCF>R1xn1%Y?94?QaLCu&n9pE
z;%n_cC)zQtH=DOiR?z)O9us+UPE#T9{Q&?}x%sxoZ!YZIjXOHe+aVrd6_9YuCJx;9
zaLnl)tdEq;p9j$3uG%*97UG8Vi3JV60>}g1ZY}qzHBbI%g8s)_w?5FWuiJ?T0PD{R
z`ENa)KdQ|C>;nIhp#C*uz-mYDcT8RV!++7J09f8vcmAcC|MyD#Ex-RG#}m1D_P;0%
z020}s@A`l91^&Oq@BguCz|aCZ63pVz^|IjE$1Quswo3kI56AW$(WPTxY-}t89jsJC
zn->W^RD6Z%*b4c8hd_j<F&$EdICWC~-7U~mQpiV0w!cSotm{naPUdg7^WWsex_f#M
zhSd80{{Hmb+-A-XW&D|t>y}r}S0q(D<9`on+`M(bGHMgsvkNS)qaPZ^{5oWiSB!rt
zXx#C`j>IbJ1Nbd0E=DTr$C|A?WpZpB;9BZ9UX)q>qU3Hm-)SQNy^mDV2|O&Lc5=#n
ztMKsp(asei&h~w>c_z%`-o*QXN5MlaaPd7qjL)~V=A)+}BiEO2;kd+`F~StWw}Rez
z3u6oIzEj)c`6MzOox0a>!4;S6N%XZLEXd5%!aJt1k=T+=h0lM%YpTX76#i1P7?Ors
zp8k|sepEn{21+pNb|!tY960AG-1-Kvx=gbVITJIujyDz;0=67nr`3w?gMMqtZZ7YR
zQP&#r=I0`D;i-0Z7Xyi@XE!Gz?Bm6}9o{CA>h0W*@|9jc-c?Zg3haV2lk34C(1+sU
zF73=`vFc&R6Brd^HgR02T!`)<cSV~7Qx6hfS(`&{5T-tO50X|W4K!#G(9Cs65d+Lm
zcNaGwF^Cty?>-jHrw<G>yraDds!7O8B0XkLcO!e9l<x|gQVK78`{|CRv*#U4$PFR2
zlZfkQgNQIP`S+Gi`0P&CC+oD8ZV1QXkGbJ`varf(Xu>U~3qZLG@{Z#g+&RRyTi9cq
ztS$p33xt+atJ{h-QmtKI$Sxc=X~@W6$s5a>tUeQbSy?hn6Kw*xolWsiBA4vG;1voT
zQ$;JUoXr{QZlGp}8y2($Zgk2SGN=j)rM(GG*<#t*$Ys8nfJHx8>cXIKXno6cZqz)1
zwA5_ZUMTL-yibjL<TIY!LuWxYL}wbiDLX33`)Dqs-QB`ms<;P1;$%OSW>d=hw1wit
zG+ZvsCE`3HrBG$VJ%$GhfD&_HCC&b;QOSMabL5saB%z_IDDOd*9-wVR&D?q^Lfu7H
zn=vmRTVmpjJkkiH)0B>OeL+trUF4q5lDoieP84x-r`ZSw+D6_*92e$GyHccWa%o~C
zRWY49XO97!^y1k-$Uj6ZaOZLD6d)qa-Cu&cX1N7>dIw4}+x>)!+BOj+kN_SZmi8*;
z4fYjBf?3v#DdnpFrmw**N_@-J+TU-vWvIt%I28ipJ>0*_JgBrK`B*5NCj$d9mMClP
z1R377xvxN+aAKhFJb({UF--3Pe<u)AOa@XjarukaG)vRo#PlN@o3nd1Bp=ylyFTPE
zz9gVo=hkzrUc6?mdw`~J-)haGlNek3pEk`i&O7@Y_E)-ODbtIyiel!Kj|yNGTlYcG
zDQG&2!CjoSsMaVNag)A0J)C6UK6Faqp|T^S9?RM|SsP~WZ6x#Q(Mp`UO#Zy7N7Hj2
z>D7?{On@yP%V|_|Q7V5Y#?Hgp|3!0>ie4&dEzgUx6p|8cZH!HO-;|34=~d7QsJ@sx
zwd-7k`FO0`)9_U-d+*`>qU@71mv^_LOb2zEYbyA3y|rj_o*V#6prYW`XgN4_eAhPu
z$7Yj(UT~khyZjzhZ>2xSq5W)0o-PZ&Qsip-{JP8XvO@p5EOuXo`4(9hm^g7y&9^&!
zFXx!DWx^)GQKkVQB24;m@knL`TB6#o&!MLB?1ijr=Lw6?gpS2akdLI;`Xyrlr0B9z
zhZjiYKJ(!NhCS)v$;ANvoHrS|IV?GOo!>hg`DPH}kvhQ4l&__#1$&;B$KmZqzlL|%
zjyeS&Hw8J=zSfXQFEmi>f)f_ksMY{R?HK-*Z}gWsz}wRdC)2upEDbtqcVJ=qv|CKV
zn>IV|=ve;QmjVP<u^4wFf@c5qOxH(d=$g}mUvB2{S_tib;mr5o>s!F6IMh)bfCUD3
z7&2I}Zr|VEoA-hhV|xedAP@TQUfd6uPHGhVQGhXra@l3~nEp>i3VnFWi9R6eWIxtn
zdm(=8RKI$f3!7xj{0l+D)w+`t9Yn-_C#|jX|KN5B_}Ju2Q~i+n4cZJ|FKEqZA)eLH
zE9}_H@Rv9NwTVGt(NW_&@Zc)mn46+T&kiUd?hHK*Y8A*%n9-iepA~rJlvq?9Jr9%f
z_}o4JjsNaAtgF&t|5X#qsI{gMxT9YX23)o4{1vr1<J-8q&0z7{$^E^mv7hNjWA@4|
z*w<S5&%!uSSun*LaS{xV?WY(D3`C)#@V|CAoVF5=DLs2OJYERdU>6h(1&6)Z-!h=1
z=0aCx4`1TDsMbF0{2@gzCs&^`!6w#GwCAb2tXI4Z$stT$EY6(`8XHqZ)5}W}+`<Hp
zn*4F#Hlv>d4%|Mj*YQ2l05WOzD=f7$5e4u?q1S&?I)GG~(=-F>X0vSEG&fgrB9wBb
z!5L-?%GhL9nzFFTvH?SUeNQMAdj2|p;SLW|PzVPkspciX_n{Hq0gkC|v{&+X`7zKN
zvDr&GTUn)=@m~i80JY6F%KT7SIWUm_?AXe#g#=Mo0E?=)vY+vqn*sclsy2apse|mb
ziTQ(&AccjcV2KQX9aO;Laev`Zwprnw<KpILwGiWwW(x{nD$*!Yxz@R_`58NTbPEao
zpXT5rq2;^yE`6#LO+LtpdXzDNNMQ;4aBtMm9LIQVap=CyQ6aU7KC4L<o`DVkP^9$q
z=>gF*2c63~$|MpKOye#kEMX9t6?+$CTdfCOiB~Yj889rfOYDA5M?tWEeB0ae3I{8Q
z&Y4(%{QkLF1)wgGGAK8eGl9y`1KA8M@=;%Y^D1wzIjSA7MjlBwUy6L8+$$Lbu%^L6
zj%iF@p<9llkPkaKH{{Vo)Mo(Bm8vA#s!Yo**W22s{QH`pXubqI+A(rLDJLnzw_b<@
zTeSc(>9P%<BNA#82)K&T$^_(_wyDL(b&6_;%-PKy;h(cqqV`$r()-1HCw4cH*bNYD
zf9HNP6ExYcy>REvYtdvumL7Tkud#2#rZ&7EWSg|=oJN^h+9`o3;JGIhpN5CGE?+~O
zLOlXOPbeA6OWw1*w6bQ=#b9GSR(V4$(={Q*HQfee-3-*YJhh5ILCph>=^~+dRn6#o
zPiPn0PMRy-)VX@D#8?Lli}y~O5+h+Ezd}5LBFkWFsAnxW)M2evZu5D({$VFD^RB@I
zEubhhQqPT7kT*lAkopMT(SpSrnppNB&d%vBRQU24%EzZ5mw0OBMGE<8718s$^SZzt
z)Kf&KM2Q}ooLT|)BzPX=Kja<+EDy68H}6F<2Wl|~_F<xhvTC{fc>TGEJRAs<t*caz
zS?cZ#=}`z40Vsx8vpOYI{RL(MNS#f4BbJZlJ+}LltU5C%${rGm8Z#J~gy38G6F&e{
z-`p_A(hKznkyjIi_*|sClzY6izV<^8fD2d{Ns0EM2P|$}j5iPfs0^`%DUN(x%kgp&
zgYavI|KYxVE%H}1=n*V}^}2%se*gxq11=?w7(HG7H+_?WGSE3^g`vZb^R$8whB@1(
zIo*Q+{Ze4yjdldu`g~ZR36xDNKcoDiuEY-p;YKY=E|_C)mh}(txv)`SB@7%u&DSJL
z>MN$73@=?yj`m#kr~z*CUB8iRz0ZD93iqTY-twP{ruwG)B;;R}EK;#}_AO^#65ot*
zO!K|Bx(e)TN}sL)!$vk~*#9UYxZLqzH2^uN+c=+ap9n8(=B{3fzmRwR{OnU~kY%4t
zcql5l|Dvq$hXV%?vjUnw&3HB2;zcglApsvzyEf8NEB#k8wMq0IU5DGM$o^*18i811
zdI~5guys|5ij~$KUwzv$RWHtO#`eIG?->s#u)PN#Hpn$m0H@br(v-Fn#CvMYTRl8r
z14pW;X_(sFJf;+GlpZE(Upsnp`9%=a8{_(BjGH2LL#N`Cs)@WGIKzVaC!|Y(bvHbL
z&<gY-8W9d*AMUDPyxv@^UXADRcWZ0|nm9!9lER?}{<zV&CX_?cNIY&p3g{E^9_($E
zECG`O=39<uo85=jZw7vY0=>lzI0>T1{qG$9{$2B3@C*3K8H8PuC2g1=h#HGp7L1Rg
z1{Sx<W2^>Wd!pi5egd$hZ{$SJf__h%e(WbJseE1CNq5n_`t<kNxA;;l&hKxzMD+jQ
zLFRivDIRr4S6G(D>L8ys*=rr_++zz6<R&SzgnTewv-|`}9AE?l@OPrEa=j-NiDKc?
zjdRLapV(|N5YRhKewgs`wIx;nE_-qfV3s;L9(x2B__Z~oC)>LmRdE))b7Whf-L&r;
zZL&HA1J!l7DX{?D>ZJTlH;mI^Hqm4en4z0pB0|PZG!tLkD`@z0Vp24o`TWy5HTMJR
zCqFHB9`m2|L)*pheXi2QPTAcbHON{vvOQgq?q&q|K|j({4ubbA8^pV@9yHh!IRlhm
zDaSRmC?9H-Q|G9%9mO~+P_pz+q2r&|wdzd%%~+}QOdWmz855ViqpA3Z?>?$||Evbb
zC0%vYX<^2TX<&ev5)^xEeBw|hzWJ4(!s-)<w~d}>x@D<YLJW_jgGWKLW&60>6R9@w
zBV2+#*MubFQn<U}ySazGKevBEiAm=JaMwaq<JJ3q>lW{GeI)htRz8ctyfosvO0Ejr
z0XE^Vv^R<+%A71q3qbd0%E8e0YXy&vua1dwKW18Y*H2rJW!8h^mjG*_)ZR8HGk$K)
z$3ObX7b+YgyTg(BaiP42zZX{=DgwQ{)YLc)L{eR67XXw0djE;a$U=zcPj{9pRf&DA
zS1s#}(oRQ8WXD_<j@rf#JU%M8U9Q+nYFJ{VN^ELgeue>yvguXX6q;cBC3s)%dvQKN
zGgxx1yllUBPh+#TWgOXDe+9Ia#0T{KN78S=XuGu$Pc7~6TJk=(V=02%`X3bo`%7=@
z50pzF`!GUGPxys)swYVX|DzOf5@%!=dDQSM`ABcQYNPOuZRq<>&*}e9EyMonbLI!4
z_x*smBLAggGJfdv+i}44^k0e{Ax1Vp==-<L^`8Y5cT>Rl$h}Ef|39j2TufJfvs|~g
zV~}(4ggWux!)5*y8DzHdwNk5={YpNo@wrLWcS<X{|9ZQ)oA5{)V>N9Wymf_kHJsnP
z#*0hwBEZPVr=oU%(-q^msej1!<Q^H;^ZQ@l=b>iOniI7aF#_jKyxh1DrsXhL36sh9
zdXpPS;cT_zV(F$&7Ib8~eAvK^*p2y^+*zf}G!=Yr#iI<Bbh5=jrRovz=;W1hoSY#<
z#k!TY`n`UHlU9JIbC0yu9lDSLRr1x)!4+4eY8g;B%OZG2b<Su$zgJYWR#@!+PBqwE
z1w<7er^9oRyAOdgn1^&eY*a<ES~1&7YSL#ahNWYA-^sNCpctT!@vfi|#SNu{UQAI6
zAry9p!F9nx?A+6Di;HyPW}aR+9_Nc5OUsL!S8p7%rk0<{Y!SX0?`v()nWu1`Nbm6^
z5kHQu6u~>(RCG5#<jIqZOqdOpgMiRXSpnc(0r%hbPu4o3ii*mwR#Up(e$XK6C!pZ?
zHqzDvGb~t0hMvla$W0KIgPQ+(Wz7AdN(Pq3Y_N`Zm!#1Fo-M1vKzDwRU0^uRL$-%O
zRaU8KV-=AoU_i%KjJs=B6pQMyi)E_8B4ZymdSQjwUKO2r>CPj_{Ny%Z+@wpyqqH&e
zW#NtuJeMH|bdk$tlH6c!dZyDrl56)u>KMiOH7fZ({?_~n)IJqQ<7M{Ryi`vQ`!VNi
zkrZKa5~&2cAtTTP1O}-QD4AnBD3@K2Er3ZYU$_+2LK~kXdJ$pfmT++xTIr{B4)B?D
zy{8dlDL+4qMRhe>pDmf8WxUI}w8QV%wd)M`<|P6epb}b}l^9U5>g4nj^3u<lF(9tM
zFs0-x4Z5-M@B>jv8W2Rp3zh@42l1p20dvP6V4##I<T2x(rV7iJLX|g0!mZ|bl!*18
zQK!2afB|@17K#lAPe8v-CgM+{#<5$q77J$`Q|uk*Qx%+%-k7eYSDDlGe@<H^{eT{J
zG7gmea5U#*apf(aG@tOW4w86%V7V$HwvUp9ps$P8f9QuLqb&aQ6}G3Z{^N3Nk4N2p
zy0$*a_Q=(p7e=1`nQOZ9g2#=WIjh^`_g%Zn&+N=@-5#$BEU}uXnu39_3O4BV!18K8
zIc&kVG5AL3;dEt49Pbj^<HC3WxJuD}y13uLz^=`%J<HP{(*Wjv%Ktvv8$y5P(Qm}G
zm%pNW2af`Ty%LZPb_Xf$MU~jTUJRa*MQg(n$AYdAoa2y(5Dj1|jdkPM>$TA^j{&%K
z6=l(Hb#M%d?60a8yt2=OFKugQQ64{)!A_RPlk=V$KcUUedXl0lQeAY*RaCkK@~>S{
zgasaUg6FoR&qOkFYgb~_0~ayAjUwK!ZxiJ-0*jTk?ytBP<%(>S1{kDqTC+;SL;ku8
zcWFIWjeS-)zQESh*LfrI2&%>HO*NxZQtf0!hd^WO?U9-4%NkaGl1p<draIBgD|%P}
zlU?Nqqq>ly#u7UR7^g{ej9*H>U>G&w3}bkX{mZv>-2D6Yn33{lK5Yv&MU{&`Prw#S
zyuL)Tveq}O^prLU@}6=`QMUN&_IXS`&TQayy-;nr(sYb2N+;-=MOI_1Ha3!g!2%|N
zHL+UtJ;K=Er@RTz<_88@{ZsSmr(uJa*CY}uKN?HO=SR<QjnnEH<PQloU|2>qrxoPj
z!yM2@?F0e;RDZRqIR{*G`#hNmiRV+YwB0c8xtgV|6(cy`q2*jIneFYa;`sC>fKmKj
zwWLq(jfg$Y>=&dPSMr@|!a_n+Gt7&irwGb3R|Q=7yST?=D2YDSlRbjgV2R-AiCjei
zNumlUu(+b$JIy#4xxe^|0nH~i|3y<d4o~*?4Zn=14bfQ~rVB<Y7hi15pj8BBs!R2S
z#_7-*HqZXRh>~!o>ElY-0tTaSM{&FPK1YRh*|8Hj3-5lbE3CVFoZ@vRB1*jtBP*8%
z>`X*Zttn!_>aM-;=wG)SM4U(GjPy_Jk%i}t)2R^e^cB0$i#;3jsWe?&b?;!XGfk-3
zTGGEq8Bv%w5%GfAVx1E30J$!b_Qa9zpZDfFc8B7CIa<!hZ16IC1|2;E-;mDshA@?=
zmFo*f2AUJcipQ^53ahO3VPeo{7Kh(gi--C22bBk9-)vD>D5^QEr*+Ia#N$yfhJ2dE
zr%{1+b~(5L*&tt4s<wPyqA=JTYOR1b?$nvJK0~m1QFU*c&2wrxAiK9W!o-~R^S<dW
z+v!$=6|pzGEgP#3^Tp<i54uk;RB;;8%KAz(S%oAcoCc7JQgbC|nL$CBUQ$2(r_h<V
z@Xw9&9%jSJ1BR2Ft@~&bHKW{Q|M%U2MfI23xo2k9`ZZ)$vvKq9WciDlM?4qj0vN@d
zmA_lEb7{@22XE;`spt3qx=9KybZVC$$#ZDjHC}^#F+W{jx-XcAdgv%B;CG*$M?VTT
zNYgp<CPTf;O0Kondk{i;+5$EPWW{g^BDt?sC~AHF{tVVp@i@0v82UxwaI_NoBIkj0
zN(9vi7_s-}S6_)s2azc5)S4P6>(l}O5e@$Ofl0uL>efN+1RE3;amZi*eeh`}fDc*w
zT2L)l4`xUyx~D<Zr7jX*OuGuan(%965P%_Ab{o@q)Yz}Nn0yXAUEgZ8szUH~<dnHo
z9d??<U=OB-`C_x1OTtFjI8=#T)oPy4=gq)4bUmYx;ie65+^i?-Z;Ss(I%pYDeMz9^
zw~&cw+&AS<6$Ku?))_bB_`8LHq9h=c`_j+3lJNNbPjv+<>x1UY6?=B;!B+g2;f|6u
zq>nZH_g<jcf!TCV78S@-OuT(rcJAOr_S#(QrfYk@su}zBb+OkfTGLl32vzE;qw?{!
zYdU<~PN_lFy|5z#z(&piUwcMdUtQ=RktFx--Mft2iHd~(S`NMs1F8bA7+)VQKk&M9
z59>XTgg^Ol`t0wE;E?EFk{dDHZ)<=Buvq98=j8bEE!cZLtJAN>S3u>_)d4)Kl_OB+
z!!hy48tfK#D4f>nJZrP4+G__oKMtuEYS2Ot!piWxwibQ3Hp2e65{Vml&mQ?J*T>%s
z=kUcy2CYi04jNI&XwE?v1{EF!PfIti0~kPe)4h_6^T85FWYpU6i_<EZxpejbt4Cu=
zbhG&5mvoU<8D#C32$M7qAdE}fU<rA24MN&#QtbL1{vp3+oFZ*-e3e~rNfp*m4}A&@
zI(j!3Qt9!lFraMpjlH~~yp-B%osmEJQ{PL;wYu_#Qb{yI<~`cv%6DM5r<pd=o^<x6
zV>+Kp+z{t3oH}RxW%pA{q;3P4f@~O(j6^Vpx?5K+G*`8Dhz%bI7P*kVLXKVfLNjcY
z)$z6R9}xGtJK?559Q;Y=Ifk-VJZ|#P)_a2MN*-S4E|BkMCPi;7s4$AQr_b%$B_CbI
z`aZv2&HTg7W3uDEFIliyeD)3BvF=O+GUICgjGKpq$>sySipZ%jTpL`&&3DlAsCfb0
z^GoV8pYyVBF`g-<{d73+LZs&swjx71Z@QsMQfERM>_}*ga3D2sl#Lf+MZtITB|n32
z7|ctHMroWhBN?B(c`UQ}5pPS?BK6r6P3*hOO9eHBbpWtqS6il)Cc5G7)aCJ&O^kma
z1sQ00o*+jnc$l$jKo52fq)LoKs(^4+nJBzHO?%f%y)NJjC;~}q1f!iIJQ59mx7smb
z0wa~*3-SvKfG(bg<+Vfhw-e6Iq?I!AD_T1iuG;A3;C**nvWW!|))i+y&%ftxVr~6A
zf0M;PTT0rm__YUH*K~Chv~=Ny`LEOG;i^MleP?AlgGD~-W-YbtZM@o_=4PGPL3{+i
zNnJ}+ImRr}i5*QMAq+Npj$s$?jXEb;t?A7F2>6`}N>zFc12il(&+rak<*j3fM@yl!
zLTb@Nfu^<t2!_7%m|oOvd8U23aQ>!WOP=2!Q=x(_!i>eq<tgcTTnV~Idi9gJmEXhH
zF50Q~DgJJG>yZRQq#f4K6Zq^{-N41~kDribc~~qRl}SP0y3_l=n*&$*Pj6YO@}Plo
z+@YgU&l7KT`&ZbvKLcU}*@&9^tMepfq5QG~Qq^9rxb<=9bp34-85=TquATt!L;27%
zL26bCnbd_~Zs2o)RkqGl|3Nm1H@ws~L12{C$>&5RGu%an-?$%C%j0U*H4Q#XvX@=D
z=%WPS(i+d?2kBRh^W9U%S9LjnqyehN4Tq-}SKf{cuFd|u2wU8cUOvHNH*&fbPZp=y
z2HpGY?i#1Pks*t-s(z8T#PWmb<cfJ2JDFZ$<Z$<FR-^tCfhK12tH7x>?9}-47F!Rr
zhk*x<>LBMZp5@o#(Ta3(B-mkkU1MH-Od*tt|B6s-B}m3HkMfw%eis;fRBrGaf+m1x
zAwwIV+uw<q!fI?c{kQj`mzxRX3yGYtyrlB0!p`=aZRbCs%3(<$Up-{bPqjQt`keuN
z&H4%(`agcxL6m6R4McE~gVp-ZO2h<%uJ4=joPS=0|ICy(ugw3=YaBnD<jNKAG5EK>
z%$e4||1Nhn+q5qdpLN78ech6_eD5$%oQGUwdv%{UeA!Z7Te)YOKsVs=_pc!H*{0uD
z)Foa&V|heNKMJWo^gMS!#;VF9=uTeW%7D}k!{haxzteF%Fe~wSZopU+&*7|?v>%*<
zcjRSa^%wYXXcOg9=;+R*>|N(L{?5|pPou<;@0X|bYL6TijG&&9e7_?Pxy}b9J3BfE
z=%bslfxRnhkK~8}y<}*D%xvEJy0Kg&nlkc1DT`Lm6m;*q=UeND%Pq*p{PD4m4=(FQ
zn^&+k))R6kIAor4@K+aU@{#=VU-z_<q^ziYiq<AooenCKj^Uv)&Pbe~B~%lJUbtrZ
zg88nW-W_6|u>Jb2G1y8IuG&I^sbadmGZ$)I4>89qFqZ=w`I4&PpjF#>;1n13y|XIG
z(4~6xXiX>i2bl{b>6Q7+mPja+`Bq(<b@mAK#jSn1R<)v|5Y(Hx)e6{k`1IdJk0btC
zu^TrHH=4{&T8{CS;m|hGej9A|o|*7q+ZQ5wcY0ei=E-hch2`eHM@qq$XZ*~nDsOy$
zUux3Q|0L|_3C%@(yZnakE$9i!l^%4oVkhngtGT%oX{FA9^h3Cco!lokQQ@W9<7Twt
z1{QWhu64T^O9wq2?lc!I@_JP0{_<K?g~@U@xkt{VVYuHa_I-<DCbL1Gk6v_za~dL!
z$rns~M;}#(ecmUnhri)F?mnb`a;7)$X5q}wix+ZI&XentmuPA}-QlK`xlgfI7mWI=
z^8%~12bVu4V=}kTz?xtn0o&1_)By7kOi7jyi4B#&ZxC^t;N7xpe&Cm8fGyR+r=gzu
zNlhW2uM>UKQLY?hvF`<k<Di|xC^#Ff+ftoArlJuT__eAAm<n+V>3Uf}^9QwZ>gQMP
zL+N)oQ6W%p3E<hk+z<A-baIdfelz%-q-GNQs=hC}`EKjN)b`mh3y3rSl$5LkZ^mAV
z<4|7AnefKPtQJzv<($rsH4%KpiHgPa`Ib#ktE~(cd@%Q!4+?6xefssFm%GcY`!QGi
z>*akyu!9B?(}?=+YgG6`GW_-_z^-`4(&WStYhsIhi+(HPNiM!Cd1OAxFe7!vbSe0Q
z<eB8{gtaE}@5NX>VvrgY=Yug!^~=W-91tF>S$8LA?VokqzL&W7h(lCu^@%I%DXiL>
zgJ}wAR5TB9;sT%}pRIun5Yfhbs>hs^o_^)WSg0QJ$6Z5vuXQUApjJqa64rB!3ul^z
zJ><@aC@_{eO;()p*RMCR@x?8;)3!gvZ1!fxyDcNyT!x24n1XU(zw-kR!s#!qO+2W5
zVzPiU<34WT1j?S}c89jp0YrY9B%5o3{Z}@i{=Om6YX8<+_i}!8y-vLCenAzsQ&QEm
zEZ4!Mz5ct_=44<_=;Ecm$gO|&*k+UEwj<Kg6IYuk#%7+XR%e@4*0@O0;>{u+GT_sd
z&ATHZZqRY$ZQwI7>M&qCtn+g}5Ef+Ga&>QSnw2nH)&nEeW5^tS9?iq?jO%uZdEfHj
zXWewTdaf^>PD4DSFVnX+yL&(W-Y#a0m;sQiz323!lS>~HHwu*wR%}$yJgt%ydgU**
zw9o%qjH?~0SZ*MPdU{maVCu_&CqE|{SbvA=s;ecmq88Jlmm&yYzriL3U$r>o;TJcM
zGrIEosNr_e;N|JRcQ57e|JUAk2Q{6x?dsY^#l=-bfylCm1wo3k)V!dAQWZpMh)7%d
zN(c}_5)pw_kf`(;l_oV(BLM;|YCs^N2M7=psUZXiNg(w^-}ijJ-#6c1XU=>xXXgBu
z`AsJCB)Qvj-`92Bhi3(@`tn)70f8R0wa1qZ^EW}}MxSGjyv|Jjl~8S*d+a0{u=So`
zzR!RAz*?Er9j^7Ey*d@_caGM~Lw*ugZqsmgIy7{EpjvBNxRMctGQ7aof@U2({5sQ{
z0;ma5&6~jPc`hw6a`_5JR_C$TqpuG9s~z-T%xU0&8g{8L1)2-;HGR5vaHa6d*QNdv
z@47=eE-A9?yp?93V2Kv()E%XqoJ!a*137x)OiRPa$*P@kXP)2^)r`;z;W)?AcI!X?
z`c<+8_)#`4+Z<6@Z{5rE2~N8g;dt49ro(RJU5BABt=++n)4kPYvSB|$2~Ml^c+oQ+
zU_^ALXoPGT$YG1231`eB$``|{ES583nak<DO&bI`4Q*OO3B4?hh$Cf$!WFE99~G~B
zsM}d{`a5cB+rP&NiE9jG?AyP4Dh<<G790XnRYhE|tO$M+_F%PcxfYTtSudT3>1=Od
zd9R=6-8YKl9e_nMm9|D{-HzFZukklq9E$>Tv~Thw8w2Rk&T=~2;F8C?hxC_`rXT6m
zSBGZ6NT>tnj&6&p7mJi|gxp{0ep<Zb;0Jk__>#?_kh46bw_$N?rq@VtOC{zys8aXp
zB0M6^kicNd3@$NFwD#ga8RV`ikZorR)`hRGNd_4lcT)Ujg%51^{jiPTIcdh#zhqLs
zZ%~lzD0uxNwf^6(24vaNLEpXLLC(P+2l!Va-S)kv`7cfJ|Nm^;|IzOf&%VN6)efc3
zW1cH>dfgPxwt|As1N~_yJmTLmAKZ2<s+UZdlkQ;4$>`?^OC&1S^NraCeE52Qy>l^w
z;B*-}hPxkd{C5olS)`*G%Du(R9G&4S4Xy{ggRLPSMmMRDO4|u{lvz`P>cH&#O;%Jv
zHG=PRzqTslDcNV@;SUqaphz=f(6g0Gs$QRPA3KA1=Hz+iGfkAX>#+)hbDF|;z`YCO
zDpL7Qs;aw}sm_OAe^q=PT^CR-xI1~4f9%(J|D4;vwIm(4nvnTv|CxJoY$(6ck^j}d
zlk(ZxcQ1e1tg)0<9vV&Sz2Tdu<}~I*+uP-~`VO=rTBOQ^Jzg&8{SZn`>Ro@1;1}O7
zcYo8k53JEq>Ny!Pyj4g-A!<N`OH<t4Tx6(&i=(lUC5JtRiz#&d%-?tkE>||X+V~u^
zW_Hyy^&|mPXFRqw$_N$XZN=!+O`}MNWHj=>^V5`Zok2ubZpfs1!D*m!&I#Kt^9<f^
z;fu|6BbBKt)Mbqz(W&V_(vlQeNzF&s(cOD*g-YK_ZoX({)}&$cF}zDU{_{hxfMF-+
z&{4wuly`CzzfR+_l!T9lr*cT+I7!85TW~I<nquF#W$*~`XF;?J)8Q3qEtLxrDgyzs
zxf{_RJKyxv(k?X$Y;adnsm4I}e4}ih$Hj%iDi|g-$RQLbj+|qgf(Xebdv!n4y*Ec?
z#SN2%vf_c`6Z|fsodG<_YV0dMQZ`J{^D2I;)ixoza(4?Ey>VD&8s~s)6`TEbwQEgx
z;ia1$2B+KAn7Ix=tb6oFfjB#Vg~~HEDvPWQ^Wr7uD}~><_LtTsV*an;Ucwq`*r@Nc
zMzoNVbN;R5t1a3WgKc#g=xLq!SwU~C?QDzx+xf_R<X5l*^OmRVN(y?T70sw|0mOT#
zM;a<?+<q$QGCQbL63EXa(#~6kjxONiIZ=iz*sGP(_&%ASk%%-`2ILf&sTwn{X;$c}
za<z-&axfYLSX6ofp89@tx!rSuT#&4Yf7ndz-wr){g&&zVA>3kq$__-0ElL0M@L`No
zPN2&s2%Z~H_1?fKKD)#ixpEfBQwOA}(C}A^8^r?ywh@|~zXRnAK4#GZVV_?z6I<P-
z*~%3&%f`-j0tdMw@wuoCNAGc|kZ$v_Y*-V;(P&;2moxj`n_nHnnoIaNdM<=}S#>1Z
zG5CC4&NHg)VH$5C2=<vj!ysUWYr46x9g_av(jhr*SaqO3SM>B&D2CnTI?HvY&Yk0;
z%g`svzbZAIZx|A$3QYL@?dP)YapsTI42rv_mwot}j*ZCakK>oSA9i&imdC)0?~^U+
zYeU>FEtUIkRe?!<6kxYLY?SEf`zdPWMe^ubrbxZYj@XOLSN^Km4>ZO$grw`CAPL#Q
z70uJRzvi=`Nl8Lvo7RLKQf-{Lco!q@%zZS$%;ie1yuUYD9^2%W(4lGU<751Vznm$1
zDz-*td)W=v&JjAZmmCqz<Xm0ST4PX8gm?R#{Z#8;O;Hx%>Ev`cp^W=D->2E|_N0$(
z%4fkrUVHQvFxPSRJ)PWn1?34O%9o@KERCCw(1S6#qs>k$I2;jj!0m4a^MTY)E8ItJ
zr27=sy{F_(BMv<1^=^nq&~$3W*|3pYxU%EeWb37d-C9(f(+PEjG~ZTe(*!f%ql~0V
zjLtjAZXsE>Bmk$wY!_2o@<{jnAg#cs`yy?-qX}O_57-&+cseBI0#I-}3;dIGwxxMb
z{`D1rc*`reoP3IH+%&fjE{JJk9A125nNRMrV_|I|q@9T1vm#Ib7S;TW<VkX;4qQ|~
zaLEmI(+bXzF{n^PwdoxjfmPQIvYoy(-hpwP7a+fO3C9)K4m7w+$rN@bg~`Z<<-H@_
z=Nm0N;;CJ4-t&h05l{h{;;NYtjrhK${N~O-6{(YNPbZg0(el<GWoN*5O>F3kC-wEd
zz<{`^a?cf}X3YG}Vu~qdh(rLba1h`DE1XRny|9Cj_iG3DV-M!M3tsB)C4N!1@fzW0
zAD}nSIMXH`igTB3rybSGqno9(>q(_JBkbZ!N^Ux%{y76G_uj}BV&#Tu8gnmCKTO+K
zL(n}RtLKx?l;z2Xqimbbg$TnclGcSv?Zb#f@1Z}~dcJdvXj=%`990r+c4C5fv9~eH
zk0z%Vt=qY&=rc&0%;kF1Hv!hH>>C5~l$WhiWz3(3Z4IAA<~w64_NaLnCsse4o64x=
zz(!}7;^-P0x+7ZkKrJnIhI<oKWBH++0j>G1+GZ(J+#3jM=&uK8=es@;!Wcpk=={lH
z_`K0}>j$<KjT%3H*@;N@iW2wlW;OoRuJj{F8yna4X4JtcUHkaqE+$~7NgUQiw*Mn(
zQmqn%H+XBj_`9HiX^s)@y1D0<4-uVCPy?ZDJ-X<QwRTx#UKVY*d#Rhh2Gt7MP?%Ex
zsV6Eat!WtD7hmg-FLzWaCS29%liko_dzOpwmRKzB%hapZOt7&^J%m_3JFKFynI(0$
zY9&a3>y`bYsfAx9)+}xkWtwu`IB(+kFR1Ck;6-mR-oK&JlY38&PM0Byi}WVJP@+4^
zRM>Vt{gS^z)giYu^dZMCVbm$|`{rf94)3Ks+~u^;tBjINm*9)E4|}M?1!+FQW6Q>p
z9^g_DYv5+FnAdEVTxj$c2i=(#Br^!Sx0_c8EgFwEW$sE_rURO7&i1U`<V)z=YwyZN
zSOqiZdl3a@=;wX`<6jFhT_P0Tyn%GHWPSAHQ{czc(-Zb%o{!rvWtOuhmguhF=ms(c
zJ+$EnOjmZGrQOQnpjn=p_hTl<!4W7#bSOvzrB)g6q*ppJ0=Fy5NC13zMM1f?XRPMs
za?|=v_O1HLCAYVz%xspm@M3f8deGuU{tf8^26u#q9jNRJe0CAnZ${f+&vQ0zW`va#
zV_yTAG}i0)zHr8;^^UC0X-EB4!NJizx*JezZX_a4=Z&XtGPUTkb3uk<`ts@a<vmb>
zRX^W^nNv<`oMtSY6Nth?FumgZ!yI`oP-9XcNvbIB?NSzl4d^!FmT?p8>0goT69<PW
z?*g_QrHz#%=;9{z--_f}&#<-at(2nmR`dy<mf`z=nI6l^ar4sohv|&yeeeT6Q95Ag
zF!yfXVS*#8EPUiFr#knK3Dru{@iQXtEb0<;^+JHby(Q?M_2;1qP|Jd*R)SOb>3p2!
zvFJ%Y&+2(-vWtX(NF^BGS&2w4<+HyC?wd6*?CvG#b{BUn)fYN0mI+<#<~`PH{~mV~
zQ9AFE_Dx<&XN_N?54x*DHUQ9fQ=a;loiPq1dK-$m3}72;&c#^3x?v$YOoyq9{iul!
zL^_WorLrKX{+Q=fI(2^d$Z!J@Z`0-4G(2A^jNA{As2_j!^35Br9<O(52_D{h&2he$
zho4GUS%OC4RIhy!xb(?phw$;Om&Rd742xRs=FGx9Ipnk<q1PG#<1=aNL6GLfZIVt3
zKuY|^{2)Yc<4aB~VYLES&el1L)l;DdD8Hu<Fbjfs{J(_A0#aHg3pq39*p78*-JtCo
z64bQlO3!7+ZRLkM=ka+h_c4eBaYIW`0WsQfE-;*6KTf>(bKM`M^FD77zU~D|gp-dV
zrE85-K!ceQ%`OA&=F>+Z$b+1w>7s%fzgk{!*5~FrPDjM-m>K&-AI*flRmpk$GiQ^}
zO=(p4V&L(Y&?l4fF|ZWsF6Br|-&H{T^bo|M-)W6d#HQe6LfA^A3$;O|v{viH47jkh
z!?r6Mo}y&)iH}O>VoVU~_xk>=x<yL|u|B9-aWBMxol<aY*@huN-;FMf2adyHVh+Gq
zPJGXeD;916nvl<&s#ZkR5qcb1Uvfrdk>}u!QXt9gCkiF3`-{Kx%dj^9SiydF+>vtc
zCnd8<Tc*oGOO=kgmHVKD{o{_@DyzopuzTL?*km1X#@w`2;vIXGSU<B0C_^0PY03^w
z+LXNn1oDXOj8L)#<*1h=A>M8xd@b30W5WQ@K3uCMPjKU$#S;=9PSYe%rpltjw4Nan
z`jD_DiYfiJoi^fYyS0H7Y4zTf_|JQ=C1b#|{J)KDL@PUX51}Jz96EbdwD%A!X&Lb~
z#G@!Hh{cSRIE*4Y_VPk>=Z3NyoL+*1e+;^TYJXoZ9lT06?lZZB?O#f$LJTe^q;j?B
zh9}Y@jpk}v5!mg$VkFNm?o5V6byIUB4giVnX&#1$%_0`buDaxPw(+|A;dKD(?GLx(
z&`-^_SYo8|XJpzU2#<_*$Iw5w_7$T;;>rD~-f<Jj%4rdWY6g)AH#^d;MDgg(R`;R#
zS=#Jdkcqx-_b>I8^^a59#vP}=I}g2{F1@!WPOT-G6Eu%DvO0B7^uUx6!3AgM2vc~9
zUUS+m3|+Wu3tw;9*KcXp=*yWRCM(3;%qNeT;!gpeH;|>jU<Msyx%6_}myj1S6O#z!
z{o=Umm^P+|b0pBwj+^p<kIW7N?y53x<C@?C>A}g4eGze|2oNJGFB?{(M&)KpvBo>M
zpnkoBd<Dx}7-fhdHtr?Gzf9r`HLWEFC9WXM_rc?IV*VP|nhhp9{W8)}gtV=lOPLUh
zAlhFE+SprMelU;uHH+3!F<X*r?gQA>;`5?sD-Fkd$bn_;J^PT{{pc;GS0wZbE+GKm
ztw-XcnT}S^7DWd%>1m=CwV_7u5Z6!K5Tnb_#LbsjmYm~vlONNK^jUn{Rbvtdv@h2D
zM@uZ{?A0|?JF8X^MSUbwQ2Vs?^-l0r`<{%xJuhUnm)Visx~+9&To(HlFiDb_OjcU2
zhr09%dJ$R{z2w>{5%k8YaA98)Hk$ecqb`&t4M8u0-yV_WRRHWwdOz6j65h2$#pp%?
z$9wQw>gwZM74@Vz7x6|n_qsN=O&C<H@Ky6ZPOB!%lNGTfkSr;$00jE&d0;yR9J#-K
z;B;VNu%rTKN>iQ@JJnc(w)PIAK|Q;X{ug+`Z6D+-678!XWP@&evyZMloy#E^WC-){
zVnO!-L^2<f5iC-wzw^{q-n<q;YKFdBzraR`AFs@VMMa?X*#3y$)K6@p6U4dKR~5)@
zGYh~yfm7Tkw`01kw6Q}oGIyU5PeoD@vg1{XX|kfZLvq44?KzEMHuzK2X2#J_gNNyr
zOiTV$VbPdu3{hv6{bDA3*Nrjkh@lboxegVxmHQSPu!oUz2-5#aVf>7~p`4NX$}M{S
z0Q(Iy*Lt-Q7ePyirmZr8DhtQmja*c?3wI#1IkVS&8)VC6-jPbXwKnR;rYt45EW-79
zQNVqO(g3P@Oy!T9nl)q9UOb-zX%K#$<R(90#;T8vOd2Y#f|Q;ybLA#@JkGUDidhx5
zJC#z{;S#>yln6DT&O56!St3Z#MPiSd#t>JBj&3n4WePo8tK2p6flI3)0WY|@d-WBS
zIC&uku{7<!n-hxQ*lN?kA&QmVG{L%76g6(e+TRKYR6?Wh)GUd~jfG^_qhC~_>(E8v
zoa0a%L#5#+TjxqT$TZK@hx(9!azz!+tQ@MY_pg{2cEE#+ra0GYrE3w6e@{zxN&IW3
zq5%MmOQyQ18p!Qh$e3Z!s@JAzNv1}094(DMEIUfw_@GAvXY;dKa}Nr(Gx;9VU=7!4
zbnQ+!f{ovqD&7;bbv_a*mJZ(%X`N%Bw+AQy%4+A2goC%{=EX1M-&vcVx96qV+zHLf
z2WZOe60B-nuy}|}@}`o*9TlsJHx%ekT7=dKF5)oYZp45*x(#sBXZ#i5NP-^NeuP%_
za?AfLJ!j?jqHjh>4)Z|Y%0?6x(QMoKL$!j@vwm-oro|KV4cR<ABWC^yN<7s^Y0>Ia
zRSl<$7MPYBW0JeM`(ko+7B}-;0RGhqGnFk3`(~J*BYlc6bpJe`5$dH7gu$B+FU;H4
zE35R~DqUrW$^v>1-_Z4q#1<QKDQEe*@3&+)$9G~Jw_~>?y_QZNc=U5k>CPAWjwpuc
zTYM~kn&_QMIKI%l_AyNM5<wFvFeQ9kuK|5BmsA-qn6wOe@!zR%Y6UFHT{%`yb(s>p
z3K8(v%XE5%xqFh7(tX5EM6aagyG$9fXrItI8!sMc(YQgmHFn!QkoSQi+YzAs)c5Ci
zBtPSbjk*=e-Au~E;JBQHr~&-pEW$Nc4)f_4&~cyw-pBVF7p79VCYBtiExb8(c^?1b
z^Sk({-Z(^%7Yr1Y3ESOFJ2M5{A6dD3Z!|`loqsvgvv@=^gXzaO?_GgM1=fqLwI=m^
znXzLwmOU?Le!fR5YBt+Jn!U*M@B!{th~1zw_Zqei$jcg4`nu0G=Uw3b_R*&1To3Z1
zDYDqRC5V;l=|ST|-+ZB)QvRIUAw}#ADqyAnZmSYq_d$b;sFy$RlEMk-#fyE^$zm}(
zZB6KV5tDda=0CL!ToG&Xvvlm`o9P-AF<?BXX9lk^X@3Vy&DXs0(@xR5fu4+;6!7Sy
ztuOMYsJzp^@0cbdOjkGwKp)UUQP~;RE?Ql8LkUFm;u8>L1N_~nM*N4xethQ1FwBPv
z&rjeT_-HTojX(rU`nbH-5U&JGFwchVS_#o+^r0UsQ@4(t@kR_PlngN_^v`+fUo}6y
zZ5?EmOe3<L2$Q-jA-*V!KFXVyofEWFW8st5X)ADd1#)dw1m-2h7e8Y57$zNr%30fC
zNC&LTb3-EHXR@+H-Ndz;uXjVwdnQo2YSWrt#NZbp#@)@a=^+t_NSr<g@A?aOZLc9w
zhelWHX_UD$tu@%&U5o0-)9|32kECjg9ahbsriF_C_@~K@A7Yf%Rb^f99MUVMB@P}m
zWjxoCPTcB9tRU*Je3Ma4R;wJgYDIO$GUOEWpLVCjZE@_RWZ#3*?bRTPCv)`UbH;#6
z22aIL|Hj!&36HEJl<$gnF@0r?obJy?SOYif7dhtBn%0ntjk?D(^6T|?#h)MTv$5g=
zxATcAGneCdZZ~RI9EZ8dVZ`6>0=*}3+iQ$eCucsBpc#F1I#o6{GN`bbwpo-{Qok&y
zm+*7qnQkY0G`j`Dwhw+W#$2M7H6wxv-f*QJ8>*o;*?6E6LL}B!{BY`f?92H`W4M;J
zA#!|#?7FU?3VVJ)h2XAz&Vq-Dng=)b!q+u&6!jPfo|6;2>x&#p<$+=@GFdUDaDeBw
z7aHt69uDt0I;fDPn$)m~zVVR-q#Bz|{ae)20F2L>jxn^(xyrga6W*TYrCMuClVyzu
zubIUI{ImVs^Tx%2tD}3z2)~zT^=3=e9?TEaUDUmx`V-IWGWhlm-pWDk(-v)n69UPS
za}$l&P2_v8UpADL-vK^Xc)mWvd)V&8HMacON7x};y}|8JS|!G3g)b0)YZrB25<4l%
z6;*`bXHxOPD5K`VI72fzq}%tXrc*6wYgJoL86Q(3fyIK51-j^s;mM0H%V5mV-fl^$
z2WjUehKV!JeC9;><MtPa_>*}FhD0GXZzb}OTkpiB#Bnlr6MtXuW@TTaZ)jSHl!gK)
ziS$cki7P=dSHzl`jXPIQsG9ki1HHV-#ea)$Q^J!g(Kie<0JVyb6Tdbb77peZPv)_?
z8s~??&&)ln%O*uA`goB$s76nO_;7`sHsQ%H+NzBpKT+9;SkIq4$Uh<1qvz2QJ{jA(
zr$+qX@0~yS{JB`2-`775EJdv5u#~$q&x`>r?YZDpB&SyWSup~zhLJVP_LT5F<maDZ
zcYO%^Tr{QaLYc@AntBy8pT077tbp1sx^(3lWKG$&@Xt<gO|VJyszNyEkpV^6Oh37D
zN%tMslFYZ>Z$y5;jD|@z5b@#Tcaxn*nSMTMSDVs&h^GS-Qd-d!L6(cf>R&U@ICDXt
z0(68C>pe`5k#+lz;Qa=tpNQqJL)<p%NX;8uVJcTvjI0hRS>9tlO0EmU1x-QJ-Xpc?
z^8mieK_i<)ZRW-KJNTg5MP?k{QbXa(CQw;G{Efv&*B^8S^T!CPzv}#35Tjq=`%^6%
zX<>3VRqBak%Vj%E8G82pXT(6C530YH6E`d>Z?A^vS_Whwk(e-fY>INYl&o0xA1q~+
zS&in2T$3l1tSwN>gepJ*oN<Eii1$Ul?GXAS2~;xD??Q8;oP`C{y7=-lp0gd_RK=LE
zf8SmJlC|rRy;q;?`NX?-4XqNsRra3bazVooRlfu##@NqcFR`b23K>HgPW3?wO|spi
zWXa3{eY$m{Sn%u?t6%o$NUq)BJAz;dkWyfVa?GDZSQu*&N#opraG3bq#X)rOZvo>?
zC_H&%3+@n<;sO2z^wu>GutX@&AX#1+i)>`LrpXbl`>4;>l}W10ypoC(a6ACk4&2N7
z(@JIotqoPTs!ENwUvj%hz3=WqAL$~6RW{p==uY0>f8_NUkK|kNfcuMF`&DCWHQIqE
zrS2IyHd&B$|K;Yb?y>%*`fRqqI!pXCdeRm65_&h#<qF7w=p>$H9IrQ|G;cIKJ)v#3
zawAs?U`d|?NC+6*W^i1Tb?ys)A@b$?QOkTsE@~3+`jH{ge#&yF@s&n!RV}w=Ydf|9
zQZ>%?;}b@@dBGM^`U+l27BC~apLQ5Ol@nbf4h7}m@@IZt|EIsq<!<t{2VT;M*m0Hx
zZYuwq@9Z<)U3#wx8EDMf@crOWuUK7m+1cLEeI*=xS08UTR{?jm33H|@81Ng^Zt>~J
z63eUNsD$xDAFQ}D6Q=HLe0~8qLeddZMj(kp^t;y8NyGD1^vvC@s=TT0n!t=jvCx&=
z>B=K#49@@*Xlf9V8Pk{B;LO?pPn_t{d!-S%2ni<P3ziJ)@>%_*IPbxR0#4j5F5sq9
z*vmigS0S8NV?=)iu}`(m8|Go&rJP9Yc&=OcC(%AO;WHIw(Fcq6nninC7mTmG-`Yyb
zj)+hHAY%P}9hCm+U;f$aRw%5R07oX27-at=i=Z1XaMQb0$<0F?*q~dW_T(6jNNAIj
zwn_x);?6Y#ta8t{9>tZGxzq~m(?F)~_8xj05}-|k_3|@a#P>>0p1-hJpKY4wIo5h)
zR4~6HaobF$ALsY$kI9C7?elu4U(^Rl+GN#JC)x9OecejRTNmKGP-!~y(RhT2Q8%Bm
zK6#1`&#X0s3QksXPqZ{!Lx$(0|8Z*RSR}GYPd#e<eRJ5emm_{R3Wh%|`Df2MgOKC&
zS$P~HXe27ZNHi8qwIdwyp@!)99oVmmU-Igbf)13?d~<`~J(KrT-Z!QNQ{|(^xW~G6
z*m88~dHduWlE%a`CUGQUkUBB1xcli3_y$baC+b`xULK>c6}09;e7dC)B-~$@<u?_u
zFHObLzDDSNTK0vU0ntLOx}BH6Qfu;QyHpo+fCV=}=yCV*Kj?MN+S}2m<}_!#KOLbL
zI-r!p#Yf8$*#+-K0m}1IYyG&{I3^Vljuw?!!Ij2rtA4Ia_8-eRrq8!v(7O`7Q;s-|
zJ>)nC)DN3CxF-+J<2n89Y3s3FHh}jd)vh(<F~?HioYvBWic}b;H3|c4IA1OOZ3wZ8
zq&2h-rMOl4p(<SNnV%m<qgrgbPJlKa@qYFbAFlIuN2&Dc!@M@1%L-yI0*LRgVX(ut
zokAPnygy))CG;&+nv^b1Wm`w&n#P~881YQ~Z0^Pr{?cq~1biZW#~D#pKAX&2`aYN#
zc!hlLZG?)QLn(u~fKrNob%Z$g=KP4X8*6~t@Q*yW>SYZZ`R@L>CAYoD15OPEm|~i$
z{EE|<DarOZ-cL}%j@+5;R0Mm|0!}N3G*~ciPx{;R&bywUeRSz@0#x&z)3MukKGk|G
zX@+pE73D~(bS!uHG9PpD3-nlI)o2aDar0nqMxH-xP6+EcQe%&`!m~L{+Tr=c^r!<5
z7lK0bC_KdK9~k{RRTMjlvG$#Z^&u6M0qGG1>qGbGVCGxuD~<`n6MTtfl?qWW<_jD)
z!i_dA&~uxEl3LWC`cGAPo)F|Oz%{xXKpZ`fr*KWPkH}VwDc*JQrOIzr|87ub?^f>3
zss>6a)FQcFljkb^2I_Bbe#5AkgPE5;bHHF4>f$rTf7dQle93u^WI|f)cQP=`%#+(O
zySC4-ne+3XC&+k8FHl}UZHkVrik@>I=C*VsBR=|q6aR*7!3z1$U=^>;spCtK4^tYC
zxheOcR-`gk*Knxv5c1Oo;$mJdfi-TLOCKB29SR_&uYDUqWW^h+cX8v^)}M(DLgFc9
zj-AY%E`5y#nV#v3@a(~-87Q@jN22vnk$0K%*5)9Z{RXTAU63`Nz7pv*7GXlonrkvC
z=3X=>2E&_AvNi)tM=*Lzf*Y`wrk(j<zvRUH%X--I5$<Vj1TGekGu_u}*y8?J_>yLu
zkAO#-{-QF7G_XUO`&*hY{Bxozfzx^v#dQ?Yhkx){FjZ!Q{~#*=(EVk&d<^lo4n8`4
z3vvq=Y>)AUv|M<h`TGy3VInVqW354#{qmeq00O4NPdk2cC4u*4*NC!Vx5ryw?D<m}
zWCXuG<sWT8)c+vOa2+1LT$&$^=^2|y-%Px1A70*-H0l3qi;gVgPlu^<mJlVGce6$N
z6t*Wx^rL?0HEpFzHuv5Y_8nMG!P$$CijLHzl-F$g({nLV$gPqJOe=J4Uoalk-23QE
z`*N_YaI$|}|3CivsqNb)#Q%_9!e~i^q?cRGK<_N|We`_gQM<rK@T3wfY+KvG&^r;=
z?A3;&)Q*+VpO*u=ALD($Dn`)6od=bk5FLbEnT*P6rOjybFbN2C^#_3M+Xm*O!z$V+
z)UXYvIS0+-k#}#KI5S1)cgU*VamS)#%qn)zDP;+83SHDNDoWCDKU-M^%-!}{vfb{%
zf5Vade+drqO+7&@Ad3V4E6(2RU)-+L1^UWL`hNq&|M7;Va7K165H%J3K>EOeQSLv%
zil;Ce&<v3X2~jWuqaSO1tLn@odwh}(@M2xXyB-Bwl<~h7{s+xa@?zbUhfgGkWZ2uT
zeFH7{zyHrny<aZfd-6}=ux~W5Z_Vu!n*Y;mwr`-g|FL7Fic#?Jn>)50cz-boxO6g(
zt>C)<$#-0m)RAj;r;mJ>`EtrU^Fk}@yF^>t-&dcfcKwrGdF=F)LaWo?S$J<R-ulg3
z>$^zYgSf}Po=tiD{r^$3`sGHJ)prcuG;MN+xArZ`fc(IxZ=ZkTn$6WJ)4LD<7n0XE
AYXATM


From 94b87f8d9a1a38b6e5440fb48e1b27a5c627af21 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Tue, 12 Jan 2021 15:59:16 -0500
Subject: [PATCH 07/38] ui: Remove unnecessary call to getDefaultPaneParams()

---
 .../cc/ui/src/components/ui-components/AdvancedMultiSelect.js | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index c418a20c6..e303a6bc1 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -113,12 +113,10 @@ class AdvancedMultiSelect extends React.Component {
       disabled,
       readonly,
       multiple,
-      autofocus,
-      registry
+      autofocus
     } = this.props;
 
     const {enumOptions} = options;
-    getDefaultPaneParams(schema.items.$ref, registry);
 
     return (
       <div className={'advanced-multi-select'}>

From 73dd8ddcc97da1156fa09793051ffec6651d8d40 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Wed, 13 Jan 2021 07:35:03 -0500
Subject: [PATCH 08/38] ui: Minor readability and style changes for
 AdvancedMultiSelect

---
 .../ui-components/AdvancedMultiSelect.js      | 33 ++++++++-----------
 1 file changed, 14 insertions(+), 19 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index e303a6bc1..5dca8e86e 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -41,6 +41,8 @@ class AdvancedMultiSelect extends React.Component {
   constructor(props) {
     super(props)
 
+    this.enumOptions = props.options.enumOptions;
+
     this.state = {
       masterCheckboxState: this.getMasterCheckboxState(props.value),
       infoPaneParams: getDefaultPaneParams(props.schema.items.$ref, props.registry)
@@ -52,10 +54,10 @@ class AdvancedMultiSelect extends React.Component {
   }
 
   onMasterCheckboxClick() {
-    let newValues = this.props.options.enumOptions.map(({value}) => value);
-
-    if (this.state.masterCheckboxState == MasterCheckboxState.ALL) {
-      newValues = [];
+    if (this.state.masterCheckboxState === MasterCheckboxState.ALL) {
+      var newValues = [];
+    } else {
+      newValues = this.enumOptions.map(({value}) => value);
     }
 
     this.props.onChange(newValues);
@@ -87,11 +89,11 @@ class AdvancedMultiSelect extends React.Component {
   }
 
   getMasterCheckboxState(selectValues) {
-    if (selectValues.length == 0) {
+    if (selectValues.length === 0) {
       return MasterCheckboxState.NONE;
     }
 
-    if (selectValues.length != this.props.options.enumOptions.length) {
+    if (selectValues.length != this.enumOptions.length) {
       return MasterCheckboxState.MIXED;
     }
 
@@ -107,8 +109,6 @@ class AdvancedMultiSelect extends React.Component {
     const {
       schema,
       id,
-      options,
-      value,
       required,
       disabled,
       readonly,
@@ -116,19 +116,17 @@ class AdvancedMultiSelect extends React.Component {
       autofocus
     } = this.props;
 
-    const {enumOptions} = options;
-
     return (
       <div className={'advanced-multi-select'}>
-        <MasterCheckbox title={schema.title} value={value}
+        <MasterCheckbox title={schema.title}
           disabled={disabled} onClick={this.onMasterCheckboxClick}
           checkboxState={this.state.masterCheckboxState}/>
         <Form.Group
-          style={{height: `${getComponentHeight(enumOptions.length)}px`}}
+          style={{height: `${getComponentHeight(this.enumOptions.length)}px`}}
           id={id} multiple={multiple} className='choice-block form-control'
           required={required} disabled={disabled || readonly} autoFocus={autofocus}>
           {
-            enumOptions.map(({value, label}, i) => {
+            this.enumOptions.map(({value, label}, i) => {
               return (
                 <ChildCheckbox key={i} onPaneClick={this.setPaneInfo}
                 onClick={this.onChildCheckboxClick} value={value}
@@ -148,7 +146,6 @@ class AdvancedMultiSelect extends React.Component {
 function MasterCheckbox(props) {
     const {
         title,
-        value,
         disabled,
         onClick,
         checkboxState
@@ -156,17 +153,15 @@ function MasterCheckbox(props) {
 
     let newCheckboxIcon = faCheckSquare;
 
-    if (checkboxState == MasterCheckboxState.NONE) {
+    if (checkboxState === MasterCheckboxState.NONE) {
       newCheckboxIcon = faSquare;
-    } else if (checkboxState == MasterCheckboxState.MIXED) {
+    } else if (checkboxState === MasterCheckboxState.MIXED) {
       newCheckboxIcon = faMinusSquare;
     }
 
     return (
         <Card.Header>
-            <Button key={`${title}-button`} value={value}
-                variant={'link'} disabled={disabled}
-                onClick={onClick}>
+            <Button key={`${title}-button`} variant={'link'} disabled={disabled} onClick={onClick}>
                 <FontAwesomeIcon icon={newCheckboxIcon}/>
             </Button>
             <span className={'header-title'}>{title}</span>

From 8d024b900248d94cee76ec79f0dd66befeb7efbf Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 14 Jan 2021 08:37:52 -0500
Subject: [PATCH 09/38] ui: separate MasterCheckbox and ChildCheckbox into
 their own files

---
 .../ui-components/AdvancedMultiSelect.js      | 65 ++-----------------
 .../components/ui-components/ChildCheckbox.js | 30 +++++++++
 .../ui-components/MasterCheckbox.js           | 41 ++++++++++++
 3 files changed, 76 insertions(+), 60 deletions(-)
 create mode 100644 monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
 create mode 100644 monkey/monkey_island/cc/ui/src/components/ui-components/MasterCheckbox.js

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 5dca8e86e..9d82a1b8d 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -1,20 +1,13 @@
-import React from "react";
-import {Card, Button, Form} from 'react-bootstrap';
-import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
-import {faCheckSquare} from '@fortawesome/free-solid-svg-icons';
-import {faMinusSquare} from '@fortawesome/free-solid-svg-icons';
-import {faSquare} from '@fortawesome/free-regular-svg-icons';
+import React from 'react';
+import {Form} from 'react-bootstrap';
+
 import {cloneDeep} from 'lodash';
 
 import {getComponentHeight} from './utils/HeightCalculator';
 import {resolveObjectPath} from './utils/ObjectPathResolver';
 import InfoPane from './InfoPane';
-
-const MasterCheckboxState = {
-  NONE: 0,
-  MIXED: 1,
-  ALL: 2
-}
+import {MasterCheckbox, MasterCheckboxState} from './MasterCheckbox';
+import ChildCheckbox from './ChildCheckbox';
 
 function getFullDefinitionByKey(refString, registry, itemKey) {
   let fullArray = getFullDefinitionsFromRegistry(refString, registry);
@@ -143,52 +136,4 @@ class AdvancedMultiSelect extends React.Component {
   }
 }
 
-function MasterCheckbox(props) {
-    const {
-        title,
-        disabled,
-        onClick,
-        checkboxState
-    } = props;
-
-    let newCheckboxIcon = faCheckSquare;
-
-    if (checkboxState === MasterCheckboxState.NONE) {
-      newCheckboxIcon = faSquare;
-    } else if (checkboxState === MasterCheckboxState.MIXED) {
-      newCheckboxIcon = faMinusSquare;
-    }
-
-    return (
-        <Card.Header>
-            <Button key={`${title}-button`} variant={'link'} disabled={disabled} onClick={onClick}>
-                <FontAwesomeIcon icon={newCheckboxIcon}/>
-            </Button>
-            <span className={'header-title'}>{title}</span>
-        </Card.Header>
-    );
-}
-
-function ChildCheckbox(props) {
-    const {
-        onPaneClick,
-        onClick,
-        value,
-        disabled,
-        label,
-        checkboxState
-    } = props;
-
-    return (
-        <Form.Group onClick={() => onPaneClick(value)}>
-            <Button value={value} variant={'link'} disabled={disabled} onClick={() => onClick(value)}>
-                <FontAwesomeIcon icon={checkboxState ? faCheckSquare : faSquare}/>
-            </Button>
-            <span className={'option-text'}>
-                {label}
-            </span>
-        </Form.Group>
-    );
-}
-
 export default AdvancedMultiSelect;
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
new file mode 100644
index 000000000..353da4b22
--- /dev/null
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
@@ -0,0 +1,30 @@
+import React from 'react';
+import {Button, Form} from 'react-bootstrap';
+
+import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
+import {faCheckSquare} from '@fortawesome/free-solid-svg-icons';
+import {faSquare} from '@fortawesome/free-regular-svg-icons';
+
+function ChildCheckbox(props) {
+    const {
+        onPaneClick,
+        onClick,
+        value,
+        disabled,
+        label,
+        checkboxState
+    } = props;
+
+    return (
+        <Form.Group onClick={() => onPaneClick(value)}>
+            <Button value={value} variant={'link'} disabled={disabled} onClick={() => onClick(value)}>
+                <FontAwesomeIcon icon={checkboxState ? faCheckSquare : faSquare}/>
+            </Button>
+            <span className={'option-text'}>
+                {label}
+            </span>
+        </Form.Group>
+    );
+}
+
+export default ChildCheckbox;
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/MasterCheckbox.js b/monkey/monkey_island/cc/ui/src/components/ui-components/MasterCheckbox.js
new file mode 100644
index 000000000..0485e64eb
--- /dev/null
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/MasterCheckbox.js
@@ -0,0 +1,41 @@
+import React from 'react';
+import {Card, Button} from 'react-bootstrap';
+
+import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
+import {faCheckSquare} from '@fortawesome/free-solid-svg-icons';
+import {faMinusSquare} from '@fortawesome/free-solid-svg-icons';
+import {faSquare} from '@fortawesome/free-regular-svg-icons';
+
+const MasterCheckboxState = {
+  NONE: 0,
+  MIXED: 1,
+  ALL: 2
+}
+
+function MasterCheckbox(props) {
+  const {
+    title,
+    disabled,
+    onClick,
+    checkboxState
+  } = props;
+
+  let newCheckboxIcon = faCheckSquare;
+
+  if (checkboxState === MasterCheckboxState.NONE) {
+    newCheckboxIcon = faSquare;
+  } else if (checkboxState === MasterCheckboxState.MIXED) {
+    newCheckboxIcon = faMinusSquare;
+  }
+
+  return (
+    <Card.Header>
+      <Button key={`${title}-button`} variant={'link'} disabled={disabled} onClick={onClick}>
+        <FontAwesomeIcon icon={newCheckboxIcon}/>
+      </Button>
+      <span className={'header-title'}>{title}</span>
+    </Card.Header>
+  );
+}
+
+export {MasterCheckboxState, MasterCheckbox};

From 11ea5e1a7eb536628bbd6521ddc8cfc336df7d4d Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 14 Jan 2021 08:44:19 -0500
Subject: [PATCH 10/38] ui: separate json schema-related functions into
 JsonSchemaHelpers.js

---
 .../ui-components/AdvancedMultiSelect.js      | 23 +-----------------
 .../ui-components/JsonSchemaHelpers.js        | 24 +++++++++++++++++++
 2 files changed, 25 insertions(+), 22 deletions(-)
 create mode 100644 monkey/monkey_island/cc/ui/src/components/ui-components/JsonSchemaHelpers.js

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 9d82a1b8d..efd516813 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -4,31 +4,10 @@ import {Form} from 'react-bootstrap';
 import {cloneDeep} from 'lodash';
 
 import {getComponentHeight} from './utils/HeightCalculator';
-import {resolveObjectPath} from './utils/ObjectPathResolver';
 import InfoPane from './InfoPane';
 import {MasterCheckbox, MasterCheckboxState} from './MasterCheckbox';
 import ChildCheckbox from './ChildCheckbox';
-
-function getFullDefinitionByKey(refString, registry, itemKey) {
-  let fullArray = getFullDefinitionsFromRegistry(refString, registry);
-  return fullArray.filter(e => (e.enum[0] === itemKey))[0];
-}
-
-// Definitions passed to components only contains value and label,
-// custom fields like "info" or "links" must be pulled from registry object using this function
-function getFullDefinitionsFromRegistry(refString, registry) {
-  return getObjectFromRegistryByRef(refString, registry).anyOf;
-}
-
-function getObjectFromRegistryByRef(refString, registry) {
-  let refArray = refString.replace('#', '').split('/');
-  return resolveObjectPath(refArray, registry);
-}
-
-function getDefaultPaneParams(refString, registry) {
-  let configSection = getObjectFromRegistryByRef(refString, registry);
-  return ({title: configSection.title, content: configSection.description});
-}
+import {getFullDefinitionByKey, getDefaultPaneParams} from './JsonSchemaHelpers.js';
 
 class AdvancedMultiSelect extends React.Component {
   constructor(props) {
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/JsonSchemaHelpers.js b/monkey/monkey_island/cc/ui/src/components/ui-components/JsonSchemaHelpers.js
new file mode 100644
index 000000000..06eed4aed
--- /dev/null
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/JsonSchemaHelpers.js
@@ -0,0 +1,24 @@
+import {resolveObjectPath} from './utils/ObjectPathResolver';
+
+function getFullDefinitionByKey(refString, registry, itemKey) {
+  let fullArray = getFullDefinitionsFromRegistry(refString, registry);
+  return fullArray.filter(e => (e.enum[0] === itemKey))[0];
+}
+
+// Definitions passed to components only contains value and label,
+// custom fields like "info" or "links" must be pulled from registry object using this function
+function getFullDefinitionsFromRegistry(refString, registry) {
+  return getObjectFromRegistryByRef(refString, registry).anyOf;
+}
+
+function getObjectFromRegistryByRef(refString, registry) {
+  let refArray = refString.replace('#', '').split('/');
+  return resolveObjectPath(refArray, registry);
+}
+
+function getDefaultPaneParams(refString, registry) {
+  let configSection = getObjectFromRegistryByRef(refString, registry);
+  return ({title: configSection.title, content: configSection.description});
+}
+
+export {getFullDefinitionByKey, getDefaultPaneParams};

From bf6db078a6d2e5fddbd49805dbd3f8ade9f6a1ff Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Fri, 15 Jan 2021 08:16:08 -0500
Subject: [PATCH 11/38] ui: add missing semicolons

---
 .../cc/ui/src/components/ui-components/AdvancedMultiSelect.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index efd516813..56658cf71 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -11,7 +11,7 @@ import {getFullDefinitionByKey, getDefaultPaneParams} from './JsonSchemaHelpers.
 
 class AdvancedMultiSelect extends React.Component {
   constructor(props) {
-    super(props)
+    super(props);
 
     this.enumOptions = props.options.enumOptions;
 
@@ -37,7 +37,7 @@ class AdvancedMultiSelect extends React.Component {
   }
 
   onChildCheckboxClick(value) {
-    let selectValues = this.getSelectValuesAfterClick(value)
+    let selectValues = this.getSelectValuesAfterClick(value);
     this.props.onChange(selectValues);
 
     this.setMasterCheckboxState(selectValues);

From e04e11e4ac87967f0a0f2cef0839680001dc87d4 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 21 Jan 2021 15:07:19 -0500
Subject: [PATCH 12/38] ui: add "reset to safe defaults" in AdvancedMultiSelect

If the user selects an unsafe exploit or post breach action, a yellow
warning button appears that allows the user to reset to safe defaults.
---
 .../ui-components/AdvancedMultiSelect.js      | 60 +++++++++++++++++--
 .../ui-components/MasterCheckbox.js           |  6 +-
 .../components/AdvancedMultiSelect.scss       |  6 +-
 3 files changed, 62 insertions(+), 10 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 56658cf71..508bafa83 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -1,5 +1,5 @@
 import React from 'react';
-import {Form} from 'react-bootstrap';
+import {Button, Card, Form} from 'react-bootstrap';
 
 import {cloneDeep} from 'lodash';
 
@@ -7,21 +7,45 @@ import {getComponentHeight} from './utils/HeightCalculator';
 import InfoPane from './InfoPane';
 import {MasterCheckbox, MasterCheckboxState} from './MasterCheckbox';
 import ChildCheckbox from './ChildCheckbox';
-import {getFullDefinitionByKey, getDefaultPaneParams} from './JsonSchemaHelpers.js';
+import {getFullDefinitionByKey, getDefaultPaneParams} from './JsonSchemaHelpers';
+
+function AdvancedMultiSelectHeader(props) {
+  const {
+    title,
+    disabled,
+    onCheckboxClick,
+    checkboxState,
+    hideReset,
+    onResetClick
+  } = props;
+
+  return (
+    <Card.Header className="d-flex justify-content-between">
+      <MasterCheckbox title={title} disabled={disabled} onClick={onCheckboxClick} checkboxState={checkboxState}/>
+      <Button className={'reset-safe-defaults'} type={'reset'} variant={'warning'}
+        hidden={hideReset} onClick={onResetClick}>
+        Reset to safe defaults
+      </Button>
+    </Card.Header>
+  );
+}
 
 class AdvancedMultiSelect extends React.Component {
   constructor(props) {
     super(props);
 
     this.enumOptions = props.options.enumOptions;
+    this.defaultValues = props.schema.default;
 
     this.state = {
       masterCheckboxState: this.getMasterCheckboxState(props.value),
+      hideReset: this.getHideResetState(props.value),
       infoPaneParams: getDefaultPaneParams(props.schema.items.$ref, props.registry)
     };
 
     this.onMasterCheckboxClick = this.onMasterCheckboxClick.bind(this);
     this.onChildCheckboxClick = this.onChildCheckboxClick.bind(this);
+    this.onResetClick = this.onResetClick.bind(this);
     this.setPaneInfo = this.setPaneInfo.bind(this, props.schema.items.$ref, props.registry);
   }
 
@@ -34,6 +58,7 @@ class AdvancedMultiSelect extends React.Component {
 
     this.props.onChange(newValues);
     this.setMasterCheckboxState(newValues);
+    this.setHideResetState(newValues);
   }
 
   onChildCheckboxClick(value) {
@@ -41,6 +66,7 @@ class AdvancedMultiSelect extends React.Component {
     this.props.onChange(selectValues);
 
     this.setMasterCheckboxState(selectValues);
+    this.setHideResetState(selectValues);
   }
 
   getSelectValuesAfterClick(clickedValue) {
@@ -72,11 +98,34 @@ class AdvancedMultiSelect extends React.Component {
     return MasterCheckboxState.ALL;
   }
 
+  onResetClick() {
+    this.props.onChange(this.defaultValues);
+    this.setHideResetState(this.defaultValues);
+    this.setMasterCheckboxState(this.defaultValues);
+    this.setPaneInfoToDefault();
+  }
+
+  setHideResetState(selectValues) {
+    this.setState(() => ({
+      hideReset: this.getHideResetState(selectValues)
+    }));
+  }
+
+  getHideResetState(selectValues) {
+    return selectValues.every((value) => this.defaultValues.includes(value));
+  }
+
   setPaneInfo(refString, registry, itemKey) {
     let definitionObj = getFullDefinitionByKey(refString, registry, itemKey);
     this.setState({infoPaneParams: {title: definitionObj.title, content: definitionObj.info, link: definitionObj.link}});
   }
 
+  setPaneInfoToDefault() {
+    this.setState(() => ({
+      infoPaneParams: getDefaultPaneParams(this.props.schema.items.$ref, this.props.registry)
+    }));
+  }
+
   render() {
     const {
       schema,
@@ -90,9 +139,10 @@ class AdvancedMultiSelect extends React.Component {
 
     return (
       <div className={'advanced-multi-select'}>
-        <MasterCheckbox title={schema.title}
-          disabled={disabled} onClick={this.onMasterCheckboxClick}
-          checkboxState={this.state.masterCheckboxState}/>
+        <AdvancedMultiSelectHeader title={schema.title}
+          disabled={disabled} onCheckboxClick={this.onMasterCheckboxClick}
+          checkboxState={this.state.masterCheckboxState}
+          hideReset={this.state.hideReset} onResetClick={this.onResetClick}/>
         <Form.Group
           style={{height: `${getComponentHeight(this.enumOptions.length)}px`}}
           id={id} multiple={multiple} className='choice-block form-control'
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/MasterCheckbox.js b/monkey/monkey_island/cc/ui/src/components/ui-components/MasterCheckbox.js
index 0485e64eb..b5a646aca 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/MasterCheckbox.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/MasterCheckbox.js
@@ -1,5 +1,5 @@
 import React from 'react';
-import {Card, Button} from 'react-bootstrap';
+import {Button} from 'react-bootstrap';
 
 import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
 import {faCheckSquare} from '@fortawesome/free-solid-svg-icons';
@@ -29,12 +29,12 @@ function MasterCheckbox(props) {
   }
 
   return (
-    <Card.Header>
+    <div className={'master-checkbox'}>
       <Button key={`${title}-button`} variant={'link'} disabled={disabled} onClick={onClick}>
         <FontAwesomeIcon icon={newCheckboxIcon}/>
       </Button>
       <span className={'header-title'}>{title}</span>
-    </Card.Header>
+    </div>
   );
 }
 
diff --git a/monkey/monkey_island/cc/ui/src/styles/components/AdvancedMultiSelect.scss b/monkey/monkey_island/cc/ui/src/styles/components/AdvancedMultiSelect.scss
index 3dc1fe9a5..de3d5d542 100644
--- a/monkey/monkey_island/cc/ui/src/styles/components/AdvancedMultiSelect.scss
+++ b/monkey/monkey_island/cc/ui/src/styles/components/AdvancedMultiSelect.scss
@@ -18,12 +18,14 @@
   padding-bottom: 5px;
 }
 
-.advanced-multi-select .card-header button {
-  padding-top: 0;
+.advanced-multi-select .card-header .master-checkbox span {
+    padding-bottom: 0.188rem;
 }
 
 .advanced-multi-select .card-header .header-title {
   font-size: 1.2em;
+  display: inline-block;
+  vertical-align: middle;
 }
 
 .advanced-multi-select .choice-block .form-group {

From 917d6f574b538899e3ada28bbf8603acff6aa127 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Tue, 26 Jan 2021 15:15:11 -0500
Subject: [PATCH 13/38] ui: use class properties syntax in AdvancedMultiSelect

---
 .../ui-components/AdvancedMultiSelect.js      | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 508bafa83..5c7c11345 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -36,20 +36,17 @@ class AdvancedMultiSelect extends React.Component {
 
     this.enumOptions = props.options.enumOptions;
     this.defaultValues = props.schema.default;
+    this.infoPaneRefString = props.schema.items.$ref;
+    this.registry = props.registry;
 
     this.state = {
       masterCheckboxState: this.getMasterCheckboxState(props.value),
       hideReset: this.getHideResetState(props.value),
-      infoPaneParams: getDefaultPaneParams(props.schema.items.$ref, props.registry)
+      infoPaneParams: getDefaultPaneParams(this.infoPaneRefString, this.registry)
     };
-
-    this.onMasterCheckboxClick = this.onMasterCheckboxClick.bind(this);
-    this.onChildCheckboxClick = this.onChildCheckboxClick.bind(this);
-    this.onResetClick = this.onResetClick.bind(this);
-    this.setPaneInfo = this.setPaneInfo.bind(this, props.schema.items.$ref, props.registry);
   }
 
-  onMasterCheckboxClick() {
+  onMasterCheckboxClick = () => {
     if (this.state.masterCheckboxState === MasterCheckboxState.ALL) {
       var newValues = [];
     } else {
@@ -61,7 +58,7 @@ class AdvancedMultiSelect extends React.Component {
     this.setHideResetState(newValues);
   }
 
-  onChildCheckboxClick(value) {
+  onChildCheckboxClick = (value) => {
     let selectValues = this.getSelectValuesAfterClick(value);
     this.props.onChange(selectValues);
 
@@ -98,7 +95,7 @@ class AdvancedMultiSelect extends React.Component {
     return MasterCheckboxState.ALL;
   }
 
-  onResetClick() {
+  onResetClick = () => {
     this.props.onChange(this.defaultValues);
     this.setHideResetState(this.defaultValues);
     this.setMasterCheckboxState(this.defaultValues);
@@ -115,8 +112,8 @@ class AdvancedMultiSelect extends React.Component {
     return selectValues.every((value) => this.defaultValues.includes(value));
   }
 
-  setPaneInfo(refString, registry, itemKey) {
-    let definitionObj = getFullDefinitionByKey(refString, registry, itemKey);
+  setPaneInfo = (itemKey) =>  {
+    let definitionObj = getFullDefinitionByKey(this.infoPaneRefString, this.registry, itemKey);
     this.setState({infoPaneParams: {title: definitionObj.title, content: definitionObj.info, link: definitionObj.link}});
   }
 

From 145a41ffcf4029c7c26e69ebf7875d4c1f06b9fa Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Tue, 26 Jan 2021 15:46:57 -0500
Subject: [PATCH 14/38] ui: move getDefaultPaneParams() to InfoPane.js

---
 .../src/components/ui-components/AdvancedMultiSelect.js   | 4 ++--
 .../cc/ui/src/components/ui-components/InfoPane.js        | 8 +++++++-
 .../ui/src/components/ui-components/JsonSchemaHelpers.js  | 7 +------
 3 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 5c7c11345..bab944093 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -4,10 +4,10 @@ import {Button, Card, Form} from 'react-bootstrap';
 import {cloneDeep} from 'lodash';
 
 import {getComponentHeight} from './utils/HeightCalculator';
-import InfoPane from './InfoPane';
+import {getDefaultPaneParams, InfoPane} from './InfoPane';
 import {MasterCheckbox, MasterCheckboxState} from './MasterCheckbox';
 import ChildCheckbox from './ChildCheckbox';
-import {getFullDefinitionByKey, getDefaultPaneParams} from './JsonSchemaHelpers';
+import {getFullDefinitionByKey} from './JsonSchemaHelpers';
 
 function AdvancedMultiSelectHeader(props) {
   const {
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js b/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
index 5c963d87e..6e50ca66d 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
@@ -3,6 +3,12 @@ import React from 'react';
 import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
 import {faQuestionCircle} from '@fortawesome/free-solid-svg-icons';
 
+import {getObjectFromRegistryByRef} from './JsonSchemaHelpers';
+
+function getDefaultPaneParams(refString, registry) {
+  let configSection = getObjectFromRegistryByRef(refString, registry);
+  return ({title: configSection.title, content: configSection.description});
+}
 
 function InfoPane(props) {
   return (
@@ -49,4 +55,4 @@ function getBody(props) {
   )
 }
 
-export default InfoPane
+export {getDefaultPaneParams, InfoPane}
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/JsonSchemaHelpers.js b/monkey/monkey_island/cc/ui/src/components/ui-components/JsonSchemaHelpers.js
index 06eed4aed..9a3d9c66b 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/JsonSchemaHelpers.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/JsonSchemaHelpers.js
@@ -16,9 +16,4 @@ function getObjectFromRegistryByRef(refString, registry) {
   return resolveObjectPath(refArray, registry);
 }
 
-function getDefaultPaneParams(refString, registry) {
-  let configSection = getObjectFromRegistryByRef(refString, registry);
-  return ({title: configSection.title, content: configSection.description});
-}
-
-export {getFullDefinitionByKey, getDefaultPaneParams};
+export {getFullDefinitionByKey, getObjectFromRegistryByRef};

From 32cdc034f32fc53c46eed596af426b681cf8b031 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Tue, 26 Jan 2021 15:51:42 -0500
Subject: [PATCH 15/38] ui: fix whitespace in ChildCheckbox.js

---
 .../components/ui-components/ChildCheckbox.js | 34 +++++++++----------
 1 file changed, 16 insertions(+), 18 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
index 353da4b22..4ce11295e 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
@@ -6,25 +6,23 @@ import {faCheckSquare} from '@fortawesome/free-solid-svg-icons';
 import {faSquare} from '@fortawesome/free-regular-svg-icons';
 
 function ChildCheckbox(props) {
-    const {
-        onPaneClick,
-        onClick,
-        value,
-        disabled,
-        label,
-        checkboxState
-    } = props;
+  const {
+    onPaneClick,
+    onClick,
+    value,
+    disabled,
+    label,
+    checkboxState
+  } = props;
 
-    return (
-        <Form.Group onClick={() => onPaneClick(value)}>
-            <Button value={value} variant={'link'} disabled={disabled} onClick={() => onClick(value)}>
-                <FontAwesomeIcon icon={checkboxState ? faCheckSquare : faSquare}/>
-            </Button>
-            <span className={'option-text'}>
-                {label}
-            </span>
-        </Form.Group>
-    );
+  return (
+    <Form.Group onClick={() => onPaneClick(value)}>
+      <Button value={value} variant={'link'} disabled={disabled} onClick={() => onClick(value)}>
+        <FontAwesomeIcon icon={checkboxState ? faCheckSquare : faSquare}/>
+      </Button>
+      <span className={'option-text'}>{label}</span>
+    </Form.Group>
+  );
 }
 
 export default ChildCheckbox;

From 155da384c275aa6057ad1b661cacd5c58af51ba9 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 28 Jan 2021 08:14:18 -0500
Subject: [PATCH 16/38] ui: replace "(UNSAFE)" text with warning icon

---
 .../definitions/exploiter_classes.py              | 15 ++++++++++++++-
 .../config_schema/definitions/finger_classes.py   |  8 ++++++++
 .../definitions/post_breach_actions.py            | 11 +++++++++++
 .../definitions/system_info_collector_classes.py  |  6 ++++++
 .../ui-components/AdvancedMultiSelect.js          |  7 ++++++-
 .../src/components/ui-components/ChildCheckbox.js | 13 ++++++++++---
 .../cc/ui/src/styles/pages/ConfigurationPage.scss |  7 +++++++
 7 files changed, 62 insertions(+), 5 deletions(-)

diff --git a/monkey/monkey_island/cc/services/config_schema/definitions/exploiter_classes.py b/monkey/monkey_island/cc/services/config_schema/definitions/exploiter_classes.py
index 0a5e671a3..25158d73a 100644
--- a/monkey/monkey_island/cc/services/config_schema/definitions/exploiter_classes.py
+++ b/monkey/monkey_island/cc/services/config_schema/definitions/exploiter_classes.py
@@ -12,6 +12,7 @@ EXPLOITER_CLASSES = {
                 "SmbExploiter"
             ],
             "title": "SMB Exploiter",
+            "safe": True,
             "attack_techniques": ["T1110", "T1075", "T1035"],
             "info": "Brute forces using credentials provided by user and"
                     " hashes gathered by mimikatz.",
@@ -23,6 +24,7 @@ EXPLOITER_CLASSES = {
                 "WmiExploiter"
             ],
             "title": "WMI Exploiter",
+            "safe": True,
             "attack_techniques": ["T1110", "T1106"],
             "info": "Brute forces WMI (Windows Management Instrumentation) "
                     "using credentials provided by user and hashes gathered by mimikatz.",
@@ -34,6 +36,7 @@ EXPLOITER_CLASSES = {
                 "MSSQLExploiter"
             ],
             "title": "MSSQL Exploiter",
+            "safe": True,
             "attack_techniques": ["T1110"],
             "info": "Tries to brute force into MsSQL server and uses insecure "
                     "configuration to execute commands on server.",
@@ -44,7 +47,8 @@ EXPLOITER_CLASSES = {
             "enum": [
                 "Ms08_067_Exploiter"
             ],
-            "title": "MS08-067 Exploiter (UNSAFE)",
+            "title": "MS08-067 Exploiter",
+            "safe": False,
             "info": "Unsafe exploiter, that might cause system crash due to the use of buffer overflow. "
                     "Uses MS08-067 vulnerability.",
             "link": "https://www.guardicore.com/infectionmonkey/docs/reference/exploiters/ms08-067/"
@@ -55,6 +59,7 @@ EXPLOITER_CLASSES = {
                 "SSHExploiter"
             ],
             "title": "SSH Exploiter",
+            "safe": True,
             "attack_techniques": ["T1110", "T1145", "T1106"],
             "info": "Brute forces using credentials provided by user and SSH keys gathered from systems.",
             "link": "https://www.guardicore.com/infectionmonkey/docs/reference/exploiters/sshexec/"
@@ -65,6 +70,7 @@ EXPLOITER_CLASSES = {
                 "ShellShockExploiter"
             ],
             "title": "ShellShock Exploiter",
+            "safe": True,
             "info": "CVE-2014-6271, based on logic from "
                     "https://github.com/nccgroup/shocker/blob/master/shocker.py .",
             "link": "https://www.guardicore.com/infectionmonkey/docs/reference/exploiters/shellshock/"
@@ -75,6 +81,7 @@ EXPLOITER_CLASSES = {
                 "SambaCryExploiter"
             ],
             "title": "SambaCry Exploiter",
+            "safe": True,
             "info": "Bruteforces and searches for anonymous shares. Uses Impacket.",
             "link": "https://www.guardicore.com/infectionmonkey/docs/reference/exploiters/sambacry/"
         },
@@ -84,6 +91,7 @@ EXPLOITER_CLASSES = {
                 "ElasticGroovyExploiter"
             ],
             "title": "ElasticGroovy Exploiter",
+            "safe": True,
             "info": "CVE-2015-1427. Logic is based on Metasploit module.",
             "link": "https://www.guardicore.com/infectionmonkey/docs/reference/exploiters/elasticgroovy/"
         },
@@ -93,6 +101,7 @@ EXPLOITER_CLASSES = {
                 "Struts2Exploiter"
             ],
             "title": "Struts2 Exploiter",
+            "safe": True,
             "info": "Exploits struts2 java web framework. CVE-2017-5638. Logic based on "
                     "https://www.exploit-db.com/exploits/41570 .",
             "link": "https://www.guardicore.com/infectionmonkey/docs/reference/exploiters/struts2/"
@@ -103,6 +112,7 @@ EXPLOITER_CLASSES = {
                 "WebLogicExploiter"
             ],
             "title": "WebLogic Exploiter",
+            "safe": True,
             "info": "Exploits CVE-2017-10271 and CVE-2019-2725 vulnerabilities on WebLogic server.",
             "link": "https://www.guardicore.com/infectionmonkey/docs/reference/exploiters/weblogic/"
         },
@@ -112,6 +122,7 @@ EXPLOITER_CLASSES = {
                 "HadoopExploiter"
             ],
             "title": "Hadoop/Yarn Exploiter",
+            "safe": True,
             "info": "Remote code execution on HADOOP server with YARN and default settings. "
                     "Logic based on https://github.com/vulhub/vulhub/tree/master/hadoop/unauthorized-yarn.",
             "link": "https://www.guardicore.com/infectionmonkey/docs/reference/exploiters/hadoop/"
@@ -122,6 +133,7 @@ EXPLOITER_CLASSES = {
                 "VSFTPDExploiter"
             ],
             "title": "VSFTPD Exploiter",
+            "safe": True,
             "info": "Exploits a malicious backdoor that was added to the VSFTPD download archive. "
                     "Logic based on Metasploit module.",
             "link": "https://www.guardicore.com/infectionmonkey/docs/reference/exploiters/vsftpd/"
@@ -132,6 +144,7 @@ EXPLOITER_CLASSES = {
                 "DrupalExploiter"
             ],
             "title": "Drupal Exploiter",
+            "safe": True,
             "info": "Exploits a remote command execution vulnerability in a Drupal server,"
                     "for which certain modules (such as RESTful Web Services) are enabled.",
             "link": "https://www.guardicore.com/infectionmonkey/docs/reference/exploiters/drupal/"
diff --git a/monkey/monkey_island/cc/services/config_schema/definitions/finger_classes.py b/monkey/monkey_island/cc/services/config_schema/definitions/finger_classes.py
index 405983dc5..5e3f75f33 100644
--- a/monkey/monkey_island/cc/services/config_schema/definitions/finger_classes.py
+++ b/monkey/monkey_island/cc/services/config_schema/definitions/finger_classes.py
@@ -10,6 +10,7 @@ FINGER_CLASSES = {
                 "SMBFinger"
             ],
             "title": "SMBFinger",
+            "safe": True,
             "info": "Figures out if SMB is running and what's the version of it.",
             "attack_techniques": ["T1210"]
         },
@@ -19,6 +20,7 @@ FINGER_CLASSES = {
                 "SSHFinger"
             ],
             "title": "SSHFinger",
+            "safe": True,
             "info": "Figures out if SSH is running.",
             "attack_techniques": ["T1210"]
         },
@@ -28,6 +30,7 @@ FINGER_CLASSES = {
                 "PingScanner"
             ],
             "title": "PingScanner",
+            "safe": True,
             "info": "Tries to identify if host is alive and which OS it's running by ping scan."
         },
         {
@@ -36,6 +39,7 @@ FINGER_CLASSES = {
                 "HTTPFinger"
             ],
             "title": "HTTPFinger",
+            "safe": True,
             "info": "Checks if host has HTTP/HTTPS ports open."
         },
         {
@@ -44,6 +48,7 @@ FINGER_CLASSES = {
                 "MySQLFinger"
             ],
             "title": "MySQLFinger",
+            "safe": True,
             "info": "Checks if MySQL server is running and tries to get it's version.",
             "attack_techniques": ["T1210"]
         },
@@ -53,6 +58,7 @@ FINGER_CLASSES = {
                 "MSSQLFinger"
             ],
             "title": "MSSQLFinger",
+            "safe": True,
             "info": "Checks if Microsoft SQL service is running and tries to gather information about it.",
             "attack_techniques": ["T1210"]
         },
@@ -62,6 +68,7 @@ FINGER_CLASSES = {
                 "ElasticFinger"
             ],
             "title": "ElasticFinger",
+            "safe": True,
             "info": "Checks if ElasticSearch is running and attempts to find it's version.",
             "attack_techniques": ["T1210"]
         },
@@ -71,6 +78,7 @@ FINGER_CLASSES = {
                 "WindowsServerFinger"
             ],
             "title": "WindowsServerFinger",
+            "safe": True,
             "info": "Checks if server is a Windows Server and tests if it is vulnerable to Zerologon.",
             "attack_techniques": ["T1210"]
         }
diff --git a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py
index f1fe0f6f2..16dc0735e 100644
--- a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py
+++ b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py
@@ -10,6 +10,7 @@ POST_BREACH_ACTIONS = {
                 "BackdoorUser"
             ],
             "title": "Back door user",
+            "safe": True,
             "info": "Attempts to create a new user on the system and delete it afterwards.",
             "attack_techniques": ["T1136"]
         },
@@ -19,6 +20,7 @@ POST_BREACH_ACTIONS = {
                 "CommunicateAsNewUser"
             ],
             "title": "Communicate as new user",
+            "safe": True,
             "info": "Attempts to create a new user, create HTTPS requests as that user and delete the user "
                     "afterwards.",
             "attack_techniques": ["T1136"]
@@ -29,6 +31,7 @@ POST_BREACH_ACTIONS = {
                 "ModifyShellStartupFiles"
             ],
             "title": "Modify shell startup files",
+            "safe": True,
             "info": "Attempts to modify shell startup files, like ~/.profile, ~/.bashrc, ~/.bash_profile "
                     "in linux, and profile.ps1 in windows. Reverts modifications done afterwards.",
             "attack_techniques": ["T1156", "T1504"]
@@ -39,6 +42,7 @@ POST_BREACH_ACTIONS = {
                 "HiddenFiles"
             ],
             "title": "Hidden files and directories",
+            "safe": True,
             "info": "Attempts to create a hidden file and remove it afterward.",
             "attack_techniques": ["T1158"]
         },
@@ -48,6 +52,7 @@ POST_BREACH_ACTIONS = {
                 "TrapCommand"
             ],
             "title": "Trap",
+            "safe": True,
             "info": "On Linux systems, attempts to trap an interrupt signal in order to execute a command "
                     "upon receiving that signal. Removes the trap afterwards.",
             "attack_techniques": ["T1154"]
@@ -58,6 +63,7 @@ POST_BREACH_ACTIONS = {
                 "ChangeSetuidSetgid"
             ],
             "title": "Setuid and Setgid",
+            "safe": True,
             "info": "On Linux systems, attempts to set the setuid and setgid bits of a new file. "
                     "Removes the file afterwards.",
             "attack_techniques": ["T1166"]
@@ -68,6 +74,7 @@ POST_BREACH_ACTIONS = {
                 "ScheduleJobs"
             ],
             "title": "Job scheduling",
+            "safe": True,
             "info": "Attempts to create a scheduled job on the system and remove it.",
             "attack_techniques": ["T1168", "T1053"]
         },
@@ -77,6 +84,7 @@ POST_BREACH_ACTIONS = {
                 "Timestomping"
             ],
             "title": "Timestomping",
+            "safe": True,
             "info": "Creates a temporary file and attempts to modify its time attributes. Removes the file afterwards.",
             "attack_techniques": ["T1099"]
         },
@@ -86,6 +94,7 @@ POST_BREACH_ACTIONS = {
                 "SignedScriptProxyExecution"
             ],
             "title": "Signed script proxy execution",
+            "safe": False,
             "info": "On Windows systems, attemps to execute an arbitrary file "
                     "with the help of a pre-existing signed script.",
             "attack_techniques": ["T1216"]
@@ -96,6 +105,7 @@ POST_BREACH_ACTIONS = {
                 "AccountDiscovery"
             ],
             "title": "Account Discovery",
+            "safe": True,
             "info": "Attempts to get a listing of user accounts on the system.",
             "attack_techniques": ["T1087"]
         },
@@ -105,6 +115,7 @@ POST_BREACH_ACTIONS = {
                 "ClearCommandHistory"
             ],
             "title": "Clear command history",
+            "safe": False,
             "info": "Attempts to clear the command history.",
             "attack_techniques": ["T1146"]
         }
diff --git a/monkey/monkey_island/cc/services/config_schema/definitions/system_info_collector_classes.py b/monkey/monkey_island/cc/services/config_schema/definitions/system_info_collector_classes.py
index 5f113f4a7..174133f43 100644
--- a/monkey/monkey_island/cc/services/config_schema/definitions/system_info_collector_classes.py
+++ b/monkey/monkey_island/cc/services/config_schema/definitions/system_info_collector_classes.py
@@ -16,6 +16,7 @@ SYSTEM_INFO_COLLECTOR_CLASSES = {
                 ENVIRONMENT_COLLECTOR
             ],
             "title": "Environment collector",
+            "safe": True,
             "info": "Collects information about machine's environment (on premise/GCP/AWS).",
             "attack_techniques": ["T1082"]
         },
@@ -25,6 +26,7 @@ SYSTEM_INFO_COLLECTOR_CLASSES = {
                 MIMIKATZ_COLLECTOR
             ],
             "title": "Mimikatz collector",
+            "safe": True,
             "info": "Collects credentials from Windows credential manager.",
             "attack_techniques": ["T1003", "T1005"]
         },
@@ -34,6 +36,7 @@ SYSTEM_INFO_COLLECTOR_CLASSES = {
                 AWS_COLLECTOR
             ],
             "title": "AWS collector",
+            "safe": True,
             "info": "If on AWS, collects more information about the AWS instance currently running on.",
             "attack_techniques": ["T1082"]
         },
@@ -43,6 +46,7 @@ SYSTEM_INFO_COLLECTOR_CLASSES = {
                 HOSTNAME_COLLECTOR
             ],
             "title": "Hostname collector",
+            "safe": True,
             "info": "Collects machine's hostname.",
             "attack_techniques": ["T1082", "T1016"]
         },
@@ -52,6 +56,7 @@ SYSTEM_INFO_COLLECTOR_CLASSES = {
                 PROCESS_LIST_COLLECTOR
             ],
             "title": "Process list collector",
+            "safe": True,
             "info": "Collects a list of running processes on the machine.",
             "attack_techniques": ["T1082"]
         },
@@ -61,6 +66,7 @@ SYSTEM_INFO_COLLECTOR_CLASSES = {
                 AZURE_CRED_COLLECTOR
             ],
             "title": "Azure credential collector",
+            "safe": True,
             "info": "Collects password credentials from Azure VMs",
             "attack_techniques": ["T1003", "T1005"]
         }
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index bab944093..b92ff3f1a 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -123,6 +123,10 @@ class AdvancedMultiSelect extends React.Component {
     }));
   }
 
+  isSafe(itemKey) {
+    return getFullDefinitionByKey(this.infoPaneRefString, this.registry, itemKey).safe;
+  }
+
   render() {
     const {
       schema,
@@ -149,7 +153,8 @@ class AdvancedMultiSelect extends React.Component {
               return (
                 <ChildCheckbox key={i} onPaneClick={this.setPaneInfo}
                 onClick={this.onChildCheckboxClick} value={value}
-                disabled={disabled} label={label} checkboxState={this.props.value.includes(value)}/>
+                disabled={disabled} label={label} checkboxState={this.props.value.includes(value)}
+                safe={this.isSafe(value)}/>
               );
             }
           )}
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
index 4ce11295e..1cd3caa8c 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
@@ -2,7 +2,7 @@ import React from 'react';
 import {Button, Form} from 'react-bootstrap';
 
 import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
-import {faCheckSquare} from '@fortawesome/free-solid-svg-icons';
+import {faCheckSquare, faExclamationTriangle} from '@fortawesome/free-solid-svg-icons';
 import {faSquare} from '@fortawesome/free-regular-svg-icons';
 
 function ChildCheckbox(props) {
@@ -12,15 +12,22 @@ function ChildCheckbox(props) {
     value,
     disabled,
     label,
-    checkboxState
+    checkboxState,
+    safe
   } = props;
 
+  let displayLabel = [<span key={'label'} className={'option-text'}>{label}</span>];
+
+  if (!safe) {
+    displayLabel.push(<FontAwesomeIcon key="unsafe-indicator" className="unsafe-indicator" icon={faExclamationTriangle}/>)
+  }
+
   return (
     <Form.Group onClick={() => onPaneClick(value)}>
       <Button value={value} variant={'link'} disabled={disabled} onClick={() => onClick(value)}>
         <FontAwesomeIcon icon={checkboxState ? faCheckSquare : faSquare}/>
       </Button>
-      <span className={'option-text'}>{label}</span>
+      {displayLabel}
     </Form.Group>
   );
 }
diff --git a/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss b/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss
index e5c6c08bc..435047845 100644
--- a/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss
+++ b/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss
@@ -57,3 +57,10 @@
   white-space: pre-wrap;
 }
 
+.unsafe-indicator {
+    text-transform: uppercase;
+    color: #ffc107;
+    font-weight: 900;
+    margin-left: .75em;
+    margin-right: .75em;
+}

From 5942fad434b0136aeffc693033c05228977b6a45 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 28 Jan 2021 08:51:30 -0500
Subject: [PATCH 17/38] ui: extract ChildCheckboxContainer component out of
 AdvancedMultiSelect

---
 .../ui-components/AdvancedMultiSelect.js      | 28 +++++---------
 .../components/ui-components/ChildCheckbox.js | 37 ++++++++++++++++++-
 2 files changed, 45 insertions(+), 20 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index b92ff3f1a..90d8cf818 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -1,12 +1,11 @@
 import React from 'react';
-import {Button, Card, Form} from 'react-bootstrap';
+import {Button, Card} from 'react-bootstrap';
 
 import {cloneDeep} from 'lodash';
 
-import {getComponentHeight} from './utils/HeightCalculator';
 import {getDefaultPaneParams, InfoPane} from './InfoPane';
 import {MasterCheckbox, MasterCheckboxState} from './MasterCheckbox';
-import ChildCheckbox from './ChildCheckbox';
+import ChildCheckboxContainer from './ChildCheckbox';
 import {getFullDefinitionByKey} from './JsonSchemaHelpers';
 
 function AdvancedMultiSelectHeader(props) {
@@ -123,7 +122,7 @@ class AdvancedMultiSelect extends React.Component {
     }));
   }
 
-  isSafe(itemKey) {
+  isSafe = (itemKey) => {
     return getFullDefinitionByKey(this.infoPaneRefString, this.registry, itemKey).safe;
   }
 
@@ -144,21 +143,12 @@ class AdvancedMultiSelect extends React.Component {
           disabled={disabled} onCheckboxClick={this.onMasterCheckboxClick}
           checkboxState={this.state.masterCheckboxState}
           hideReset={this.state.hideReset} onResetClick={this.onResetClick}/>
-        <Form.Group
-          style={{height: `${getComponentHeight(this.enumOptions.length)}px`}}
-          id={id} multiple={multiple} className='choice-block form-control'
-          required={required} disabled={disabled || readonly} autoFocus={autofocus}>
-          {
-            this.enumOptions.map(({value, label}, i) => {
-              return (
-                <ChildCheckbox key={i} onPaneClick={this.setPaneInfo}
-                onClick={this.onChildCheckboxClick} value={value}
-                disabled={disabled} label={label} checkboxState={this.props.value.includes(value)}
-                safe={this.isSafe(value)}/>
-              );
-            }
-          )}
-        </Form.Group>
+
+        <ChildCheckboxContainer id={id} multiple={multiple} required={required}
+          disabled={disabled || readonly} autoFocus={autofocus} isSafe={this.isSafe}
+          onPaneClick={this.setPaneInfo} onCheckboxClick={this.onChildCheckboxClick}
+          selectedValues={this.props.value} enumOptions={this.enumOptions}/>
+
         <InfoPane title={this.state.infoPaneParams.title}
           body={this.state.infoPaneParams.content}
           link={this.state.infoPaneParams.link}/>
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
index 1cd3caa8c..e740734d5 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
@@ -5,6 +5,41 @@ import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
 import {faCheckSquare, faExclamationTriangle} from '@fortawesome/free-solid-svg-icons';
 import {faSquare} from '@fortawesome/free-regular-svg-icons';
 
+import {getComponentHeight} from './utils/HeightCalculator';
+
+function ChildCheckboxContainer(props) {
+  const {
+    enumOptions,
+    id,
+    multiple,
+    required,
+    disabled,
+    autofocus,
+    onPaneClick,
+    onCheckboxClick,
+    selectedValues,
+    isSafe
+  } = props;
+
+  return(
+    <Form.Group
+      style={{height: `${getComponentHeight(enumOptions.length)}px`}}
+      id={id} multiple={multiple} className='choice-block form-control'
+      required={required} disabled={disabled} autoFocus={autofocus}>
+      {
+        enumOptions.map(({value, label}, i) => {
+          return (
+            <ChildCheckbox key={i} onPaneClick={onPaneClick}
+            onClick={onCheckboxClick} value={value}
+            disabled={disabled} label={label} checkboxState={selectedValues.includes(value)}
+            safe={isSafe(value)}/>
+          );
+        }
+      )}
+    </Form.Group>
+  );
+}
+
 function ChildCheckbox(props) {
   const {
     onPaneClick,
@@ -32,4 +67,4 @@ function ChildCheckbox(props) {
   );
 }
 
-export default ChildCheckbox;
+export default ChildCheckboxContainer;

From 5f9470d17c408e3a8087efb6716d9c68b59f985b Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 28 Jan 2021 09:00:55 -0500
Subject: [PATCH 18/38] ui: extract WarningIcon component from ChildCheckbox.js

---
 .../ui/src/components/ui-components/ChildCheckbox.js  |  5 +++--
 .../cc/ui/src/components/ui-components/WarningIcon.js | 11 +++++++++++
 2 files changed, 14 insertions(+), 2 deletions(-)
 create mode 100644 monkey/monkey_island/cc/ui/src/components/ui-components/WarningIcon.js

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
index e740734d5..57088f0c2 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
@@ -2,10 +2,11 @@ import React from 'react';
 import {Button, Form} from 'react-bootstrap';
 
 import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
-import {faCheckSquare, faExclamationTriangle} from '@fortawesome/free-solid-svg-icons';
+import {faCheckSquare} from '@fortawesome/free-solid-svg-icons';
 import {faSquare} from '@fortawesome/free-regular-svg-icons';
 
 import {getComponentHeight} from './utils/HeightCalculator';
+import WarningIcon from './WarningIcon';
 
 function ChildCheckboxContainer(props) {
   const {
@@ -54,7 +55,7 @@ function ChildCheckbox(props) {
   let displayLabel = [<span key={'label'} className={'option-text'}>{label}</span>];
 
   if (!safe) {
-    displayLabel.push(<FontAwesomeIcon key="unsafe-indicator" className="unsafe-indicator" icon={faExclamationTriangle}/>)
+    displayLabel.push(<WarningIcon key="unsafe-indicator"/>)
   }
 
   return (
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/WarningIcon.js b/monkey/monkey_island/cc/ui/src/components/ui-components/WarningIcon.js
new file mode 100644
index 000000000..2e759ccb6
--- /dev/null
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/WarningIcon.js
@@ -0,0 +1,11 @@
+import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
+import {faExclamationTriangle} from '@fortawesome/free-solid-svg-icons';
+import React from 'react';
+
+function WarningIcon() {
+  return (
+    <FontAwesomeIcon className="unsafe-indicator" icon={faExclamationTriangle}/>
+  );
+}
+
+export default WarningIcon;

From 5ed102bd0957c96b2ea5f505c44292f4be2896e6 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 28 Jan 2021 10:08:31 -0500
Subject: [PATCH 19/38] config_schema: fix typo in Signed script proxy
 execution PBA

---
 .../services/config_schema/definitions/post_breach_actions.py   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py
index 16dc0735e..857e80da4 100644
--- a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py
+++ b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py
@@ -95,7 +95,7 @@ POST_BREACH_ACTIONS = {
             ],
             "title": "Signed script proxy execution",
             "safe": False,
-            "info": "On Windows systems, attemps to execute an arbitrary file "
+            "info": "On Windows systems, attempts to execute an arbitrary file "
                     "with the help of a pre-existing signed script.",
             "attack_techniques": ["T1216"]
         },

From 7ec8f0394c6e64883e5e54c3d6fdb29272e9b28c Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 28 Jan 2021 10:12:28 -0500
Subject: [PATCH 20/38] ui: add warning message to PBA/Exploiters InfoPane

---
 .../ui-components/AdvancedMultiSelect.js      | 14 ++++++++--
 .../src/components/ui-components/InfoPane.js  | 26 +++++++++++++++++--
 .../cc/ui/src/styles/components/InfoPane.scss |  7 +++++
 3 files changed, 43 insertions(+), 4 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 90d8cf818..955aec509 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -113,7 +113,16 @@ class AdvancedMultiSelect extends React.Component {
 
   setPaneInfo = (itemKey) =>  {
     let definitionObj = getFullDefinitionByKey(this.infoPaneRefString, this.registry, itemKey);
-    this.setState({infoPaneParams: {title: definitionObj.title, content: definitionObj.info, link: definitionObj.link}});
+    this.setState(
+      {
+        infoPaneParams: {
+          title: definitionObj.title,
+          content: definitionObj.info,
+          link: definitionObj.link,
+          showWarning: !(this.isSafe(itemKey))
+        }
+      }
+    );
   }
 
   setPaneInfoToDefault() {
@@ -151,7 +160,8 @@ class AdvancedMultiSelect extends React.Component {
 
         <InfoPane title={this.state.infoPaneParams.title}
           body={this.state.infoPaneParams.content}
-          link={this.state.infoPaneParams.link}/>
+          link={this.state.infoPaneParams.link}
+          showWarning={this.state.infoPaneParams.showWarning}/>
       </div>
     );
   }
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js b/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
index 6e50ca66d..f0545a5c6 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
@@ -4,10 +4,16 @@ import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
 import {faQuestionCircle} from '@fortawesome/free-solid-svg-icons';
 
 import {getObjectFromRegistryByRef} from './JsonSchemaHelpers';
+import WarningIcon from './WarningIcon';
 
 function getDefaultPaneParams(refString, registry) {
   let configSection = getObjectFromRegistryByRef(refString, registry);
-  return ({title: configSection.title, content: configSection.description});
+  return (
+    {
+      title: configSection.title,
+      content: configSection.description,
+      showWarning: false
+    });
 }
 
 function InfoPane(props) {
@@ -48,11 +54,27 @@ function getSubtitle(props) {
 }
 
 function getBody(props) {
+  let body = [<span key={'body'}>{props.body}</span>];
+
+  if (props.showWarning) {
+    body.push(getWarning());
+  }
+
   return (
     <Card.Body className={'pane-body'}>
-      {props.body}
+      {body}
     </Card.Body>
   )
 }
 
+function getWarning() {
+  return (
+    <div className={'info-pane-warning'} key={'warning'}>
+      <WarningIcon/>This option may cause a system to become unstable or
+      change the system's state in undesirable ways. Therefore, this option
+      is not recommended for use in production or other sensitive environments.
+    </div>
+  );
+}
+
 export {getDefaultPaneParams, InfoPane}
diff --git a/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss b/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss
index 8c61d873f..a177ed7e1 100644
--- a/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss
+++ b/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss
@@ -27,3 +27,10 @@
   margin: 10px 15px;
   padding: 0;
 }
+
+.info-pane-warning {
+    margin-top: 1em;
+}
+.info-pane-warning .unsafe-indicator {
+    margin-left: 0em;
+}

From 9d9e8168fb2c23367b9947273aa1a041687b3e2e Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 28 Jan 2021 10:18:40 -0500
Subject: [PATCH 21/38] ui: rename unsafe-indicator to warning-icon

---
 .../cc/ui/src/components/ui-components/ChildCheckbox.js         | 2 +-
 .../cc/ui/src/components/ui-components/WarningIcon.js           | 2 +-
 monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss  | 2 +-
 .../monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
index 57088f0c2..47a86dab6 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
@@ -55,7 +55,7 @@ function ChildCheckbox(props) {
   let displayLabel = [<span key={'label'} className={'option-text'}>{label}</span>];
 
   if (!safe) {
-    displayLabel.push(<WarningIcon key="unsafe-indicator"/>)
+    displayLabel.push(<WarningIcon key="warning-icon"/>)
   }
 
   return (
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/WarningIcon.js b/monkey/monkey_island/cc/ui/src/components/ui-components/WarningIcon.js
index 2e759ccb6..e06f00ec9 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/WarningIcon.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/WarningIcon.js
@@ -4,7 +4,7 @@ import React from 'react';
 
 function WarningIcon() {
   return (
-    <FontAwesomeIcon className="unsafe-indicator" icon={faExclamationTriangle}/>
+    <FontAwesomeIcon className="warning-icon" icon={faExclamationTriangle}/>
   );
 }
 
diff --git a/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss b/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss
index a177ed7e1..561e436cf 100644
--- a/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss
+++ b/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss
@@ -31,6 +31,6 @@
 .info-pane-warning {
     margin-top: 1em;
 }
-.info-pane-warning .unsafe-indicator {
+.info-pane-warning .warning-icon {
     margin-left: 0em;
 }
diff --git a/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss b/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss
index 435047845..98e598c81 100644
--- a/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss
+++ b/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss
@@ -57,7 +57,7 @@
   white-space: pre-wrap;
 }
 
-.unsafe-indicator {
+.warning-icon {
     text-transform: uppercase;
     color: #ffc107;
     font-weight: 900;

From ce9a398f28a0e22122035f6be5bc8ab5ee6ef79a Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 28 Jan 2021 10:58:42 -0500
Subject: [PATCH 22/38] swimm: autosync PBA tutorial

---
 .swm/JFXftJml8DpmuCPBA9rL.swm |  57 ++++++++----
 .swm/tbxb2cGgUiJQ8Btma0fp.swm | 169 +++++++++++++++++++++++-----------
 2 files changed, 156 insertions(+), 70 deletions(-)

diff --git a/.swm/JFXftJml8DpmuCPBA9rL.swm b/.swm/JFXftJml8DpmuCPBA9rL.swm
index 7c186126e..3e348a3a6 100644
--- a/.swm/JFXftJml8DpmuCPBA9rL.swm
+++ b/.swm/JFXftJml8DpmuCPBA9rL.swm
@@ -1,30 +1,51 @@
 {
     "id": "JFXftJml8DpmuCPBA9rL",
     "name": "Add details about your new PBA",
-    "dod": "WW91JTIwc2hvdWxkJTIwYWRkJTIweW91ciUyMG5ldyUyMFBCQSdzJTIwZGV0YWlscyUyMHRvJTIwdGhlJTIwY29uZmlndXJhdGlvbi4=",
-    "description": "SW4lMjBvcmRlciUyMHRvJTIwbWFrZSUyMHN1cmUlMjB0aGF0JTIwdGhlJTIwbmV3JTIwJTYwU2NoZWR1bGVKb2JzJTYwJTIwUEJBJTIwaXMlMjBzaG93biUyMGluJTIwdGhlJTIwY29uZmlndXJhdGlvbiUyMG9uJTIwdGhlJTIwTW9ua2V5JTIwSXNsYW5kJTJDJTIweW91JTIwbmVlZCUyMHRvJTIwYWRkJTIwaXRzJTIwZGV0YWlscyUyMHRvJTIwdGhlJTIwY29uZmlndXJhdGlvbiUyMGZpbGUocykuJTIwJTNDYnIlM0UlM0NiciUzRSUwQSUwQVNpbmNlJTIwdGhpcyUyMHBhcnRpY3VsYXIlMjBQQkElMjBpcyUyMHJlbGF0ZWQlMjB0byUyMHRoZSUyME1JVFJFJTIwdGVjaG5pcXVlcyUyMCU1QlQxMTY4JTVEKGh0dHBzJTNBJTJGJTJGYXR0YWNrLm1pdHJlLm9yZyUyRnRlY2huaXF1ZXMlMkZUMTE2OCklMjBhbmQlMjAlNUJUMTA1MyU1RChodHRwcyUzQSUyRiUyRmF0dGFjay5taXRyZS5vcmclMkZ0ZWNobmlxdWVzJTJGVDEwNTMpJTJDJTIwbWFrZSUyMHN1cmUlMjB0byUyMGxpbmslMjB0aGUlMjBQQkElMjB3aXRoJTIwdGhlc2UlMjB0ZWNobmlxdWVzJTIwaW4lMjB0aGUlMjBjb25maWd1cmF0aW9uJTIwYXMlMjB3ZWxsLiUyMCUzQ2JyJTNFJTNDYnIlM0UlMEElMEFFYWNoJTIwcGFydCUyMG9mJTIwdGhlJTIwY29uZmlndXJhdGlvbiUyMGhhcyUyMGFuJTIwaW1wb3J0YW50JTIwcm9sZSUyMCUyMCUwQS0lMjAqZW51bSolMjAlRTIlODAlOTQlMjBjb250YWlucyUyMHRoZSUyMHJlbGV2YW50JTIwUEJBJ3MlMjBjbGFzcyUyMG5hbWUocyklMEEtJTIwKnRpdGxlKiUyMCVFMiU4MCU5NCUyMGhvbGRzJTIwdGhlJTIwbmFtZSUyMG9mJTIwdGhlJTIwUEJBJTIwd2hpY2glMjBpcyUyMGRpc3BsYXllZCUyMGluJTIwdGhlJTIwY29uZmlndXJhdGlvbiUyMG9uJTIwdGhlJTIwTW9ua2V5JTIwSXNsYW5kJTBBLSUyMCppbmZvKiUyMCVFMiU4MCU5NCUyMGNvbnNpc3RzJTIwb2YlMjBhbiUyMGVsYWJvcmF0aW9uJTIwb24lMjB0aGUlMjBQQkEncyUyMHdvcmtpbmclMjB3aGljaCUyMGlzJTIwZGlzcGxheWVkJTIwaW4lMjB0aGUlMjBjb25maWd1cmF0aW9uJTIwb24lMjB0aGUlMjBNb25rZXklMjBJc2xhbmQlMEEtJTIwKmF0dGFja190ZWNobmlxdWVzKiUyMCVFMiU4MCU5NCUyMGhhcyUyMHRoZSUyMElEcyUyMG9mJTIwdGhlJTIwTUlUUkUlMjB0ZWNobmlxdWVzJTIwYXNzb2NpYXRlZCUyMHdpdGglMjB0aGUlMjBQQkElMEElMEElMjMlMjMlMjBNYW51YWwlMjB0ZXN0JTIwJTIwJTBBT25jZSUyMHlvdSUyMHRoaW5rJTIweW91J3JlJTIwZG9uZS4uLiUwQS0lMjBSdW4lMjB0aGUlMjBNb25rZXklMjBJc2xhbmQlMEEtJTIwWW91JTIwc2hvdWxkJTIwYmUlMjBhYmxlJTIwdG8lMjBzZWUlMjB5b3VyJTIwbmV3JTIwUEJBJTIwdW5kZXIlMjB0aGUlMjAlMjJNb25rZXklMjIlMjB0YWIlMjBpbiUyMHRoZSUyMGNvbmZpZ3VyYXRpb24lMkMlMjBhbG9uZyUyMHdpdGglMjBpdHMlMjBpbmZvcm1hdGlvbiUyMHdoZW4lMjB5b3UlMjBjbGljayUyMG9uJTIwaXQlMEEtJTIwRnVydGhlciUyQyUyMHdoZW4lMjB5b3UlMjBlbmFibGUlMkZkaXNhYmxlJTIwdGhlJTIwYXNzb2NpYXRlZCUyME1JVFJFJTIwdGVjaG5pcXVlcyUyMHVuZGVyJTIwdGhlJTIwQVRUJTI2Q0slMjB0YWIlMjBpbiUyMHRoZSUyMGNvbmZpZ3VyYXRpb24lMkMlMjB0aGUlMjBQQkElMjBzaG91bGQlMjBhbHNvJTIwYmUlMjBlbmFibGVkJTJGZGlzYWJsZWQlMEElMEElM0NpbWclMjBzcmMlM0QlMjJodHRwcyUzQSUyRiUyRmkuaW1ndXIuY29tJTJGYTVWU2tMNS5naWYlMjIlMjBoZWlnaHQlM0Q0MDAlM0U=",
-    "summary": "LSUyMFRoZSUyMFBCQSUyMGRldGFpbHMlMjBpbiUyMHRoaXMlMjBmaWxlJTIwYXJlJTIwcmVmbGVjdGVkJTIwb24lMjB0aGUlMjBNb25rZXklMjBJc2xhbmQlMjBpbiUyMHRoZSUyMFBCQSUyMGNvbmZpZ3VyYXRpb24uJTBBLSUyMFBCQXMlMjBhcmUlMjBhbHNvJTIwbGlua2VkJTIwdG8lMjB0aGUlMjByZWxldmFudCUyME1JVFJFJTIwdGVjaG5pcXVlcyUyMGluJTIwdGhpcyUyMGZpbGUlMkMlMjB3aG9zZSUyMHJlc3VsdHMlMjBjYW4lMjB0aGVuJTIwYmUlMjBzZWVuJTIwaW4lMjB0aGUlMjBNSVRSRSUyMEFUVCUyNkNLJTIwcmVwb3J0JTIwb24lMjB0aGUlMjBNb25rZXklMjBJc2xhbmQu",
-    "diff": "ZGlmZiUyMC0tZ2l0JTIwYSUyRm1vbmtleSUyRm1vbmtleV9pc2xhbmQlMkZjYyUyRnNlcnZpY2VzJTJGY29uZmlnX3NjaGVtYSUyRmRlZmluaXRpb25zJTJGcG9zdF9icmVhY2hfYWN0aW9ucy5weSUyMGIlMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmNvbmZpZ19zY2hlbWElMkZkZWZpbml0aW9ucyUyRnBvc3RfYnJlYWNoX2FjdGlvbnMucHklMEFpbmRleCUyMGYxZmUwZjZmLi5jY2UzN2IyNCUyMDEwMDY0NCUwQS0tLSUyMGElMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmNvbmZpZ19zY2hlbWElMkZkZWZpbml0aW9ucyUyRnBvc3RfYnJlYWNoX2FjdGlvbnMucHklMEElMkIlMkIlMkIlMjBiJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZjb25maWdfc2NoZW1hJTJGZGVmaW5pdGlvbnMlMkZwb3N0X2JyZWFjaF9hY3Rpb25zLnB5JTBBJTQwJTQwJTIwLTYyJTJDMTUlMjAlMkI2MiUyQzclMjAlNDAlNDAlMjBQT1NUX0JSRUFDSF9BQ1RJT05TJTIwJTNEJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyUmVtb3ZlcyUyMHRoZSUyMGZpbGUlMjBhZnRlcndhcmRzLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMmF0dGFja190ZWNobmlxdWVzJTIyJTNBJTIwJTVCJTIyVDExNjYlMjIlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdCJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnR5cGUlMjIlM0ElMjAlMjJzdHJpbmclMjIlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyZW51bSUyMiUzQSUyMCU1QiUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJTY2hlZHVsZUpvYnMlMjIlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVEJTJDJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnRpdGxlJTIyJTNBJTIwJTIySm9iJTIwc2NoZWR1bGluZyUyMiUyQyUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJpbmZvJTIyJTNBJTIwJTIyQXR0ZW1wdHMlMjB0byUyMGNyZWF0ZSUyMGElMjBzY2hlZHVsZWQlMjBqb2IlMjBvbiUyMHRoZSUyMHN5c3RlbSUyMGFuZCUyMHJlbW92ZSUyMGl0LiUyMiUyQyUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJhdHRhY2tfdGVjaG5pcXVlcyUyMiUzQSUyMCU1QiUyMlQxMTY4JTIyJTJDJTIwJTIyVDEwNTMlMjIlNUQlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTJDJTBBJTJCJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwU3dpbW1lciUzQSUyMEFERCUyMERFVEFJTFMlMjBIRVJFISUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnR5cGUlMjIlM0ElMjAlMjJzdHJpbmclMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJlbnVtJTIyJTNBJTIwJTVCJTBB",
+    "dod": "You should add your new PBA's details to the configuration.",
+    "description": "In order to make sure that the new `ScheduleJobs` PBA is shown in the configuration on the Monkey Island, you need to add its details to the configuration file(s). <br><br>\n\nSince this particular PBA is related to the MITRE techniques [T1168](https://attack.mitre.org/techniques/T1168) and [T1053](https://attack.mitre.org/techniques/T1053), make sure to link the PBA with these techniques in the configuration as well. <br><br>\n\nEach part of the configuration has an important role  \n- *enum* — contains the relevant PBA's class name(s)\n- *title* — holds the name of the PBA which is displayed in the configuration on the Monkey Island\n- *info* — consists of an elaboration on the PBA's working which is displayed in the configuration on the Monkey Island\n- *attack_techniques* — has the IDs of the MITRE techniques associated with the PBA\n\n## Manual test  \nOnce you think you're done...\n- Run the Monkey Island\n- You should be able to see your new PBA under the \"Monkey\" tab in the configuration, along with its information when you click on it\n- Further, when you enable/disable the associated MITRE techniques under the ATT&CK tab in the configuration, the PBA should also be enabled/disabled\n\n<img src=\"https://i.imgur.com/a5VSkL5.gif\" height=400>",
+    "summary": "- The PBA details in this file are reflected on the Monkey Island in the PBA configuration.\n- PBAs are also linked to the relevant MITRE techniques in this file, whose results can then be seen in the MITRE ATT&CK report on the Monkey Island.",
+    "diff": "diff --git a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py\nindex f1fe0f6f..cce37b24 100644\n--- a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py\n+++ b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py\n@@ -68,16 +68,7 @@\n                     \"Removes the file afterwards.\",\n             \"attack_techniques\": [\"T1166\"]\n         },\n-        {\n+        # Swimmer: ADD DETAILS HERE!\n-            \"type\": \"string\",\n-            \"enum\": [\n-                \"ScheduleJobs\"\n-            ],\n-            \"title\": \"Job scheduling\",\n-            \"safe\": True,\n-            \"info\": \"Attempts to create a scheduled job on the system and remove it.\",\n-            \"attack_techniques\": [\"T1168\", \"T1053\"]\n-        },\n         {\n             \"type\": \"string\",\n             \"enum\": [\n",
     "tests": [],
     "hints": [
         "Have a look at the details of the other techniques."
     ],
-    "files": {
+    "app_version": "0.3.2",
+    "file_version": "1.0.4",
+    "swimmPatch": {
         "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py": {
-            "index": [
-                "f1fe0f6f..cce37b24",
-                "100644"
-            ],
-            "fileA": "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py",
-            "fileB": "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 9,
-            "numLineAdditions": 1,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC02MiUyQzE1JTIwJTJCNjIlMkM3JTIwJTQwJTQwJTIwUE9TVF9CUkVBQ0hfQUNUSU9OUyUyMCUzRCUyMCU3QiUyMiUyQyUyMmNoYW5nZXMlMjIlM0ElNUIlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJSZW1vdmVzJTIwdGhlJTIwZmlsZSUyMGFmdGVyd2FyZHMuJTVDJTIyJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNjIlMkMlMjJiJTIyJTNBNjIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJhdHRhY2tfdGVjaG5pcXVlcyU1QyUyMiUzQSUyMCU1QiU1QyUyMlQxMTY2JTVDJTIyJTVEJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNjMlMkMlMjJiJTIyJTNBNjMlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E2NCUyQyUyMmIlMjIlM0E2NCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E2NSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJ0eXBlJTVDJTIyJTNBJTIwJTVDJTIyc3RyaW5nJTVDJTIyJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNjYlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyZW51bSU1QyUyMiUzQSUyMCU1QiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTY3JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMlNjaGVkdWxlSm9icyU1QyUyMiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTY4JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTY5JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMnRpdGxlJTVDJTIyJTNBJTIwJTVDJTIySm9iJTIwc2NoZWR1bGluZyU1QyUyMiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTcwJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMmluZm8lNUMlMjIlM0ElMjAlNUMlMjJBdHRlbXB0cyUyMHRvJTIwY3JlYXRlJTIwYSUyMHNjaGVkdWxlZCUyMGpvYiUyMG9uJTIwdGhlJTIwc3lzdGVtJTIwYW5kJTIwcmVtb3ZlJTIwaXQuJTVDJTIyJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNzElN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyYXR0YWNrX3RlY2huaXF1ZXMlNUMlMjIlM0ElMjAlNUIlNUMlMjJUMTE2OCU1QyUyMiUyQyUyMCU1QyUyMlQxMDUzJTVDJTIyJTVEJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNzIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNzMlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyYWRkJTIyJTJDJTIybWFyayUyMiUzQSUyMiUyQiUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBTd2ltbWVyJTNBJTIwQUREJTIwREVUQUlMUyUyMEhFUkUhJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJiJTIyJTNBNjUlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E3NCUyQyUyMmIlMjIlM0E2NiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMnR5cGUlNUMlMjIlM0ElMjAlNUMlMjJzdHJpbmclNUMlMjIlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E3NSUyQyUyMmIlMjIlM0E2NyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMmVudW0lNUMlMjIlM0ElMjAlNUIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E3NiUyQyUyMmIlMjIlM0E2OCU3RCU3RCU1RCUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTYyJTJDJTIybGluZXNDb3VudCUyMiUzQTE1JTdEJTJDJTIyYiUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTYyJTJDJTIybGluZXNDb3VudCUyMiUzQTclN0QlN0QlN0QlN0Q="
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py\nindex f1fe0f6f..cce37b24 100644\n--- a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py\n+++ b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -68,16 +68,7 @@",
+                        "                     \"Removes the file afterwards.\",",
+                        "             \"attack_techniques\": [\"T1166\"]",
+                        "         },",
+                        "-        {",
+                        "+        # Swimmer: ADD DETAILS HERE!",
+                        "-            \"type\": \"string\",",
+                        "-            \"enum\": [",
+                        "-                \"ScheduleJobs\"",
+                        "-            ],",
+                        "-            \"title\": \"Job scheduling\",",
+                        "-            \"safe\": True,",
+                        "-            \"info\": \"Attempts to create a scheduled job on the system and remove it.\",",
+                        "-            \"attack_techniques\": [\"T1168\", \"T1053\"]",
+                        "-        },",
+                        "         {",
+                        "             \"type\": \"string\",",
+                        "             \"enum\": ["
+                    ]
+                }
             ]
         }
     },
-    "app_version": "0.1.90",
-    "file_version": "1.0.2"
+    "hunksOrder": [
+        "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py_0"
+    ],
+    "last_commit_sha_for_swimm_patch": "9d9e8168fb2c23367b9947273aa1a041687b3e2e"
 }
\ No newline at end of file
diff --git a/.swm/tbxb2cGgUiJQ8Btma0fp.swm b/.swm/tbxb2cGgUiJQ8Btma0fp.swm
index e3be3fb14..e62725beb 100644
--- a/.swm/tbxb2cGgUiJQ8Btma0fp.swm
+++ b/.swm/tbxb2cGgUiJQ8Btma0fp.swm
@@ -1,75 +1,140 @@
 {
     "id": "tbxb2cGgUiJQ8Btma0fp",
     "name": "Add a simple Post Breach action",
-    "dod": "WW91JTIwc2hvdWxkJTIwYWRkJTIwYSUyMG5ldyUyMFBCQSUyMHRvJTIwdGhlJTIwTW9ua2V5JTIwd2hpY2glMjBjcmVhdGVzJTIwYSUyMG5ldyUyMHVzZXIlMjBvbiUyMHRoZSUyMG1hY2hpbmUu",
-    "description": "UmVhZCUyMCU1Qm91ciUyMGRvY3VtZW50YXRpb24lMjBhYm91dCUyMGFkZGluZyUyMGElMjBuZXclMjBQQkElNUQoaHR0cHMlM0ElMkYlMkZ3d3cuZ3VhcmRpY29yZS5jb20lMkZpbmZlY3Rpb25tb25rZXklMkZkb2NzJTJGZGV2ZWxvcG1lbnQlMkZhZGRpbmctcG9zdC1icmVhY2gtYWN0aW9ucyUyRikuJTBBJTBBQWZ0ZXIlMjB0aGF0JTIwd2UlMjB3YW50JTIweW91JTIwdG8lMjBhZGQlMjB0aGUlMjBCYWNrZG9vclVzZXIlMjBQQkEuJTIwVGhlJTIwY29tbWFuZHMlMjB0aGF0JTIwYWRkJTIwdXNlcnMlMjBmb3IlMjBXaW4lMjBhbmQlMjBMaW51eCUyMGNhbiUyMGJlJTIwcmV0cmlldmVkJTIwZnJvbSUyMCU2MGdldF9jb21tYW5kc190b19hZGRfdXNlciU2MCUyMC0lMjBtYWtlJTIwc3VyZSUyMHlvdSUyMHNlZSUyMGhvdyUyMHRvJTIwdXNlJTIwdGhpcyUyMGZ1bmN0aW9uJTIwY29ycmVjdGx5LiUyMCUwQSUwQU5vdGUlMjB0aGF0JTIwdGhlJTIwUEJBJTIwc2hvdWxkJTIwaW1wYWN0JTIwdGhlJTIwVDExMzYlMjBNSVRSRSUyMHRlY2huaXF1ZSUyMGFzJTIwd2VsbCElMjAlMEElMEElMjMlMjBNYW51YWwlMjB0ZXN0JTIwdG8lMjBjb25maXJtJTBBJTBBMS4lMjBSdW4lMjB0aGUlMjBNb25rZXklMjBJc2xhbmQlMEEyLiUyME1ha2UlMjBzdXJlJTIweW91ciUyMG5ldyUyMFBCQSUyMGlzJTIwZW5hYmxlZCUyMGJ5JTIwZGVmYXVsdCUyMGluJTIwdGhlJTIwY29uZmlnJTIwLSUyMGZvciUyMHRoaXMlMjB0ZXN0JTJDJTIwZGlzYWJsZSUyMG5ldHdvcmslMjBzY2FubmluZyUyQyUyMGV4cGxvaXRpbmclMkMlMjBhbmQlMjBhbGwlMjBvdGhlciUyMFBCQXMlMEEzLiUyMFJ1biUyME1vbmtleSUwQTQuJTIwU2VlJTIwdGhlJTIwUEJBJTIwaW4lMjB0aGUlMjBzZWN1cml0eSUyMHJlcG9ydCUwQTUlMkMlMjBTZWUlMjB0aGUlMjBQQkElMjBpbiUyMHRoZSUyME1JVFJFJTIwcmVwb3J0JTIwaW4lMjB0aGUlMjByZWxldmFudCUyMHRlY2huaXF1ZSUwQQ==",
-    "summary": "VGFrZSUyMGElMjBsb29rJTIwYXQlMjB0aGUlMjBjb25maWd1cmF0aW9uJTIwb2YlMjB0aGUlMjBpc2xhbmQlMjBhZ2FpbiUyMC0lMjBzZWUlMjB0aGUlMjAlMjJjb21tYW5kJTIwdG8lMjBydW4lMjBhZnRlciUyMGJyZWFjaCUyMiUyMG9wdGlvbiUyMHdlJTIwb2ZmZXIlMjB0aGUlMjB1c2VyJTNGJTIwSXQncyUyMGltcGxlbWVudGVkJTIwZXhhY3RseSUyMGxpa2UlMjB5b3UlMjBkaWQlMjByaWdodCUyMG5vdyUyMGJ1dCUyMGVhY2glMjB1c2VyJTIwY2FuJTIwZG8lMjBpdCUyMGZvciUyMHRoZW1zZWx2ZXMuJTIwJTBBJTBBSG93ZXZlciUyQyUyMHdoYXQlMjBpZiUyMHRoZSUyMFBCQSUyMG5lZWRzJTIwdG8lMjBkbyUyMHN0dWZmJTIwd2hpY2glMjBpcyUyMG1vcmUlMjBjb21wbGV4JTIwdGhhbiUyMGp1c3QlMjBydW5uaW5nJTIwYSUyMGZldyUyMGNvbW1hbmRzJTNGJTIwSW4lMjB0aGF0JTIwY2FzZS4uLiUyMA==",
-    "diff": "ZGlmZiUyMC0tZ2l0JTIwYSUyRm1vbmtleSUyRmNvbW1vbiUyRmRhdGElMkZwb3N0X2JyZWFjaF9jb25zdHMucHklMjBiJTJGbW9ua2V5JTJGY29tbW9uJTJGZGF0YSUyRnBvc3RfYnJlYWNoX2NvbnN0cy5weSUwQWluZGV4JTIwYzNiYmE5OTUuLjAzMWY5YWQwJTIwMTAwNjQ0JTBBLS0tJTIwYSUyRm1vbmtleSUyRmNvbW1vbiUyRmRhdGElMkZwb3N0X2JyZWFjaF9jb25zdHMucHklMEElMkIlMkIlMkIlMjBiJTJGbW9ua2V5JTJGY29tbW9uJTJGZGF0YSUyRnBvc3RfYnJlYWNoX2NvbnN0cy5weSUwQSU0MCU0MCUyMC0xJTJDNSUyMCUyQjElMkM1JTIwJTQwJTQwJTBBJTIwUE9TVF9CUkVBQ0hfQ09NTVVOSUNBVEVfQVNfTkVXX1VTRVIlMjAlM0QlMjAlMjJDb21tdW5pY2F0ZSUyMGFzJTIwbmV3JTIwdXNlciUyMiUwQS1QT1NUX0JSRUFDSF9CQUNLRE9PUl9VU0VSJTIwJTNEJTIwJTIyQmFja2Rvb3IlMjB1c2VyJTIyJTBBJTJCJTIzJTIwU3dpbW1lciUzQSUyMFBVVCUyMFRIRSUyME5FVyUyMENPTlNUJTIwSEVSRSElMEElMjBQT1NUX0JSRUFDSF9GSUxFX0VYRUNVVElPTiUyMCUzRCUyMCUyMkZpbGUlMjBleGVjdXRpb24lMjIlMEElMjBQT1NUX0JSRUFDSF9TSEVMTF9TVEFSVFVQX0ZJTEVfTU9ESUZJQ0FUSU9OJTIwJTNEJTIwJTIyTW9kaWZ5JTIwc2hlbGwlMjBzdGFydHVwJTIwZmlsZSUyMiUwQSUyMFBPU1RfQlJFQUNIX0hJRERFTl9GSUxFUyUyMCUzRCUyMCUyMkhpZGUlMjBmaWxlcyUyMGFuZCUyMGRpcmVjdG9yaWVzJTIyJTBBZGlmZiUyMC0tZ2l0JTIwYSUyRm1vbmtleSUyRmluZmVjdGlvbl9tb25rZXklMkZwb3N0X2JyZWFjaCUyRmFjdGlvbnMlMkZhZGRfdXNlci5weSUyMGIlMkZtb25rZXklMkZpbmZlY3Rpb25fbW9ua2V5JTJGcG9zdF9icmVhY2glMkZhY3Rpb25zJTJGYWRkX3VzZXIucHklMEFpbmRleCUyMDU4YmU4OWExLi5kODQ3NmE5NyUyMDEwMDY0NCUwQS0tLSUyMGElMkZtb25rZXklMkZpbmZlY3Rpb25fbW9ua2V5JTJGcG9zdF9icmVhY2glMkZhY3Rpb25zJTJGYWRkX3VzZXIucHklMEElMkIlMkIlMkIlMjBiJTJGbW9ua2V5JTJGaW5mZWN0aW9uX21vbmtleSUyRnBvc3RfYnJlYWNoJTJGYWN0aW9ucyUyRmFkZF91c2VyLnB5JTBBJTQwJTQwJTIwLTElMkMxNSUyMCUyQjElMkM3JTIwJTQwJTQwJTBBLWZyb20lMjBjb21tb24uZGF0YS5wb3N0X2JyZWFjaF9jb25zdHMlMjBpbXBvcnQlMjBQT1NUX0JSRUFDSF9CQUNLRE9PUl9VU0VSJTBBLWZyb20lMjBpbmZlY3Rpb25fbW9ua2V5LmNvbmZpZyUyMGltcG9ydCUyMFdvcm1Db25maWd1cmF0aW9uJTBBJTIwZnJvbSUyMGluZmVjdGlvbl9tb25rZXkucG9zdF9icmVhY2gucGJhJTIwaW1wb3J0JTIwUEJBJTBBJTIwZnJvbSUyMGluZmVjdGlvbl9tb25rZXkudXRpbHMudXNlcnMlMjBpbXBvcnQlMjBnZXRfY29tbWFuZHNfdG9fYWRkX3VzZXIlMEElMjAlMEElMjAlMEElMjBjbGFzcyUyMEJhY2tkb29yVXNlcihQQkEpJTNBJTBBJTIwJTIwJTIwJTIwJTIwZGVmJTIwX19pbml0X18oc2VsZiklM0ElMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbGludXhfY21kcyUyQyUyMHdpbmRvd3NfY21kcyUyMCUzRCUyMGdldF9jb21tYW5kc190b19hZGRfdXNlciglMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwV29ybUNvbmZpZ3VyYXRpb24udXNlcl90b19hZGQlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwV29ybUNvbmZpZ3VyYXRpb24ucmVtb3RlX3VzZXJfcGFzcyklMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3VwZXIoQmFja2Rvb3JVc2VyJTJDJTIwc2VsZikuX19pbml0X18oJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMFBPU1RfQlJFQUNIX0JBQ0tET09SX1VTRVIlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbGludXhfY21kJTNEJyUyMCcuam9pbihsaW51eF9jbWRzKSUyQyUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB3aW5kb3dzX2NtZCUzRHdpbmRvd3NfY21kcyklMEElMkIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwYXNzJTIwJTIwJTIzJTIwU3dpbW1lciUzQSUyMEltcGwlMjBoZXJlISUwQWRpZmYlMjAtLWdpdCUyMGElMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmF0dGFjayUyRnRlY2huaXF1ZV9yZXBvcnRzJTJGVDExMzYucHklMjBiJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZhdHRhY2slMkZ0ZWNobmlxdWVfcmVwb3J0cyUyRlQxMTM2LnB5JTBBaW5kZXglMjAwODZhMWMxMy4uZGE5OWU4NmMlMjAxMDA2NDQlMEEtLS0lMjBhJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZhdHRhY2slMkZ0ZWNobmlxdWVfcmVwb3J0cyUyRlQxMTM2LnB5JTBBJTJCJTJCJTJCJTIwYiUyRm1vbmtleSUyRm1vbmtleV9pc2xhbmQlMkZjYyUyRnNlcnZpY2VzJTJGYXR0YWNrJTJGdGVjaG5pcXVlX3JlcG9ydHMlMkZUMTEzNi5weSUwQSU0MCU0MCUyMC0xJTJDNSUyMCUyQjElMkM1JTIwJTQwJTQwJTBBJTIwZnJvbSUyMGNvbW1vbi5kYXRhLnBvc3RfYnJlYWNoX2NvbnN0cyUyMGltcG9ydCUyMCglMEEtJTIwJTIwJTIwJTIwUE9TVF9CUkVBQ0hfQkFDS0RPT1JfVVNFUiUyQyUyMFBPU1RfQlJFQUNIX0NPTU1VTklDQVRFX0FTX05FV19VU0VSKSUwQSUyQiUyMCUyMCUyMCUyMFBPU1RfQlJFQUNIX0NPTU1VTklDQVRFX0FTX05FV19VU0VSKSUwQSUyMGZyb20lMjBtb25rZXlfaXNsYW5kLmNjLnNlcnZpY2VzLmF0dGFjay50ZWNobmlxdWVfcmVwb3J0cy5wYmFfdGVjaG5pcXVlJTIwaW1wb3J0JTIwJTVDJTBBJTIwJTIwJTIwJTIwJTIwUG9zdEJyZWFjaFRlY2huaXF1ZSUwQSUyMCUwQSU0MCU0MCUyMC0xMSUyQzQlMjAlMkIxMSUyQzQlMjAlNDAlNDAlMjBjbGFzcyUyMFQxMTM2KFBvc3RCcmVhY2hUZWNobmlxdWUpJTNBJTBBJTIwJTIwJTIwJTIwJTIwdW5zY2FubmVkX21zZyUyMCUzRCUyMCUyMk1vbmtleSUyMGRpZG4ndCUyMHRyeSUyMGNyZWF0aW5nJTIwYSUyMG5ldyUyMHVzZXIlMjBvbiUyMHRoZSUyMG5ldHdvcmsncyUyMHN5c3RlbXMuJTIyJTBBJTIwJTIwJTIwJTIwJTIwc2Nhbm5lZF9tc2clMjAlM0QlMjAlMjJNb25rZXklMjB0cmllZCUyMGNyZWF0aW5nJTIwYSUyMG5ldyUyMHVzZXIlMjBvbiUyMHRoZSUyMG5ldHdvcmsncyUyMHN5c3RlbXMlMkMlMjBidXQlMjBmYWlsZWQuJTIyJTBBJTIwJTIwJTIwJTIwJTIwdXNlZF9tc2clMjAlM0QlMjAlMjJNb25rZXklMjBjcmVhdGVkJTIwYSUyMG5ldyUyMHVzZXIlMjBvbiUyMHRoZSUyMG5ldHdvcmsncyUyMHN5c3RlbXMuJTIyJTBBLSUyMCUyMCUyMCUyMHBiYV9uYW1lcyUyMCUzRCUyMCU1QlBPU1RfQlJFQUNIX0JBQ0tET09SX1VTRVIlMkMlMjBQT1NUX0JSRUFDSF9DT01NVU5JQ0FURV9BU19ORVdfVVNFUiU1RCUwQSUyQiUyMCUyMCUyMCUyMHBiYV9uYW1lcyUyMCUzRCUyMCU1QlBPU1RfQlJFQUNIX0NPTU1VTklDQVRFX0FTX05FV19VU0VSJTVEJTBBZGlmZiUyMC0tZ2l0JTIwYSUyRm1vbmtleSUyRm1vbmtleV9pc2xhbmQlMkZjYyUyRnNlcnZpY2VzJTJGY29uZmlnX3NjaGVtYSUyRmRlZmluaXRpb25zJTJGcG9zdF9icmVhY2hfYWN0aW9ucy5weSUyMGIlMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmNvbmZpZ19zY2hlbWElMkZkZWZpbml0aW9ucyUyRnBvc3RfYnJlYWNoX2FjdGlvbnMucHklMEFpbmRleCUyMGYzZTJhOWJmLi4yYzRhYTY2NCUyMDEwMDY0NCUwQS0tLSUyMGElMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmNvbmZpZ19zY2hlbWElMkZkZWZpbml0aW9ucyUyRnBvc3RfYnJlYWNoX2FjdGlvbnMucHklMEElMkIlMkIlMkIlMjBiJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZjb25maWdfc2NoZW1hJTJGZGVmaW5pdGlvbnMlMkZwb3N0X2JyZWFjaF9hY3Rpb25zLnB5JTBBJTQwJTQwJTIwLTQlMkMxNSUyMCUyQjQlMkM3JTIwJTQwJTQwJTIwUE9TVF9CUkVBQ0hfQUNUSU9OUyUyMCUzRCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMm1pZ2h0JTIwZG8lMjBhZnRlciUyMGJyZWFjaGluZyUyMGElMjBuZXclMjBtYWNoaW5lLiUyMFVzZWQlMjBpbiUyMEFUVCUyNkNLJTIwYW5kJTIwWmVybyUyMHRydXN0JTIwcmVwb3J0cy4lMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjJ0eXBlJTIyJTNBJTIwJTIyc3RyaW5nJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIyYW55T2YlMjIlM0ElMjAlNUIlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdCJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnR5cGUlMjIlM0ElMjAlMjJzdHJpbmclMjIlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyZW51bSUyMiUzQSUyMCU1QiUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJCYWNrZG9vclVzZXIlMjIlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVEJTJDJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnRpdGxlJTIyJTNBJTIwJTIyQmFjayUyMGRvb3IlMjB1c2VyJTIyJTJDJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMmluZm8lMjIlM0ElMjAlMjJBdHRlbXB0cyUyMHRvJTIwY3JlYXRlJTIwYSUyMG5ldyUyMHVzZXIlMjBvbiUyMHRoZSUyMHN5c3RlbSUyMGFuZCUyMGRlbGV0ZSUyMGl0JTIwYWZ0ZXJ3YXJkcy4lMjIlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyYXR0YWNrX3RlY2huaXF1ZXMlMjIlM0ElMjAlNUIlMjJUMTEzNiUyMiU1RCUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMEElMkIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBTd2ltbWVyJTNBJTIwQWRkJTIwbmV3JTIwUEJBJTIwaGVyZSUyMHRvJTIwY29uZmlnISUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnR5cGUlMjIlM0ElMjAlMjJzdHJpbmclMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJlbnVtJTIyJTNBJTIwJTVCJTBB",
+    "dod": "You should add a new PBA to the Monkey which creates a new user on the machine.",
+    "description": "Read [our documentation about adding a new PBA](https://www.guardicore.com/infectionmonkey/docs/development/adding-post-breach-actions/).\n\nAfter that we want you to add the BackdoorUser PBA. The commands that add users for Win and Linux can be retrieved from `get_commands_to_add_user` - make sure you see how to use this function correctly. \n\nNote that the PBA should impact the T1136 MITRE technique as well! \n\n# Manual test to confirm\n\n1. Run the Monkey Island\n2. Make sure your new PBA is enabled by default in the config - for this test, disable network scanning, exploiting, and all other PBAs\n3. Run Monkey\n4. See the PBA in the security report\n5, See the PBA in the MITRE report in the relevant technique\n",
+    "summary": "Take a look at the configuration of the island again - see the \"command to run after breach\" option we offer the user? It's implemented exactly like you did right now but each user can do it for themselves. \n\nHowever, what if the PBA needs to do stuff which is more complex than just running a few commands? In that case... ",
+    "diff": "diff --git a/monkey/common/data/post_breach_consts.py b/monkey/common/data/post_breach_consts.py\nindex c3bba995..031f9ad0 100644\n--- a/monkey/common/data/post_breach_consts.py\n+++ b/monkey/common/data/post_breach_consts.py\n@@ -1,5 +1,5 @@\n POST_BREACH_COMMUNICATE_AS_NEW_USER = \"Communicate as new user\"\n-POST_BREACH_BACKDOOR_USER = \"Backdoor user\"\n+# Swimmer: PUT THE NEW CONST HERE!\n POST_BREACH_FILE_EXECUTION = \"File execution\"\n POST_BREACH_SHELL_STARTUP_FILE_MODIFICATION = \"Modify shell startup file\"\n POST_BREACH_HIDDEN_FILES = \"Hide files and directories\"\ndiff --git a/monkey/infection_monkey/post_breach/actions/add_user.py b/monkey/infection_monkey/post_breach/actions/add_user.py\nindex 58be89a1..d8476a97 100644\n--- a/monkey/infection_monkey/post_breach/actions/add_user.py\n+++ b/monkey/infection_monkey/post_breach/actions/add_user.py\n@@ -1,15 +1,7 @@\n-from common.data.post_breach_consts import POST_BREACH_BACKDOOR_USER\n-from infection_monkey.config import WormConfiguration\n from infection_monkey.post_breach.pba import PBA\n from infection_monkey.utils.users import get_commands_to_add_user\n \n \n class BackdoorUser(PBA):\n     def __init__(self):\n-        linux_cmds, windows_cmds = get_commands_to_add_user(\n+        pass  # Swimmer: Impl here!\n-            WormConfiguration.user_to_add,\n-            WormConfiguration.remote_user_pass)\n-        super(BackdoorUser, self).__init__(\n-            POST_BREACH_BACKDOOR_USER,\n-            linux_cmd=' '.join(linux_cmds),\n-            windows_cmd=windows_cmds)\ndiff --git a/monkey/monkey_island/cc/services/attack/technique_reports/T1136.py b/monkey/monkey_island/cc/services/attack/technique_reports/T1136.py\nindex 086a1c13..da99e86c 100644\n--- a/monkey/monkey_island/cc/services/attack/technique_reports/T1136.py\n+++ b/monkey/monkey_island/cc/services/attack/technique_reports/T1136.py\n@@ -1,5 +1,5 @@\n from common.data.post_breach_consts import (\n-    POST_BREACH_BACKDOOR_USER, POST_BREACH_COMMUNICATE_AS_NEW_USER)\n+    POST_BREACH_COMMUNICATE_AS_NEW_USER)\n from monkey_island.cc.services.attack.technique_reports.pba_technique import \\\n     PostBreachTechnique\n \n@@ -11,4 +11,4 @@\n     unscanned_msg = \"Monkey didn't try creating a new user on the network's systems.\"\n     scanned_msg = \"Monkey tried creating a new user on the network's systems, but failed.\"\n     used_msg = \"Monkey created a new user on the network's systems.\"\n-    pba_names = [POST_BREACH_BACKDOOR_USER, POST_BREACH_COMMUNICATE_AS_NEW_USER]\n+    pba_names = [POST_BREACH_COMMUNICATE_AS_NEW_USER]\ndiff --git a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py\nindex f3e2a9bf..2c4aa664 100644\n--- a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py\n+++ b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py\n@@ -4,16 +4,7 @@\n                    \"might do after breaching a new machine. Used in ATT&CK and Zero trust reports.\",\n     \"type\": \"string\",\n     \"anyOf\": [\n-        {\n+        # Swimmer: Add new PBA here to config!\n-            \"type\": \"string\",\n-            \"enum\": [\n-                \"BackdoorUser\"\n-            ],\n-            \"title\": \"Back door user\",\n-            \"safe\": True,\n-            \"info\": \"Attempts to create a new user on the system and delete it afterwards.\",\n-            \"attack_techniques\": [\"T1136\"]\n-        },\n         {\n             \"type\": \"string\",\n             \"enum\": [\n",
     "tests": [],
     "hints": [
         "See `ScheduleJobs` PBA for an example of a PBA which only uses shell commands.",
         "Make sure to add the PBA to the configuration as well.",
         "MITRE ATT&CK technique T1136 articulates that adversaries may create an account to maintain access to victim systems, therefore, the BackdoorUser PBA is relevant to it. Make sure to map this PBA to the MITRE ATT&CK configuration and report."
     ],
-    "files": {
+    "app_version": "0.3.2",
+    "file_version": "1.0.4",
+    "swimmPatch": {
         "monkey/common/data/post_breach_consts.py": {
-            "index": [
-                "c3bba995..031f9ad0",
-                "100644"
-            ],
-            "fileA": "monkey/common/data/post_breach_consts.py",
-            "fileB": "monkey/common/data/post_breach_consts.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 1,
-            "numLineAdditions": 1,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xJTJDNSUyMCUyQjElMkM1JTIwJTQwJTQwJTIyJTJDJTIyY2hhbmdlcyUyMiUzQSU1QiU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMFBPU1RfQlJFQUNIX0NPTU1VTklDQVRFX0FTX05FV19VU0VSJTIwJTNEJTIwJTVDJTIyQ29tbXVuaWNhdGUlMjBhcyUyMG5ldyUyMHVzZXIlNUMlMjIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExJTJDJTIyYiUyMiUzQTElN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyUE9TVF9CUkVBQ0hfQkFDS0RPT1JfVVNFUiUyMCUzRCUyMCU1QyUyMkJhY2tkb29yJTIwdXNlciU1QyUyMiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyYWRkJTIyJTJDJTIybWFyayUyMiUzQSUyMiUyQiUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjMlMjBTd2ltbWVyJTNBJTIwUFVUJTIwVEhFJTIwTkVXJTIwQ09OU1QlMjBIRVJFISUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYiUyMiUzQTIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjBQT1NUX0JSRUFDSF9GSUxFX0VYRUNVVElPTiUyMCUzRCUyMCU1QyUyMkZpbGUlMjBleGVjdXRpb24lNUMlMjIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0EzJTJDJTIyYiUyMiUzQTMlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjBQT1NUX0JSRUFDSF9TSEVMTF9TVEFSVFVQX0ZJTEVfTU9ESUZJQ0FUSU9OJTIwJTNEJTIwJTVDJTIyTW9kaWZ5JTIwc2hlbGwlMjBzdGFydHVwJTIwZmlsZSU1QyUyMiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTQlMkMlMjJiJTIyJTNBNCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMFBPU1RfQlJFQUNIX0hJRERFTl9GSUxFUyUyMCUzRCUyMCU1QyUyMkhpZGUlMjBmaWxlcyUyMGFuZCUyMGRpcmVjdG9yaWVzJTVDJTIyJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNSUyQyUyMmIlMjIlM0E1JTdEJTdEJTVEJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBJTdCJTIyc3RhcnRMaW5lJTIyJTNBMSUyQyUyMmxpbmVzQ291bnQlMjIlM0E1JTdEJTJDJTIyYiUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTElMkMlMjJsaW5lc0NvdW50JTIyJTNBNSU3RCU3RCU3RCU3RA=="
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/common/data/post_breach_consts.py b/monkey/common/data/post_breach_consts.py\nindex c3bba995..031f9ad0 100644\n--- a/monkey/common/data/post_breach_consts.py\n+++ b/monkey/common/data/post_breach_consts.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -1,5 +1,5 @@",
+                        " POST_BREACH_COMMUNICATE_AS_NEW_USER = \"Communicate as new user\"",
+                        "-POST_BREACH_BACKDOOR_USER = \"Backdoor user\"",
+                        "+# Swimmer: PUT THE NEW CONST HERE!",
+                        " POST_BREACH_FILE_EXECUTION = \"File execution\"",
+                        " POST_BREACH_SHELL_STARTUP_FILE_MODIFICATION = \"Modify shell startup file\"",
+                        " POST_BREACH_HIDDEN_FILES = \"Hide files and directories\""
+                    ]
+                }
             ]
         },
         "monkey/infection_monkey/post_breach/actions/add_user.py": {
-            "index": [
-                "58be89a1..d8476a97",
-                "100644"
-            ],
-            "fileA": "monkey/infection_monkey/post_breach/actions/add_user.py",
-            "fileB": "monkey/infection_monkey/post_breach/actions/add_user.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 9,
-            "numLineAdditions": 1,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xJTJDMTUlMjAlMkIxJTJDNyUyMCU0MCU0MCUyMiUyQyUyMmNoYW5nZXMlMjIlM0ElNUIlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyZnJvbSUyMGNvbW1vbi5kYXRhLnBvc3RfYnJlYWNoX2NvbnN0cyUyMGltcG9ydCUyMFBPU1RfQlJFQUNIX0JBQ0tET09SX1VTRVIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMmZyb20lMjBpbmZlY3Rpb25fbW9ua2V5LmNvbmZpZyUyMGltcG9ydCUyMFdvcm1Db25maWd1cmF0aW9uJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMGZyb20lMjBpbmZlY3Rpb25fbW9ua2V5LnBvc3RfYnJlYWNoLnBiYSUyMGltcG9ydCUyMFBCQSUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTMlMkMlMjJiJTIyJTNBMSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMGZyb20lMjBpbmZlY3Rpb25fbW9ua2V5LnV0aWxzLnVzZXJzJTIwaW1wb3J0JTIwZ2V0X2NvbW1hbmRzX3RvX2FkZF91c2VyJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNCUyQyUyMmIlMjIlM0EyJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNSUyQyUyMmIlMjIlM0EzJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNiUyQyUyMmIlMjIlM0E0JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwY2xhc3MlMjBCYWNrZG9vclVzZXIoUEJBKSUzQSUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTclMkMlMjJiJTIyJTNBNSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMGRlZiUyMF9faW5pdF9fKHNlbGYpJTNBJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBOCUyQyUyMmIlMjIlM0E2JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxpbnV4X2NtZHMlMkMlMjB3aW5kb3dzX2NtZHMlMjAlM0QlMjBnZXRfY29tbWFuZHNfdG9fYWRkX3VzZXIoJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBOSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBXb3JtQ29uZmlndXJhdGlvbi51c2VyX3RvX2FkZCUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTEwJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMFdvcm1Db25maWd1cmF0aW9uLnJlbW90ZV91c2VyX3Bhc3MpJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTElN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3VwZXIoQmFja2Rvb3JVc2VyJTJDJTIwc2VsZikuX19pbml0X18oJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwUE9TVF9CUkVBQ0hfQkFDS0RPT1JfVVNFUiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTEzJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxpbnV4X2NtZCUzRCclMjAnLmpvaW4obGludXhfY21kcyklMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExNCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB3aW5kb3dzX2NtZCUzRHdpbmRvd3NfY21kcyklMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExNSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJhZGQlMjIlMkMlMjJtYXJrJTIyJTNBJTIyJTJCJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhc3MlMjAlMjAlMjMlMjBTd2ltbWVyJTNBJTIwSW1wbCUyMGhlcmUhJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJiJTIyJTNBNyU3RCU3RCU1RCUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTElMkMlMjJsaW5lc0NvdW50JTIyJTNBMTUlN0QlMkMlMjJiJTIyJTNBJTdCJTIyc3RhcnRMaW5lJTIyJTNBMSUyQyUyMmxpbmVzQ291bnQlMjIlM0E3JTdEJTdEJTdEJTdE"
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/infection_monkey/post_breach/actions/add_user.py b/monkey/infection_monkey/post_breach/actions/add_user.py\nindex 58be89a1..d8476a97 100644\n--- a/monkey/infection_monkey/post_breach/actions/add_user.py\n+++ b/monkey/infection_monkey/post_breach/actions/add_user.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -1,15 +1,7 @@",
+                        "-from common.data.post_breach_consts import POST_BREACH_BACKDOOR_USER",
+                        "-from infection_monkey.config import WormConfiguration",
+                        " from infection_monkey.post_breach.pba import PBA",
+                        " from infection_monkey.utils.users import get_commands_to_add_user",
+                        " ",
+                        " ",
+                        " class BackdoorUser(PBA):",
+                        "     def __init__(self):",
+                        "-        linux_cmds, windows_cmds = get_commands_to_add_user(",
+                        "+        pass  # Swimmer: Impl here!",
+                        "-            WormConfiguration.user_to_add,",
+                        "-            WormConfiguration.remote_user_pass)",
+                        "-        super(BackdoorUser, self).__init__(",
+                        "-            POST_BREACH_BACKDOOR_USER,",
+                        "-            linux_cmd=' '.join(linux_cmds),",
+                        "-            windows_cmd=windows_cmds)"
+                    ]
+                }
             ]
         },
         "monkey/monkey_island/cc/services/attack/technique_reports/T1136.py": {
-            "index": [
-                "086a1c13..da99e86c",
-                "100644"
-            ],
-            "fileA": "monkey/monkey_island/cc/services/attack/technique_reports/T1136.py",
-            "fileB": "monkey/monkey_island/cc/services/attack/technique_reports/T1136.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 2,
-            "numLineAdditions": 2,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xJTJDNSUyMCUyQjElMkM1JTIwJTQwJTQwJTIyJTJDJTIyY2hhbmdlcyUyMiUzQSU1QiU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMGZyb20lMjBjb21tb24uZGF0YS5wb3N0X2JyZWFjaF9jb25zdHMlMjBpbXBvcnQlMjAoJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMSUyQyUyMmIlMjIlM0ExJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMFBPU1RfQlJFQUNIX0JBQ0tET09SX1VTRVIlMkMlMjBQT1NUX0JSRUFDSF9DT01NVU5JQ0FURV9BU19ORVdfVVNFUiklMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0EyJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmFkZCUyMiUyQyUyMm1hcmslMjIlM0ElMjIlMkIlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwUE9TVF9CUkVBQ0hfQ09NTVVOSUNBVEVfQVNfTkVXX1VTRVIpJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJiJTIyJTNBMiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMGZyb20lMjBtb25rZXlfaXNsYW5kLmNjLnNlcnZpY2VzLmF0dGFjay50ZWNobmlxdWVfcmVwb3J0cy5wYmFfdGVjaG5pcXVlJTIwaW1wb3J0JTIwJTVDJTVDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMyUyQyUyMmIlMjIlM0EzJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwUG9zdEJyZWFjaFRlY2huaXF1ZSUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTQlMkMlMjJiJTIyJTNBNCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTUlMkMlMjJiJTIyJTNBNSU3RCU3RCU1RCUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTElMkMlMjJsaW5lc0NvdW50JTIyJTNBNSU3RCUyQyUyMmIlMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0ExJTJDJTIybGluZXNDb3VudCUyMiUzQTUlN0QlN0QlN0QlN0Q=",
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xMSUyQzQlMjAlMkIxMSUyQzQlMjAlNDAlNDAlMjBjbGFzcyUyMFQxMTM2KFBvc3RCcmVhY2hUZWNobmlxdWUpJTNBJTIyJTJDJTIyY2hhbmdlcyUyMiUzQSU1QiU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMHVuc2Nhbm5lZF9tc2clMjAlM0QlMjAlNUMlMjJNb25rZXklMjBkaWRuJ3QlMjB0cnklMjBjcmVhdGluZyUyMGElMjBuZXclMjB1c2VyJTIwb24lMjB0aGUlMjBuZXR3b3JrJ3MlMjBzeXN0ZW1zLiU1QyUyMiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTExJTJDJTIyYiUyMiUzQTExJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwc2Nhbm5lZF9tc2clMjAlM0QlMjAlNUMlMjJNb25rZXklMjB0cmllZCUyMGNyZWF0aW5nJTIwYSUyMG5ldyUyMHVzZXIlMjBvbiUyMHRoZSUyMG5ldHdvcmsncyUyMHN5c3RlbXMlMkMlMjBidXQlMjBmYWlsZWQuJTVDJTIyJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTIlMkMlMjJiJTIyJTNBMTIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjB1c2VkX21zZyUyMCUzRCUyMCU1QyUyMk1vbmtleSUyMGNyZWF0ZWQlMjBhJTIwbmV3JTIwdXNlciUyMG9uJTIwdGhlJTIwbmV0d29yaydzJTIwc3lzdGVtcy4lNUMlMjIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExMyUyQyUyMmIlMjIlM0ExMyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjBwYmFfbmFtZXMlMjAlM0QlMjAlNUJQT1NUX0JSRUFDSF9CQUNLRE9PUl9VU0VSJTJDJTIwUE9TVF9CUkVBQ0hfQ09NTVVOSUNBVEVfQVNfTkVXX1VTRVIlNUQlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExNCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJhZGQlMjIlMkMlMjJtYXJrJTIyJTNBJTIyJTJCJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMHBiYV9uYW1lcyUyMCUzRCUyMCU1QlBPU1RfQlJFQUNIX0NPTU1VTklDQVRFX0FTX05FV19VU0VSJTVEJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJiJTIyJTNBMTQlN0QlN0QlNUQlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0ExMSUyQyUyMmxpbmVzQ291bnQlMjIlM0E0JTdEJTJDJTIyYiUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTExJTJDJTIybGluZXNDb3VudCUyMiUzQTQlN0QlN0QlN0QlN0Q="
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/monkey_island/cc/services/attack/technique_reports/T1136.py b/monkey/monkey_island/cc/services/attack/technique_reports/T1136.py\nindex 086a1c13..da99e86c 100644\n--- a/monkey/monkey_island/cc/services/attack/technique_reports/T1136.py\n+++ b/monkey/monkey_island/cc/services/attack/technique_reports/T1136.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -1,5 +1,5 @@",
+                        " from common.data.post_breach_consts import (",
+                        "-    POST_BREACH_BACKDOOR_USER, POST_BREACH_COMMUNICATE_AS_NEW_USER)",
+                        "+    POST_BREACH_COMMUNICATE_AS_NEW_USER)",
+                        " from monkey_island.cc.services.attack.technique_reports.pba_technique import \\",
+                        "     PostBreachTechnique",
+                        " "
+                    ]
+                },
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -11,4 +11,4 @@",
+                        "     unscanned_msg = \"Monkey didn't try creating a new user on the network's systems.\"",
+                        "     scanned_msg = \"Monkey tried creating a new user on the network's systems, but failed.\"",
+                        "     used_msg = \"Monkey created a new user on the network's systems.\"",
+                        "-    pba_names = [POST_BREACH_BACKDOOR_USER, POST_BREACH_COMMUNICATE_AS_NEW_USER]",
+                        "+    pba_names = [POST_BREACH_COMMUNICATE_AS_NEW_USER]"
+                    ]
+                }
             ]
         },
         "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py": {
-            "index": [
-                "f3e2a9bf..2c4aa664",
-                "100644"
-            ],
-            "fileA": "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py",
-            "fileB": "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 9,
-            "numLineAdditions": 1,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC00JTJDMTUlMjAlMkI0JTJDNyUyMCU0MCU0MCUyMFBPU1RfQlJFQUNIX0FDVElPTlMlMjAlM0QlMjAlN0IlMjIlMkMlMjJjaGFuZ2VzJTIyJTNBJTVCJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIybWlnaHQlMjBkbyUyMGFmdGVyJTIwYnJlYWNoaW5nJTIwYSUyMG5ldyUyMG1hY2hpbmUuJTIwVXNlZCUyMGluJTIwQVRUJTI2Q0slMjBhbmQlMjBaZXJvJTIwdHJ1c3QlMjByZXBvcnRzLiU1QyUyMiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTQlMkMlMjJiJTIyJTNBNCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCU1QyUyMnR5cGUlNUMlMjIlM0ElMjAlNUMlMjJzdHJpbmclNUMlMjIlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E1JTJDJTIyYiUyMiUzQTUlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlNUMlMjJhbnlPZiU1QyUyMiUzQSUyMCU1QiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTYlMkMlMjJiJTIyJTNBNiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E3JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMnR5cGUlNUMlMjIlM0ElMjAlNUMlMjJzdHJpbmclNUMlMjIlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E4JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMmVudW0lNUMlMjIlM0ElMjAlNUIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E5JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMkJhY2tkb29yVXNlciU1QyUyMiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTEwJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTExJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMnRpdGxlJTVDJTIyJTNBJTIwJTVDJTIyQmFjayUyMGRvb3IlMjB1c2VyJTVDJTIyJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyaW5mbyU1QyUyMiUzQSUyMCU1QyUyMkF0dGVtcHRzJTIwdG8lMjBjcmVhdGUlMjBhJTIwbmV3JTIwdXNlciUyMG9uJTIwdGhlJTIwc3lzdGVtJTIwYW5kJTIwZGVsZXRlJTIwaXQlMjBhZnRlcndhcmRzLiU1QyUyMiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTEzJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMmF0dGFja190ZWNobmlxdWVzJTVDJTIyJTNBJTIwJTVCJTVDJTIyVDExMzYlNUMlMjIlNUQlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExNCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExNSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJhZGQlMjIlMkMlMjJtYXJrJTIyJTNBJTIyJTJCJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFN3aW1tZXIlM0ElMjBBZGQlMjBuZXclMjBQQkElMjBoZXJlJTIwdG8lMjBjb25maWchJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJiJTIyJTNBNyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTE2JTJDJTIyYiUyMiUzQTglN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJ0eXBlJTVDJTIyJTNBJTIwJTVDJTIyc3RyaW5nJTVDJTIyJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTclMkMlMjJiJTIyJTNBOSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMmVudW0lNUMlMjIlM0ElMjAlNUIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExOCUyQyUyMmIlMjIlM0ExMCU3RCU3RCU1RCUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTQlMkMlMjJsaW5lc0NvdW50JTIyJTNBMTUlN0QlMkMlMjJiJTIyJTNBJTdCJTIyc3RhcnRMaW5lJTIyJTNBNCUyQyUyMmxpbmVzQ291bnQlMjIlM0E3JTdEJTdEJTdEJTdE"
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py\nindex f3e2a9bf..2c4aa664 100644\n--- a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py\n+++ b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -4,16 +4,7 @@",
+                        "                    \"might do after breaching a new machine. Used in ATT&CK and Zero trust reports.\",",
+                        "     \"type\": \"string\",",
+                        "     \"anyOf\": [",
+                        "-        {",
+                        "+        # Swimmer: Add new PBA here to config!",
+                        "-            \"type\": \"string\",",
+                        "-            \"enum\": [",
+                        "-                \"BackdoorUser\"",
+                        "-            ],",
+                        "-            \"title\": \"Back door user\",",
+                        "-            \"safe\": True,",
+                        "-            \"info\": \"Attempts to create a new user on the system and delete it afterwards.\",",
+                        "-            \"attack_techniques\": [\"T1136\"]",
+                        "-        },",
+                        "         {",
+                        "             \"type\": \"string\",",
+                        "             \"enum\": ["
+                    ]
+                }
             ]
         }
     },
-    "app_version": "0.1.90",
-    "file_version": "1.0.2"
+    "hunksOrder": [
+        "monkey/common/data/post_breach_consts.py_0",
+        "monkey/infection_monkey/post_breach/actions/add_user.py_0",
+        "monkey/monkey_island/cc/services/attack/technique_reports/T1136.py_0",
+        "monkey/monkey_island/cc/services/attack/technique_reports/T1136.py_1",
+        "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py_0"
+    ],
+    "last_commit_sha_for_swimm_patch": "9d9e8168fb2c23367b9947273aa1a041687b3e2e"
 }
\ No newline at end of file

From 6806e715f78eb55fb75c5d7b83c446613914855e Mon Sep 17 00:00:00 2001
From: Swimm <swimm@swimm.io>
Date: Thu, 28 Jan 2021 19:24:17 +0200
Subject: [PATCH 23/38] =?UTF-8?q?Swimm:=20update=20unit=20Add=20a=20new=20?=
 =?UTF-8?q?configuration=20setting=20to=20the=20Agent=20=E2=9A=99=20(id:?=
 =?UTF-8?q?=20AzD8XysWg1BBXCjCDkfq).?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .swm/AzD8XysWg1BBXCjCDkfq.swm | 114 ++++++++++++++++++++++------------
 1 file changed, 74 insertions(+), 40 deletions(-)

diff --git a/.swm/AzD8XysWg1BBXCjCDkfq.swm b/.swm/AzD8XysWg1BBXCjCDkfq.swm
index 9594d72d9..83958e466 100644
--- a/.swm/AzD8XysWg1BBXCjCDkfq.swm
+++ b/.swm/AzD8XysWg1BBXCjCDkfq.swm
@@ -1,58 +1,92 @@
 {
     "id": "AzD8XysWg1BBXCjCDkfq",
     "name": "Add a new configuration setting to the Agent âš™",
-    "dod": "TWFrZSUyMHRoZSUyMG1heCUyMHZpY3RpbSUyMG51bWJlciUyMHRoYXQlMjBNb25rZXklMjB3aWxsJTIwZmluZCUyMGJlZm9yZSUyMHN0b3BwaW5nJTIwY29uZmlndXJhYmxlJTIwYnklMjB0aGUlMjB1c2VyJTIwaW5zdGVhZCUyMG9mJTIwY29uc3RhbnQu",
-    "description": "JTIzJTIwTWFrZSUyMHNvbWV0aGluZyUyMGNvbmZpZ3VyYWJsZSUwQSUwQUluJTIwdGhpcyUyMHVuaXQlMkMlMjB5b3UlMjB3aWxsJTIwbGVhcm4lMjBob3clMjB0byUyMGFkZCUyMGElMjBjb25maWd1cmF0aW9uJTIwb3B0aW9uJTIwdG8lMjBNb25rZXklMjBhbmQlMjBob3clMjB0byUyMHVzZSUyMGl0JTIwaW4lMjB0aGUlMjBNb25rZXklMjBBZ2VudCUyMGNvZGUuJTIwJTBBJTBBISU1QmNvbXB1dGVyJTIwZmlyZSU1RChodHRwcyUzQSUyRiUyRm1lZGlhLmdpcGh5LmNvbSUyRm1lZGlhJTJGN0o0UDdjVXVyMkRsRXJpanAzJTJGZ2lwaHkuZ2lmJTIwJTIyY29tcHV0ZXIlMjBmaXJlJTIyKSUwQSUwQSUyMyUyMyUyMFdoeSUyMGlzJTIwdGhpcyUyMGltcG9ydGFudCUzRiUwQSUwQUVuYWJsaW5nJTIwdXNlcnMlMjB0byUyMGNvbmZpZ3VyZSUyMHRoZSUyME1vbmtleSdzJTIwYmVoYXZpb3VyJTIwZ2l2ZXMlMjB0aGVtJTIwYSUyMGxvdCUyMG1vcmUlMjBmcmVlZG9tJTIwaW4lMjBob3clMjB0aGV5JTIwd2FudCUyMHRvJTIwdXNlJTIwdGhlJTIwTW9ua2V5JTIwYW5kJTIwZW5hYmxlcyUyMG1vcmUlMjB1c2UlMjBjYXNlcy4lMEElMEElMjMlMjMlMjBXaGF0JTIwaXMlMjAlMjJNYXglMjB2aWN0aW1zJTIwdG8lMjBmaW5kJTIyJTNGJTBBJTBBVGhlJTIwTW9ua2V5JTIwaGFzJTIwYSUyMGZ1bmN0aW9uJTIwd2hpY2glMjBmaW5kcyUyMCUyMnZpY3RpbSUyMiUyMG1hY2hpbmVzJTIwb24lMjB0aGUlMjBuZXR3b3JrJTIwZm9yJTIwdGhlJTIwTW9ua2V5JTIwdG8lMjB0cnklMjBhbmQlMjBleHBsb2l0LiUyMEl0J3MlMjBjYWxsZWQlMjAlNjBnZXRfdmljdGltX21hY2hpbmVzJTYwLiUyMFRoaXMlMjBmdW5jdGlvbiUyMGFjY2VwdHMlMjBhbiUyMGFyZ3VtZW50JTIwd2hpY2glMjBsaW1pdHMlMjBob3clMjBtYW55JTIwbWFjaGluZXMlMjB0aGUlMjBNb25rZXklMjBzaG91bGQlMjBmaW5kLiUwQSUwQVdlJTIwd2FudCUyMHRvJTIwbWFrZSUyMHRoYXQlMjB2YWx1ZSUyMGVkaXRhYmxlJTIwYnklMjB0aGUlMjB1c2VyJTIwaW5zdGVhZCUyMG9mJTIwY29uc3RhbnQlMjBpbiUyMHRoZSUyMGNvZGUuJTBBJTBBJTIzJTIzJTIwTWFudWFsJTIwdGVzdGluZyUwQSUwQTEuJTIwQWZ0ZXIlMjB5b3UndmUlMjBwZXJmb3JtZWQlMjB0aGUlMjByZXF1aXJlZCUyMGNoYW5nZXMlMkMlMjByZWxvYWQlMjB0aGUlMjBTZXJ2ZXIlMjBhbmQlMjBjaGVjayUyMHlvdXIlMjB2YWx1ZSUyMGV4aXN0cyUyMGluJTIwdGhlJTIwSW50ZXJuYWwlMjB0YWIlMjBvZiUyMHRoZSUyMGNvbmZpZyUyMChzZWUlMjBpbWFnZSkuJTBBJTBBISU1QiU1RChodHRwcyUzQSUyRiUyRmkuaW1ndXIuY29tJTJGZTBYQXh1Vi5wbmcpJTBBJTBBMi4lMjBTZXQlMjB0aGUlMjBuZXclMjB2YWx1ZSUyMHRvJTIwMSUyQyUyMGFuZCUyMHJ1biUyME1vbmtleSUyMGxvY2FsbHklMjAoZnJvbSUyMHNvdXJjZSkuJTIwU2VlJTIwdGhhdCUyMHRoZSUyME1vbmtleSUyMG9ubHklMjBzY2FucyUyMG9uZSUyMG1hY2hpbmUu",
-    "summary": "KiUyMFdoZW4lMjBjaGFuZ2luZyUyMGNvbmZpZyUyMHNjaGVtYSUyMGJ5JTIwYWRkaW5nJTIwb3IlMjBkZWxldGluZyUyMGtleXMlMkMlMjB5b3UlMjBuZWVkJTIwdG8lMjB1cGRhdGUlMjB0aGUlMjBCbGFja2JveCUyMFRlc3QlMjBjb25maWd1cmF0aW9ucyUyMGFzJTIwd2VsbCUyMCU1QmhlcmUlNUQoaHR0cHMlM0ElMkYlMkZnaXRodWIuY29tJTJGZ3VhcmRpY29yZSUyRm1vbmtleSUyRnRyZWUlMkZkZXZlbG9wJTJGZW52cyUyRm1vbmtleV96b28lMkZibGFja2JveCUyRmlzbGFuZF9jb25maWdzKS4=",
-    "diff": "ZGlmZiUyMC0tZ2l0JTIwYSUyRm1vbmtleSUyRmluZmVjdGlvbl9tb25rZXklMkZjb25maWcucHklMjBiJTJGbW9ua2V5JTJGaW5mZWN0aW9uX21vbmtleSUyRmNvbmZpZy5weSUwQWluZGV4JTIwMWZiY2I4NzYuLjY3ZWQxOWRlJTIwMTAwNjQ0JTBBLS0tJTIwYSUyRm1vbmtleSUyRmluZmVjdGlvbl9tb25rZXklMkZjb25maWcucHklMEElMkIlMkIlMkIlMjBiJTJGbW9ua2V5JTJGaW5mZWN0aW9uX21vbmtleSUyRmNvbmZpZy5weSUwQSU0MCU0MCUyMC0xMzElMkM5JTIwJTJCMTMxJTJDNiUyMCU0MCU0MCUyMGNsYXNzJTIwQ29uZmlndXJhdGlvbihvYmplY3QpJTNBJTBBJTIwJTIwJTIwJTIwJTIwZXhwbG9pdGVyX2NsYXNzZXMlMjAlM0QlMjAlNUIlNUQlMEElMjAlMjAlMjAlMjAlMjBzeXN0ZW1faW5mb19jb2xsZWN0b3JfY2xhc3NlcyUyMCUzRCUyMCU1QiU1RCUwQSUyMCUwQS0lMjAlMjAlMjAlMjAlMjMlMjBob3clMjBtYW55JTIwdmljdGltcyUyMHRvJTIwbG9vayUyMGZvciUyMGluJTIwYSUyMHNpbmdsZSUyMHNjYW4lMjBpdGVyYXRpb24lMEEtJTIwJTIwJTIwJTIwdmljdGltc19tYXhfZmluZCUyMCUzRCUyMDEwMCUwQS0lMEElMjAlMjAlMjAlMjAlMjAlMjMlMjBob3clMjBtYW55JTIwdmljdGltcyUyMHRvJTIwZXhwbG9pdCUyMGJlZm9yZSUyMHN0b3BwaW5nJTBBJTIwJTIwJTIwJTIwJTIwdmljdGltc19tYXhfZXhwbG9pdCUyMCUzRCUyMDEwMCUwQSUyMCUwQWRpZmYlMjAtLWdpdCUyMGElMkZtb25rZXklMkZpbmZlY3Rpb25fbW9ua2V5JTJGbW9ua2V5LnB5JTIwYiUyRm1vbmtleSUyRmluZmVjdGlvbl9tb25rZXklMkZtb25rZXkucHklMEFpbmRleCUyMDQ0NGJkZTQ1Li5mZjIzZjY3MSUyMDEwMDY0NCUwQS0tLSUyMGElMkZtb25rZXklMkZpbmZlY3Rpb25fbW9ua2V5JTJGbW9ua2V5LnB5JTBBJTJCJTJCJTJCJTIwYiUyRm1vbmtleSUyRmluZmVjdGlvbl9tb25rZXklMkZtb25rZXkucHklMEElNDAlNDAlMjAtMTU4JTJDNyUyMCUyQjE1OCUyQzclMjAlNDAlNDAlMjBjbGFzcyUyMEluZmVjdGlvbk1vbmtleShvYmplY3QpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBub3QlMjBzZWxmLl9rZWVwX3J1bm5pbmclMjBvciUyMG5vdCUyMFdvcm1Db25maWd1cmF0aW9uLmFsaXZlJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYnJlYWslMEElMjAlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbWFjaGluZXMlMjAlM0QlMjBzZWxmLl9uZXR3b3JrLmdldF92aWN0aW1fbWFjaGluZXMobWF4X2ZpbmQlM0RXb3JtQ29uZmlndXJhdGlvbi52aWN0aW1zX21heF9maW5kJTJDJTBBJTJCJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbWFjaGluZXMlMjAlM0QlMjBzZWxmLl9uZXR3b3JrLmdldF92aWN0aW1fbWFjaGluZXMobWF4X2ZpbmQlM0QxMDAlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdG9wX2NhbGxiYWNrJTNEQ29udHJvbENsaWVudC5jaGVja19mb3Jfc3RvcCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpc19lbXB0eSUyMCUzRCUyMFRydWUlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmb3IlMjBtYWNoaW5lJTIwaW4lMjBtYWNoaW5lcyUzQSUwQWRpZmYlMjAtLWdpdCUyMGElMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmNvbmZpZ19zY2hlbWElMkZpbnRlcm5hbC5weSUyMGIlMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmNvbmZpZ19zY2hlbWElMkZpbnRlcm5hbC5weSUwQWluZGV4JTIwYmRiYWUyNDYuLmQ2MDQyZDM1JTIwMTAwNjQ0JTBBLS0tJTIwYSUyRm1vbmtleSUyRm1vbmtleV9pc2xhbmQlMkZjYyUyRnNlcnZpY2VzJTJGY29uZmlnX3NjaGVtYSUyRmludGVybmFsLnB5JTBBJTJCJTJCJTJCJTIwYiUyRm1vbmtleSUyRm1vbmtleV9pc2xhbmQlMkZjYyUyRnNlcnZpY2VzJTJGY29uZmlnX3NjaGVtYSUyRmludGVybmFsLnB5JTBBJTQwJTQwJTIwLTQwJTJDMTIlMjAlMkI0MCUyQzYlMjAlNDAlNDAlMjBJTlRFUk5BTCUyMCUzRCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnRpdGxlJTIyJTNBJTIwJTIyTW9ua2V5JTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIydHlwZSUyMiUzQSUyMCUyMm9iamVjdCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnByb3BlcnRpZXMlMjIlM0ElMjAlN0IlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIydmljdGltc19tYXhfZmluZCUyMiUzQSUyMCU3QiUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJ0aXRsZSUyMiUzQSUyMCUyMk1heCUyMHZpY3RpbXMlMjB0byUyMGZpbmQlMjIlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIydHlwZSUyMiUzQSUyMCUyMmludGVnZXIlMjIlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyZGVmYXVsdCUyMiUzQSUyMDEwMCUyQyUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJkZXNjcmlwdGlvbiUyMiUzQSUyMCUyMkRldGVybWluZXMlMjB0aGUlMjBtYXhpbXVtJTIwbnVtYmVyJTIwb2YlMjBtYWNoaW5lcyUyMHRoZSUyMG1vbmtleSUyMGlzJTIwYWxsb3dlZCUyMHRvJTIwc2NhbiUyMiUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJ2aWN0aW1zX21heF9leHBsb2l0JTIyJTNBJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIydGl0bGUlMjIlM0ElMjAlMjJNYXglMjB2aWN0aW1zJTIwdG8lMjBleHBsb2l0JTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIydHlwZSUyMiUzQSUyMCUyMmludGVnZXIlMjIlMkMlMEE=",
+    "dod": "Make the max victim number that Monkey will find before stopping configurable by the user instead of constant.",
+    "description": "# Make something configurable\n\nIn this unit, you will learn how to add a configuration option to Monkey and how to use it in the Monkey Agent code. \n\n![computer fire](https://media.giphy.com/media/7J4P7cUur2DlErijp3/giphy.gif \"computer fire\")\n\n## Why is this important?\n\nEnabling users to configure the Monkey's behaviour gives them a lot more freedom in how they want to use the Monkey and enables more use cases.\n\n## What is \"Max victims to find\"?\n\nThe Monkey has a function which finds \"victim\" machines on the network for the Monkey to try and exploit. It's called `get_victim_machines`. This function accepts an argument which limits how many machines the Monkey should find.\n\nWe want to make that value editable by the user instead of constant in the code.\n\n## Manual testing\n\n1. After you've performed the required changes, reload the Server and check your value exists in the Internal tab of the config (see image).\n\n![](https://i.imgur.com/e0XAxuV.png)\n\n2. Set the new value to 1, and run Monkey locally (from source). See that the Monkey only scans one machine.",
+    "summary": "* When changing config schema by adding or deleting keys, you need to update the Blackbox Test configurations as well [here](https://github.com/guardicore/monkey/tree/develop/envs/monkey_zoo/blackbox/island_configs).",
+    "hunksOrder": [
+        "monkey/infection_monkey/config.py_0",
+        "monkey/infection_monkey/monkey.py_0",
+        "monkey/monkey_island/cc/services/config_schema/internal.py_0"
+    ],
     "tests": [],
     "hints": [
         "Look for `victims_max_exploit` - it's rather similar."
     ],
-    "files": {
+    "play_mode": "all",
+    "swimmPatch": {
         "monkey/infection_monkey/config.py": {
-            "index": [
-                "1fbcb876..67ed19de",
-                "100644"
-            ],
-            "fileA": "monkey/infection_monkey/config.py",
-            "fileB": "monkey/infection_monkey/config.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 3,
-            "numLineAdditions": 0,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xMzElMkM5JTIwJTJCMTMxJTJDNiUyMCU0MCU0MCUyMGNsYXNzJTIwQ29uZmlndXJhdGlvbihvYmplY3QpJTNBJTIyJTJDJTIyY2hhbmdlcyUyMiUzQSU1QiU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMGV4cGxvaXRlcl9jbGFzc2VzJTIwJTNEJTIwJTVCJTVEJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTMxJTJDJTIyYiUyMiUzQTEzMSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMHN5c3RlbV9pbmZvX2NvbGxlY3Rvcl9jbGFzc2VzJTIwJTNEJTIwJTVCJTVEJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTMyJTJDJTIyYiUyMiUzQTEzMiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTEzMyUyQyUyMmIlMjIlM0ExMzMlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIzJTIwaG93JTIwbWFueSUyMHZpY3RpbXMlMjB0byUyMGxvb2slMjBmb3IlMjBpbiUyMGElMjBzaW5nbGUlMjBzY2FuJTIwaXRlcmF0aW9uJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTM0JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMHZpY3RpbXNfbWF4X2ZpbmQlMjAlM0QlMjAxMDAlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExMzUlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTM2JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIzJTIwaG93JTIwbWFueSUyMHZpY3RpbXMlMjB0byUyMGV4cGxvaXQlMjBiZWZvcmUlMjBzdG9wcGluZyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTEzNyUyQyUyMmIlMjIlM0ExMzQlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjB2aWN0aW1zX21heF9leHBsb2l0JTIwJTNEJTIwMTAwJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTM4JTJDJTIyYiUyMiUzQTEzNSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTEzOSUyQyUyMmIlMjIlM0ExMzYlN0QlN0QlNUQlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0ExMzElMkMlMjJsaW5lc0NvdW50JTIyJTNBOSU3RCUyQyUyMmIlMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0ExMzElMkMlMjJsaW5lc0NvdW50JTIyJTNBNiU3RCU3RCU3RCU3RA=="
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/infection_monkey/config.py b/monkey/infection_monkey/config.py\nindex 1fbcb876..67ed19de 100644\n--- a/monkey/infection_monkey/config.py\n+++ b/monkey/infection_monkey/config.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -131,8 +131,6 @@",
+                        "     exploiter_classes = []\r",
+                        "     system_info_collector_classes = []\r",
+                        " \r",
+                        "-    # how many victims to look for in a single scan iteration\r",
+                        "-    victims_max_find = 100\r",
+                        " \r",
+                        "     # how many victims to exploit before stopping\r",
+                        "     victims_max_exploit = 100\r"
+                    ]
+                }
             ]
         },
         "monkey/infection_monkey/monkey.py": {
-            "index": [
-                "444bde45..ff23f671",
-                "100644"
-            ],
-            "fileA": "monkey/infection_monkey/monkey.py",
-            "fileB": "monkey/infection_monkey/monkey.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 1,
-            "numLineAdditions": 1,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xNTglMkM3JTIwJTJCMTU4JTJDNyUyMCU0MCU0MCUyMGNsYXNzJTIwSW5mZWN0aW9uTW9ua2V5KG9iamVjdCklM0ElMjIlMkMlMjJjaGFuZ2VzJTIyJTNBJTVCJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBub3QlMjBzZWxmLl9rZWVwX3J1bm5pbmclMjBvciUyMG5vdCUyMFdvcm1Db25maWd1cmF0aW9uLmFsaXZlJTNBJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTU4JTJDJTIyYiUyMiUzQTE1OCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGJyZWFrJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTU5JTJDJTIyYiUyMiUzQTE1OSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTE2MCUyQyUyMmIlMjIlM0ExNjAlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbWFjaGluZXMlMjAlM0QlMjBzZWxmLl9uZXR3b3JrLmdldF92aWN0aW1fbWFjaGluZXMobWF4X2ZpbmQlM0RXb3JtQ29uZmlndXJhdGlvbi52aWN0aW1zX21heF9maW5kJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTYxJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmFkZCUyMiUyQyUyMm1hcmslMjIlM0ElMjIlMkIlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbWFjaGluZXMlMjAlM0QlMjBzZWxmLl9uZXR3b3JrLmdldF92aWN0aW1fbWFjaGluZXMobWF4X2ZpbmQlM0QxMDAlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmIlMjIlM0ExNjElN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdG9wX2NhbGxiYWNrJTNEQ29udHJvbENsaWVudC5jaGVja19mb3Jfc3RvcCklMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExNjIlMkMlMjJiJTIyJTNBMTYyJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaXNfZW1wdHklMjAlM0QlMjBUcnVlJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTYzJTJDJTIyYiUyMiUzQTE2MyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZvciUyMG1hY2hpbmUlMjBpbiUyMG1hY2hpbmVzJTNBJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTY0JTJDJTIyYiUyMiUzQTE2NCU3RCU3RCU1RCUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTE1OCUyQyUyMmxpbmVzQ291bnQlMjIlM0E3JTdEJTJDJTIyYiUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTE1OCUyQyUyMmxpbmVzQ291bnQlMjIlM0E3JTdEJTdEJTdEJTdE"
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/infection_monkey/monkey.py b/monkey/infection_monkey/monkey.py\nindex 444bde45..ff23f671 100644\n--- a/monkey/infection_monkey/monkey.py\n+++ b/monkey/infection_monkey/monkey.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -159,8 +159,6 @@",
+                        "                 if not self._keep_running or not WormConfiguration.alive:\r",
+                        "                     break\r",
+                        " \r",
+                        "-                machines = self._network.get_victim_machines(max_find=WormConfiguration.victims_max_find,\r",
+                        "-                                                             stop_callback=ControlClient.check_for_stop)\r",
+                        "                 is_empty = True\r",
+                        "                 for machine in machines:\r",
+                        "                     if ControlClient.check_for_stop():\r"
+                    ]
+                }
             ]
         },
         "monkey/monkey_island/cc/services/config_schema/internal.py": {
-            "index": [
-                "bdbae246..d6042d35",
-                "100644"
-            ],
-            "fileA": "monkey/monkey_island/cc/services/config_schema/internal.py",
-            "fileB": "monkey/monkey_island/cc/services/config_schema/internal.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 6,
-            "numLineAdditions": 0,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC00MCUyQzEyJTIwJTJCNDAlMkM2JTIwJTQwJTQwJTIwSU5URVJOQUwlMjAlM0QlMjAlN0IlMjIlMkMlMjJjaGFuZ2VzJTIyJTNBJTVCJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIydGl0bGUlNUMlMjIlM0ElMjAlNUMlMjJNb25rZXklNUMlMjIlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0MCUyQyUyMmIlMjIlM0E0MCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMnR5cGUlNUMlMjIlM0ElMjAlNUMlMjJvYmplY3QlNUMlMjIlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0MSUyQyUyMmIlMjIlM0E0MSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMnByb3BlcnRpZXMlNUMlMjIlM0ElMjAlN0IlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0MiUyQyUyMmIlMjIlM0E0MiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJ2aWN0aW1zX21heF9maW5kJTVDJTIyJTNBJTIwJTdCJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNDMlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIydGl0bGUlNUMlMjIlM0ElMjAlNUMlMjJNYXglMjB2aWN0aW1zJTIwdG8lMjBmaW5kJTVDJTIyJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNDQlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIydHlwZSU1QyUyMiUzQSUyMCU1QyUyMmludGVnZXIlNUMlMjIlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0NSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJkZWZhdWx0JTVDJTIyJTNBJTIwMTAwJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNDYlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyZGVzY3JpcHRpb24lNUMlMjIlM0ElMjAlNUMlMjJEZXRlcm1pbmVzJTIwdGhlJTIwbWF4aW11bSUyMG51bWJlciUyMG9mJTIwbWFjaGluZXMlMjB0aGUlMjBtb25rZXklMjBpcyUyMGFsbG93ZWQlMjB0byUyMHNjYW4lNUMlMjIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0NyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0OCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMnZpY3RpbXNfbWF4X2V4cGxvaXQlNUMlMjIlM0ElMjAlN0IlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0OSUyQyUyMmIlMjIlM0E0MyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMnRpdGxlJTVDJTIyJTNBJTIwJTVDJTIyTWF4JTIwdmljdGltcyUyMHRvJTIwZXhwbG9pdCU1QyUyMiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTUwJTJDJTIyYiUyMiUzQTQ0JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIydHlwZSU1QyUyMiUzQSUyMCU1QyUyMmludGVnZXIlNUMlMjIlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E1MSUyQyUyMmIlMjIlM0E0NSU3RCU3RCU1RCUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTQwJTJDJTIybGluZXNDb3VudCUyMiUzQTEyJTdEJTJDJTIyYiUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTQwJTJDJTIybGluZXNDb3VudCUyMiUzQTYlN0QlN0QlN0QlN0Q="
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/monkey_island/cc/services/config_schema/internal.py b/monkey/monkey_island/cc/services/config_schema/internal.py\nindex bdbae246..d6042d35 100644\n--- a/monkey/monkey_island/cc/services/config_schema/internal.py\n+++ b/monkey/monkey_island/cc/services/config_schema/internal.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -40,12 +40,6 @@",
+                        "             \"title\": \"Monkey\",\r",
+                        "             \"type\": \"object\",\r",
+                        "             \"properties\": {\r",
+                        "-                \"victims_max_find\": {\r",
+                        "-                    \"title\": \"Max victims to find\",\r",
+                        "-                    \"type\": \"integer\",\r",
+                        "-                    \"default\": 100,\r",
+                        "-                    \"description\": \"Determines the maximum number of machines the monkey is allowed to scan\"\r",
+                        "-                },\r",
+                        "                 \"victims_max_exploit\": {\r",
+                        "                     \"title\": \"Max victims to exploit\",\r",
+                        "                     \"type\": \"integer\",\r"
+                    ]
+                }
             ]
         }
     },
-    "app_version": "0.1.80",
-    "file_version": "1.0.2"
+    "app_version": "0.3.5-1",
+    "file_version": "1.0.4",
+    "last_commit_sha_for_swimm_patch": "17ee823b086f0b027612e2d1864930d2c5593c3e"
 }
\ No newline at end of file

From 3daedd7a41b97f8395f382cf9f639e779fb451ce Mon Sep 17 00:00:00 2001
From: Swimm <swimm@swimm.io>
Date: Thu, 28 Jan 2021 19:26:08 +0200
Subject: [PATCH 24/38] Swimm: update unit Add details about your new PBA (id:
 JFXftJml8DpmuCPBA9rL).

---
 .swm/JFXftJml8DpmuCPBA9rL.swm | 55 +++++++++++++++++++++++------------
 1 file changed, 37 insertions(+), 18 deletions(-)

diff --git a/.swm/JFXftJml8DpmuCPBA9rL.swm b/.swm/JFXftJml8DpmuCPBA9rL.swm
index 7c186126e..154c473bd 100644
--- a/.swm/JFXftJml8DpmuCPBA9rL.swm
+++ b/.swm/JFXftJml8DpmuCPBA9rL.swm
@@ -1,30 +1,49 @@
 {
     "id": "JFXftJml8DpmuCPBA9rL",
     "name": "Add details about your new PBA",
-    "dod": "WW91JTIwc2hvdWxkJTIwYWRkJTIweW91ciUyMG5ldyUyMFBCQSdzJTIwZGV0YWlscyUyMHRvJTIwdGhlJTIwY29uZmlndXJhdGlvbi4=",
-    "description": "SW4lMjBvcmRlciUyMHRvJTIwbWFrZSUyMHN1cmUlMjB0aGF0JTIwdGhlJTIwbmV3JTIwJTYwU2NoZWR1bGVKb2JzJTYwJTIwUEJBJTIwaXMlMjBzaG93biUyMGluJTIwdGhlJTIwY29uZmlndXJhdGlvbiUyMG9uJTIwdGhlJTIwTW9ua2V5JTIwSXNsYW5kJTJDJTIweW91JTIwbmVlZCUyMHRvJTIwYWRkJTIwaXRzJTIwZGV0YWlscyUyMHRvJTIwdGhlJTIwY29uZmlndXJhdGlvbiUyMGZpbGUocykuJTIwJTNDYnIlM0UlM0NiciUzRSUwQSUwQVNpbmNlJTIwdGhpcyUyMHBhcnRpY3VsYXIlMjBQQkElMjBpcyUyMHJlbGF0ZWQlMjB0byUyMHRoZSUyME1JVFJFJTIwdGVjaG5pcXVlcyUyMCU1QlQxMTY4JTVEKGh0dHBzJTNBJTJGJTJGYXR0YWNrLm1pdHJlLm9yZyUyRnRlY2huaXF1ZXMlMkZUMTE2OCklMjBhbmQlMjAlNUJUMTA1MyU1RChodHRwcyUzQSUyRiUyRmF0dGFjay5taXRyZS5vcmclMkZ0ZWNobmlxdWVzJTJGVDEwNTMpJTJDJTIwbWFrZSUyMHN1cmUlMjB0byUyMGxpbmslMjB0aGUlMjBQQkElMjB3aXRoJTIwdGhlc2UlMjB0ZWNobmlxdWVzJTIwaW4lMjB0aGUlMjBjb25maWd1cmF0aW9uJTIwYXMlMjB3ZWxsLiUyMCUzQ2JyJTNFJTNDYnIlM0UlMEElMEFFYWNoJTIwcGFydCUyMG9mJTIwdGhlJTIwY29uZmlndXJhdGlvbiUyMGhhcyUyMGFuJTIwaW1wb3J0YW50JTIwcm9sZSUyMCUyMCUwQS0lMjAqZW51bSolMjAlRTIlODAlOTQlMjBjb250YWlucyUyMHRoZSUyMHJlbGV2YW50JTIwUEJBJ3MlMjBjbGFzcyUyMG5hbWUocyklMEEtJTIwKnRpdGxlKiUyMCVFMiU4MCU5NCUyMGhvbGRzJTIwdGhlJTIwbmFtZSUyMG9mJTIwdGhlJTIwUEJBJTIwd2hpY2glMjBpcyUyMGRpc3BsYXllZCUyMGluJTIwdGhlJTIwY29uZmlndXJhdGlvbiUyMG9uJTIwdGhlJTIwTW9ua2V5JTIwSXNsYW5kJTBBLSUyMCppbmZvKiUyMCVFMiU4MCU5NCUyMGNvbnNpc3RzJTIwb2YlMjBhbiUyMGVsYWJvcmF0aW9uJTIwb24lMjB0aGUlMjBQQkEncyUyMHdvcmtpbmclMjB3aGljaCUyMGlzJTIwZGlzcGxheWVkJTIwaW4lMjB0aGUlMjBjb25maWd1cmF0aW9uJTIwb24lMjB0aGUlMjBNb25rZXklMjBJc2xhbmQlMEEtJTIwKmF0dGFja190ZWNobmlxdWVzKiUyMCVFMiU4MCU5NCUyMGhhcyUyMHRoZSUyMElEcyUyMG9mJTIwdGhlJTIwTUlUUkUlMjB0ZWNobmlxdWVzJTIwYXNzb2NpYXRlZCUyMHdpdGglMjB0aGUlMjBQQkElMEElMEElMjMlMjMlMjBNYW51YWwlMjB0ZXN0JTIwJTIwJTBBT25jZSUyMHlvdSUyMHRoaW5rJTIweW91J3JlJTIwZG9uZS4uLiUwQS0lMjBSdW4lMjB0aGUlMjBNb25rZXklMjBJc2xhbmQlMEEtJTIwWW91JTIwc2hvdWxkJTIwYmUlMjBhYmxlJTIwdG8lMjBzZWUlMjB5b3VyJTIwbmV3JTIwUEJBJTIwdW5kZXIlMjB0aGUlMjAlMjJNb25rZXklMjIlMjB0YWIlMjBpbiUyMHRoZSUyMGNvbmZpZ3VyYXRpb24lMkMlMjBhbG9uZyUyMHdpdGglMjBpdHMlMjBpbmZvcm1hdGlvbiUyMHdoZW4lMjB5b3UlMjBjbGljayUyMG9uJTIwaXQlMEEtJTIwRnVydGhlciUyQyUyMHdoZW4lMjB5b3UlMjBlbmFibGUlMkZkaXNhYmxlJTIwdGhlJTIwYXNzb2NpYXRlZCUyME1JVFJFJTIwdGVjaG5pcXVlcyUyMHVuZGVyJTIwdGhlJTIwQVRUJTI2Q0slMjB0YWIlMjBpbiUyMHRoZSUyMGNvbmZpZ3VyYXRpb24lMkMlMjB0aGUlMjBQQkElMjBzaG91bGQlMjBhbHNvJTIwYmUlMjBlbmFibGVkJTJGZGlzYWJsZWQlMEElMEElM0NpbWclMjBzcmMlM0QlMjJodHRwcyUzQSUyRiUyRmkuaW1ndXIuY29tJTJGYTVWU2tMNS5naWYlMjIlMjBoZWlnaHQlM0Q0MDAlM0U=",
-    "summary": "LSUyMFRoZSUyMFBCQSUyMGRldGFpbHMlMjBpbiUyMHRoaXMlMjBmaWxlJTIwYXJlJTIwcmVmbGVjdGVkJTIwb24lMjB0aGUlMjBNb25rZXklMjBJc2xhbmQlMjBpbiUyMHRoZSUyMFBCQSUyMGNvbmZpZ3VyYXRpb24uJTBBLSUyMFBCQXMlMjBhcmUlMjBhbHNvJTIwbGlua2VkJTIwdG8lMjB0aGUlMjByZWxldmFudCUyME1JVFJFJTIwdGVjaG5pcXVlcyUyMGluJTIwdGhpcyUyMGZpbGUlMkMlMjB3aG9zZSUyMHJlc3VsdHMlMjBjYW4lMjB0aGVuJTIwYmUlMjBzZWVuJTIwaW4lMjB0aGUlMjBNSVRSRSUyMEFUVCUyNkNLJTIwcmVwb3J0JTIwb24lMjB0aGUlMjBNb25rZXklMjBJc2xhbmQu",
-    "diff": "ZGlmZiUyMC0tZ2l0JTIwYSUyRm1vbmtleSUyRm1vbmtleV9pc2xhbmQlMkZjYyUyRnNlcnZpY2VzJTJGY29uZmlnX3NjaGVtYSUyRmRlZmluaXRpb25zJTJGcG9zdF9icmVhY2hfYWN0aW9ucy5weSUyMGIlMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmNvbmZpZ19zY2hlbWElMkZkZWZpbml0aW9ucyUyRnBvc3RfYnJlYWNoX2FjdGlvbnMucHklMEFpbmRleCUyMGYxZmUwZjZmLi5jY2UzN2IyNCUyMDEwMDY0NCUwQS0tLSUyMGElMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmNvbmZpZ19zY2hlbWElMkZkZWZpbml0aW9ucyUyRnBvc3RfYnJlYWNoX2FjdGlvbnMucHklMEElMkIlMkIlMkIlMjBiJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZjb25maWdfc2NoZW1hJTJGZGVmaW5pdGlvbnMlMkZwb3N0X2JyZWFjaF9hY3Rpb25zLnB5JTBBJTQwJTQwJTIwLTYyJTJDMTUlMjAlMkI2MiUyQzclMjAlNDAlNDAlMjBQT1NUX0JSRUFDSF9BQ1RJT05TJTIwJTNEJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyUmVtb3ZlcyUyMHRoZSUyMGZpbGUlMjBhZnRlcndhcmRzLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMmF0dGFja190ZWNobmlxdWVzJTIyJTNBJTIwJTVCJTIyVDExNjYlMjIlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdCJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnR5cGUlMjIlM0ElMjAlMjJzdHJpbmclMjIlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyZW51bSUyMiUzQSUyMCU1QiUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJTY2hlZHVsZUpvYnMlMjIlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVEJTJDJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnRpdGxlJTIyJTNBJTIwJTIySm9iJTIwc2NoZWR1bGluZyUyMiUyQyUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJpbmZvJTIyJTNBJTIwJTIyQXR0ZW1wdHMlMjB0byUyMGNyZWF0ZSUyMGElMjBzY2hlZHVsZWQlMjBqb2IlMjBvbiUyMHRoZSUyMHN5c3RlbSUyMGFuZCUyMHJlbW92ZSUyMGl0LiUyMiUyQyUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJhdHRhY2tfdGVjaG5pcXVlcyUyMiUzQSUyMCU1QiUyMlQxMTY4JTIyJTJDJTIwJTIyVDEwNTMlMjIlNUQlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTJDJTBBJTJCJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwU3dpbW1lciUzQSUyMEFERCUyMERFVEFJTFMlMjBIRVJFISUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnR5cGUlMjIlM0ElMjAlMjJzdHJpbmclMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJlbnVtJTIyJTNBJTIwJTVCJTBB",
+    "dod": "You should add your new PBA's details to the configuration.",
+    "description": "In order to make sure that the new `ScheduleJobs` PBA is shown in the configuration on the Monkey Island, you need to add its details to the configuration file(s). <br><br>\n\nSince this particular PBA is related to the MITRE techniques [T1168](https://attack.mitre.org/techniques/T1168) and [T1053](https://attack.mitre.org/techniques/T1053), make sure to link the PBA with these techniques in the configuration as well. <br><br>\n\nEach part of the configuration has an important role  \n- *enum* — contains the relevant PBA's class name(s)\n- *title* — holds the name of the PBA which is displayed in the configuration on the Monkey Island\n- *info* — consists of an elaboration on the PBA's working which is displayed in the configuration on the Monkey Island\n- *attack_techniques* — has the IDs of the MITRE techniques associated with the PBA\n\n## Manual test  \nOnce you think you're done...\n- Run the Monkey Island\n- You should be able to see your new PBA under the \"Monkey\" tab in the configuration, along with its information when you click on it\n- Further, when you enable/disable the associated MITRE techniques under the ATT&CK tab in the configuration, the PBA should also be enabled/disabled\n\n<img src=\"https://i.imgur.com/a5VSkL5.gif\" height=400>",
+    "summary": "- The PBA details in this file are reflected on the Monkey Island in the PBA configuration.\n- PBAs are also linked to the relevant MITRE techniques in this file, whose results can then be seen in the MITRE ATT&CK report on the Monkey Island.",
+    "hunksOrder": [
+        "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py_0"
+    ],
     "tests": [],
     "hints": [
         "Have a look at the details of the other techniques."
     ],
-    "files": {
+    "play_mode": "all",
+    "swimmPatch": {
         "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py": {
-            "index": [
-                "f1fe0f6f..cce37b24",
-                "100644"
-            ],
-            "fileA": "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py",
-            "fileB": "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 9,
-            "numLineAdditions": 1,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC02MiUyQzE1JTIwJTJCNjIlMkM3JTIwJTQwJTQwJTIwUE9TVF9CUkVBQ0hfQUNUSU9OUyUyMCUzRCUyMCU3QiUyMiUyQyUyMmNoYW5nZXMlMjIlM0ElNUIlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJSZW1vdmVzJTIwdGhlJTIwZmlsZSUyMGFmdGVyd2FyZHMuJTVDJTIyJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNjIlMkMlMjJiJTIyJTNBNjIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJhdHRhY2tfdGVjaG5pcXVlcyU1QyUyMiUzQSUyMCU1QiU1QyUyMlQxMTY2JTVDJTIyJTVEJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNjMlMkMlMjJiJTIyJTNBNjMlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E2NCUyQyUyMmIlMjIlM0E2NCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E2NSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJ0eXBlJTVDJTIyJTNBJTIwJTVDJTIyc3RyaW5nJTVDJTIyJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNjYlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyZW51bSU1QyUyMiUzQSUyMCU1QiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTY3JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMlNjaGVkdWxlSm9icyU1QyUyMiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTY4JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTY5JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMnRpdGxlJTVDJTIyJTNBJTIwJTVDJTIySm9iJTIwc2NoZWR1bGluZyU1QyUyMiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTcwJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMmluZm8lNUMlMjIlM0ElMjAlNUMlMjJBdHRlbXB0cyUyMHRvJTIwY3JlYXRlJTIwYSUyMHNjaGVkdWxlZCUyMGpvYiUyMG9uJTIwdGhlJTIwc3lzdGVtJTIwYW5kJTIwcmVtb3ZlJTIwaXQuJTVDJTIyJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNzElN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyYXR0YWNrX3RlY2huaXF1ZXMlNUMlMjIlM0ElMjAlNUIlNUMlMjJUMTE2OCU1QyUyMiUyQyUyMCU1QyUyMlQxMDUzJTVDJTIyJTVEJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNzIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNzMlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyYWRkJTIyJTJDJTIybWFyayUyMiUzQSUyMiUyQiUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBTd2ltbWVyJTNBJTIwQUREJTIwREVUQUlMUyUyMEhFUkUhJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJiJTIyJTNBNjUlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E3NCUyQyUyMmIlMjIlM0E2NiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMnR5cGUlNUMlMjIlM0ElMjAlNUMlMjJzdHJpbmclNUMlMjIlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E3NSUyQyUyMmIlMjIlM0E2NyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMmVudW0lNUMlMjIlM0ElMjAlNUIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E3NiUyQyUyMmIlMjIlM0E2OCU3RCU3RCU1RCUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTYyJTJDJTIybGluZXNDb3VudCUyMiUzQTE1JTdEJTJDJTIyYiUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTYyJTJDJTIybGluZXNDb3VudCUyMiUzQTclN0QlN0QlN0QlN0Q="
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py\nindex f1fe0f6f..b231f96c 100644\n--- a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py\n+++ b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -62,15 +62,7 @@",
+                        "                     \"Removes the file afterwards.\",",
+                        "             \"attack_techniques\": [\"T1166\"]",
+                        "         },",
+                        "-        {",
+                        "+        # Swimmer: ADD DETAILS HERE!\",",
+                        "-            \"type\": \"string\",",
+                        "-            \"enum\": [",
+                        "-                \"ScheduleJobs\"",
+                        "-            ],",
+                        "-            \"title\": \"Job scheduling\",",
+                        "-            \"info\": \"Attempts to create a scheduled job on the system and remove it.\",",
+                        "-            \"attack_techniques\": [\"T1168\", \"T1053\"]",
+                        "-        },",
+                        "         {",
+                        "             \"type\": \"string\",",
+                        "             \"enum\": ["
+                    ]
+                }
             ]
         }
     },
-    "app_version": "0.1.90",
-    "file_version": "1.0.2"
+    "app_version": "0.3.5-1",
+    "file_version": "1.0.4"
 }
\ No newline at end of file

From a76eacf2405d943172d614af9fe25e97893653ad Mon Sep 17 00:00:00 2001
From: Swimm <swimm@swimm.io>
Date: Thu, 28 Jan 2021 19:29:21 +0200
Subject: [PATCH 25/38] Swimm: update unit Add a simple Post Breach action (id:
 tbxb2cGgUiJQ8Btma0fp).

---
 .swm/tbxb2cGgUiJQ8Btma0fp.swm | 167 +++++++++++++++++++++++-----------
 1 file changed, 115 insertions(+), 52 deletions(-)

diff --git a/.swm/tbxb2cGgUiJQ8Btma0fp.swm b/.swm/tbxb2cGgUiJQ8Btma0fp.swm
index e3be3fb14..406ded500 100644
--- a/.swm/tbxb2cGgUiJQ8Btma0fp.swm
+++ b/.swm/tbxb2cGgUiJQ8Btma0fp.swm
@@ -1,75 +1,138 @@
 {
     "id": "tbxb2cGgUiJQ8Btma0fp",
     "name": "Add a simple Post Breach action",
-    "dod": "WW91JTIwc2hvdWxkJTIwYWRkJTIwYSUyMG5ldyUyMFBCQSUyMHRvJTIwdGhlJTIwTW9ua2V5JTIwd2hpY2glMjBjcmVhdGVzJTIwYSUyMG5ldyUyMHVzZXIlMjBvbiUyMHRoZSUyMG1hY2hpbmUu",
-    "description": "UmVhZCUyMCU1Qm91ciUyMGRvY3VtZW50YXRpb24lMjBhYm91dCUyMGFkZGluZyUyMGElMjBuZXclMjBQQkElNUQoaHR0cHMlM0ElMkYlMkZ3d3cuZ3VhcmRpY29yZS5jb20lMkZpbmZlY3Rpb25tb25rZXklMkZkb2NzJTJGZGV2ZWxvcG1lbnQlMkZhZGRpbmctcG9zdC1icmVhY2gtYWN0aW9ucyUyRikuJTBBJTBBQWZ0ZXIlMjB0aGF0JTIwd2UlMjB3YW50JTIweW91JTIwdG8lMjBhZGQlMjB0aGUlMjBCYWNrZG9vclVzZXIlMjBQQkEuJTIwVGhlJTIwY29tbWFuZHMlMjB0aGF0JTIwYWRkJTIwdXNlcnMlMjBmb3IlMjBXaW4lMjBhbmQlMjBMaW51eCUyMGNhbiUyMGJlJTIwcmV0cmlldmVkJTIwZnJvbSUyMCU2MGdldF9jb21tYW5kc190b19hZGRfdXNlciU2MCUyMC0lMjBtYWtlJTIwc3VyZSUyMHlvdSUyMHNlZSUyMGhvdyUyMHRvJTIwdXNlJTIwdGhpcyUyMGZ1bmN0aW9uJTIwY29ycmVjdGx5LiUyMCUwQSUwQU5vdGUlMjB0aGF0JTIwdGhlJTIwUEJBJTIwc2hvdWxkJTIwaW1wYWN0JTIwdGhlJTIwVDExMzYlMjBNSVRSRSUyMHRlY2huaXF1ZSUyMGFzJTIwd2VsbCElMjAlMEElMEElMjMlMjBNYW51YWwlMjB0ZXN0JTIwdG8lMjBjb25maXJtJTBBJTBBMS4lMjBSdW4lMjB0aGUlMjBNb25rZXklMjBJc2xhbmQlMEEyLiUyME1ha2UlMjBzdXJlJTIweW91ciUyMG5ldyUyMFBCQSUyMGlzJTIwZW5hYmxlZCUyMGJ5JTIwZGVmYXVsdCUyMGluJTIwdGhlJTIwY29uZmlnJTIwLSUyMGZvciUyMHRoaXMlMjB0ZXN0JTJDJTIwZGlzYWJsZSUyMG5ldHdvcmslMjBzY2FubmluZyUyQyUyMGV4cGxvaXRpbmclMkMlMjBhbmQlMjBhbGwlMjBvdGhlciUyMFBCQXMlMEEzLiUyMFJ1biUyME1vbmtleSUwQTQuJTIwU2VlJTIwdGhlJTIwUEJBJTIwaW4lMjB0aGUlMjBzZWN1cml0eSUyMHJlcG9ydCUwQTUlMkMlMjBTZWUlMjB0aGUlMjBQQkElMjBpbiUyMHRoZSUyME1JVFJFJTIwcmVwb3J0JTIwaW4lMjB0aGUlMjByZWxldmFudCUyMHRlY2huaXF1ZSUwQQ==",
-    "summary": "VGFrZSUyMGElMjBsb29rJTIwYXQlMjB0aGUlMjBjb25maWd1cmF0aW9uJTIwb2YlMjB0aGUlMjBpc2xhbmQlMjBhZ2FpbiUyMC0lMjBzZWUlMjB0aGUlMjAlMjJjb21tYW5kJTIwdG8lMjBydW4lMjBhZnRlciUyMGJyZWFjaCUyMiUyMG9wdGlvbiUyMHdlJTIwb2ZmZXIlMjB0aGUlMjB1c2VyJTNGJTIwSXQncyUyMGltcGxlbWVudGVkJTIwZXhhY3RseSUyMGxpa2UlMjB5b3UlMjBkaWQlMjByaWdodCUyMG5vdyUyMGJ1dCUyMGVhY2glMjB1c2VyJTIwY2FuJTIwZG8lMjBpdCUyMGZvciUyMHRoZW1zZWx2ZXMuJTIwJTBBJTBBSG93ZXZlciUyQyUyMHdoYXQlMjBpZiUyMHRoZSUyMFBCQSUyMG5lZWRzJTIwdG8lMjBkbyUyMHN0dWZmJTIwd2hpY2glMjBpcyUyMG1vcmUlMjBjb21wbGV4JTIwdGhhbiUyMGp1c3QlMjBydW5uaW5nJTIwYSUyMGZldyUyMGNvbW1hbmRzJTNGJTIwSW4lMjB0aGF0JTIwY2FzZS4uLiUyMA==",
-    "diff": "ZGlmZiUyMC0tZ2l0JTIwYSUyRm1vbmtleSUyRmNvbW1vbiUyRmRhdGElMkZwb3N0X2JyZWFjaF9jb25zdHMucHklMjBiJTJGbW9ua2V5JTJGY29tbW9uJTJGZGF0YSUyRnBvc3RfYnJlYWNoX2NvbnN0cy5weSUwQWluZGV4JTIwYzNiYmE5OTUuLjAzMWY5YWQwJTIwMTAwNjQ0JTBBLS0tJTIwYSUyRm1vbmtleSUyRmNvbW1vbiUyRmRhdGElMkZwb3N0X2JyZWFjaF9jb25zdHMucHklMEElMkIlMkIlMkIlMjBiJTJGbW9ua2V5JTJGY29tbW9uJTJGZGF0YSUyRnBvc3RfYnJlYWNoX2NvbnN0cy5weSUwQSU0MCU0MCUyMC0xJTJDNSUyMCUyQjElMkM1JTIwJTQwJTQwJTBBJTIwUE9TVF9CUkVBQ0hfQ09NTVVOSUNBVEVfQVNfTkVXX1VTRVIlMjAlM0QlMjAlMjJDb21tdW5pY2F0ZSUyMGFzJTIwbmV3JTIwdXNlciUyMiUwQS1QT1NUX0JSRUFDSF9CQUNLRE9PUl9VU0VSJTIwJTNEJTIwJTIyQmFja2Rvb3IlMjB1c2VyJTIyJTBBJTJCJTIzJTIwU3dpbW1lciUzQSUyMFBVVCUyMFRIRSUyME5FVyUyMENPTlNUJTIwSEVSRSElMEElMjBQT1NUX0JSRUFDSF9GSUxFX0VYRUNVVElPTiUyMCUzRCUyMCUyMkZpbGUlMjBleGVjdXRpb24lMjIlMEElMjBQT1NUX0JSRUFDSF9TSEVMTF9TVEFSVFVQX0ZJTEVfTU9ESUZJQ0FUSU9OJTIwJTNEJTIwJTIyTW9kaWZ5JTIwc2hlbGwlMjBzdGFydHVwJTIwZmlsZSUyMiUwQSUyMFBPU1RfQlJFQUNIX0hJRERFTl9GSUxFUyUyMCUzRCUyMCUyMkhpZGUlMjBmaWxlcyUyMGFuZCUyMGRpcmVjdG9yaWVzJTIyJTBBZGlmZiUyMC0tZ2l0JTIwYSUyRm1vbmtleSUyRmluZmVjdGlvbl9tb25rZXklMkZwb3N0X2JyZWFjaCUyRmFjdGlvbnMlMkZhZGRfdXNlci5weSUyMGIlMkZtb25rZXklMkZpbmZlY3Rpb25fbW9ua2V5JTJGcG9zdF9icmVhY2glMkZhY3Rpb25zJTJGYWRkX3VzZXIucHklMEFpbmRleCUyMDU4YmU4OWExLi5kODQ3NmE5NyUyMDEwMDY0NCUwQS0tLSUyMGElMkZtb25rZXklMkZpbmZlY3Rpb25fbW9ua2V5JTJGcG9zdF9icmVhY2glMkZhY3Rpb25zJTJGYWRkX3VzZXIucHklMEElMkIlMkIlMkIlMjBiJTJGbW9ua2V5JTJGaW5mZWN0aW9uX21vbmtleSUyRnBvc3RfYnJlYWNoJTJGYWN0aW9ucyUyRmFkZF91c2VyLnB5JTBBJTQwJTQwJTIwLTElMkMxNSUyMCUyQjElMkM3JTIwJTQwJTQwJTBBLWZyb20lMjBjb21tb24uZGF0YS5wb3N0X2JyZWFjaF9jb25zdHMlMjBpbXBvcnQlMjBQT1NUX0JSRUFDSF9CQUNLRE9PUl9VU0VSJTBBLWZyb20lMjBpbmZlY3Rpb25fbW9ua2V5LmNvbmZpZyUyMGltcG9ydCUyMFdvcm1Db25maWd1cmF0aW9uJTBBJTIwZnJvbSUyMGluZmVjdGlvbl9tb25rZXkucG9zdF9icmVhY2gucGJhJTIwaW1wb3J0JTIwUEJBJTBBJTIwZnJvbSUyMGluZmVjdGlvbl9tb25rZXkudXRpbHMudXNlcnMlMjBpbXBvcnQlMjBnZXRfY29tbWFuZHNfdG9fYWRkX3VzZXIlMEElMjAlMEElMjAlMEElMjBjbGFzcyUyMEJhY2tkb29yVXNlcihQQkEpJTNBJTBBJTIwJTIwJTIwJTIwJTIwZGVmJTIwX19pbml0X18oc2VsZiklM0ElMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbGludXhfY21kcyUyQyUyMHdpbmRvd3NfY21kcyUyMCUzRCUyMGdldF9jb21tYW5kc190b19hZGRfdXNlciglMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwV29ybUNvbmZpZ3VyYXRpb24udXNlcl90b19hZGQlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwV29ybUNvbmZpZ3VyYXRpb24ucmVtb3RlX3VzZXJfcGFzcyklMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3VwZXIoQmFja2Rvb3JVc2VyJTJDJTIwc2VsZikuX19pbml0X18oJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMFBPU1RfQlJFQUNIX0JBQ0tET09SX1VTRVIlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbGludXhfY21kJTNEJyUyMCcuam9pbihsaW51eF9jbWRzKSUyQyUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB3aW5kb3dzX2NtZCUzRHdpbmRvd3NfY21kcyklMEElMkIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwYXNzJTIwJTIwJTIzJTIwU3dpbW1lciUzQSUyMEltcGwlMjBoZXJlISUwQWRpZmYlMjAtLWdpdCUyMGElMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmF0dGFjayUyRnRlY2huaXF1ZV9yZXBvcnRzJTJGVDExMzYucHklMjBiJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZhdHRhY2slMkZ0ZWNobmlxdWVfcmVwb3J0cyUyRlQxMTM2LnB5JTBBaW5kZXglMjAwODZhMWMxMy4uZGE5OWU4NmMlMjAxMDA2NDQlMEEtLS0lMjBhJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZhdHRhY2slMkZ0ZWNobmlxdWVfcmVwb3J0cyUyRlQxMTM2LnB5JTBBJTJCJTJCJTJCJTIwYiUyRm1vbmtleSUyRm1vbmtleV9pc2xhbmQlMkZjYyUyRnNlcnZpY2VzJTJGYXR0YWNrJTJGdGVjaG5pcXVlX3JlcG9ydHMlMkZUMTEzNi5weSUwQSU0MCU0MCUyMC0xJTJDNSUyMCUyQjElMkM1JTIwJTQwJTQwJTBBJTIwZnJvbSUyMGNvbW1vbi5kYXRhLnBvc3RfYnJlYWNoX2NvbnN0cyUyMGltcG9ydCUyMCglMEEtJTIwJTIwJTIwJTIwUE9TVF9CUkVBQ0hfQkFDS0RPT1JfVVNFUiUyQyUyMFBPU1RfQlJFQUNIX0NPTU1VTklDQVRFX0FTX05FV19VU0VSKSUwQSUyQiUyMCUyMCUyMCUyMFBPU1RfQlJFQUNIX0NPTU1VTklDQVRFX0FTX05FV19VU0VSKSUwQSUyMGZyb20lMjBtb25rZXlfaXNsYW5kLmNjLnNlcnZpY2VzLmF0dGFjay50ZWNobmlxdWVfcmVwb3J0cy5wYmFfdGVjaG5pcXVlJTIwaW1wb3J0JTIwJTVDJTBBJTIwJTIwJTIwJTIwJTIwUG9zdEJyZWFjaFRlY2huaXF1ZSUwQSUyMCUwQSU0MCU0MCUyMC0xMSUyQzQlMjAlMkIxMSUyQzQlMjAlNDAlNDAlMjBjbGFzcyUyMFQxMTM2KFBvc3RCcmVhY2hUZWNobmlxdWUpJTNBJTBBJTIwJTIwJTIwJTIwJTIwdW5zY2FubmVkX21zZyUyMCUzRCUyMCUyMk1vbmtleSUyMGRpZG4ndCUyMHRyeSUyMGNyZWF0aW5nJTIwYSUyMG5ldyUyMHVzZXIlMjBvbiUyMHRoZSUyMG5ldHdvcmsncyUyMHN5c3RlbXMuJTIyJTBBJTIwJTIwJTIwJTIwJTIwc2Nhbm5lZF9tc2clMjAlM0QlMjAlMjJNb25rZXklMjB0cmllZCUyMGNyZWF0aW5nJTIwYSUyMG5ldyUyMHVzZXIlMjBvbiUyMHRoZSUyMG5ldHdvcmsncyUyMHN5c3RlbXMlMkMlMjBidXQlMjBmYWlsZWQuJTIyJTBBJTIwJTIwJTIwJTIwJTIwdXNlZF9tc2clMjAlM0QlMjAlMjJNb25rZXklMjBjcmVhdGVkJTIwYSUyMG5ldyUyMHVzZXIlMjBvbiUyMHRoZSUyMG5ldHdvcmsncyUyMHN5c3RlbXMuJTIyJTBBLSUyMCUyMCUyMCUyMHBiYV9uYW1lcyUyMCUzRCUyMCU1QlBPU1RfQlJFQUNIX0JBQ0tET09SX1VTRVIlMkMlMjBQT1NUX0JSRUFDSF9DT01NVU5JQ0FURV9BU19ORVdfVVNFUiU1RCUwQSUyQiUyMCUyMCUyMCUyMHBiYV9uYW1lcyUyMCUzRCUyMCU1QlBPU1RfQlJFQUNIX0NPTU1VTklDQVRFX0FTX05FV19VU0VSJTVEJTBBZGlmZiUyMC0tZ2l0JTIwYSUyRm1vbmtleSUyRm1vbmtleV9pc2xhbmQlMkZjYyUyRnNlcnZpY2VzJTJGY29uZmlnX3NjaGVtYSUyRmRlZmluaXRpb25zJTJGcG9zdF9icmVhY2hfYWN0aW9ucy5weSUyMGIlMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmNvbmZpZ19zY2hlbWElMkZkZWZpbml0aW9ucyUyRnBvc3RfYnJlYWNoX2FjdGlvbnMucHklMEFpbmRleCUyMGYzZTJhOWJmLi4yYzRhYTY2NCUyMDEwMDY0NCUwQS0tLSUyMGElMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmNvbmZpZ19zY2hlbWElMkZkZWZpbml0aW9ucyUyRnBvc3RfYnJlYWNoX2FjdGlvbnMucHklMEElMkIlMkIlMkIlMjBiJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZjb25maWdfc2NoZW1hJTJGZGVmaW5pdGlvbnMlMkZwb3N0X2JyZWFjaF9hY3Rpb25zLnB5JTBBJTQwJTQwJTIwLTQlMkMxNSUyMCUyQjQlMkM3JTIwJTQwJTQwJTIwUE9TVF9CUkVBQ0hfQUNUSU9OUyUyMCUzRCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMm1pZ2h0JTIwZG8lMjBhZnRlciUyMGJyZWFjaGluZyUyMGElMjBuZXclMjBtYWNoaW5lLiUyMFVzZWQlMjBpbiUyMEFUVCUyNkNLJTIwYW5kJTIwWmVybyUyMHRydXN0JTIwcmVwb3J0cy4lMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjJ0eXBlJTIyJTNBJTIwJTIyc3RyaW5nJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIyYW55T2YlMjIlM0ElMjAlNUIlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdCJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnR5cGUlMjIlM0ElMjAlMjJzdHJpbmclMjIlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyZW51bSUyMiUzQSUyMCU1QiUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJCYWNrZG9vclVzZXIlMjIlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVEJTJDJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnRpdGxlJTIyJTNBJTIwJTIyQmFjayUyMGRvb3IlMjB1c2VyJTIyJTJDJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMmluZm8lMjIlM0ElMjAlMjJBdHRlbXB0cyUyMHRvJTIwY3JlYXRlJTIwYSUyMG5ldyUyMHVzZXIlMjBvbiUyMHRoZSUyMHN5c3RlbSUyMGFuZCUyMGRlbGV0ZSUyMGl0JTIwYWZ0ZXJ3YXJkcy4lMjIlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyYXR0YWNrX3RlY2huaXF1ZXMlMjIlM0ElMjAlNUIlMjJUMTEzNiUyMiU1RCUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMEElMkIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBTd2ltbWVyJTNBJTIwQWRkJTIwbmV3JTIwUEJBJTIwaGVyZSUyMHRvJTIwY29uZmlnISUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnR5cGUlMjIlM0ElMjAlMjJzdHJpbmclMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJlbnVtJTIyJTNBJTIwJTVCJTBB",
+    "dod": "You should add a new PBA to the Monkey which creates a new user on the machine.",
+    "description": "Read [our documentation about adding a new PBA](https://www.guardicore.com/infectionmonkey/docs/development/adding-post-breach-actions/).\n\nAfter that we want you to add the BackdoorUser PBA. The commands that add users for Win and Linux can be retrieved from `get_commands_to_add_user` - make sure you see how to use this function correctly. \n\nNote that the PBA should impact the T1136 MITRE technique as well! \n\n# Manual test to confirm\n\n1. Run the Monkey Island\n2. Make sure your new PBA is enabled by default in the config - for this test, disable network scanning, exploiting, and all other PBAs\n3. Run Monkey\n4. See the PBA in the security report\n5, See the PBA in the MITRE report in the relevant technique\n",
+    "summary": "Take a look at the configuration of the island again - see the \"command to run after breach\" option we offer the user? It's implemented exactly like you did right now but each user can do it for themselves. \n\nHowever, what if the PBA needs to do stuff which is more complex than just running a few commands? In that case... ",
+    "hunksOrder": [
+        "monkey/common/data/post_breach_consts.py_0",
+        "monkey/infection_monkey/post_breach/actions/add_user.py_0",
+        "monkey/monkey_island/cc/services/attack/technique_reports/T1136.py_0",
+        "monkey/monkey_island/cc/services/attack/technique_reports/T1136.py_1",
+        "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py_0"
+    ],
     "tests": [],
     "hints": [
         "See `ScheduleJobs` PBA for an example of a PBA which only uses shell commands.",
         "Make sure to add the PBA to the configuration as well.",
         "MITRE ATT&CK technique T1136 articulates that adversaries may create an account to maintain access to victim systems, therefore, the BackdoorUser PBA is relevant to it. Make sure to map this PBA to the MITRE ATT&CK configuration and report."
     ],
-    "files": {
+    "play_mode": "all",
+    "swimmPatch": {
         "monkey/common/data/post_breach_consts.py": {
-            "index": [
-                "c3bba995..031f9ad0",
-                "100644"
-            ],
-            "fileA": "monkey/common/data/post_breach_consts.py",
-            "fileB": "monkey/common/data/post_breach_consts.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 1,
-            "numLineAdditions": 1,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xJTJDNSUyMCUyQjElMkM1JTIwJTQwJTQwJTIyJTJDJTIyY2hhbmdlcyUyMiUzQSU1QiU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMFBPU1RfQlJFQUNIX0NPTU1VTklDQVRFX0FTX05FV19VU0VSJTIwJTNEJTIwJTVDJTIyQ29tbXVuaWNhdGUlMjBhcyUyMG5ldyUyMHVzZXIlNUMlMjIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExJTJDJTIyYiUyMiUzQTElN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyUE9TVF9CUkVBQ0hfQkFDS0RPT1JfVVNFUiUyMCUzRCUyMCU1QyUyMkJhY2tkb29yJTIwdXNlciU1QyUyMiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyYWRkJTIyJTJDJTIybWFyayUyMiUzQSUyMiUyQiUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjMlMjBTd2ltbWVyJTNBJTIwUFVUJTIwVEhFJTIwTkVXJTIwQ09OU1QlMjBIRVJFISUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYiUyMiUzQTIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjBQT1NUX0JSRUFDSF9GSUxFX0VYRUNVVElPTiUyMCUzRCUyMCU1QyUyMkZpbGUlMjBleGVjdXRpb24lNUMlMjIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0EzJTJDJTIyYiUyMiUzQTMlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjBQT1NUX0JSRUFDSF9TSEVMTF9TVEFSVFVQX0ZJTEVfTU9ESUZJQ0FUSU9OJTIwJTNEJTIwJTVDJTIyTW9kaWZ5JTIwc2hlbGwlMjBzdGFydHVwJTIwZmlsZSU1QyUyMiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTQlMkMlMjJiJTIyJTNBNCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMFBPU1RfQlJFQUNIX0hJRERFTl9GSUxFUyUyMCUzRCUyMCU1QyUyMkhpZGUlMjBmaWxlcyUyMGFuZCUyMGRpcmVjdG9yaWVzJTVDJTIyJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNSUyQyUyMmIlMjIlM0E1JTdEJTdEJTVEJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBJTdCJTIyc3RhcnRMaW5lJTIyJTNBMSUyQyUyMmxpbmVzQ291bnQlMjIlM0E1JTdEJTJDJTIyYiUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTElMkMlMjJsaW5lc0NvdW50JTIyJTNBNSU3RCU3RCU3RCU3RA=="
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/common/data/post_breach_consts.py b/monkey/common/data/post_breach_consts.py\nindex 25e6679c..05980288 100644\n--- a/monkey/common/data/post_breach_consts.py\n+++ b/monkey/common/data/post_breach_consts.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -1,5 +1,5 @@",
+                        " POST_BREACH_COMMUNICATE_AS_NEW_USER = \"Communicate as new user\"",
+                        "-POST_BREACH_BACKDOOR_USER = \"Backdoor user\"",
+                        "+# Swimmer: PUT THE NEW CONST HERE!",
+                        " POST_BREACH_FILE_EXECUTION = \"File execution\"",
+                        " POST_BREACH_SHELL_STARTUP_FILE_MODIFICATION = \"Modify shell startup file\"",
+                        " POST_BREACH_HIDDEN_FILES = \"Hide files and directories\""
+                    ]
+                }
             ]
         },
         "monkey/infection_monkey/post_breach/actions/add_user.py": {
-            "index": [
-                "58be89a1..d8476a97",
-                "100644"
-            ],
-            "fileA": "monkey/infection_monkey/post_breach/actions/add_user.py",
-            "fileB": "monkey/infection_monkey/post_breach/actions/add_user.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 9,
-            "numLineAdditions": 1,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xJTJDMTUlMjAlMkIxJTJDNyUyMCU0MCU0MCUyMiUyQyUyMmNoYW5nZXMlMjIlM0ElNUIlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyZnJvbSUyMGNvbW1vbi5kYXRhLnBvc3RfYnJlYWNoX2NvbnN0cyUyMGltcG9ydCUyMFBPU1RfQlJFQUNIX0JBQ0tET09SX1VTRVIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMmZyb20lMjBpbmZlY3Rpb25fbW9ua2V5LmNvbmZpZyUyMGltcG9ydCUyMFdvcm1Db25maWd1cmF0aW9uJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMGZyb20lMjBpbmZlY3Rpb25fbW9ua2V5LnBvc3RfYnJlYWNoLnBiYSUyMGltcG9ydCUyMFBCQSUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTMlMkMlMjJiJTIyJTNBMSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMGZyb20lMjBpbmZlY3Rpb25fbW9ua2V5LnV0aWxzLnVzZXJzJTIwaW1wb3J0JTIwZ2V0X2NvbW1hbmRzX3RvX2FkZF91c2VyJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNCUyQyUyMmIlMjIlM0EyJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNSUyQyUyMmIlMjIlM0EzJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNiUyQyUyMmIlMjIlM0E0JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwY2xhc3MlMjBCYWNrZG9vclVzZXIoUEJBKSUzQSUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTclMkMlMjJiJTIyJTNBNSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMGRlZiUyMF9faW5pdF9fKHNlbGYpJTNBJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBOCUyQyUyMmIlMjIlM0E2JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxpbnV4X2NtZHMlMkMlMjB3aW5kb3dzX2NtZHMlMjAlM0QlMjBnZXRfY29tbWFuZHNfdG9fYWRkX3VzZXIoJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBOSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBXb3JtQ29uZmlndXJhdGlvbi51c2VyX3RvX2FkZCUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTEwJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMFdvcm1Db25maWd1cmF0aW9uLnJlbW90ZV91c2VyX3Bhc3MpJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTElN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3VwZXIoQmFja2Rvb3JVc2VyJTJDJTIwc2VsZikuX19pbml0X18oJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwUE9TVF9CUkVBQ0hfQkFDS0RPT1JfVVNFUiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTEzJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxpbnV4X2NtZCUzRCclMjAnLmpvaW4obGludXhfY21kcyklMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExNCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB3aW5kb3dzX2NtZCUzRHdpbmRvd3NfY21kcyklMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExNSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJhZGQlMjIlMkMlMjJtYXJrJTIyJTNBJTIyJTJCJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhc3MlMjAlMjAlMjMlMjBTd2ltbWVyJTNBJTIwSW1wbCUyMGhlcmUhJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJiJTIyJTNBNyU3RCU3RCU1RCUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTElMkMlMjJsaW5lc0NvdW50JTIyJTNBMTUlN0QlMkMlMjJiJTIyJTNBJTdCJTIyc3RhcnRMaW5lJTIyJTNBMSUyQyUyMmxpbmVzQ291bnQlMjIlM0E3JTdEJTdEJTdEJTdE"
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/infection_monkey/post_breach/actions/add_user.py b/monkey/infection_monkey/post_breach/actions/add_user.py\nindex 58be89a1..d8476a97 100644\n--- a/monkey/infection_monkey/post_breach/actions/add_user.py\n+++ b/monkey/infection_monkey/post_breach/actions/add_user.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -1,15 +1,7 @@",
+                        "-from common.data.post_breach_consts import POST_BREACH_BACKDOOR_USER",
+                        "-from infection_monkey.config import WormConfiguration",
+                        " from infection_monkey.post_breach.pba import PBA",
+                        " from infection_monkey.utils.users import get_commands_to_add_user",
+                        " ",
+                        " ",
+                        " class BackdoorUser(PBA):",
+                        "     def __init__(self):",
+                        "-        linux_cmds, windows_cmds = get_commands_to_add_user(",
+                        "+        pass  # Swimmer: Impl here!",
+                        "-            WormConfiguration.user_to_add,",
+                        "-            WormConfiguration.remote_user_pass)",
+                        "-        super(BackdoorUser, self).__init__(",
+                        "-            POST_BREACH_BACKDOOR_USER,",
+                        "-            linux_cmd=' '.join(linux_cmds),",
+                        "-            windows_cmd=windows_cmds)"
+                    ]
+                }
             ]
         },
         "monkey/monkey_island/cc/services/attack/technique_reports/T1136.py": {
-            "index": [
-                "086a1c13..da99e86c",
-                "100644"
-            ],
-            "fileA": "monkey/monkey_island/cc/services/attack/technique_reports/T1136.py",
-            "fileB": "monkey/monkey_island/cc/services/attack/technique_reports/T1136.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 2,
-            "numLineAdditions": 2,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xJTJDNSUyMCUyQjElMkM1JTIwJTQwJTQwJTIyJTJDJTIyY2hhbmdlcyUyMiUzQSU1QiU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMGZyb20lMjBjb21tb24uZGF0YS5wb3N0X2JyZWFjaF9jb25zdHMlMjBpbXBvcnQlMjAoJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMSUyQyUyMmIlMjIlM0ExJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMFBPU1RfQlJFQUNIX0JBQ0tET09SX1VTRVIlMkMlMjBQT1NUX0JSRUFDSF9DT01NVU5JQ0FURV9BU19ORVdfVVNFUiklMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0EyJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmFkZCUyMiUyQyUyMm1hcmslMjIlM0ElMjIlMkIlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwUE9TVF9CUkVBQ0hfQ09NTVVOSUNBVEVfQVNfTkVXX1VTRVIpJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJiJTIyJTNBMiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMGZyb20lMjBtb25rZXlfaXNsYW5kLmNjLnNlcnZpY2VzLmF0dGFjay50ZWNobmlxdWVfcmVwb3J0cy5wYmFfdGVjaG5pcXVlJTIwaW1wb3J0JTIwJTVDJTVDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMyUyQyUyMmIlMjIlM0EzJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwUG9zdEJyZWFjaFRlY2huaXF1ZSUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTQlMkMlMjJiJTIyJTNBNCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTUlMkMlMjJiJTIyJTNBNSU3RCU3RCU1RCUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTElMkMlMjJsaW5lc0NvdW50JTIyJTNBNSU3RCUyQyUyMmIlMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0ExJTJDJTIybGluZXNDb3VudCUyMiUzQTUlN0QlN0QlN0QlN0Q=",
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xMSUyQzQlMjAlMkIxMSUyQzQlMjAlNDAlNDAlMjBjbGFzcyUyMFQxMTM2KFBvc3RCcmVhY2hUZWNobmlxdWUpJTNBJTIyJTJDJTIyY2hhbmdlcyUyMiUzQSU1QiU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMHVuc2Nhbm5lZF9tc2clMjAlM0QlMjAlNUMlMjJNb25rZXklMjBkaWRuJ3QlMjB0cnklMjBjcmVhdGluZyUyMGElMjBuZXclMjB1c2VyJTIwb24lMjB0aGUlMjBuZXR3b3JrJ3MlMjBzeXN0ZW1zLiU1QyUyMiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTExJTJDJTIyYiUyMiUzQTExJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwc2Nhbm5lZF9tc2clMjAlM0QlMjAlNUMlMjJNb25rZXklMjB0cmllZCUyMGNyZWF0aW5nJTIwYSUyMG5ldyUyMHVzZXIlMjBvbiUyMHRoZSUyMG5ldHdvcmsncyUyMHN5c3RlbXMlMkMlMjBidXQlMjBmYWlsZWQuJTVDJTIyJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTIlMkMlMjJiJTIyJTNBMTIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjB1c2VkX21zZyUyMCUzRCUyMCU1QyUyMk1vbmtleSUyMGNyZWF0ZWQlMjBhJTIwbmV3JTIwdXNlciUyMG9uJTIwdGhlJTIwbmV0d29yaydzJTIwc3lzdGVtcy4lNUMlMjIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExMyUyQyUyMmIlMjIlM0ExMyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjBwYmFfbmFtZXMlMjAlM0QlMjAlNUJQT1NUX0JSRUFDSF9CQUNLRE9PUl9VU0VSJTJDJTIwUE9TVF9CUkVBQ0hfQ09NTVVOSUNBVEVfQVNfTkVXX1VTRVIlNUQlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExNCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJhZGQlMjIlMkMlMjJtYXJrJTIyJTNBJTIyJTJCJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMHBiYV9uYW1lcyUyMCUzRCUyMCU1QlBPU1RfQlJFQUNIX0NPTU1VTklDQVRFX0FTX05FV19VU0VSJTVEJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJiJTIyJTNBMTQlN0QlN0QlNUQlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0ExMSUyQyUyMmxpbmVzQ291bnQlMjIlM0E0JTdEJTJDJTIyYiUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTExJTJDJTIybGluZXNDb3VudCUyMiUzQTQlN0QlN0QlN0QlN0Q="
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/monkey_island/cc/services/attack/technique_reports/T1136.py b/monkey/monkey_island/cc/services/attack/technique_reports/T1136.py\nindex 086a1c13..9f23bb8d 100644\n--- a/monkey/monkey_island/cc/services/attack/technique_reports/T1136.py\n+++ b/monkey/monkey_island/cc/services/attack/technique_reports/T1136.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -1,5 +1,5 @@",
+                        " from common.data.post_breach_consts import (",
+                        "-    POST_BREACH_BACKDOOR_USER, POST_BREACH_COMMUNICATE_AS_NEW_USER)",
+                        "+    POST_BREACH_BACKDOOR_USER)",
+                        " from monkey_island.cc.services.attack.technique_reports.pba_technique import \\",
+                        "     PostBreachTechnique",
+                        " "
+                    ]
+                },
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -11,4 +11,4 @@",
+                        "     unscanned_msg = \"Monkey didn't try creating a new user on the network's systems.\"",
+                        "     scanned_msg = \"Monkey tried creating a new user on the network's systems, but failed.\"",
+                        "     used_msg = \"Monkey created a new user on the network's systems.\"",
+                        "-    pba_names = [POST_BREACH_BACKDOOR_USER, POST_BREACH_COMMUNICATE_AS_NEW_USER]",
+                        "+    pba_names = [POST_BREACH_BACKDOOR_USER]"
+                    ]
+                }
             ]
         },
         "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py": {
-            "index": [
-                "f3e2a9bf..2c4aa664",
-                "100644"
-            ],
-            "fileA": "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py",
-            "fileB": "monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 9,
-            "numLineAdditions": 1,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC00JTJDMTUlMjAlMkI0JTJDNyUyMCU0MCU0MCUyMFBPU1RfQlJFQUNIX0FDVElPTlMlMjAlM0QlMjAlN0IlMjIlMkMlMjJjaGFuZ2VzJTIyJTNBJTVCJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIybWlnaHQlMjBkbyUyMGFmdGVyJTIwYnJlYWNoaW5nJTIwYSUyMG5ldyUyMG1hY2hpbmUuJTIwVXNlZCUyMGluJTIwQVRUJTI2Q0slMjBhbmQlMjBaZXJvJTIwdHJ1c3QlMjByZXBvcnRzLiU1QyUyMiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTQlMkMlMjJiJTIyJTNBNCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCU1QyUyMnR5cGUlNUMlMjIlM0ElMjAlNUMlMjJzdHJpbmclNUMlMjIlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E1JTJDJTIyYiUyMiUzQTUlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlNUMlMjJhbnlPZiU1QyUyMiUzQSUyMCU1QiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTYlMkMlMjJiJTIyJTNBNiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E3JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMnR5cGUlNUMlMjIlM0ElMjAlNUMlMjJzdHJpbmclNUMlMjIlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E4JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMmVudW0lNUMlMjIlM0ElMjAlNUIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E5JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMkJhY2tkb29yVXNlciU1QyUyMiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTEwJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTExJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMnRpdGxlJTVDJTIyJTNBJTIwJTVDJTIyQmFjayUyMGRvb3IlMjB1c2VyJTVDJTIyJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyaW5mbyU1QyUyMiUzQSUyMCU1QyUyMkF0dGVtcHRzJTIwdG8lMjBjcmVhdGUlMjBhJTIwbmV3JTIwdXNlciUyMG9uJTIwdGhlJTIwc3lzdGVtJTIwYW5kJTIwZGVsZXRlJTIwaXQlMjBhZnRlcndhcmRzLiU1QyUyMiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTEzJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMmF0dGFja190ZWNobmlxdWVzJTVDJTIyJTNBJTIwJTVCJTVDJTIyVDExMzYlNUMlMjIlNUQlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExNCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExNSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJhZGQlMjIlMkMlMjJtYXJrJTIyJTNBJTIyJTJCJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFN3aW1tZXIlM0ElMjBBZGQlMjBuZXclMjBQQkElMjBoZXJlJTIwdG8lMjBjb25maWchJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJiJTIyJTNBNyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTE2JTJDJTIyYiUyMiUzQTglN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJ0eXBlJTVDJTIyJTNBJTIwJTVDJTIyc3RyaW5nJTVDJTIyJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTclMkMlMjJiJTIyJTNBOSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMmVudW0lNUMlMjIlM0ElMjAlNUIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExOCUyQyUyMmIlMjIlM0ExMCU3RCU3RCU1RCUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTQlMkMlMjJsaW5lc0NvdW50JTIyJTNBMTUlN0QlMkMlMjJiJTIyJTNBJTdCJTIyc3RhcnRMaW5lJTIyJTNBNCUyQyUyMmxpbmVzQ291bnQlMjIlM0E3JTdEJTdEJTdEJTdE"
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py\nindex f1fe0f6f..39ebd33a 100644\n--- a/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py\n+++ b/monkey/monkey_island/cc/services/config_schema/definitions/post_breach_actions.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -4,15 +4,7 @@",
+                        "                    \"might do after breaching a new machine. Used in ATT&CK and Zero trust reports.\",",
+                        "     \"type\": \"string\",",
+                        "     \"anyOf\": [",
+                        "-        {",
+                        "+        # Swimmer: Add new PBA here to config!",
+                        "-            \"type\": \"string\",",
+                        "-            \"enum\": [",
+                        "-                \"BackdoorUser\"",
+                        "-            ],",
+                        "-            \"title\": \"Back door user\",",
+                        "-            \"info\": \"Attempts to create a new user on the system and delete it afterwards.\",",
+                        "-            \"attack_techniques\": [\"T1136\"]",
+                        "-        },",
+                        "         {",
+                        "             \"type\": \"string\",",
+                        "             \"enum\": ["
+                    ]
+                }
             ]
         }
     },
-    "app_version": "0.1.90",
-    "file_version": "1.0.2"
+    "app_version": "0.3.5-1",
+    "file_version": "1.0.4"
 }
\ No newline at end of file

From 49d37664364f2df4e0ddfce679f9a78952b78788 Mon Sep 17 00:00:00 2001
From: Swimm <swimm@swimm.io>
Date: Thu, 28 Jan 2021 19:30:48 +0200
Subject: [PATCH 26/38] =?UTF-8?q?Swimm:=20update=20unit=20Implement=20a=20?=
 =?UTF-8?q?new=20PBA=20=E2=80=94=20=20`ScheduleJobs`=20(id:=20VW4rf3AxRslf?=
 =?UTF-8?q?T7lwaug7).?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .swm/VW4rf3AxRslfT7lwaug7.swm | 53 +++++++++++++++++++++++------------
 1 file changed, 35 insertions(+), 18 deletions(-)

diff --git a/.swm/VW4rf3AxRslfT7lwaug7.swm b/.swm/VW4rf3AxRslfT7lwaug7.swm
index 65090e905..c4e8df928 100644
--- a/.swm/VW4rf3AxRslfT7lwaug7.swm
+++ b/.swm/VW4rf3AxRslfT7lwaug7.swm
@@ -1,31 +1,48 @@
 {
     "id": "VW4rf3AxRslfT7lwaug7",
     "name": "Implement a new PBA —  `ScheduleJobs`",
-    "dod": "WW91JTIwc2hvdWxkJTIwaW1wbGVtZW50JTIwYSUyMG5ldyUyMFBCQSUyMGluJTIwTW9ua2V5JTIwd2hpY2glMjBzY2hlZHVsZXMlMjBqb2JzJTIwb24lMjB0aGUlMjBtYWNoaW5lLg==",
-    "description": "WW91JTIwbmVlZCUyMHRvJTIwaW1wbGVtZW50JTIwdGhlJTIwJTYwU2NoZWR1bGVKb2JzJTYwJTIwUEJBJTIwd2hpY2glMjBjcmVhdGVzJTIwc2NoZWR1bGVkJTIwam9icyUyMG9uJTIwdGhlJTIwbWFjaGluZS4lMjAlM0NiciUzRSUzQ2JyJTNFJTBBJTNDaW1nJTIwc3JjJTNEJTIyaHR0cHMlM0ElMkYlMkZtZWRpYS5naXBoeS5jb20lMkZtZWRpYSUyRmwwSzRtVkU1YjVXWjFzY3RXJTJGZ2lwaHkuZ2lmJTIyJTIwaGVpZ2h0JTNEMTc1JTNFJTNDYnIlM0UlM0NiciUzRSUwQVRoZSUyMGNvbW1hbmRzJTIwdGhhdCUyMGFkZCUyMHNjaGVkdWxlZCUyMGpvYnMlMjBmb3IlMjBXaW5kb3dzJTIwYW5kJTIwTGludXglMjBjYW4lMjBiZSUyMHJldHJpZXZlZCUyMGZyb20lMjAlNjBnZXRfY29tbWFuZHNfdG9fc2NoZWR1bGVfam9icyU2MCUyMCVFMiU4MCU5NCUyMG1ha2UlMjBzdXJlJTIweW91JTIwdW5kZXJzdGFuZCUyMGhvdyUyMHRvJTIwdXNlJTIwdGhpcyUyMGZ1bmN0aW9uJTIwY29ycmVjdGx5LiUwQSUwQSUyMyUyMyUyME1hbnVhbCUyMHRlc3QlMjAlMjAlMEFPbmNlJTIweW91JTIwdGhpbmslMjB5b3UncmUlMjBkb25lLi4uJTBBLSUyMFJ1biUyMHRoZSUyME1vbmtleSUyMElzbGFuZCUwQS0lMjBNYWtlJTIwc3VyZSUyMHRoZSUyMCUyMkpvYiUyMHNjaGVkdWxpbmclMjIlMjBQQkElMjBpcyUyMGVuYWJsZWQlMjBpbiUyMHRoZSUyMCUyMk1vbmtleSUyMiUyMHRhYiUyMGluJTIwdGhlJTIwY29uZmlndXJhdGlvbiUyMCVFMiU4MCU5NCUyMGZvciUyMHRoaXMlMjB0ZXN0JTJDJTIwZGlzYWJsZSUyMG5ldHdvcmslMjBzY2FubmluZyUyQyUyMGV4cGxvaXRpbmclMkMlMjBhbmQlMjBhbGwlMjBvdGhlciUyMFBCQXMlMEEtJTIwUnVuJTIwdGhlJTIwTW9ua2V5JTBBLSUyME1ha2UlMjBzdXJlJTIweW91JTIwc2VlJTIwdGhlJTIwUEJBJTIwd2l0aCUyMGl0cyUyMHJlc3VsdHMlMjBpbiUyMHRoZSUyMFNlY3VyaXR5JTIwcmVwb3J0JTIwYXMlMjB3ZWxsJTIwYXMlMjBpbiUyMHRoZSUyMEFUVCUyNkNLJTIwcmVwb3J0JTIwdW5kZXIlMjB0aGUlMjByZWxldmFudCUyME1JVFJFJTIwdGVjaG5pcXVlJTBBJTBBJTNDaW1nJTIwc3JjJTNEJTIyaHR0cHMlM0ElMkYlMkZmaXJlYmFzZXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20lMkZ2MCUyRmIlMkZzd2ltbWlvLWNvbnRlbnQlMkZvJTJGcmVwb3NpdG9yaWVzJTI1MkY2TmxiOTlOdFk1RmMzYlNkOHN1SCUyNTJGaW1nJTI1MkZmMGU1M2U2Yy05ZGJlLTQxZDgtOTQ1NC0yYjU3NjFjM2Y1M2EucG5nJTNGYWx0JTNEbWVkaWElMjZ0b2tlbiUzRDIxYWE0YmI4LTdlYmUtNGRhYi1hNzM5LWM3N2UwNTkxNDRkZCUyMiUyMGhlaWdodCUzRDQwMCUzRSUwQSUzQ2JyJTNFJTNDYnIlM0UlMEElM0NpbWclMjBzcmMlM0QlMjJodHRwcyUzQSUyRiUyRmZpcmViYXNlc3RvcmFnZS5nb29nbGVhcGlzLmNvbSUyRnYwJTJGYiUyRnN3aW1taW8tY29udGVudCUyRm8lMkZyZXBvc2l0b3JpZXMlMjUyRjZObGI5OU50WTVGYzNiU2Q4c3VIJTI1MkZpbWclMjUyRjUyODM4OWEwLTM1YzgtNDM4MC1iNmUyLTM1MzA2OGVkMDFlNC5wbmclM0ZhbHQlM0RtZWRpYSUyNnRva2VuJTNEMDg3NjdmNTUtODZlMi00ZjUxLThlY2YtMTNmZDZjYzI1YWQ1JTIyJTIwaGVpZ2h0JTNENDAwJTNF",
-    "summary": "TWFueSUyMG90aGVyJTIwUEJBcyUyMGFyZSUyMGFzJTIwc2ltcGxlJTIwYXMlMjB0aGlzJTIwb25lJTJDJTIwdXNpbmclMjBzaGVsbCUyMGNvbW1hbmRzJTIwb3IlMjBzY3JpcHRzJTIwJUUyJTgwJTk0JTIwc2VlJTIwJTYwVGltZXN0b21waW5nJTYwJTIwYW5kJTIwJTYwQWNjb3VudERpc2NvdmVyeSU2MC4lMjAlM0NiciUzRSUzQ2JyJTNFJTBBJTBBSG93ZXZlciUyQyUyMGZvciUyMGxlc3MlMjBzdHJhaWdodGZvcndhcmQlMjBvbmVzJTJDJTIweW91JTIwY2FuJTIwb3ZlcnJpZGUlMjBmdW5jdGlvbnMlMjBhbmQlMjBpbXBsZW1lbnQlMjBuZXclMjBjbGFzc2VzJTIwZGVwZW5kaW5nJTIwb24lMjB3aGF0JTIwaXMlMjByZXF1aXJlZCUyMCVFMiU4MCU5NCUyMHNlZSUyMCU2MFNpZ25lZFNjcmlwdFByb3h5RXhlY3V0aW9uJTYwJTIwYW5kJTIwJTYwTW9kaWZ5U2hlbGxTdGFydHVwRmlsZXMlNjAuJTNDYnIlM0UlM0NiciUzRSUwQSUwQVRoaXMlMjBQQkElMkMlMjBhbG9uZyUyMHdpdGglMjBhbGwlMjB0aGUlMjBvdGhlciUyMFBCQXMlMkMlMjB3aWxsJTIwcnVuJTIwb24lMjBhJTIwc3lzdGVtJTIwYWZ0ZXIlMjBpdCUyMGhhcyUyMGJlZW4lMjBicmVhY2hlZC4lMjBUaGUlMjBwdXJwb3NlJTIwb2YlMjB0aGlzJTIwY29kZSUyMGlzJTIwdG8lMjB0ZXN0JTIwd2hldGhlciUyMHRhcmdldCUyMHN5c3RlbXMlMjBhbGxvdyUyMGF0dGFja2VycyUyMHRvJTIwc2NoZWR1bGUlMjBqb2JzJTJDJTIwd2hpY2glMjB0aGV5JTIwY291bGQlMjB1c2UlMjB0byUyMHJ1biUyMG1hbGljaW91cyUyMGNvZGUlMjBhdCUyMHNvbWUlMjBzcGVjaWZpZWQlMjBkYXRlJTIwYW5kJTIwdGltZS4=",
-    "diff": "ZGlmZiUyMC0tZ2l0JTIwYSUyRm1vbmtleSUyRmluZmVjdGlvbl9tb25rZXklMkZwb3N0X2JyZWFjaCUyRmFjdGlvbnMlMkZzY2hlZHVsZV9qb2JzLnB5JTIwYiUyRm1vbmtleSUyRmluZmVjdGlvbl9tb25rZXklMkZwb3N0X2JyZWFjaCUyRmFjdGlvbnMlMkZzY2hlZHVsZV9qb2JzLnB5JTBBaW5kZXglMjBkNmNkZDI3Ni4uNzlhNzcyNGQlMjAxMDA2NDQlMEEtLS0lMjBhJTJGbW9ua2V5JTJGaW5mZWN0aW9uX21vbmtleSUyRnBvc3RfYnJlYWNoJTJGYWN0aW9ucyUyRnNjaGVkdWxlX2pvYnMucHklMEElMkIlMkIlMkIlMjBiJTJGbW9ua2V5JTJGaW5mZWN0aW9uX21vbmtleSUyRnBvc3RfYnJlYWNoJTJGYWN0aW9ucyUyRnNjaGVkdWxlX2pvYnMucHklMEElNDAlNDAlMjAtMTAlMkMxMCUyMCUyQjEwJTJDNSUyMCU0MCU0MCUyMGNsYXNzJTIwU2NoZWR1bGVKb2JzKFBCQSklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjIlMjIlMjIlMEElMjAlMEElMjAlMjAlMjAlMjAlMjBkZWYlMjBfX2luaXRfXyhzZWxmKSUzQSUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsaW51eF9jbWRzJTJDJTIwd2luZG93c19jbWRzJTIwJTNEJTIwZ2V0X2NvbW1hbmRzX3RvX3NjaGVkdWxlX2pvYnMoKSUwQS0lMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3VwZXIoU2NoZWR1bGVKb2JzJTJDJTIwc2VsZikuX19pbml0X18obmFtZSUzRFBPU1RfQlJFQUNIX0pPQl9TQ0hFRFVMSU5HJTJDJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxpbnV4X2NtZCUzRCclMjAnLmpvaW4obGludXhfY21kcyklMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwd2luZG93c19jbWQlM0R3aW5kb3dzX2NtZHMpJTBBLSUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZW1vdmVfc2NoZWR1bGVkX2pvYnMoKSUwQSUyQiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhc3MlMEElMkIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBTd2ltbWVyJTNBJTIwSU1QTEVNRU5UJTIwSEVSRSElMEE=",
+    "dod": "You should implement a new PBA in Monkey which schedules jobs on the machine.",
+    "description": "You need to implement the `ScheduleJobs` PBA which creates scheduled jobs on the machine. <br><br>\n<img src=\"https://media.giphy.com/media/l0K4mVE5b5WZ1sctW/giphy.gif\" height=175><br><br>\nThe commands that add scheduled jobs for Windows and Linux can be retrieved from `get_commands_to_schedule_jobs` — make sure you understand how to use this function correctly.\n\n## Manual test  \nOnce you think you're done...\n- Run the Monkey Island\n- Make sure the \"Job scheduling\" PBA is enabled in the \"Monkey\" tab in the configuration — for this test, disable network scanning, exploiting, and all other PBAs\n- Run the Monkey\n- Make sure you see the PBA with its results in the Security report as well as in the ATT&CK report under the relevant MITRE technique\n\n<img src=\"https://firebasestorage.googleapis.com/v0/b/swimmio-content/o/repositories%2F6Nlb99NtY5Fc3bSd8suH%2Fimg%2Ff0e53e6c-9dbe-41d8-9454-2b5761c3f53a.png?alt=media&token=21aa4bb8-7ebe-4dab-a739-c77e059144dd\" height=400>\n<br><br>\n<img src=\"https://firebasestorage.googleapis.com/v0/b/swimmio-content/o/repositories%2F6Nlb99NtY5Fc3bSd8suH%2Fimg%2F528389a0-35c8-4380-b6e2-353068ed01e4.png?alt=media&token=08767f55-86e2-4f51-8ecf-13fd6cc25ad5\" height=400>",
+    "summary": "Many other PBAs are as simple as this one, using shell commands or scripts — see `Timestomping` and `AccountDiscovery`. <br><br>\n\nHowever, for less straightforward ones, you can override functions and implement new classes depending on what is required — see `SignedScriptProxyExecution` and `ModifyShellStartupFiles`.<br><br>\n\nThis PBA, along with all the other PBAs, will run on a system after it has been breached. The purpose of this code is to test whether target systems allow attackers to schedule jobs, which they could use to run malicious code at some specified date and time.",
+    "hunksOrder": [
+        "monkey/infection_monkey/post_breach/actions/schedule_jobs.py_0"
+    ],
     "tests": [],
     "hints": [
         "Check out the `Timestomping` PBA to get an idea about the implementation.",
         "Don't forget to add code to remove the scheduled jobs!"
     ],
-    "files": {
+    "play_mode": "all",
+    "swimmPatch": {
         "monkey/infection_monkey/post_breach/actions/schedule_jobs.py": {
-            "index": [
-                "d6cdd276..79a7724d",
-                "100644"
-            ],
-            "fileA": "monkey/infection_monkey/post_breach/actions/schedule_jobs.py",
-            "fileB": "monkey/infection_monkey/post_breach/actions/schedule_jobs.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 7,
-            "numLineAdditions": 2,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xMCUyQzEwJTIwJTJCMTAlMkM1JTIwJTQwJTQwJTIwY2xhc3MlMjBTY2hlZHVsZUpvYnMoUEJBKSUzQSUyMiUyQyUyMmNoYW5nZXMlMjIlM0ElNUIlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExMCUyQyUyMmIlMjIlM0ExMCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTExJTJDJTIyYiUyMiUzQTExJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwZGVmJTIwX19pbml0X18oc2VsZiklM0ElMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExMiUyQyUyMmIlMjIlM0ExMiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsaW51eF9jbWRzJTJDJTIwd2luZG93c19jbWRzJTIwJTNEJTIwZ2V0X2NvbW1hbmRzX3RvX3NjaGVkdWxlX2pvYnMoKSUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTEzJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTE0JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN1cGVyKFNjaGVkdWxlSm9icyUyQyUyMHNlbGYpLl9faW5pdF9fKG5hbWUlM0RQT1NUX0JSRUFDSF9KT0JfU0NIRURVTElORyUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTE1JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxpbnV4X2NtZCUzRCclMjAnLmpvaW4obGludXhfY21kcyklMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExNiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB3aW5kb3dzX2NtZCUzRHdpbmRvd3NfY21kcyklMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExNyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExOCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZW1vdmVfc2NoZWR1bGVkX2pvYnMoKSUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTE5JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmFkZCUyMiUyQyUyMm1hcmslMjIlM0ElMjIlMkIlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcGFzcyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYiUyMiUzQTEzJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmFkZCUyMiUyQyUyMm1hcmslMjIlM0ElMjIlMkIlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwU3dpbW1lciUzQSUyMElNUExFTUVOVCUyMEhFUkUhJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJiJTIyJTNBMTQlN0QlN0QlNUQlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0ExMCUyQyUyMmxpbmVzQ291bnQlMjIlM0ExMCU3RCUyQyUyMmIlMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0ExMCUyQyUyMmxpbmVzQ291bnQlMjIlM0E1JTdEJTdEJTdEJTdE"
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/infection_monkey/post_breach/actions/schedule_jobs.py b/monkey/infection_monkey/post_breach/actions/schedule_jobs.py\nindex f7d8d805..06839463 100644\n--- a/monkey/infection_monkey/post_breach/actions/schedule_jobs.py\n+++ b/monkey/infection_monkey/post_breach/actions/schedule_jobs.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -10,12 +10,6 @@",
+                        "     \"\"\"",
+                        " ",
+                        "     def __init__(self):",
+                        "-        linux_cmds, windows_cmds = get_commands_to_schedule_jobs()",
+                        "+        pass",
+                        " ",
+                        "-        super(ScheduleJobs, self).__init__(name=POST_BREACH_JOB_SCHEDULING,",
+                        "+        # Swimmer: IMPLEMENT HERE!",
+                        "-                                           linux_cmd=' '.join(linux_cmds),",
+                        "-                                           windows_cmd=windows_cmds)",
+                        "-    ",
+                        "-    def run(self):",
+                        "-        super(ScheduleJobs, self).run()",
+                        "-        remove_scheduled_jobs()"
+                    ]
+                }
             ]
         }
     },
-    "app_version": "0.1.90",
-    "file_version": "1.0.2"
+    "app_version": "0.3.5-1",
+    "file_version": "1.0.4"
 }
\ No newline at end of file

From 98e26b0be139b82641c4b8ed612e0c88e6bba225 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 28 Jan 2021 11:23:24 -0500
Subject: [PATCH 27/38] ui: refactor getHideResetState() to use isSafe()

---
 .../cc/ui/src/components/ui-components/AdvancedMultiSelect.js   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 955aec509..834dcec3f 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -108,7 +108,7 @@ class AdvancedMultiSelect extends React.Component {
   }
 
   getHideResetState(selectValues) {
-    return selectValues.every((value) => this.defaultValues.includes(value));
+    return selectValues.every((value) => this.isSafe(value));
   }
 
   setPaneInfo = (itemKey) =>  {

From e43c91e87e68ca67317ba727f862752db4882ca4 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 28 Jan 2021 13:06:21 -0500
Subject: [PATCH 28/38] ui: Show warning message when master checkbox selected
 with unsafe

---
 .../ui-components/AdvancedMultiSelect.js      | 37 ++++++++++------
 .../src/components/ui-components/InfoPane.js  | 43 +++++++++++++------
 2 files changed, 55 insertions(+), 25 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 834dcec3f..575dbae8e 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -3,7 +3,7 @@ import {Button, Card} from 'react-bootstrap';
 
 import {cloneDeep} from 'lodash';
 
-import {getDefaultPaneParams, InfoPane} from './InfoPane';
+import {getDefaultPaneParams, InfoPane, WarningType} from './InfoPane';
 import {MasterCheckbox, MasterCheckboxState} from './MasterCheckbox';
 import ChildCheckboxContainer from './ChildCheckbox';
 import {getFullDefinitionByKey} from './JsonSchemaHelpers';
@@ -41,7 +41,11 @@ class AdvancedMultiSelect extends React.Component {
     this.state = {
       masterCheckboxState: this.getMasterCheckboxState(props.value),
       hideReset: this.getHideResetState(props.value),
-      infoPaneParams: getDefaultPaneParams(this.infoPaneRefString, this.registry)
+      infoPaneParams: getDefaultPaneParams(
+        this.infoPaneRefString,
+        this.registry,
+        this.unsafeOptionsSelected(this.props.value)
+      )
     };
   }
 
@@ -55,6 +59,7 @@ class AdvancedMultiSelect extends React.Component {
     this.props.onChange(newValues);
     this.setMasterCheckboxState(newValues);
     this.setHideResetState(newValues);
+    this.setPaneInfoToDefault(this.unsafeOptionsSelected(newValues));
   }
 
   onChildCheckboxClick = (value) => {
@@ -98,7 +103,7 @@ class AdvancedMultiSelect extends React.Component {
     this.props.onChange(this.defaultValues);
     this.setHideResetState(this.defaultValues);
     this.setMasterCheckboxState(this.defaultValues);
-    this.setPaneInfoToDefault();
+    this.setPaneInfoToDefault(this.unsafeOptionsSelected(this.defaultValues));
   }
 
   setHideResetState(selectValues) {
@@ -108,7 +113,15 @@ class AdvancedMultiSelect extends React.Component {
   }
 
   getHideResetState(selectValues) {
-    return selectValues.every((value) => this.isSafe(value));
+    return !(this.unsafeOptionsSelected(selectValues))
+  }
+
+  unsafeOptionsSelected(selectValues) {
+    return !(selectValues.every((value) => this.isSafe(value)));
+  }
+
+  isSafe = (itemKey) => {
+    return getFullDefinitionByKey(this.infoPaneRefString, this.registry, itemKey).safe;
   }
 
   setPaneInfo = (itemKey) =>  {
@@ -119,22 +132,22 @@ class AdvancedMultiSelect extends React.Component {
           title: definitionObj.title,
           content: definitionObj.info,
           link: definitionObj.link,
-          showWarning: !(this.isSafe(itemKey))
+          warningType: !(this.isSafe(itemKey)) ? WarningType.SINGLE : WarningType.NONE
         }
       }
     );
   }
 
-  setPaneInfoToDefault() {
+  setPaneInfoToDefault(unsafeOptionsSelected) {
     this.setState(() => ({
-      infoPaneParams: getDefaultPaneParams(this.props.schema.items.$ref, this.props.registry)
+      infoPaneParams: getDefaultPaneParams(
+        this.props.schema.items.$ref,
+        this.props.registry,
+        unsafeOptionsSelected
+      )
     }));
   }
 
-  isSafe = (itemKey) => {
-    return getFullDefinitionByKey(this.infoPaneRefString, this.registry, itemKey).safe;
-  }
-
   render() {
     const {
       schema,
@@ -161,7 +174,7 @@ class AdvancedMultiSelect extends React.Component {
         <InfoPane title={this.state.infoPaneParams.title}
           body={this.state.infoPaneParams.content}
           link={this.state.infoPaneParams.link}
-          showWarning={this.state.infoPaneParams.showWarning}/>
+          warningType={this.state.infoPaneParams.warningType}/>
       </div>
     );
   }
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js b/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
index f0545a5c6..841eafe16 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
@@ -6,13 +6,19 @@ import {faQuestionCircle} from '@fortawesome/free-solid-svg-icons';
 import {getObjectFromRegistryByRef} from './JsonSchemaHelpers';
 import WarningIcon from './WarningIcon';
 
-function getDefaultPaneParams(refString, registry) {
+const WarningType = {
+  NONE: 0,
+  SINGLE: 1,
+  MULTIPLE: 2
+}
+
+function getDefaultPaneParams(refString, registry, unsafeOptionsSelected) {
   let configSection = getObjectFromRegistryByRef(refString, registry);
   return (
     {
       title: configSection.title,
       content: configSection.description,
-      showWarning: false
+      warningType: unsafeOptionsSelected ? WarningType.Multiple : WarningType.NONE
     });
 }
 
@@ -56,8 +62,8 @@ function getSubtitle(props) {
 function getBody(props) {
   let body = [<span key={'body'}>{props.body}</span>];
 
-  if (props.showWarning) {
-    body.push(getWarning());
+  if (props.warningType != WarningType.NONE) {
+    body.push(getWarning(props.warningType));
   }
 
   return (
@@ -67,14 +73,25 @@ function getBody(props) {
   )
 }
 
-function getWarning() {
-  return (
-    <div className={'info-pane-warning'} key={'warning'}>
-      <WarningIcon/>This option may cause a system to become unstable or
-      change the system's state in undesirable ways. Therefore, this option
-      is not recommended for use in production or other sensitive environments.
-    </div>
-  );
+function getWarning(warningType) {
+  if (warningType == WarningType.SINGLE) {
+    return (
+      <div className={'info-pane-warning'} key={'warning'}>
+        <WarningIcon/>This option may cause a system to become unstable or may
+        change a system's state in undesirable ways. Therefore, this option
+        is not recommended for use in production or other sensitive environments.
+      </div>
+    );
+  } else {
+    return (
+      <div className={'info-pane-warning'} key={'warning'}>
+        <WarningIcon/>Some options have been selected that may cause a system
+        to become unstable or may change a system's state in undesirable ways.
+        Running Infection Monkey in a production or other sensitive environment
+        with this configuration is not recommended.
+      </div>
+    );
+  }
 }
 
-export {getDefaultPaneParams, InfoPane}
+export {getDefaultPaneParams, InfoPane, WarningType}

From 61eb9a7a23ee7a2dd05cab963669b5e04607c43c Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 28 Jan 2021 13:23:04 -0500
Subject: [PATCH 29/38] ui: align warning text and icon

---
 monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss | 3 +++
 .../cc/ui/src/styles/pages/ConfigurationPage.scss              | 1 -
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss b/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss
index 561e436cf..518757713 100644
--- a/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss
+++ b/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss
@@ -30,7 +30,10 @@
 
 .info-pane-warning {
     margin-top: 1em;
+    display: flex;
 }
 .info-pane-warning .warning-icon {
+    margin-top: .188em;
     margin-left: 0em;
+    margin-right: .75em;
 }
diff --git a/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss b/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss
index 98e598c81..6bda238ea 100644
--- a/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss
+++ b/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss
@@ -62,5 +62,4 @@
     color: #ffc107;
     font-weight: 900;
     margin-left: .75em;
-    margin-right: .75em;
 }

From 08926d778b4b2f8c1f8384acb0fab403e4db7081 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 28 Jan 2021 13:27:36 -0500
Subject: [PATCH 30/38] ui: refactor duplicate code in getWarning()

---
 .../src/components/ui-components/InfoPane.js  | 29 +++++++++----------
 1 file changed, 14 insertions(+), 15 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js b/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
index 841eafe16..21686b468 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
@@ -75,23 +75,22 @@ function getBody(props) {
 
 function getWarning(warningType) {
   if (warningType == WarningType.SINGLE) {
-    return (
-      <div className={'info-pane-warning'} key={'warning'}>
-        <WarningIcon/>This option may cause a system to become unstable or may
-        change a system's state in undesirable ways. Therefore, this option
-        is not recommended for use in production or other sensitive environments.
-      </div>
-    );
+    var warning = <span>This option may cause a system to become unstable or
+      may change a system's state in undesirable ways. Therefore, this option
+      is not recommended for use in production or other sensitive
+      environments.</span>;
   } else {
-    return (
-      <div className={'info-pane-warning'} key={'warning'}>
-        <WarningIcon/>Some options have been selected that may cause a system
-        to become unstable or may change a system's state in undesirable ways.
-        Running Infection Monkey in a production or other sensitive environment
-        with this configuration is not recommended.
-      </div>
-    );
+    warning = <span>Some options have been selected that may cause a system
+      to become unstable or may change a system's state in undesirable ways.
+      Running Infection Monkey in a production or other sensitive environment
+      with this configuration is not recommended.</span>;
   }
+
+  return (
+    <div className={'info-pane-warning'} key={'warning'}>
+      <WarningIcon/>{warning}
+    </div>
+  );
 }
 
 export {getDefaultPaneParams, InfoPane, WarningType}

From f41f896aefa83b240b8abb60c3b6d5d7d5b4cb8a Mon Sep 17 00:00:00 2001
From: Swimm <swimm@swimm.io>
Date: Thu, 28 Jan 2021 20:42:14 +0200
Subject: [PATCH 31/38] Swimm: update unit Add a new System Info Collector (id:
 OwcKMnALpn7tuBaJY1US).

---
 .swm/OwcKMnALpn7tuBaJY1US.swm | 278 ++++++++++++++++++++++++----------
 1 file changed, 202 insertions(+), 76 deletions(-)

diff --git a/.swm/OwcKMnALpn7tuBaJY1US.swm b/.swm/OwcKMnALpn7tuBaJY1US.swm
index 4e446cb48..a243319d2 100644
--- a/.swm/OwcKMnALpn7tuBaJY1US.swm
+++ b/.swm/OwcKMnALpn7tuBaJY1US.swm
@@ -1,10 +1,20 @@
 {
     "id": "OwcKMnALpn7tuBaJY1US",
     "name": "Add a new System Info Collector",
-    "dod": "QWRkJTIwYSUyMHN5c3RlbSUyMGluZm8lMjBjb2xsZWN0b3IlMjB0aGF0JTIwY29sbGVjdHMlMjB0aGUlMjBtYWNoaW5lJTIwaG9zdG5hbWUu",
-    "description": "JTIzJTIwV2hhdCUyMGFyZSUyMHN5c3RlbSUyMGluZm8lMjBjb2xsZWN0b3JzJTNGJTBBJTBBV2VsbCUyQyUyMHRoZSUyMG5hbWUlMjBwcmV0dHklMjBtdWNoJTIwZXhwbGFpbnMlMjBpdC4lMjBUaGV5JTIwYXJlJTIwTW9ua2V5JTIwY2xhc3NlcyUyMHdoaWNoJTIwY29sbGVjdCUyMHZhcmlvdXMlMjBpbmZvcm1hdGlvbiUyMHJlZ2FyZGluZyUyMHRoZSUyMHZpY3RpbSUyMHN5c3RlbSUyQyUyMHN1Y2glMjBhcyUyMEVudmlyb25tZW50JTJDJTIwU1NIJTIwSW5mbyUyQyUyMFByb2Nlc3MlMjBMaXN0JTJDJTIwTmV0c3RhdCUyMGFuZCUyMG1vcmUuJTIwJTBBJTBBJTIzJTIzJTIwV2hhdCUyMHNob3VsZCUyMEklMjBhZGQlM0YlMjAlMEElMEFBJTIwc3lzdGVtJTIwaW5mbyUyMGNvbGxlY3RvciUyMHdoaWNoJTIwY29sbGVjdHMlMjB0aGUlMjBob3N0bmFtZSUyMG9mJTIwdGhlJTIwc3lzdGVtLiUwQSUwQSUyMyUyMyUyMFRlc3QlMjBtYW51YWxseSUwQSUwQU9uY2UlMjB5b3UncmUlMjBkb25lJTJDJTIwbWFrZSUyMHN1cmUlMjB0aGF0JTIweW91ciUyMGNvbGxlY3RvciUzQSUwQSolMjBBcHBlYXJzJTIwaW4lMjB0aGUlMjBJc2xhbmQlMjBjb25maWd1cmF0aW9uJTJDJTIwYW5kJTIwaXMlMjBlbmFibGVkJTIwYnklMjBkZWZhdWx0JTBBKiUyMFRoZSUyMGNvbGxlY3RvciUyMGFjdHVhbGx5JTIwcnVucyUyMHdoZW4lMjBleGVjdXRpbmclMjBhJTIwTW9ua2V5LiUwQSolMjBSZXN1bHRzJTIwc2hvdyUyMHVwJTIwaW4lMjB0aGUlMjByZWxldmFudCUyMHBsYWNlcyUzQSUwQSUyMCUyMColMjBUaGUlMjBpbmZlY3Rpb24lMjBtYXAuJTBBJTIwJTIwKiUyMFRoZSUyMHNlY3VyaXR5JTIwcmVwb3J0LiUwQSUyMCUyMColMjBUaGUlMjByZWxldmFudCUyME1JVFJFJTIwdGVjaG5pcXVlcy4lMEElMEEqKlRoZXJlJTIwYXJlJTIwYSUyMGxvdCUyMG9mJTIwaGludHMlMjBmb3IlMjB0aGlzJTIwdW5pdCUyMC0lMjBkb24ndCUyMGJlJTIwYWZyYWlkJTIwdG8lMjB1c2UlMjB0aGVtISoq",
-    "summary": "U3lzdGVtJTIwaW5mbyUyMGNvbGxlY3RvcnMlMjBhcmUlMjB1c2VmdWwlMjB0byUyMGdldCUyMG1vcmUlMjBkYXRhJTIwZm9yJTIwdmFyaW91cyUyMHRoaW5ncyUyQyUyMHN1Y2glMjBhcyUyMFpUJTIwdGVzdHMlMjBvciUyME1JVFJFJTIwdGVjaG5pcXVlcy4lMjBUYWtlJTIwYSUyMGxvb2slMjBhdCUyMHNvbWUlMjBvdGhlciUyMHRlY2huaXF1ZXMh",
-    "diff": "ZGlmZiUyMC0tZ2l0JTIwYSUyRm1vbmtleSUyRmNvbW1vbiUyRmRhdGElMkZzeXN0ZW1faW5mb19jb2xsZWN0b3JzX25hbWVzLnB5JTIwYiUyRm1vbmtleSUyRmNvbW1vbiUyRmRhdGElMkZzeXN0ZW1faW5mb19jb2xsZWN0b3JzX25hbWVzLnB5JTBBaW5kZXglMjAxNzVhMDU0ZS4uM2I0NzhkYzklMjAxMDA2NDQlMEEtLS0lMjBhJTJGbW9ua2V5JTJGY29tbW9uJTJGZGF0YSUyRnN5c3RlbV9pbmZvX2NvbGxlY3RvcnNfbmFtZXMucHklMEElMkIlMkIlMkIlMjBiJTJGbW9ua2V5JTJGY29tbW9uJTJGZGF0YSUyRnN5c3RlbV9pbmZvX2NvbGxlY3RvcnNfbmFtZXMucHklMEElNDAlNDAlMjAtMSUyQzUlMjAlMkIxJTJDNSUyMCU0MCU0MCUwQSUyMEFXU19DT0xMRUNUT1IlMjAlM0QlMjAlMjJBd3NDb2xsZWN0b3IlMjIlMEEtSE9TVE5BTUVfQ09MTEVDVE9SJTIwJTNEJTIwJTIySG9zdG5hbWVDb2xsZWN0b3IlMjIlMEElMkIlMjMlMjBTV0lNTUVSJTNBJTIwQ29sbGVjdG9yJTIwbmFtZSUyMGdvZXMlMjBoZXJlLiUwQSUyMEVOVklST05NRU5UX0NPTExFQ1RPUiUyMCUzRCUyMCUyMkVudmlyb25tZW50Q29sbGVjdG9yJTIyJTBBJTIwUFJPQ0VTU19MSVNUX0NPTExFQ1RPUiUyMCUzRCUyMCUyMlByb2Nlc3NMaXN0Q29sbGVjdG9yJTIyJTBBJTIwTUlNSUtBVFpfQ09MTEVDVE9SJTIwJTNEJTIwJTIyTWltaWthdHpDb2xsZWN0b3IlMjIlMEFkaWZmJTIwLS1naXQlMjBhJTJGbW9ua2V5JTJGaW5mZWN0aW9uX21vbmtleSUyRnN5c3RlbV9pbmZvJTJGY29sbGVjdG9ycyUyRmhvc3RuYW1lX2NvbGxlY3Rvci5weSUyMGIlMkZtb25rZXklMkZpbmZlY3Rpb25fbW9ua2V5JTJGc3lzdGVtX2luZm8lMkZjb2xsZWN0b3JzJTJGaG9zdG5hbWVfY29sbGVjdG9yLnB5JTBBaW5kZXglMjBhZTk1NjA4MS4uNGRjNjcwMWElMjAxMDA2NDQlMEEtLS0lMjBhJTJGbW9ua2V5JTJGaW5mZWN0aW9uX21vbmtleSUyRnN5c3RlbV9pbmZvJTJGY29sbGVjdG9ycyUyRmhvc3RuYW1lX2NvbGxlY3Rvci5weSUwQSUyQiUyQiUyQiUyMGIlMkZtb25rZXklMkZpbmZlY3Rpb25fbW9ua2V5JTJGc3lzdGVtX2luZm8lMkZjb2xsZWN0b3JzJTJGaG9zdG5hbWVfY29sbGVjdG9yLnB5JTBBJTQwJTQwJTIwLTElMkMxNiUyMCUyQjElMkM1JTIwJTQwJTQwJTBBJTIwaW1wb3J0JTIwbG9nZ2luZyUwQS1pbXBvcnQlMjBzb2NrZXQlMEEtJTBBLWZyb20lMjBjb21tb24uZGF0YS5zeXN0ZW1faW5mb19jb2xsZWN0b3JzX25hbWVzJTIwaW1wb3J0JTIwSE9TVE5BTUVfQ09MTEVDVE9SJTBBLWZyb20lMjBpbmZlY3Rpb25fbW9ua2V5LnN5c3RlbV9pbmZvLnN5c3RlbV9pbmZvX2NvbGxlY3RvciUyMGltcG9ydCUyMCU1QyUwQS0lMjAlMjAlMjAlMjBTeXN0ZW1JbmZvQ29sbGVjdG9yJTBBJTIwJTBBJTIwbG9nZ2VyJTIwJTNEJTIwbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pJTBBJTIwJTBBLSUwQS1jbGFzcyUyMEhvc3RuYW1lQ29sbGVjdG9yKFN5c3RlbUluZm9Db2xsZWN0b3IpJTNBJTBBLSUyMCUyMCUyMCUyMGRlZiUyMF9faW5pdF9fKHNlbGYpJTNBJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN1cGVyKCkuX19pbml0X18obmFtZSUzREhPU1ROQU1FX0NPTExFQ1RPUiklMEEtJTBBLSUyMCUyMCUyMCUyMGRlZiUyMGNvbGxlY3Qoc2VsZiklMjAtJTNFJTIwZGljdCUzQSUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlN0IlMjJob3N0bmFtZSUyMiUzQSUyMHNvY2tldC5nZXRmcWRuKCklN0QlMEElMkIlMjMlMjBTV0lNTUVSJTNBJTIwVGhlJTIwY29sbGVjdG9yJTIwY2xhc3MlMjBnb2VzJTIwaGVyZS4lMEFkaWZmJTIwLS1naXQlMjBhJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZjb25maWdfc2NoZW1hJTJGZGVmaW5pdGlvbnMlMkZzeXN0ZW1faW5mb19jb2xsZWN0b3JfY2xhc3Nlcy5weSUyMGIlMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmNvbmZpZ19zY2hlbWElMkZkZWZpbml0aW9ucyUyRnN5c3RlbV9pbmZvX2NvbGxlY3Rvcl9jbGFzc2VzLnB5JTBBaW5kZXglMjA1ZjExM2Y0YS4uNzA0M2UyMjclMjAxMDA2NDQlMEEtLS0lMjBhJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZjb25maWdfc2NoZW1hJTJGZGVmaW5pdGlvbnMlMkZzeXN0ZW1faW5mb19jb2xsZWN0b3JfY2xhc3Nlcy5weSUwQSUyQiUyQiUyQiUyMGIlMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmNvbmZpZ19zY2hlbWElMkZkZWZpbml0aW9ucyUyRnN5c3RlbV9pbmZvX2NvbGxlY3Rvcl9jbGFzc2VzLnB5JTBBJTQwJTQwJTIwLTElMkM3JTIwJTJCMSUyQzYlMjAlNDAlNDAlMEElMjBmcm9tJTIwY29tbW9uLmRhdGEuc3lzdGVtX2luZm9fY29sbGVjdG9yc19uYW1lcyUyMGltcG9ydCUyMChBV1NfQ09MTEVDVE9SJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwQVpVUkVfQ1JFRF9DT0xMRUNUT1IlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBFTlZJUk9OTUVOVF9DT0xMRUNUT1IlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwSE9TVE5BTUVfQ09MTEVDVE9SJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwTUlNSUtBVFpfQ09MTEVDVE9SJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwUFJPQ0VTU19MSVNUX0NPTExFQ1RPUiklMEElMjAlMEElNDAlNDAlMjAtMzclMkMxNSUyMCUyQjM2JTJDNyUyMCU0MCU0MCUyMFNZU1RFTV9JTkZPX0NPTExFQ1RPUl9DTEFTU0VTJTIwJTNEJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyaW5mbyUyMiUzQSUyMCUyMklmJTIwb24lMjBBV1MlMkMlMjBjb2xsZWN0cyUyMG1vcmUlMjBpbmZvcm1hdGlvbiUyMGFib3V0JTIwdGhlJTIwQVdTJTIwaW5zdGFuY2UlMjBjdXJyZW50bHklMjBydW5uaW5nJTIwb24uJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyYXR0YWNrX3RlY2huaXF1ZXMlMjIlM0ElMjAlNUIlMjJUMTA4MiUyMiU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUyQyUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIydHlwZSUyMiUzQSUyMCUyMnN0cmluZyUyMiUyQyUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJlbnVtJTIyJTNBJTIwJTVCJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMEhPU1ROQU1FX0NPTExFQ1RPUiUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUQlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIydGl0bGUlMjIlM0ElMjAlMjJIb3N0bmFtZSUyMGNvbGxlY3RvciUyMiUyQyUwQS0lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJpbmZvJTIyJTNBJTIwJTIyQ29sbGVjdHMlMjBtYWNoaW5lJ3MlMjBob3N0bmFtZS4lMjIlMkMlMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyYXR0YWNrX3RlY2huaXF1ZXMlMjIlM0ElMjAlNUIlMjJUMTA4MiUyMiUyQyUyMCUyMlQxMDE2JTIyJTVEJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUyQyUwQSUyQiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFNXSU1NRVIlM0ElMjBDb2xsZWN0b3IlMjBjb25maWclMjBnb2VzJTIwaGVyZS4lMjBUaXAlM0ElMjBIb3N0bmFtZSUyMGNvbGxlY3Rpb24lMjByZWxhdGVzJTIwdG8lMjB0aGUlMjBUMTA4MiUyMGFuZCUyMFQxMDE2JTIwdGVjaG5pcXVlcy4lMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJ0eXBlJTIyJTNBJTIwJTIyc3RyaW5nJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyZW51bSUyMiUzQSUyMCU1QiUwQWRpZmYlMjAtLWdpdCUyMGElMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRmNvbmZpZ19zY2hlbWElMkZtb25rZXkucHklMjBiJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZjb25maWdfc2NoZW1hJTJGbW9ua2V5LnB5JTBBaW5kZXglMjBiNDdkNmExNS4uMWIxOTYyYTQlMjAxMDA2NDQlMEEtLS0lMjBhJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZjb25maWdfc2NoZW1hJTJGbW9ua2V5LnB5JTBBJTJCJTJCJTJCJTIwYiUyRm1vbmtleSUyRm1vbmtleV9pc2xhbmQlMkZjYyUyRnNlcnZpY2VzJTJGY29uZmlnX3NjaGVtYSUyRm1vbmtleS5weSUwQSU0MCU0MCUyMC0xJTJDNyUyMCUyQjElMkM2JTIwJTQwJTQwJTBBJTIwZnJvbSUyMGNvbW1vbi5kYXRhLnN5c3RlbV9pbmZvX2NvbGxlY3RvcnNfbmFtZXMlMjBpbXBvcnQlMjAoQVdTX0NPTExFQ1RPUiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMEFaVVJFX0NSRURfQ09MTEVDVE9SJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwRU5WSVJPTk1FTlRfQ09MTEVDVE9SJTJDJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMEhPU1ROQU1FX0NPTExFQ1RPUiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyME1JTUlLQVRaX0NPTExFQ1RPUiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMFBST0NFU1NfTElTVF9DT0xMRUNUT1IpJTBBJTIwJTBBJTQwJTQwJTIwLTg4JTJDNyUyMCUyQjg3JTJDNiUyMCU0MCU0MCUyME1PTktFWSUyMCUzRCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMmRlZmF1bHQlMjIlM0ElMjAlNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBFTlZJUk9OTUVOVF9DT0xMRUNUT1IlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBBV1NfQ09MTEVDVE9SJTJDJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMEhPU1ROQU1FX0NPTExFQ1RPUiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMFBST0NFU1NfTElTVF9DT0xMRUNUT1IlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBNSU1JS0FUWl9DT0xMRUNUT1IlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBBWlVSRV9DUkVEX0NPTExFQ1RPUiUwQWRpZmYlMjAtLWdpdCUyMGElMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRnRlbGVtZXRyeSUyRnByb2Nlc3NpbmclMkZzeXN0ZW1faW5mb19jb2xsZWN0b3JzJTJGaG9zdG5hbWUucHklMjBiJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZ0ZWxlbWV0cnklMkZwcm9jZXNzaW5nJTJGc3lzdGVtX2luZm9fY29sbGVjdG9ycyUyRmhvc3RuYW1lLnB5JTBBaW5kZXglMjBlMmRlNDUxOS4uMDRiYzM1NTYlMjAxMDA2NDQlMEEtLS0lMjBhJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZ0ZWxlbWV0cnklMkZwcm9jZXNzaW5nJTJGc3lzdGVtX2luZm9fY29sbGVjdG9ycyUyRmhvc3RuYW1lLnB5JTBBJTJCJTJCJTJCJTIwYiUyRm1vbmtleSUyRm1vbmtleV9pc2xhbmQlMkZjYyUyRnNlcnZpY2VzJTJGdGVsZW1ldHJ5JTJGcHJvY2Vzc2luZyUyRnN5c3RlbV9pbmZvX2NvbGxlY3RvcnMlMkZob3N0bmFtZS5weSUwQSU0MCU0MCUyMC0xJTJDOSUyMCUyQjElMkM5JTIwJTQwJTQwJTBBJTIwaW1wb3J0JTIwbG9nZ2luZyUwQSUyMCUwQS1mcm9tJTIwbW9ua2V5X2lzbGFuZC5jYy5tb2RlbHMubW9ua2V5JTIwaW1wb3J0JTIwTW9ua2V5JTBBJTJCJTIzJTIwU1dJTU1FUiUzQSUyMFRoaXMlMjB3aWxsJTIwYmUlMjB1c2VmdWwlMjAlM0EpJTIwbW9ua2V5X2lzbGFuZC5jYy5tb2RlbHMubW9ua2V5Lk1vbmtleSUyMGhhcyUyMHRoZSUyMHVzZWZ1bCUwQSUyQiUyMyUyMCUyMmdldF9zaW5nbGVfbW9ua2V5X2J5X2d1aWQlMjIlMjBhbmQlMjAlMjJzZXRfaG9zdG5hbWUlMjIlMjBtZXRob2RzLiUwQSUyMCUwQSUyMGxvZ2dlciUyMCUzRCUyMGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKSUwQSUyMCUwQSUyMCUwQS1kZWYlMjBwcm9jZXNzX2hvc3RuYW1lX3RlbGVtZXRyeShjb2xsZWN0b3JfcmVzdWx0cyUyQyUyMG1vbmtleV9ndWlkKSUzQSUwQS0lMjAlMjAlMjAlMjBNb25rZXkuZ2V0X3NpbmdsZV9tb25rZXlfYnlfZ3VpZChtb25rZXlfZ3VpZCkuc2V0X2hvc3RuYW1lKGNvbGxlY3Rvcl9yZXN1bHRzJTVCJTIyaG9zdG5hbWUlMjIlNUQpJTBBJTJCJTIzJTIwU1dJTU1FUiUzQSUyMFByb2Nlc3NpbmclMjBmdW5jdGlvbiUyMGdvZXMlMjBoZXJlLiUwQWRpZmYlMjAtLWdpdCUyMGElMkZtb25rZXklMkZtb25rZXlfaXNsYW5kJTJGY2MlMkZzZXJ2aWNlcyUyRnRlbGVtZXRyeSUyRnByb2Nlc3NpbmclMkZzeXN0ZW1faW5mb19jb2xsZWN0b3JzJTJGc3lzdGVtX2luZm9fdGVsZW1ldHJ5X2Rpc3BhdGNoZXIucHklMjBiJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZ0ZWxlbWV0cnklMkZwcm9jZXNzaW5nJTJGc3lzdGVtX2luZm9fY29sbGVjdG9ycyUyRnN5c3RlbV9pbmZvX3RlbGVtZXRyeV9kaXNwYXRjaGVyLnB5JTBBaW5kZXglMjA2MzlhMzkyYy4uN2FhNmQzYTYlMjAxMDA2NDQlMEEtLS0lMjBhJTJGbW9ua2V5JTJGbW9ua2V5X2lzbGFuZCUyRmNjJTJGc2VydmljZXMlMkZ0ZWxlbWV0cnklMkZwcm9jZXNzaW5nJTJGc3lzdGVtX2luZm9fY29sbGVjdG9ycyUyRnN5c3RlbV9pbmZvX3RlbGVtZXRyeV9kaXNwYXRjaGVyLnB5JTBBJTJCJTJCJTJCJTIwYiUyRm1vbmtleSUyRm1vbmtleV9pc2xhbmQlMkZjYyUyRnNlcnZpY2VzJTJGdGVsZW1ldHJ5JTJGcHJvY2Vzc2luZyUyRnN5c3RlbV9pbmZvX2NvbGxlY3RvcnMlMkZzeXN0ZW1faW5mb190ZWxlbWV0cnlfZGlzcGF0Y2hlci5weSUwQSU0MCU0MCUyMC0zJTJDMTQlMjAlMkIzJTJDMTElMjAlNDAlNDAlMjBpbXBvcnQlMjB0eXBpbmclMEElMjAlMEElMjBmcm9tJTIwY29tbW9uLmRhdGEuc3lzdGVtX2luZm9fY29sbGVjdG9yc19uYW1lcyUyMGltcG9ydCUyMChBV1NfQ09MTEVDVE9SJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwRU5WSVJPTk1FTlRfQ09MTEVDVE9SJTJDJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMEhPU1ROQU1FX0NPTExFQ1RPUiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMFBST0NFU1NfTElTVF9DT0xMRUNUT1IpJTBBJTIwZnJvbSUyMG1vbmtleV9pc2xhbmQuY2Muc2VydmljZXMudGVsZW1ldHJ5LnByb2Nlc3Npbmcuc3lzdGVtX2luZm9fY29sbGVjdG9ycy5hd3MlMjBpbXBvcnQlMjAlNUMlMEElMjAlMjAlMjAlMjAlMjBwcm9jZXNzX2F3c190ZWxlbWV0cnklMEElMjBmcm9tJTIwbW9ua2V5X2lzbGFuZC5jYy5zZXJ2aWNlcy50ZWxlbWV0cnkucHJvY2Vzc2luZy5zeXN0ZW1faW5mb19jb2xsZWN0b3JzLmVudmlyb25tZW50JTIwaW1wb3J0JTIwJTVDJTBBJTIwJTIwJTIwJTIwJTIwcHJvY2Vzc19lbnZpcm9ubWVudF90ZWxlbWV0cnklMEEtZnJvbSUyMG1vbmtleV9pc2xhbmQuY2Muc2VydmljZXMudGVsZW1ldHJ5LnByb2Nlc3Npbmcuc3lzdGVtX2luZm9fY29sbGVjdG9ycy5ob3N0bmFtZSUyMGltcG9ydCUyMCU1QyUwQS0lMjAlMjAlMjAlMjBwcm9jZXNzX2hvc3RuYW1lX3RlbGVtZXRyeSUwQSUyMGZyb20lMjBtb25rZXlfaXNsYW5kLmNjLnNlcnZpY2VzLnRlbGVtZXRyeS56ZXJvX3RydXN0X3Rlc3RzLmFudGl2aXJ1c19leGlzdGVuY2UlMjBpbXBvcnQlMjAlNUMlMEElMjAlMjAlMjAlMjAlMjB0ZXN0X2FudGl2aXJ1c19leGlzdGVuY2UlMEElMjAlMEElNDAlNDAlMjAtMTklMkM3JTIwJTJCMTYlMkM2JTIwJTQwJTQwJTIwbG9nZ2VyJTIwJTNEJTIwbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pJTBBJTIwU1lTVEVNX0lORk9fQ09MTEVDVE9SX1RPX1RFTEVNRVRSWV9QUk9DRVNTT1JTJTIwJTNEJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwQVdTX0NPTExFQ1RPUiUzQSUyMCU1QnByb2Nlc3NfYXdzX3RlbGVtZXRyeSU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMEVOVklST05NRU5UX0NPTExFQ1RPUiUzQSUyMCU1QnByb2Nlc3NfZW52aXJvbm1lbnRfdGVsZW1ldHJ5JTVEJTJDJTBBLSUyMCUyMCUyMCUyMEhPU1ROQU1FX0NPTExFQ1RPUiUzQSUyMCU1QnByb2Nlc3NfaG9zdG5hbWVfdGVsZW1ldHJ5JTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwUFJPQ0VTU19MSVNUX0NPTExFQ1RPUiUzQSUyMCU1QnRlc3RfYW50aXZpcnVzX2V4aXN0ZW5jZSU1RCUwQSUyMCU3RCUwQSUyMCUwQQ==",
+    "dod": "Add a system info collector that collects the machine hostname.",
+    "description": "# What are system info collectors?\n\nWell, the name pretty much explains it. They are Monkey classes which collect various information regarding the victim system, such as Environment, SSH Info, Process List, Netstat and more. \n\n## What should I add? \n\nA system info collector which collects the hostname of the system.\n\n## Test manually\n\nOnce you're done, make sure that your collector:\n* Appears in the Island configuration, and is enabled by default\n* The collector actually runs when executing a Monkey.\n* Results show up in the relevant places:\n  * The infection map.\n  * The security report.\n  * The relevant MITRE techniques.\n\n**There are a lot of hints for this unit - don't be afraid to use them!**",
+    "summary": "System info collectors are useful to get more data for various things, such as ZT tests or MITRE techniques. Take a look at some other techniques!",
+    "hunksOrder": [
+        "monkey/common/data/system_info_collectors_names.py_0",
+        "monkey/infection_monkey/system_info/collectors/hostname_collector.py_0",
+        "monkey/monkey_island/cc/services/config_schema/definitions/system_info_collector_classes.py_0",
+        "monkey/monkey_island/cc/services/config_schema/definitions/system_info_collector_classes.py_1",
+        "monkey/monkey_island/cc/services/config_schema/monkey.py_0",
+        "monkey/monkey_island/cc/services/config_schema/monkey.py_1",
+        "monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/hostname.py_0",
+        "monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/system_info_telemetry_dispatcher.py_0",
+        "monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/system_info_telemetry_dispatcher.py_1"
+    ],
     "tests": [],
     "hints": [
         "First thing you should do is take a look at a different collector (like EnvironmentCollector) and 100% understand how it runs, how results are relayed back to the server, and how the server processes the data.",
@@ -12,95 +22,211 @@
         "Take a look at SystemInfoCollector - that's the base class you'll need to implement.",
         "Make sure you add the new collector to the configuration in all relevant places, including making it ON by default!"
     ],
-    "files": {
+    "play_mode": "all",
+    "swimmPatch": {
         "monkey/common/data/system_info_collectors_names.py": {
-            "index": [
-                "175a054e..3b478dc9",
-                "100644"
-            ],
-            "fileA": "monkey/common/data/system_info_collectors_names.py",
-            "fileB": "monkey/common/data/system_info_collectors_names.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 1,
-            "numLineAdditions": 1,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xJTJDNSUyMCUyQjElMkM1JTIwJTQwJTQwJTIyJTJDJTIyY2hhbmdlcyUyMiUzQSU1QiU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMEFXU19DT0xMRUNUT1IlMjAlM0QlMjAlNUMlMjJBd3NDb2xsZWN0b3IlNUMlMjIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExJTJDJTIyYiUyMiUzQTElN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIySE9TVE5BTUVfQ09MTEVDVE9SJTIwJTNEJTIwJTVDJTIySG9zdG5hbWVDb2xsZWN0b3IlNUMlMjIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0EyJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmFkZCUyMiUyQyUyMm1hcmslMjIlM0ElMjIlMkIlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIzJTIwU1dJTU1FUiUzQSUyMENvbGxlY3RvciUyMG5hbWUlMjBnb2VzJTIwaGVyZS4lMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmIlMjIlM0EyJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwRU5WSVJPTk1FTlRfQ09MTEVDVE9SJTIwJTNEJTIwJTVDJTIyRW52aXJvbm1lbnRDb2xsZWN0b3IlNUMlMjIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0EzJTJDJTIyYiUyMiUzQTMlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjBQUk9DRVNTX0xJU1RfQ09MTEVDVE9SJTIwJTNEJTIwJTVDJTIyUHJvY2Vzc0xpc3RDb2xsZWN0b3IlNUMlMjIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0JTJDJTIyYiUyMiUzQTQlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjBNSU1JS0FUWl9DT0xMRUNUT1IlMjAlM0QlMjAlNUMlMjJNaW1pa2F0ekNvbGxlY3RvciU1QyUyMiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTUlMkMlMjJiJTIyJTNBNSU3RCU3RCU1RCUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTElMkMlMjJsaW5lc0NvdW50JTIyJTNBNSU3RCUyQyUyMmIlMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0ExJTJDJTIybGluZXNDb3VudCUyMiUzQTUlN0QlN0QlN0QlN0Q="
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/common/data/system_info_collectors_names.py b/monkey/common/data/system_info_collectors_names.py\nindex 175a054e..3b478dc9 100644\n--- a/monkey/common/data/system_info_collectors_names.py\n+++ b/monkey/common/data/system_info_collectors_names.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -1,5 +1,5 @@",
+                        " AWS_COLLECTOR = \"AwsCollector\"",
+                        "-HOSTNAME_COLLECTOR = \"HostnameCollector\"",
+                        "+# SWIMMER: Collector name goes here.",
+                        " ENVIRONMENT_COLLECTOR = \"EnvironmentCollector\"",
+                        " PROCESS_LIST_COLLECTOR = \"ProcessListCollector\"",
+                        " MIMIKATZ_COLLECTOR = \"MimikatzCollector\""
+                    ]
+                }
             ]
         },
         "monkey/infection_monkey/system_info/collectors/hostname_collector.py": {
-            "index": [
-                "ae956081..4dc6701a",
-                "100644"
-            ],
-            "fileA": "monkey/infection_monkey/system_info/collectors/hostname_collector.py",
-            "fileB": "monkey/infection_monkey/system_info/collectors/hostname_collector.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 12,
-            "numLineAdditions": 1,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xJTJDMTYlMjAlMkIxJTJDNSUyMCU0MCU0MCUyMiUyQyUyMmNoYW5nZXMlMjIlM0ElNUIlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjBpbXBvcnQlMjBsb2dnaW5nJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMSUyQyUyMmIlMjIlM0ExJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMmltcG9ydCUyMHNvY2tldCUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjJmcm9tJTIwY29tbW9uLmRhdGEuc3lzdGVtX2luZm9fY29sbGVjdG9yc19uYW1lcyUyMGltcG9ydCUyMEhPU1ROQU1FX0NPTExFQ1RPUiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTQlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyZnJvbSUyMGluZmVjdGlvbl9tb25rZXkuc3lzdGVtX2luZm8uc3lzdGVtX2luZm9fY29sbGVjdG9yJTIwaW1wb3J0JTIwJTVDJTVDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjBTeXN0ZW1JbmZvQ29sbGVjdG9yJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTclMkMlMjJiJTIyJTNBMiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMGxvZ2dlciUyMCUzRCUyMGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKSUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTglMkMlMjJiJTIyJTNBMyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTklMkMlMjJiJTIyJTNBNCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExMCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjJjbGFzcyUyMEhvc3RuYW1lQ29sbGVjdG9yKFN5c3RlbUluZm9Db2xsZWN0b3IpJTNBJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTElN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwZGVmJTIwX19pbml0X18oc2VsZiklM0ElMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExMiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdXBlcigpLl9faW5pdF9fKG5hbWUlM0RIT1NUTkFNRV9DT0xMRUNUT1IpJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTMlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTQlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwZGVmJTIwY29sbGVjdChzZWxmKSUyMC0lM0UlMjBkaWN0JTNBJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTUlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJTVDJTIyaG9zdG5hbWUlNUMlMjIlM0ElMjBzb2NrZXQuZ2V0ZnFkbigpJTdEJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTYlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyYWRkJTIyJTJDJTIybWFyayUyMiUzQSUyMiUyQiUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjMlMjBTV0lNTUVSJTNBJTIwVGhlJTIwY29sbGVjdG9yJTIwY2xhc3MlMjBnb2VzJTIwaGVyZS4lMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmIlMjIlM0E1JTdEJTdEJTVEJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBJTdCJTIyc3RhcnRMaW5lJTIyJTNBMSUyQyUyMmxpbmVzQ291bnQlMjIlM0ExNiU3RCUyQyUyMmIlMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0ExJTJDJTIybGluZXNDb3VudCUyMiUzQTUlN0QlN0QlN0QlN0Q="
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/infection_monkey/system_info/collectors/hostname_collector.py b/monkey/infection_monkey/system_info/collectors/hostname_collector.py\nindex ae956081..bdeb5033 100644\n--- a/monkey/infection_monkey/system_info/collectors/hostname_collector.py\n+++ b/monkey/infection_monkey/system_info/collectors/hostname_collector.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -1,16 +1,5 @@",
+                        " import logging",
+                        "-import socket",
+                        "-",
+                        "-from common.data.system_info_collectors_names import HOSTNAME_COLLECTOR",
+                        "-from infection_monkey.system_info.system_info_collector import \\",
+                        "-    SystemInfoCollector",
+                        " ",
+                        " logger = logging.getLogger(__name__)",
+                        " ",
+                        "-",
+                        "+# SWIMMER: The collector class goes here.",
+                        "-class HostnameCollector(SystemInfoCollector):",
+                        "-    def __init__(self):",
+                        "-        super().__init__(name=HOSTNAME_COLLECTOR)",
+                        "-",
+                        "-    def collect(self) -> dict:",
+                        "-        return {\"hostname\": socket.getfqdn()}"
+                    ]
+                }
             ]
         },
         "monkey/monkey_island/cc/services/config_schema/definitions/system_info_collector_classes.py": {
-            "index": [
-                "5f113f4a..7043e227",
-                "100644"
-            ],
-            "fileA": "monkey/monkey_island/cc/services/config_schema/definitions/system_info_collector_classes.py",
-            "fileB": "monkey/monkey_island/cc/services/config_schema/definitions/system_info_collector_classes.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 10,
-            "numLineAdditions": 1,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xJTJDNyUyMCUyQjElMkM2JTIwJTQwJTQwJTIyJTJDJTIyY2hhbmdlcyUyMiUzQSU1QiU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMGZyb20lMjBjb21tb24uZGF0YS5zeXN0ZW1faW5mb19jb2xsZWN0b3JzX25hbWVzJTIwaW1wb3J0JTIwKEFXU19DT0xMRUNUT1IlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExJTJDJTIyYiUyMiUzQTElN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBBWlVSRV9DUkVEX0NPTExFQ1RPUiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTIlMkMlMjJiJTIyJTNBMiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMEVOVklST05NRU5UX0NPTExFQ1RPUiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTMlMkMlMjJiJTIyJTNBMyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBIT1NUTkFNRV9DT0xMRUNUT1IlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwTUlNSUtBVFpfQ09MTEVDVE9SJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNSUyQyUyMmIlMjIlM0E0JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwUFJPQ0VTU19MSVNUX0NPTExFQ1RPUiklMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E2JTJDJTIyYiUyMiUzQTUlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E3JTJDJTIyYiUyMiUzQTYlN0QlN0QlNUQlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0ExJTJDJTIybGluZXNDb3VudCUyMiUzQTclN0QlMkMlMjJiJTIyJTNBJTdCJTIyc3RhcnRMaW5lJTIyJTNBMSUyQyUyMmxpbmVzQ291bnQlMjIlM0E2JTdEJTdEJTdEJTdE",
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0zNyUyQzE1JTIwJTJCMzYlMkM3JTIwJTQwJTQwJTIwU1lTVEVNX0lORk9fQ09MTEVDVE9SX0NMQVNTRVMlMjAlM0QlMjAlN0IlMjIlMkMlMjJjaGFuZ2VzJTIyJTNBJTVCJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyaW5mbyU1QyUyMiUzQSUyMCU1QyUyMklmJTIwb24lMjBBV1MlMkMlMjBjb2xsZWN0cyUyMG1vcmUlMjBpbmZvcm1hdGlvbiUyMGFib3V0JTIwdGhlJTIwQVdTJTIwaW5zdGFuY2UlMjBjdXJyZW50bHklMjBydW5uaW5nJTIwb24uJTVDJTIyJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMzclMkMlMjJiJTIyJTNBMzYlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJhdHRhY2tfdGVjaG5pcXVlcyU1QyUyMiUzQSUyMCU1QiU1QyUyMlQxMDgyJTVDJTIyJTVEJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMzglMkMlMjJiJTIyJTNBMzclN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0EzOSUyQyUyMmIlMjIlM0EzOCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0MCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJ0eXBlJTVDJTIyJTNBJTIwJTVDJTIyc3RyaW5nJTVDJTIyJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNDElN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyZW51bSU1QyUyMiUzQSUyMCU1QiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTQyJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMEhPU1ROQU1FX0NPTExFQ1RPUiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTQzJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTQ0JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMnRpdGxlJTVDJTIyJTNBJTIwJTVDJTIySG9zdG5hbWUlMjBjb2xsZWN0b3IlNUMlMjIlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0NSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJpbmZvJTVDJTIyJTNBJTIwJTVDJTIyQ29sbGVjdHMlMjBtYWNoaW5lJ3MlMjBob3N0bmFtZS4lNUMlMjIlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0NiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJhdHRhY2tfdGVjaG5pcXVlcyU1QyUyMiUzQSUyMCU1QiU1QyUyMlQxMDgyJTVDJTIyJTJDJTIwJTVDJTIyVDEwMTYlNUMlMjIlNUQlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0NyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0OCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJhZGQlMjIlMkMlMjJtYXJrJTIyJTNBJTIyJTJCJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFNXSU1NRVIlM0ElMjBDb2xsZWN0b3IlMjBjb25maWclMjBnb2VzJTIwaGVyZS4lMjBUaXAlM0ElMjBIb3N0bmFtZSUyMGNvbGxlY3Rpb24lMjByZWxhdGVzJTIwdG8lMjB0aGUlMjBUMTA4MiUyMGFuZCUyMFQxMDE2JTIwdGVjaG5pcXVlcy4lMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmIlMjIlM0EzOSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTQ5JTJDJTIyYiUyMiUzQTQwJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIydHlwZSU1QyUyMiUzQSUyMCU1QyUyMnN0cmluZyU1QyUyMiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTUwJTJDJTIyYiUyMiUzQTQxJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyZW51bSU1QyUyMiUzQSUyMCU1QiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTUxJTJDJTIyYiUyMiUzQTQyJTdEJTdEJTVEJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBJTdCJTIyc3RhcnRMaW5lJTIyJTNBMzclMkMlMjJsaW5lc0NvdW50JTIyJTNBMTUlN0QlMkMlMjJiJTIyJTNBJTdCJTIyc3RhcnRMaW5lJTIyJTNBMzYlMkMlMjJsaW5lc0NvdW50JTIyJTNBNyU3RCU3RCU3RCU3RA=="
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/monkey_island/cc/services/config_schema/definitions/system_info_collector_classes.py b/monkey/monkey_island/cc/services/config_schema/definitions/system_info_collector_classes.py\nindex 174133f4..de961fbd 100644\n--- a/monkey/monkey_island/cc/services/config_schema/definitions/system_info_collector_classes.py\n+++ b/monkey/monkey_island/cc/services/config_schema/definitions/system_info_collector_classes.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -1,7 +1,6 @@",
+                        " from common.data.system_info_collectors_names import (AWS_COLLECTOR,",
+                        "                                                       AZURE_CRED_COLLECTOR,",
+                        "                                                       ENVIRONMENT_COLLECTOR,",
+                        "-                                                      HOSTNAME_COLLECTOR,",
+                        "                                                       MIMIKATZ_COLLECTOR,",
+                        "                                                       PROCESS_LIST_COLLECTOR)",
+                        " "
+                    ]
+                },
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -40,16 +39,7 @@",
+                        "             \"info\": \"If on AWS, collects more information about the AWS instance currently running on.\",",
+                        "             \"attack_techniques\": [\"T1082\"]",
+                        "         },",
+                        "-        {",
+                        "+        # SWIMMER: Collector config goes here. Tip: Hostname collection relates to the T1082 and T1016 techniques.",
+                        "-            \"type\": \"string\",",
+                        "-            \"enum\": [",
+                        "-                HOSTNAME_COLLECTOR",
+                        "-            ],",
+                        "-            \"title\": \"Hostname collector\",",
+                        "-            \"safe\": True,",
+                        "-            \"info\": \"Collects machine's hostname.\",",
+                        "-            \"attack_techniques\": [\"T1082\", \"T1016\"]",
+                        "-        },",
+                        "         {",
+                        "             \"type\": \"string\",",
+                        "             \"enum\": ["
+                    ]
+                }
             ]
         },
         "monkey/monkey_island/cc/services/config_schema/monkey.py": {
-            "index": [
-                "b47d6a15..1b1962a4",
-                "100644"
-            ],
-            "fileA": "monkey/monkey_island/cc/services/config_schema/monkey.py",
-            "fileB": "monkey/monkey_island/cc/services/config_schema/monkey.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 2,
-            "numLineAdditions": 0,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xJTJDNyUyMCUyQjElMkM2JTIwJTQwJTQwJTIyJTJDJTIyY2hhbmdlcyUyMiUzQSU1QiU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMGZyb20lMjBjb21tb24uZGF0YS5zeXN0ZW1faW5mb19jb2xsZWN0b3JzX25hbWVzJTIwaW1wb3J0JTIwKEFXU19DT0xMRUNUT1IlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExJTJDJTIyYiUyMiUzQTElN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBBWlVSRV9DUkVEX0NPTExFQ1RPUiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTIlMkMlMjJiJTIyJTNBMiU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMEVOVklST05NRU5UX0NPTExFQ1RPUiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTMlMkMlMjJiJTIyJTNBMyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBIT1NUTkFNRV9DT0xMRUNUT1IlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwTUlNSUtBVFpfQ09MTEVDVE9SJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBNSUyQyUyMmIlMjIlM0E0JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwUFJPQ0VTU19MSVNUX0NPTExFQ1RPUiklMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E2JTJDJTIyYiUyMiUzQTUlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E3JTJDJTIyYiUyMiUzQTYlN0QlN0QlNUQlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0ExJTJDJTIybGluZXNDb3VudCUyMiUzQTclN0QlMkMlMjJiJTIyJTNBJTdCJTIyc3RhcnRMaW5lJTIyJTNBMSUyQyUyMmxpbmVzQ291bnQlMjIlM0E2JTdEJTdEJTdEJTdE",
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC04OCUyQzclMjAlMkI4NyUyQzYlMjAlNDAlNDAlMjBNT05LRVklMjAlM0QlMjAlN0IlMjIlMkMlMjJjaGFuZ2VzJTIyJTNBJTVCJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyZGVmYXVsdCU1QyUyMiUzQSUyMCU1QiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTg4JTJDJTIyYiUyMiUzQTg3JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwRU5WSVJPTk1FTlRfQ09MTEVDVE9SJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBODklMkMlMjJiJTIyJTNBODglN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBBV1NfQ09MTEVDVE9SJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBOTAlMkMlMjJiJTIyJTNBODklN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwSE9TVE5BTUVfQ09MTEVDVE9SJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBOTElN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBQUk9DRVNTX0xJU1RfQ09MTEVDVE9SJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBOTIlMkMlMjJiJTIyJTNBOTAlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBNSU1JS0FUWl9DT0xMRUNUT1IlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E5MyUyQyUyMmIlMjIlM0E5MSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMEFaVVJFX0NSRURfQ09MTEVDVE9SJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBOTQlMkMlMjJiJTIyJTNBOTIlN0QlN0QlNUQlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0E4OCUyQyUyMmxpbmVzQ291bnQlMjIlM0E3JTdEJTJDJTIyYiUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTg3JTJDJTIybGluZXNDb3VudCUyMiUzQTYlN0QlN0QlN0QlN0Q="
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/monkey_island/cc/services/config_schema/monkey.py b/monkey/monkey_island/cc/services/config_schema/monkey.py\nindex b47d6a15..1b1962a4 100644\n--- a/monkey/monkey_island/cc/services/config_schema/monkey.py\n+++ b/monkey/monkey_island/cc/services/config_schema/monkey.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -1,7 +1,6 @@",
+                        " from common.data.system_info_collectors_names import (AWS_COLLECTOR,",
+                        "                                                       AZURE_CRED_COLLECTOR,",
+                        "                                                       ENVIRONMENT_COLLECTOR,",
+                        "-                                                      HOSTNAME_COLLECTOR,",
+                        "                                                       MIMIKATZ_COLLECTOR,",
+                        "                                                       PROCESS_LIST_COLLECTOR)",
+                        " "
+                    ]
+                },
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -88,7 +87,6 @@",
+                        "                     \"default\": [",
+                        "                         ENVIRONMENT_COLLECTOR,",
+                        "                         AWS_COLLECTOR,",
+                        "-                        HOSTNAME_COLLECTOR,",
+                        "                         PROCESS_LIST_COLLECTOR,",
+                        "                         MIMIKATZ_COLLECTOR,",
+                        "                         AZURE_CRED_COLLECTOR"
+                    ]
+                }
             ]
         },
         "monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/hostname.py": {
-            "index": [
-                "e2de4519..04bc3556",
-                "100644"
-            ],
-            "fileA": "monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/hostname.py",
-            "fileB": "monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/hostname.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 3,
-            "numLineAdditions": 3,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xJTJDOSUyMCUyQjElMkM5JTIwJTQwJTQwJTIyJTJDJTIyY2hhbmdlcyUyMiUzQSU1QiU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMGltcG9ydCUyMGxvZ2dpbmclMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExJTJDJTIyYiUyMiUzQTElN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0EyJTJDJTIyYiUyMiUzQTIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyZnJvbSUyMG1vbmtleV9pc2xhbmQuY2MubW9kZWxzLm1vbmtleSUyMGltcG9ydCUyME1vbmtleSUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTMlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyYWRkJTIyJTJDJTIybWFyayUyMiUzQSUyMiUyQiUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjMlMjBTV0lNTUVSJTNBJTIwVGhpcyUyMHdpbGwlMjBiZSUyMHVzZWZ1bCUyMCUzQSklMjBtb25rZXlfaXNsYW5kLmNjLm1vZGVscy5tb25rZXkuTW9ua2V5JTIwaGFzJTIwdGhlJTIwdXNlZnVsJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJiJTIyJTNBMyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJhZGQlMjIlMkMlMjJtYXJrJTIyJTNBJTIyJTJCJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMyUyMCU1QyUyMmdldF9zaW5nbGVfbW9ua2V5X2J5X2d1aWQlNUMlMjIlMjBhbmQlMjAlNUMlMjJzZXRfaG9zdG5hbWUlNUMlMjIlMjBtZXRob2RzLiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYiUyMiUzQTQlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E0JTJDJTIyYiUyMiUzQTUlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjBsb2dnZXIlMjAlM0QlMjBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXyklMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E1JTJDJTIyYiUyMiUzQTYlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E2JTJDJTIyYiUyMiUzQTclN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E3JTJDJTIyYiUyMiUzQTglN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyZGVmJTIwcHJvY2Vzc19ob3N0bmFtZV90ZWxlbWV0cnkoY29sbGVjdG9yX3Jlc3VsdHMlMkMlMjBtb25rZXlfZ3VpZCklM0ElMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E4JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyME1vbmtleS5nZXRfc2luZ2xlX21vbmtleV9ieV9ndWlkKG1vbmtleV9ndWlkKS5zZXRfaG9zdG5hbWUoY29sbGVjdG9yX3Jlc3VsdHMlNUIlNUMlMjJob3N0bmFtZSU1QyUyMiU1RCklMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E5JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmFkZCUyMiUyQyUyMm1hcmslMjIlM0ElMjIlMkIlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIzJTIwU1dJTU1FUiUzQSUyMFByb2Nlc3NpbmclMjBmdW5jdGlvbiUyMGdvZXMlMjBoZXJlLiUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYiUyMiUzQTklN0QlN0QlNUQlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0ExJTJDJTIybGluZXNDb3VudCUyMiUzQTklN0QlMkMlMjJiJTIyJTNBJTdCJTIyc3RhcnRMaW5lJTIyJTNBMSUyQyUyMmxpbmVzQ291bnQlMjIlM0E5JTdEJTdEJTdEJTdE"
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/hostname.py b/monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/hostname.py\nindex e2de4519..04bc3556 100644\n--- a/monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/hostname.py\n+++ b/monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/hostname.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -1,9 +1,9 @@",
+                        " import logging",
+                        " ",
+                        "-from monkey_island.cc.models.monkey import Monkey",
+                        "+# SWIMMER: This will be useful :) monkey_island.cc.models.monkey.Monkey has the useful",
+                        "+# \"get_single_monkey_by_guid\" and \"set_hostname\" methods.",
+                        " ",
+                        " logger = logging.getLogger(__name__)",
+                        " ",
+                        " ",
+                        "-def process_hostname_telemetry(collector_results, monkey_guid):",
+                        "+# SWIMMER: Processing function goes here.",
+                        "-    Monkey.get_single_monkey_by_guid(monkey_guid).set_hostname(collector_results[\"hostname\"])"
+                    ]
+                }
             ]
         },
         "monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/system_info_telemetry_dispatcher.py": {
-            "index": [
-                "639a392c..7aa6d3a6",
-                "100644"
-            ],
-            "fileA": "monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/system_info_telemetry_dispatcher.py",
-            "fileB": "monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/system_info_telemetry_dispatcher.py",
-            "status": "MODIFIED",
-            "numLineDeletions": 4,
-            "numLineAdditions": 0,
-            "hunkContainers": [
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0zJTJDMTQlMjAlMkIzJTJDMTElMjAlNDAlNDAlMjBpbXBvcnQlMjB0eXBpbmclMjIlMkMlMjJjaGFuZ2VzJTIyJTNBJTVCJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMyUyQyUyMmIlMjIlM0EzJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwZnJvbSUyMGNvbW1vbi5kYXRhLnN5c3RlbV9pbmZvX2NvbGxlY3RvcnNfbmFtZXMlMjBpbXBvcnQlMjAoQVdTX0NPTExFQ1RPUiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTQlMkMlMjJiJTIyJTNBNCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMEVOVklST05NRU5UX0NPTExFQ1RPUiUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTUlMkMlMjJiJTIyJTNBNSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBIT1NUTkFNRV9DT0xMRUNUT1IlMkMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E2JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwUFJPQ0VTU19MSVNUX0NPTExFQ1RPUiklMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0E3JTJDJTIyYiUyMiUzQTYlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjBmcm9tJTIwbW9ua2V5X2lzbGFuZC5jYy5zZXJ2aWNlcy50ZWxlbWV0cnkucHJvY2Vzc2luZy5zeXN0ZW1faW5mb19jb2xsZWN0b3JzLmF3cyUyMGltcG9ydCUyMCU1QyU1QyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTglMkMlMjJiJTIyJTNBNyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMHByb2Nlc3NfYXdzX3RlbGVtZXRyeSUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTklMkMlMjJiJTIyJTNBOCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMGZyb20lMjBtb25rZXlfaXNsYW5kLmNjLnNlcnZpY2VzLnRlbGVtZXRyeS5wcm9jZXNzaW5nLnN5c3RlbV9pbmZvX2NvbGxlY3RvcnMuZW52aXJvbm1lbnQlMjBpbXBvcnQlMjAlNUMlNUMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExMCUyQyUyMmIlMjIlM0E5JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwcHJvY2Vzc19lbnZpcm9ubWVudF90ZWxlbWV0cnklMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExMSUyQyUyMmIlMjIlM0ExMCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWwlMjIlMkMlMjJtYXJrJTIyJTNBJTIyLSUyMiUyQyUyMmRhdGElMjIlM0ElMjJmcm9tJTIwbW9ua2V5X2lzbGFuZC5jYy5zZXJ2aWNlcy50ZWxlbWV0cnkucHJvY2Vzc2luZy5zeXN0ZW1faW5mb19jb2xsZWN0b3JzLmhvc3RuYW1lJTIwaW1wb3J0JTIwJTVDJTVDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVsJTIyJTJDJTIybWFyayUyMiUzQSUyMi0lMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIwJTIwJTIwcHJvY2Vzc19ob3N0bmFtZV90ZWxlbWV0cnklMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExMyU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMGZyb20lMjBtb25rZXlfaXNsYW5kLmNjLnNlcnZpY2VzLnRlbGVtZXRyeS56ZXJvX3RydXN0X3Rlc3RzLmFudGl2aXJ1c19leGlzdGVuY2UlMjBpbXBvcnQlMjAlNUMlNUMlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ExNCUyQyUyMmIlMjIlM0ExMSU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMHRlc3RfYW50aXZpcnVzX2V4aXN0ZW5jZSUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTE1JTJDJTIyYiUyMiUzQTEyJTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTYlMkMlMjJiJTIyJTNBMTMlN0QlN0QlNUQlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0EzJTJDJTIybGluZXNDb3VudCUyMiUzQTE0JTdEJTJDJTIyYiUyMiUzQSU3QiUyMnN0YXJ0TGluZSUyMiUzQTMlMkMlMjJsaW5lc0NvdW50JTIyJTNBMTElN0QlN0QlN0QlN0Q=",
-                "JTdCJTIyaHVuayUyMiUzQSU3QiUyMmhlYWRlciUyMiUzQSUyMiU0MCU0MCUyMC0xOSUyQzclMjAlMkIxNiUyQzYlMjAlNDAlNDAlMjBsb2dnZXIlMjAlM0QlMjBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXyklMjIlMkMlMjJjaGFuZ2VzJTIyJTNBJTVCJTdCJTIydHlwZSUyMiUzQSUyMmNvbnRleHQlMjIlMkMlMjJkYXRhJTIyJTNBJTIyJTIwU1lTVEVNX0lORk9fQ09MTEVDVE9SX1RPX1RFTEVNRVRSWV9QUk9DRVNTT1JTJTIwJTNEJTIwJTdCJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMTklMkMlMjJiJTIyJTNBMTYlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjBBV1NfQ09MTEVDVE9SJTNBJTIwJTVCcHJvY2Vzc19hd3NfdGVsZW1ldHJ5JTVEJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMjAlMkMlMjJiJTIyJTNBMTclN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjBFTlZJUk9OTUVOVF9DT0xMRUNUT1IlM0ElMjAlNUJwcm9jZXNzX2Vudmlyb25tZW50X3RlbGVtZXRyeSU1RCUyQyUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTIxJTJDJTIyYiUyMiUzQTE4JTdEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlbCUyMiUyQyUyMm1hcmslMjIlM0ElMjItJTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMCUyMCUyMEhPU1ROQU1FX0NPTExFQ1RPUiUzQSUyMCU1QnByb2Nlc3NfaG9zdG5hbWVfdGVsZW1ldHJ5JTVEJTJDJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMjIlN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjBQUk9DRVNTX0xJU1RfQ09MTEVDVE9SJTNBJTIwJTVCdGVzdF9hbnRpdmlydXNfZXhpc3RlbmNlJTVEJTIyJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBMjMlMkMlMjJiJTIyJTNBMTklN0QlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyY29udGV4dCUyMiUyQyUyMmRhdGElMjIlM0ElMjIlMjAlN0QlMjIlMkMlMjJsaW5lTnVtYmVycyUyMiUzQSU3QiUyMmElMjIlM0EyNCUyQyUyMmIlMjIlM0EyMCU3RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJjb250ZXh0JTIyJTJDJTIyZGF0YSUyMiUzQSUyMiUyMCUyMiUyQyUyMmxpbmVOdW1iZXJzJTIyJTNBJTdCJTIyYSUyMiUzQTI1JTJDJTIyYiUyMiUzQTIxJTdEJTdEJTVEJTJDJTIybGluZU51bWJlcnMlMjIlM0ElN0IlMjJhJTIyJTNBJTdCJTIyc3RhcnRMaW5lJTIyJTNBMTklMkMlMjJsaW5lc0NvdW50JTIyJTNBNyU3RCUyQyUyMmIlMjIlM0ElN0IlMjJzdGFydExpbmUlMjIlM0ExNiUyQyUyMmxpbmVzQ291bnQlMjIlM0E2JTdEJTdEJTdEJTdE"
+            "diffType": "MODIFIED",
+            "fileDiffHeader": "diff --git a/monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/system_info_telemetry_dispatcher.py b/monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/system_info_telemetry_dispatcher.py\nindex 639a392c..7aa6d3a6 100644\n--- a/monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/system_info_telemetry_dispatcher.py\n+++ b/monkey/monkey_island/cc/services/telemetry/processing/system_info_collectors/system_info_telemetry_dispatcher.py",
+            "hunks": [
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -3,14 +3,11 @@",
+                        " ",
+                        " from common.data.system_info_collectors_names import (AWS_COLLECTOR,",
+                        "                                                       ENVIRONMENT_COLLECTOR,",
+                        "-                                                      HOSTNAME_COLLECTOR,",
+                        "                                                       PROCESS_LIST_COLLECTOR)",
+                        " from monkey_island.cc.services.telemetry.processing.system_info_collectors.aws import \\",
+                        "     process_aws_telemetry",
+                        " from monkey_island.cc.services.telemetry.processing.system_info_collectors.environment import \\",
+                        "     process_environment_telemetry",
+                        "-from monkey_island.cc.services.telemetry.processing.system_info_collectors.hostname import \\",
+                        "-    process_hostname_telemetry",
+                        " from monkey_island.cc.services.telemetry.zero_trust_tests.antivirus_existence import \\",
+                        "     test_antivirus_existence",
+                        " "
+                    ]
+                },
+                {
+                    "swimmHunkMetadata": {
+                        "hunkComments": []
+                    },
+                    "hunkDiffLines": [
+                        "@@ -19,7 +16,6 @@",
+                        " SYSTEM_INFO_COLLECTOR_TO_TELEMETRY_PROCESSORS = {",
+                        "     AWS_COLLECTOR: [process_aws_telemetry],",
+                        "     ENVIRONMENT_COLLECTOR: [process_environment_telemetry],",
+                        "-    HOSTNAME_COLLECTOR: [process_hostname_telemetry],",
+                        "     PROCESS_LIST_COLLECTOR: [test_antivirus_existence]",
+                        " }",
+                        " "
+                    ]
+                }
             ]
         }
     },
-    "app_version": "0.1.90",
-    "file_version": "1.0.2"
+    "app_version": "0.3.5-1",
+    "file_version": "1.0.4"
 }
\ No newline at end of file

From e77868b656b40d904fc5cc2d5bd7a2c48abbb2d8 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 28 Jan 2021 13:44:14 -0500
Subject: [PATCH 32/38] ui: sort checkbox options alphabetically

Alphabetically sort options in AdvancedMultiSelect to improve usability.
Float "unsafe" options to the bottom so they are grouped together.
---
 .../ui-components/AdvancedMultiSelect.js      | 23 ++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 575dbae8e..6398e85db 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -33,10 +33,10 @@ class AdvancedMultiSelect extends React.Component {
   constructor(props) {
     super(props);
 
-    this.enumOptions = props.options.enumOptions;
     this.defaultValues = props.schema.default;
     this.infoPaneRefString = props.schema.items.$ref;
     this.registry = props.registry;
+    this.enumOptions = props.options.enumOptions.sort(this.compareOptions);
 
     this.state = {
       masterCheckboxState: this.getMasterCheckboxState(props.value),
@@ -49,6 +49,27 @@ class AdvancedMultiSelect extends React.Component {
     };
   }
 
+  // Sort options alphabetically. "Unsafe" options float to the bottom"
+  compareOptions = (a, b) => {
+    if (!this.isSafe(a.value) && this.isSafe(b.value)) {
+      return 1;
+    }
+
+    if (this.isSafe(a.value) && !this.isSafe(b.value)) {
+      return -1;
+    }
+
+    if (a.value < b.value) {
+      return -1
+    }
+
+    if (a.value > b.value) {
+      return 1
+    }
+
+    return 0;
+  }
+
   onMasterCheckboxClick = () => {
     if (this.state.masterCheckboxState === MasterCheckboxState.ALL) {
       var newValues = [];

From 117678f91a5a69a6d4d84db574cb6042692cc66c Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Thu, 28 Jan 2021 14:06:05 -0500
Subject: [PATCH 33/38] ui: fix minor css formatting issues

---
 .../cc/ui/src/styles/components/AdvancedMultiSelect.scss       | 2 +-
 monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss | 1 +
 .../cc/ui/src/styles/pages/ConfigurationPage.scss              | 3 +--
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/styles/components/AdvancedMultiSelect.scss b/monkey/monkey_island/cc/ui/src/styles/components/AdvancedMultiSelect.scss
index de3d5d542..cd1297f54 100644
--- a/monkey/monkey_island/cc/ui/src/styles/components/AdvancedMultiSelect.scss
+++ b/monkey/monkey_island/cc/ui/src/styles/components/AdvancedMultiSelect.scss
@@ -19,7 +19,7 @@
 }
 
 .advanced-multi-select .card-header .master-checkbox span {
-    padding-bottom: 0.188rem;
+  padding-bottom: 0.188rem;
 }
 
 .advanced-multi-select .card-header .header-title {
diff --git a/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss b/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss
index 518757713..976246cb6 100644
--- a/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss
+++ b/monkey/monkey_island/cc/ui/src/styles/components/InfoPane.scss
@@ -32,6 +32,7 @@
     margin-top: 1em;
     display: flex;
 }
+
 .info-pane-warning .warning-icon {
     margin-top: .188em;
     margin-left: 0em;
diff --git a/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss b/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss
index 6bda238ea..18e09d37b 100644
--- a/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss
+++ b/monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss
@@ -59,7 +59,6 @@
 
 .warning-icon {
     text-transform: uppercase;
-    color: #ffc107;
-    font-weight: 900;
+    color: #FFC107;
     margin-left: .75em;
 }

From 06685b14cfc10f97b3fd08333fe616b6443c7274 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Fri, 29 Jan 2021 10:52:14 -0500
Subject: [PATCH 34/38] ui: simplify compareOptions() with boolean arithmetic

---
 .../ui-components/AdvancedMultiSelect.js      | 21 ++++++-------------
 1 file changed, 6 insertions(+), 15 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 6398e85db..5a6cc6fcd 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -51,23 +51,14 @@ class AdvancedMultiSelect extends React.Component {
 
   // Sort options alphabetically. "Unsafe" options float to the bottom"
   compareOptions = (a, b) => {
-    if (!this.isSafe(a.value) && this.isSafe(b.value)) {
-      return 1;
+    // Apparently, you can use additive operators with boolean types. Ultimately,
+    // the ToNumber() abstraction operation is called to convert the booleans to
+    // numbers: https://tc39.es/ecma262/#sec-tonumeric
+    if (this.isSafe(b.value) - this.isSafe(a.value) !== 0) {
+      return this.isSafe(b.value) - this.isSafe(a.value);
     }
 
-    if (this.isSafe(a.value) && !this.isSafe(b.value)) {
-      return -1;
-    }
-
-    if (a.value < b.value) {
-      return -1
-    }
-
-    if (a.value > b.value) {
-      return 1
-    }
-
-    return 0;
+    return a.value.localeCompare(b.value);
   }
 
   onMasterCheckboxClick = () => {

From 57554ca4357c1229d6089d7d0eaa0bad6f76c0e1 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Fri, 29 Jan 2021 11:02:54 -0500
Subject: [PATCH 35/38] ui: fix some code cleanliness issues

---
 .../cc/ui/src/components/ui-components/AdvancedMultiSelect.js | 4 ++--
 .../cc/ui/src/components/ui-components/InfoPane.js            | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 5a6cc6fcd..4963aca7c 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -104,7 +104,7 @@ class AdvancedMultiSelect extends React.Component {
       return MasterCheckboxState.NONE;
     }
 
-    if (selectValues.length != this.enumOptions.length) {
+    if (selectValues.length !== this.enumOptions.length) {
       return MasterCheckboxState.MIXED;
     }
 
@@ -144,7 +144,7 @@ class AdvancedMultiSelect extends React.Component {
           title: definitionObj.title,
           content: definitionObj.info,
           link: definitionObj.link,
-          warningType: !(this.isSafe(itemKey)) ? WarningType.SINGLE : WarningType.NONE
+          warningType: this.isSafe(itemKey) ? WarningType.NONE : WarningType.SINGLE
         }
       }
     );
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js b/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
index 21686b468..902646068 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
@@ -62,7 +62,7 @@ function getSubtitle(props) {
 function getBody(props) {
   let body = [<span key={'body'}>{props.body}</span>];
 
-  if (props.warningType != WarningType.NONE) {
+  if (props.warningType !== WarningType.NONE) {
     body.push(getWarning(props.warningType));
   }
 
@@ -74,7 +74,7 @@ function getBody(props) {
 }
 
 function getWarning(warningType) {
-  if (warningType == WarningType.SINGLE) {
+  if (warningType === WarningType.SINGLE) {
     var warning = <span>This option may cause a system to become unstable or
       may change a system's state in undesirable ways. Therefore, this option
       is not recommended for use in production or other sensitive

From 1440121aeff3d042984be265e5951aacdec96eb2 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Fri, 29 Jan 2021 11:04:46 -0500
Subject: [PATCH 36/38] ui: rename unsafeOptionsSelected() ->
 isUnsafeOptionSelected()

---
 .../ui-components/AdvancedMultiSelect.js           | 14 +++++++-------
 .../cc/ui/src/components/ui-components/InfoPane.js |  4 ++--
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 4963aca7c..0dc813dc6 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -44,7 +44,7 @@ class AdvancedMultiSelect extends React.Component {
       infoPaneParams: getDefaultPaneParams(
         this.infoPaneRefString,
         this.registry,
-        this.unsafeOptionsSelected(this.props.value)
+        this.isUnsafeOptionSelected(this.props.value)
       )
     };
   }
@@ -71,7 +71,7 @@ class AdvancedMultiSelect extends React.Component {
     this.props.onChange(newValues);
     this.setMasterCheckboxState(newValues);
     this.setHideResetState(newValues);
-    this.setPaneInfoToDefault(this.unsafeOptionsSelected(newValues));
+    this.setPaneInfoToDefault(this.isUnsafeOptionSelected(newValues));
   }
 
   onChildCheckboxClick = (value) => {
@@ -115,7 +115,7 @@ class AdvancedMultiSelect extends React.Component {
     this.props.onChange(this.defaultValues);
     this.setHideResetState(this.defaultValues);
     this.setMasterCheckboxState(this.defaultValues);
-    this.setPaneInfoToDefault(this.unsafeOptionsSelected(this.defaultValues));
+    this.setPaneInfoToDefault(this.isUnsafeOptionSelected(this.defaultValues));
   }
 
   setHideResetState(selectValues) {
@@ -125,10 +125,10 @@ class AdvancedMultiSelect extends React.Component {
   }
 
   getHideResetState(selectValues) {
-    return !(this.unsafeOptionsSelected(selectValues))
+    return !(this.isUnsafeOptionSelected(selectValues))
   }
 
-  unsafeOptionsSelected(selectValues) {
+  isUnsafeOptionSelected(selectValues) {
     return !(selectValues.every((value) => this.isSafe(value)));
   }
 
@@ -150,12 +150,12 @@ class AdvancedMultiSelect extends React.Component {
     );
   }
 
-  setPaneInfoToDefault(unsafeOptionsSelected) {
+  setPaneInfoToDefault(isUnsafeOptionSelected) {
     this.setState(() => ({
       infoPaneParams: getDefaultPaneParams(
         this.props.schema.items.$ref,
         this.props.registry,
-        unsafeOptionsSelected
+        isUnsafeOptionSelected
       )
     }));
   }
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js b/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
index 902646068..e6476d3a2 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
@@ -12,13 +12,13 @@ const WarningType = {
   MULTIPLE: 2
 }
 
-function getDefaultPaneParams(refString, registry, unsafeOptionsSelected) {
+function getDefaultPaneParams(refString, registry, isUnsafeOptionSelected) {
   let configSection = getObjectFromRegistryByRef(refString, registry);
   return (
     {
       title: configSection.title,
       content: configSection.description,
-      warningType: unsafeOptionsSelected ? WarningType.Multiple : WarningType.NONE
+      warningType: isUnsafeOptionSelected ? WarningType.Multiple : WarningType.NONE
     });
 }
 

From 9f12702c3e835f90171a0d474d760015fb71ca53 Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Mon, 1 Feb 2021 06:57:04 -0500
Subject: [PATCH 37/38] ui: code readability improvements

---
 .../components/ui-components/ChildCheckbox.js |  9 +---
 .../src/components/ui-components/InfoPane.js  | 41 ++++++++++---------
 2 files changed, 23 insertions(+), 27 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
index 47a86dab6..6ebe69985 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
@@ -52,18 +52,13 @@ function ChildCheckbox(props) {
     safe
   } = props;
 
-  let displayLabel = [<span key={'label'} className={'option-text'}>{label}</span>];
-
-  if (!safe) {
-    displayLabel.push(<WarningIcon key="warning-icon"/>)
-  }
-
   return (
     <Form.Group onClick={() => onPaneClick(value)}>
       <Button value={value} variant={'link'} disabled={disabled} onClick={() => onClick(value)}>
         <FontAwesomeIcon icon={checkboxState ? faCheckSquare : faSquare}/>
       </Button>
-      {displayLabel}
+      <span key={'label'} className={'option-text'}>{label}</span>
+      {!safe && <WarningIcon key="warning-icon"/>}
     </Form.Group>
   );
 }
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js b/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
index e6476d3a2..21e71e29f 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/InfoPane.js
@@ -60,37 +60,38 @@ function getSubtitle(props) {
 }
 
 function getBody(props) {
-  let body = [<span key={'body'}>{props.body}</span>];
-
-  if (props.warningType !== WarningType.NONE) {
-    body.push(getWarning(props.warningType));
-  }
-
   return (
     <Card.Body className={'pane-body'}>
-      {body}
+      <span key={'body'}>{props.body}</span>
+      {props.warningType !== WarningType.NONE && getWarning(props.warningType)}
     </Card.Body>
   )
 }
 
 function getWarning(warningType) {
-  if (warningType === WarningType.SINGLE) {
-    var warning = <span>This option may cause a system to become unstable or
-      may change a system's state in undesirable ways. Therefore, this option
-      is not recommended for use in production or other sensitive
-      environments.</span>;
-  } else {
-    warning = <span>Some options have been selected that may cause a system
-      to become unstable or may change a system's state in undesirable ways.
-      Running Infection Monkey in a production or other sensitive environment
-      with this configuration is not recommended.</span>;
-  }
-
   return (
     <div className={'info-pane-warning'} key={'warning'}>
-      <WarningIcon/>{warning}
+      <WarningIcon/>{warningType === WarningType.SINGLE ? getSingleOptionWarning() : getMultipleOptionsWarning()}
     </div>
   );
 }
 
+function getSingleOptionWarning() {
+  return (
+    <span>This option may cause a system to become unstable or
+    may change a system's state in undesirable ways. Therefore, this option
+    is not recommended for use in production or other sensitive
+    environments.</span>
+  );
+}
+
+function getMultipleOptionsWarning() {
+  return (
+    <span>Some options have been selected that may cause a system
+    to become unstable or may change a system's state in undesirable ways.
+    Running Infection Monkey in a production or other sensitive environment
+    with this configuration is not recommended.</span>
+  );
+}
+
 export {getDefaultPaneParams, InfoPane, WarningType}

From 09a8415aec98963aa575d04f0de8950d185398da Mon Sep 17 00:00:00 2001
From: Mike Salvatore <mike.s.salvatore@gmail.com>
Date: Mon, 1 Feb 2021 07:14:15 -0500
Subject: [PATCH 38/38] ui: remove disabled/readonly from AdvancedMultiSelect

---
 .../src/components/ui-components/AdvancedMultiSelect.js  | 9 +++------
 .../cc/ui/src/components/ui-components/ChildCheckbox.js  | 8 +++-----
 .../cc/ui/src/components/ui-components/MasterCheckbox.js | 3 +--
 3 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
index 0dc813dc6..670b99cd7 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/AdvancedMultiSelect.js
@@ -11,7 +11,6 @@ import {getFullDefinitionByKey} from './JsonSchemaHelpers';
 function AdvancedMultiSelectHeader(props) {
   const {
     title,
-    disabled,
     onCheckboxClick,
     checkboxState,
     hideReset,
@@ -20,7 +19,7 @@ function AdvancedMultiSelectHeader(props) {
 
   return (
     <Card.Header className="d-flex justify-content-between">
-      <MasterCheckbox title={title} disabled={disabled} onClick={onCheckboxClick} checkboxState={checkboxState}/>
+      <MasterCheckbox title={title} onClick={onCheckboxClick} checkboxState={checkboxState}/>
       <Button className={'reset-safe-defaults'} type={'reset'} variant={'warning'}
         hidden={hideReset} onClick={onResetClick}>
         Reset to safe defaults
@@ -165,8 +164,6 @@ class AdvancedMultiSelect extends React.Component {
       schema,
       id,
       required,
-      disabled,
-      readonly,
       multiple,
       autofocus
     } = this.props;
@@ -174,12 +171,12 @@ class AdvancedMultiSelect extends React.Component {
     return (
       <div className={'advanced-multi-select'}>
         <AdvancedMultiSelectHeader title={schema.title}
-          disabled={disabled} onCheckboxClick={this.onMasterCheckboxClick}
+          onCheckboxClick={this.onMasterCheckboxClick}
           checkboxState={this.state.masterCheckboxState}
           hideReset={this.state.hideReset} onResetClick={this.onResetClick}/>
 
         <ChildCheckboxContainer id={id} multiple={multiple} required={required}
-          disabled={disabled || readonly} autoFocus={autofocus} isSafe={this.isSafe}
+          autoFocus={autofocus} isSafe={this.isSafe}
           onPaneClick={this.setPaneInfo} onCheckboxClick={this.onChildCheckboxClick}
           selectedValues={this.props.value} enumOptions={this.enumOptions}/>
 
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
index 6ebe69985..055087e42 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/ChildCheckbox.js
@@ -14,7 +14,6 @@ function ChildCheckboxContainer(props) {
     id,
     multiple,
     required,
-    disabled,
     autofocus,
     onPaneClick,
     onCheckboxClick,
@@ -26,13 +25,13 @@ function ChildCheckboxContainer(props) {
     <Form.Group
       style={{height: `${getComponentHeight(enumOptions.length)}px`}}
       id={id} multiple={multiple} className='choice-block form-control'
-      required={required} disabled={disabled} autoFocus={autofocus}>
+      required={required} autoFocus={autofocus}>
       {
         enumOptions.map(({value, label}, i) => {
           return (
             <ChildCheckbox key={i} onPaneClick={onPaneClick}
             onClick={onCheckboxClick} value={value}
-            disabled={disabled} label={label} checkboxState={selectedValues.includes(value)}
+            label={label} checkboxState={selectedValues.includes(value)}
             safe={isSafe(value)}/>
           );
         }
@@ -46,7 +45,6 @@ function ChildCheckbox(props) {
     onPaneClick,
     onClick,
     value,
-    disabled,
     label,
     checkboxState,
     safe
@@ -54,7 +52,7 @@ function ChildCheckbox(props) {
 
   return (
     <Form.Group onClick={() => onPaneClick(value)}>
-      <Button value={value} variant={'link'} disabled={disabled} onClick={() => onClick(value)}>
+      <Button value={value} variant={'link'} onClick={() => onClick(value)}>
         <FontAwesomeIcon icon={checkboxState ? faCheckSquare : faSquare}/>
       </Button>
       <span key={'label'} className={'option-text'}>{label}</span>
diff --git a/monkey/monkey_island/cc/ui/src/components/ui-components/MasterCheckbox.js b/monkey/monkey_island/cc/ui/src/components/ui-components/MasterCheckbox.js
index b5a646aca..907ccf08f 100644
--- a/monkey/monkey_island/cc/ui/src/components/ui-components/MasterCheckbox.js
+++ b/monkey/monkey_island/cc/ui/src/components/ui-components/MasterCheckbox.js
@@ -15,7 +15,6 @@ const MasterCheckboxState = {
 function MasterCheckbox(props) {
   const {
     title,
-    disabled,
     onClick,
     checkboxState
   } = props;
@@ -30,7 +29,7 @@ function MasterCheckbox(props) {
 
   return (
     <div className={'master-checkbox'}>
-      <Button key={`${title}-button`} variant={'link'} disabled={disabled} onClick={onClick}>
+      <Button key={`${title}-button`} variant={'link'} onClick={onClick}>
         <FontAwesomeIcon icon={newCheckboxIcon}/>
       </Button>
       <span className={'header-title'}>{title}</span>