From 1ac93dea046d24fc033a30d391acce596506d25d Mon Sep 17 00:00:00 2001 From: jame2O Date: Wed, 13 May 2026 08:32:31 +0100 Subject: [PATCH 01/10] feat: initial commit --- .../v1/dataStreams/advancedHuntingQuery.json | 52 ++ .../v1/dataStreams/deviceSecureStore.json | 24 + .../v1/dataStreams/devicesNew.json | 84 +++ .../v1/dataStreams/exposureScore.json | 24 + .../v1/dataStreams/listDevices.json | 42 ++ .../v1/dataStreams/listRecommendations.json | 25 + .../v1/dataStreams/listVulnerabilities.json | 26 + .../Devices/deviceStatus.dash.json | 378 ++++++++++++++ .../v1/defaultContent/Devices/manifest.json | 12 + .../defaultContent/Devices/overview.dash.json | 197 +++++++ .../v1/defaultContent/cockpit.dash.json | 494 ++++++++++++++++++ .../v1/defaultContent/manifest.json | 20 + .../defaultContent/recommendations.dash.json | 442 ++++++++++++++++ .../v1/defaultContent/scopes.json | 19 + .../defaultContent/vulnerabilities.dash.json | 231 ++++++++ .../Microsoft Defender (Preview)/v1/icon.png | Bin 0 -> 67410 bytes .../v1/indexDefinitions/default.json | 31 ++ .../v1/metadata.json | 46 ++ .../Microsoft Defender (Preview)/v1/ui.json | 29 + 19 files changed, 2176 insertions(+) create mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/advancedHuntingQuery.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/deviceSecureStore.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/devicesNew.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/exposureScore.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/listDevices.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/listRecommendations.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/listVulnerabilities.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/deviceStatus.dash.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/manifest.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/overview.dash.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/cockpit.dash.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/manifest.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/recommendations.dash.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/scopes.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/vulnerabilities.dash.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/icon.png create mode 100644 plugins/Microsoft Defender (Preview)/v1/indexDefinitions/default.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/metadata.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/ui.json diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/advancedHuntingQuery.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/advancedHuntingQuery.json new file mode 100644 index 0000000..df4d478 --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/dataStreams/advancedHuntingQuery.json @@ -0,0 +1,52 @@ +{ + "name": "advancedHuntingQuery", + "displayName": "Advanced Hunting Query", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "post", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "pathToData": "Results", + "endpointPath": "/api/advancedqueries/run", + "postBody": { + "Query": "{{query}}" + }, + "getArgs": [], + "headers": [] + }, + "matches": "none", + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear" + ], + "providesPluginDiagnostics": true, + "tags": [ + "KQL", + "Advanced Hunting" + ], + "ui": [ + { + "name": "query", + "language": "kusto", + "label": "Query", + "type": "code", + "validation": { + "required": true + } + } + ] +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/deviceSecureStore.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/deviceSecureStore.json new file mode 100644 index 0000000..d6d809b --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/dataStreams/deviceSecureStore.json @@ -0,0 +1,24 @@ +{ + "name": "deviceSecureStore", + "displayName": "Device Secure Score", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "/api/configurationScore", + "getArgs": [], + "headers": [] + }, + "matches": "none", + "timeframes": false, + "providesPluginDiagnostics": true, + "tags": [ + "Device" + ] +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/devicesNew.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/devicesNew.json new file mode 100644 index 0000000..a982236 --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/dataStreams/devicesNew.json @@ -0,0 +1,84 @@ +{ + "name": "devicesNew", + "displayName": "Devices", + "baseDataSourceName": "httpRequestScopedSingle", + "config": { + "httpMethod": "get", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "api/machines/{{object.deviceid}}", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "sourceId": "id", + "name": "computerDnsName", + "shape": "string", + "role": "label", + "sourceType": "defender-device" + }, + { + "shape": [ + "state", + { + "map": { + "unmonitored": [], + "unknown": [ + "Unknown", + "Inactive" + ], + "error": [ + "ImpairedCommunication", + "NoSensorDataImpairedCommunication", + "NoSensorData" + ], + "warning": [], + "success": [ + "Active" + ] + } + } + ], + "name": "healthStatus" + }, + { + "shape": [ + "state", + { + "map": { + "unmonitored": [], + "unknown": [], + "error": [ + "High" + ], + "warning": [ + "Medium" + ], + "success": [ + "Low" + ] + } + } + ], + "name": "exposureLevel" + }, + { + "pattern": ".*" + } + ], + "matches": { + "sourceType": { + "type": "equals", + "value": "defender-device" + } + }, + "timeframes": false, + "providesPluginDiagnostics": true, + "tags": [] +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/exposureScore.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/exposureScore.json new file mode 100644 index 0000000..0605c99 --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/dataStreams/exposureScore.json @@ -0,0 +1,24 @@ +{ + "name": "exposureScore", + "displayName": "Device Exposure Score", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "api/exposurescore", + "getArgs": [], + "headers": [] + }, + "matches": "none", + "timeframes": false, + "providesPluginDiagnostics": true, + "tags": [ + "Device" + ] +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/listDevices.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/listDevices.json new file mode 100644 index 0000000..00a2a45 --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/dataStreams/listDevices.json @@ -0,0 +1,42 @@ +{ + "name": "listDevices", + "displayName": "List Devices", + "description": "", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "api/machines", + "pathToData": "value", + "getArgs": [], + "headers": [] + }, + "matches": [ + { + "sourceType": { + "type": "equals", + "value": "squaredup/data-source" + }, + "pluginId": { + "type": "equals", + "value": "plugin-bi89KMBtdXqKNJIwcn2N" + }, + "sourceId": { + "type": "equals", + "value": "config-TPvNIMMPMu4LhSro2Rk7" + } + } + ], + "providesPluginDiagnostics": true, + "timeframes": false, + "tags": [], + "visibility": { + "type": "hidden" + } +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/listRecommendations.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/listRecommendations.json new file mode 100644 index 0000000..c18f891 --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/dataStreams/listRecommendations.json @@ -0,0 +1,25 @@ +{ + "name": "listRecommendations", + "displayName": "Recommendations", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "api/recommendations", + "pathToData": "value", + "getArgs": [], + "headers": [] + }, + "matches": "none", + "timeframes": false, + "providesPluginDiagnostics": true, + "tags": [ + "Recommendations" + ] +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/listVulnerabilities.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/listVulnerabilities.json new file mode 100644 index 0000000..0d9750d --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/dataStreams/listVulnerabilities.json @@ -0,0 +1,26 @@ +{ + "name": "listVulnerabilities", + "displayName": "Vulnerabilities", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "api/vulnerabilities/machinesVulnerabilities", + "pathToData": "value", + "getArgs": [], + "headers": [] + }, + "matches": "none", + "timeframes": false, + "providesPluginDiagnostics": true, + "tags": [ + "Machines", + "Vulnerabilities" + ] +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/deviceStatus.dash.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/deviceStatus.dash.json new file mode 100644 index 0000000..7133c36 --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/deviceStatus.dash.json @@ -0,0 +1,378 @@ +{ + "name": "Device Status", + "schemaVersion": "1.5", + "dashboard": { + "_type": "layout/grid", + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 0, + "y": 0, + "i": "6038c7ef-4b3b-484d-bfda-94d509b4517d", + "z": 0, + "config": { + "variables": [ + "{{variables.[Defender Device]}}" + ], + "dataStream": { + "name": "devicesNew", + "id": "{{dataStreams.devicesNew}}" + }, + "scope": { + "variable": "{{variables.[Defender Device]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[Defender Devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Exposure Level", + "visualisation": { + "type": "data-stream-blocks", + "config": { + "data-stream-blocks": { + "stateColumn": "exposureLevel", + "linkColumn": "none", + "labelColumn": "exposureLevel[Expanded].rawState" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 1, + "y": 0, + "i": "c5c507d9-02c0-44f1-adfb-d39aaac0ba22", + "z": 0, + "config": { + "variables": [ + "{{variables.[Defender Device]}}" + ], + "dataStream": { + "name": "devicesNew", + "id": "{{dataStreams.devicesNew}}" + }, + "scope": { + "variable": "{{variables.[Defender Device]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[Defender Devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Health Status (Sensor)", + "visualisation": { + "type": "data-stream-blocks", + "config": { + "data-stream-blocks": { + "stateColumn": "healthStatus", + "linkColumn": "none", + "labelColumn": "healthStatus[Expanded].rawState" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 2, + "y": 0, + "i": "5c51849e-01ae-4319-8505-f89854815182", + "z": 0, + "config": { + "variables": [ + "{{variables.[Defender Device]}}" + ], + "dataStream": { + "name": "devicesNew", + "metadata": [ + { + "shape": [ + "state", + { + "map": { + "warning": [], + "unmonitored": [], + "error": [ + "Down" + ], + "success": [ + "Up" + ], + "unknown": [] + } + } + ], + "name": "ipAddresses.0.operationalStatus" + } + ], + "id": "{{dataStreams.devicesNew}}" + }, + "scope": { + "variable": "{{variables.[Defender Device]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[Defender Devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Network Operational Status", + "visualisation": { + "type": "data-stream-blocks", + "config": { + "data-stream-blocks": { + "stateColumn": "ipAddresses.0.operationalStatus", + "linkColumn": "none", + "labelColumn": "ipAddresses.0.operationalStatus[Expanded].rawState" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 3, + "y": 0, + "i": "76485e06-c17a-4239-bf23-561ae12ceaa4", + "z": 0, + "config": { + "variables": [ + "{{variables.[Defender Device]}}" + ], + "dataStream": { + "name": "devicesNew", + "id": "{{dataStreams.devicesNew}}" + }, + "scope": { + "variable": "{{variables.[Defender Device]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[Defender Devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Risk Score", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "riskScore", + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 3, + "i": "0c276a67-d530-42a2-86a9-8aeb613372ac", + "z": 0, + "config": { + "variables": [ + "{{variables.[Defender Device]}}" + ], + "dataStream": { + "name": "devicesNew", + "id": "{{dataStreams.devicesNew}}" + }, + "scope": { + "variable": "{{variables.[Defender Device]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[Defender Devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Device Attributes", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "mergedIntoMachineId", + "isPotentialDuplication", + "isExcluded", + "exclusionReason", + "firstSeen", + "lastSeen", + "agentVersion", + "deviceValue", + "rbacGroupId", + "rbacGroupName", + "isAadJoined", + "aadDeviceId", + "onboardingStatus", + "managedBy", + "managedByStatus" + ], + "hiddenColumns": [ + "@odata.context", + "computerDnsName", + "osPlatform", + "osProcessor", + "version", + "lastIpAddress", + "lastExternalIpAddress", + "osBuild", + "healthStatus", + "riskScore", + "exposureLevel", + "osArchitecture", + "ipAddresses.0.ipAddress", + "ipAddresses.0.macAddress", + "ipAddresses.0.type", + "ipAddresses.0.operationalStatus", + "ipAddresses.1.ipAddress", + "ipAddresses.1.macAddress", + "ipAddresses.1.type", + "ipAddresses.1.operationalStatus", + "ipAddresses.2.ipAddress", + "ipAddresses.2.macAddress", + "ipAddresses.2.type", + "ipAddresses.2.operationalStatus", + "ipAddresses.3.ipAddress", + "ipAddresses.3.macAddress", + "ipAddresses.3.type", + "ipAddresses.3.operationalStatus", + "healthStatus[Expanded].rawState", + "exposureLevel[Expanded].rawState", + "id", + "vmMetadata.vmId", + "vmMetadata.cloudProvider", + "vmMetadata.resourceId", + "vmMetadata.subscriptionId" + ], + "transpose": true + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 3, + "i": "d815528c-6c58-4e27-b390-d95f070fa1a4", + "z": 0, + "config": { + "variables": [ + "{{variables.[Defender Device]}}" + ], + "dataStream": { + "name": "devicesNew", + "id": "{{dataStreams.devicesNew}}" + }, + "scope": { + "variable": "{{variables.[Defender Device]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[Defender Devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Devices Properties", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "osPlatform", + "osProcessor", + "version", + "lastIpAddress", + "lastExternalIpAddress", + "agentVersion", + "osBuild", + "osArchitecture", + "vmMetadata.cloudProvider", + "vmMetadata.resourceId", + "vmMetadata.subscriptionId", + "id", + "vmMetadata.vmId" + ], + "hiddenColumns": [ + "@odata.context", + "mergedIntoMachineId", + "isPotentialDuplication", + "isExcluded", + "exclusionReason", + "firstSeen", + "lastSeen", + "healthStatus", + "deviceValue", + "rbacGroupId", + "rbacGroupName", + "riskScore", + "exposureLevel", + "isAadJoined", + "aadDeviceId", + "onboardingStatus", + "managedBy", + "managedByStatus", + "ipAddresses.0.ipAddress", + "ipAddresses.0.macAddress", + "ipAddresses.0.type", + "ipAddresses.0.operationalStatus", + "ipAddresses.1.ipAddress", + "ipAddresses.1.macAddress", + "ipAddresses.1.type", + "ipAddresses.1.operationalStatus", + "ipAddresses.2.ipAddress", + "ipAddresses.2.macAddress", + "ipAddresses.2.type", + "ipAddresses.2.operationalStatus", + "ipAddresses.3.ipAddress", + "ipAddresses.3.macAddress", + "ipAddresses.3.type", + "ipAddresses.3.operationalStatus", + "healthStatus[Expanded].rawState", + "computerDnsName", + "exposureLevel[Expanded].rawState" + ], + "transpose": true + } + } + } + } + } + ], + "version": 124, + "columns": 4 + }, + "variables": [ + "{{variables.[Defender Device]}}" + ] +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/manifest.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/manifest.json new file mode 100644 index 0000000..4b56ba1 --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/manifest.json @@ -0,0 +1,12 @@ +{ + "items": [ + { + "name": "overview", + "type": "dashboard" + }, + { + "name": "deviceStatus", + "type": "dashboard" + } + ] +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/overview.dash.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/overview.dash.json new file mode 100644 index 0000000..7cae0d3 --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/overview.dash.json @@ -0,0 +1,197 @@ +{ + "name": "Overview", + "schemaVersion": "1.5", + "dashboard": { + "_type": "layout/grid", + "contents": [ + { + "static": false, + "w": 2, + "moved": false, + "h": 3, + "x": 0, + "y": 0, + "i": "29387eac-2ed1-4862-bbb1-c7a23079733e", + "z": 0, + "config": { + "dataStream": { + "name": "devicesNew", + "id": "{{dataStreams.devicesNew}}", + "sort": { + "by": [ + [ + "exposureLevel", + "desc" + ] + ] + } + }, + "scope": { + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[Defender Devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Exposure Level", + "visualisation": { + "type": "data-stream-blocks", + "config": { + "data-stream-blocks": { + "stateColumn": "exposureLevel", + "linkColumn": "computerDnsName", + "sublabel": "exposureLevel[Expanded].rawState", + "columns": 1, + "labelColumn": "computerDnsName" + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 3, + "x": 2, + "y": 0, + "i": "395663f6-9e18-4837-89ec-6013d3e85493", + "z": 0, + "config": { + "dataStream": { + "name": "devicesNew", + "id": "{{dataStreams.devicesNew}}", + "sort": { + "by": [ + [ + "healthStatus", + "desc" + ] + ] + } + }, + "scope": { + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[Defender Devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Health Status (Sensor)", + "visualisation": { + "type": "data-stream-blocks", + "config": { + "data-stream-blocks": { + "stateColumn": "healthStatus", + "linkColumn": "computerDnsName", + "sublabel": "healthStatus[Expanded].rawState", + "columns": 1, + "labelColumn": "computerDnsName" + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 4, + "x": 0, + "y": 3, + "i": "1a8ad0a9-dbf6-4b42-91d8-d0c0ef62a9b3", + "z": 0, + "config": { + "dataStream": { + "name": "devicesNew", + "id": "{{dataStreams.devicesNew}}", + "sort": { + "by": [ + [ + "computerDnsName", + "asc" + ] + ] + } + }, + "scope": { + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[Defender Devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Properties", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "computerDnsName", + "exposureLevel", + "healthStatus", + "riskScore", + "onboardingStatus", + "lastSeen", + "agentVersion", + "osPlatform", + "osBuild", + "osProcessor", + "version", + "id", + "mergedIntoMachineId", + "isPotentialDuplication", + "isExcluded", + "exclusionReason", + "firstSeen", + "lastIpAddress", + "lastExternalIpAddress", + "deviceValue", + "rbacGroupId", + "rbacGroupName", + "isAadJoined", + "aadDeviceId", + "osArchitecture", + "managedBy", + "managedByStatus", + "ipAddresses.0.ipAddress", + "ipAddresses.0.macAddress", + "ipAddresses.0.type", + "ipAddresses.0.operationalStatus", + "ipAddresses.1.ipAddress", + "ipAddresses.1.macAddress", + "ipAddresses.1.type", + "ipAddresses.1.operationalStatus", + "ipAddresses.2.ipAddress", + "ipAddresses.2.macAddress", + "ipAddresses.2.type", + "ipAddresses.2.operationalStatus", + "ipAddresses.3.ipAddress", + "ipAddresses.3.macAddress", + "ipAddresses.3.type", + "ipAddresses.3.operationalStatus", + "vmMetadata.vmId", + "vmMetadata.cloudProvider", + "vmMetadata.resourceId", + "vmMetadata.subscriptionId", + "@odata.context", + "healthStatus[Expanded].rawState", + "exposureLevel[Expanded].rawState" + ], + "hiddenColumns": [] + } + } + } + } + } + ], + "version": 59, + "columns": 4 + } +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/cockpit.dash.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/cockpit.dash.json new file mode 100644 index 0000000..d7a6297 --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/defaultContent/cockpit.dash.json @@ -0,0 +1,494 @@ +{ + "name": "Cockpit", + "schemaVersion": "1.5", + "dashboard": { + "_type": "layout/grid", + "contents": [ + { + "static": false, + "w": 2, + "moved": false, + "h": 2, + "x": 0, + "y": 0, + "i": "c10e229a-9e67-41f0-ba01-83ee1e33e7b2", + "z": 0, + "config": { + "dataStream": { + "name": "deviceSecureStore", + "id": "{{dataStreams.deviceSecureStore}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Device Secure Score", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "score_percentage", + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 2, + "x": 2, + "y": 0, + "i": "ef878c08-56ff-4b33-b499-8809b0bbc73a", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "exposureScore", + "id": "{{dataStreams.exposureScore}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "monitorOld": { + "tileRollsUp": true, + "monitorType": "threshold", + "condition": { + "columns": [ + "score" + ], + "logic": { + "if": [ + { + ">": [ + { + "var": "top" + }, + 70 + ] + }, + "error", + { + ">": [ + { + "var": "top" + }, + 30 + ] + }, + "warning" + ] + } + }, + "_type": "simple", + "column": "score", + "aggregation": "top", + "groupBy": "__group_by_none__", + "frequency": 15 + }, + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Device Exposure Score", + "visualisation": { + "type": "data-stream-gauge", + "config": { + "data-stream-gauge": { + "value": { + "type": "mean", + "columns": [ + "score" + ] + } + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 0, + "y": 2, + "i": "1740a4de-4864-498e-a3e0-747a5d8ffa11", + "z": 0, + "config": { + "dataStream": { + "name": "advancedHuntingQuery", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "ActionType", + "operation": "equals", + "value": "AntivirusDetection" + }, + { + "column": "ActionType", + "operation": "equals", + "value": "AntivirusDetectionCancelled" + }, + { + "column": "ActionType", + "operation": "equals", + "value": "AntivirusMalwareActionFailed" + } + ] + }, + "dataSourceConfig": { + "query": "DeviceEvents\n| project Timestamp, DeviceName, ActionType\n| where Timestamp >= datetime({{{{raw}}}}{{timeframe.start}}) and Timestamp <= datetime({{timeframe.end}}{{{{/raw}}}})" + }, + "id": "{{dataStreams.advancedHuntingQuery}}", + "group": { + "by": [], + "aggregate": [] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "monitorOld": { + "tileRollsUp": true, + "monitorType": "threshold", + "condition": { + "columns": [], + "logic": { + "if": [ + { + ">": [ + { + "var": "count" + }, + 0 + ] + }, + "error" + ] + } + }, + "_type": "simple", + "aggregation": "count", + "groupBy": "__group_by_none__", + "frequency": 15 + }, + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Malware & Antivirus Detected", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": { + "type": "count" + }, + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 1, + "y": 2, + "i": "f5de789a-8f5e-4a36-82b6-f6a2fc2e0ba9", + "z": 0, + "config": { + "dataStream": { + "name": "advancedHuntingQuery", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "ActionType", + "operation": "equals", + "value": "UserAccountCreated" + }, + { + "column": "ActionType", + "operation": "equals", + "value": "ScheduledTaskCreated" + }, + { + "column": "ActionType", + "operation": "equals", + "value": "ScheduledTaskDeleted" + }, + { + "column": "ActionType", + "operation": "equals", + "value": "UserAccountModified" + }, + { + "column": "ActionType", + "operation": "equals", + "value": "UserAccountAddedToLocalGroup" + } + ] + }, + "dataSourceConfig": { + "query": "DeviceEvents\n| project Timestamp, DeviceName, ActionType\n| where Timestamp >= datetime({{{{raw}}}}{{timeframe.start}}) and Timestamp <= datetime({{timeframe.end}}{{{{/raw}}}})" + }, + "id": "{{dataStreams.advancedHuntingQuery}}", + "group": { + "by": [], + "aggregate": [] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "monitorOld": { + "tileRollsUp": true, + "monitorType": "threshold", + "condition": { + "columns": [], + "logic": { + "if": [ + { + ">": [ + { + "var": "count" + }, + 0 + ] + }, + "error" + ] + } + }, + "_type": "simple", + "aggregation": "count", + "groupBy": "__group_by_none__", + "frequency": 15 + }, + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Persistence & Privilege Escalation", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": { + "type": "count" + }, + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 2, + "y": 2, + "i": "76f4a20b-d428-479f-93ae-7899f2274b99", + "z": 0, + "config": { + "dataStream": { + "name": "advancedHuntingQuery", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "ActionType", + "operation": "contains", + "value": "AppControl*" + } + ] + }, + "dataSourceConfig": { + "query": "DeviceEvents\n| project Timestamp, DeviceName, ActionType\n| where Timestamp >= datetime({{{{raw}}}}{{timeframe.start}}) and Timestamp <= datetime({{timeframe.end}}{{{{/raw}}}})" + }, + "id": "{{dataStreams.advancedHuntingQuery}}", + "group": { + "by": [], + "aggregate": [] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "monitorOld": { + "tileRollsUp": true, + "monitorType": "threshold", + "condition": { + "columns": [], + "logic": { + "if": [ + { + ">": [ + { + "var": "count" + }, + 0 + ] + }, + "error" + ] + } + }, + "_type": "simple", + "aggregation": "count", + "groupBy": "__group_by_none__", + "frequency": 15 + }, + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Application Control", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": { + "type": "count" + }, + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 3, + "y": 2, + "i": "b63f2258-84f3-4f2e-9ee5-701a7953eea3", + "z": 0, + "config": { + "dataStream": { + "name": "advancedHuntingQuery", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "ActionType", + "operation": "equals", + "value": "ExploitGuardNetworkProtectionBlocked" + }, + { + "column": "ActionType", + "operation": "equals", + "value": "ExploitGuardNonMicrosoftSignedBlocked" + } + ] + }, + "dataSourceConfig": { + "query": "DeviceEvents\n| project Timestamp, DeviceName, ActionType\n| where Timestamp >= datetime({{{{raw}}}}{{timeframe.start}}) and Timestamp <= datetime({{timeframe.end}}{{{{/raw}}}})" + }, + "id": "{{dataStreams.advancedHuntingQuery}}", + "group": { + "by": [], + "aggregate": [] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "monitorOld": { + "tileRollsUp": true, + "monitorType": "threshold", + "condition": { + "columns": [], + "logic": { + "if": [ + { + ">": [ + { + "var": "count" + }, + 0 + ] + }, + "error" + ] + } + }, + "_type": "simple", + "aggregation": "count", + "groupBy": "__group_by_none__", + "frequency": 15 + }, + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Exploits", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": { + "type": "count" + }, + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 2, + "x": 0, + "y": 5, + "i": "956930e3-37fa-49da-a015-7630a5d2d754", + "z": 0, + "config": { + "dataStream": { + "name": "advancedHuntingQuery", + "dataSourceConfig": { + "query": "DeviceEvents\n| project Timestamp, DeviceName, ActionType\n| where Timestamp >= datetime({{{{raw}}}}{{timeframe.start}}) and Timestamp <= datetime({{timeframe.end}}{{{{/raw}}}})" + }, + "id": "{{dataStreams.advancedHuntingQuery}}", + "group": { + "by": [], + "aggregate": [] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Events Timeline", + "visualisation": { + "type": "data-stream-line-graph", + "config": { + "data-stream-line-graph": { + "seriesColumn": "none", + "cumulative": false, + "xAxisColumn": "Timestamp", + "yAxisColumn": [ + "builtin_count_by_label" + ] + } + } + } + } + } + ], + "version": 99, + "columns": 4 + } +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/manifest.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/manifest.json new file mode 100644 index 0000000..34a749f --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/defaultContent/manifest.json @@ -0,0 +1,20 @@ +{ + "items": [ + { + "name": "cockpit", + "type": "dashboard" + }, + { + "name": "Devices", + "type": "folder" + }, + { + "name": "recommendations", + "type": "dashboard" + }, + { + "name": "vulnerabilities", + "type": "dashboard" + } + ] +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/recommendations.dash.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/recommendations.dash.json new file mode 100644 index 0000000..22bcbbc --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/defaultContent/recommendations.dash.json @@ -0,0 +1,442 @@ +{ + "name": "Recommendations", + "schemaVersion": "1.5", + "dashboard": { + "_type": "layout/grid", + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 0, + "y": 0, + "i": "530fbd65-3d58-407a-951e-7569b1222ab5", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "listRecommendations", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "Active" + } + ] + }, + "id": "{{dataStreams.listRecommendations}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Active", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": { + "type": "count" + }, + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 1, + "y": 0, + "i": "2b047798-81f8-4a32-8b5d-e350bb41aaf8", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "listRecommendations", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "Active" + } + ] + }, + "id": "{{dataStreams.listRecommendations}}", + "group": { + "by": [ + [ + "remediationType", + "uniqueValues" + ] + ], + "aggregate": [ + { + "type": "count" + } + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Remediation Type", + "visualisation": { + "type": "data-stream-donut-chart", + "config": { + "data-stream-donut-chart": { + "valueColumn": "count", + "hideCenterValue": false, + "showValuesAsPercentage": false, + "legendPosition": "right", + "legendMode": "table", + "labelColumn": "remediationType_uniqueValues" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 2, + "y": 0, + "i": "5e08dc7b-d981-4abc-8051-6f389b745b8e", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "listRecommendations", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "Active" + } + ] + }, + "id": "{{dataStreams.listRecommendations}}", + "group": { + "by": [ + [ + "recommendationCategory", + "uniqueValues" + ] + ], + "aggregate": [ + { + "type": "count" + } + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Category", + "visualisation": { + "type": "data-stream-donut-chart", + "config": { + "data-stream-donut-chart": { + "valueColumn": "count", + "hideCenterValue": false, + "showValuesAsPercentage": false, + "legendPosition": "right", + "legendMode": "table", + "labelColumn": "recommendationCategory_uniqueValues" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 3, + "y": 0, + "i": "2ba85224-a580-4164-bafa-b727fc931fe8", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "dataSourceConfig": { + "version": "2.0", + "tables": [ + { + "config": { + "timeframe": "none", + "activePluginConfigIds": [ + "{{configId}}" + ], + "dataStream": { + "name": "listRecommendations", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "Active" + } + ] + }, + "metadata": [ + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "severityScore_uniqueValues" + }, + { + "pattern": ".*" + } + ], + "id": "{{dataStreams.listRecommendations}}", + "group": { + "by": [ + [ + "severityScore", + "uniqueValues" + ] + ], + "aggregate": [ + { + "type": "count" + } + ] + }, + "pluginConfigId": "{{configId}}" + } + }, + "tableName": "dataset1" + } + ], + "sql": "WITH \"scores\" AS (\n SELECT 0 AS \"severityScore_uniqueValues\"\n UNION ALL SELECT 1\n UNION ALL SELECT 2\n UNION ALL SELECT 3\n UNION ALL SELECT 4\n UNION ALL SELECT 5\n UNION ALL SELECT 6\n UNION ALL SELECT 7\n UNION ALL SELECT 8\n UNION ALL SELECT 9\n)\nSELECT\n \"scores\".\"severityScore_uniqueValues\",\n COALESCE(\"dataset1\".\"count\", 0) AS \"count\"\nFROM \"scores\"\nLEFT JOIN \"dataset1\" ON \"scores\".\"severityScore_uniqueValues\" = \"dataset1\".\"severityScore_uniqueValues\"" + }, + "id": "datastream-sql" + }, + "scope": { + "query": "g.V().has('id', within(ids_OhlTXsVd3W6ErLLqvWW8))", + "bindings": { + "ids_OhlTXsVd3W6ErLLqvWW8": [ + "node-1dwkxV4HX7rWIiV3UddbjAZxFztYmHV1NQ8t1-TPvNIMMPMu4LhSro2Rk7" + ] + }, + "queryDetail": { + "ids": [ + "node-1dwkxV4HX7rWIiV3UddbjAZxFztYmHV1NQ8t1-TPvNIMMPMu4LhSro2Rk7" + ] + } + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Severity Score", + "visualisation": { + "type": "data-stream-bar-chart", + "config": { + "data-stream-bar-chart": { + "xAxisGroup": "none", + "showLegend": false, + "range": { + "type": "auto" + }, + "showGrid": true, + "grouping": false, + "displayMode": "actual", + "xAxisData": "severityScore_uniqueValues", + "showTotals": false, + "yAxisLabel": "", + "horizontalLayout": "vertical", + "showValue": false, + "yAxisData": [ + "count" + ], + "showYAxisLabel": true, + "xAxisLabel": "", + "legendPosition": "bottom", + "showXAxisLabel": true + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 4, + "x": 0, + "y": 2, + "i": "193720b0-9e92-4782-b1ff-70280e2bade0", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "listRecommendations", + "id": "{{dataStreams.listRecommendations}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "List", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "recommendationName", + "id", + "productName", + "weaknesses", + "vendor", + "recommendedVersion", + "recommendedVendor", + "recommendedProgram", + "recommendationCategory", + "subCategory", + "severityScore", + "publicExploit", + "activeAlert", + "remediationType", + "status", + "associatedThreats.85", + "associatedThreats.86", + "configScoreImpact", + "exposureImpact", + "totalMachineCount", + "exposedMachinesCount", + "nonProductivityImpactedAssets", + "relatedComponent", + "hasUnpatchableCve", + "tags.0", + "exposedCriticalDevices", + "tags.1" + ], + "hiddenColumns": [ + "associatedThreats.0", + "associatedThreats.1", + "associatedThreats.2", + "associatedThreats.3", + "associatedThreats.4", + "associatedThreats.5", + "associatedThreats.6", + "associatedThreats.7", + "associatedThreats.8", + "associatedThreats.9", + "associatedThreats.10", + "associatedThreats.11", + "associatedThreats.12", + "associatedThreats.13", + "associatedThreats.14", + "associatedThreats.15", + "associatedThreats.16", + "associatedThreats.17", + "associatedThreats.18", + "associatedThreats.19", + "associatedThreats.20", + "associatedThreats.21", + "associatedThreats.22", + "associatedThreats.23", + "associatedThreats.24", + "associatedThreats.25", + "associatedThreats.26", + "associatedThreats.27", + "associatedThreats.28", + "associatedThreats.29", + "associatedThreats.30", + "associatedThreats.31", + "associatedThreats.32", + "associatedThreats.33", + "associatedThreats.34", + "associatedThreats.35", + "associatedThreats.36", + "associatedThreats.37", + "associatedThreats.38", + "associatedThreats.39", + "associatedThreats.40", + "associatedThreats.41", + "associatedThreats.42", + "associatedThreats.43", + "associatedThreats.44", + "associatedThreats.45", + "associatedThreats.46", + "associatedThreats.47", + "associatedThreats.48", + "associatedThreats.49", + "associatedThreats.50", + "associatedThreats.51", + "associatedThreats.52", + "associatedThreats.53", + "associatedThreats.54", + "associatedThreats.55", + "associatedThreats.56", + "associatedThreats.57", + "associatedThreats.58", + "associatedThreats.59", + "associatedThreats.60", + "associatedThreats.61", + "associatedThreats.62", + "associatedThreats.63", + "associatedThreats.64", + "associatedThreats.65", + "associatedThreats.66", + "associatedThreats.67", + "associatedThreats.68", + "associatedThreats.69", + "associatedThreats.70", + "associatedThreats.71", + "associatedThreats.72", + "associatedThreats.73", + "associatedThreats.74", + "associatedThreats.75", + "associatedThreats.76", + "associatedThreats.77", + "associatedThreats.78", + "associatedThreats.79", + "associatedThreats.80", + "associatedThreats.81", + "associatedThreats.82", + "associatedThreats.83", + "associatedThreats.84" + ] + } + } + } + } + } + ], + "version": 44, + "columns": 4 + } +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/scopes.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/scopes.json new file mode 100644 index 0000000..0232f0f --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/defaultContent/scopes.json @@ -0,0 +1,19 @@ +[ + { + "name": "Defender Devices", + "matches": { + "sourceType": { + "type": "oneOf", + "values": [ + "defender-device" + ] + } + }, + "variable": { + "name": "Defender Device", + "type": "object", + "default": "none", + "allowMultipleSelection": false + } + } +] \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/vulnerabilities.dash.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/vulnerabilities.dash.json new file mode 100644 index 0000000..557dcac --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/defaultContent/vulnerabilities.dash.json @@ -0,0 +1,231 @@ +{ + "name": "Vulnerabilities", + "schemaVersion": "1.5", + "dashboard": { + "_type": "layout/grid", + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 2, + "y": 0, + "i": "0c28021b-1047-423b-915f-ac975bf61c71", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "listVulnerabilities", + "id": "{{dataStreams.listVulnerabilities}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Product", + "visualisation": { + "type": "data-stream-donut-chart", + "config": { + "data-stream-donut-chart": { + "valueColumn": "builtin_count_by_label", + "hideCenterValue": false, + "showValuesAsPercentage": false, + "legendPosition": "right", + "legendMode": "table", + "labelColumn": "productName" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 0, + "y": 0, + "i": "a66e092f-73d9-4fb2-9344-91ff1b072dcb", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "listVulnerabilities", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "severity", + "operation": "equals", + "value": "Critical" + } + ] + }, + "id": "{{dataStreams.listVulnerabilities}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Critical", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": { + "type": "count" + }, + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 1, + "y": 0, + "i": "776252a0-8be0-4082-b239-ea5b4d9f789e", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "listVulnerabilities", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "severity", + "operation": "equals", + "value": "High" + } + ] + }, + "id": "{{dataStreams.listVulnerabilities}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "High", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": { + "type": "count" + }, + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 3, + "y": 0, + "i": "07a49165-983f-465c-b1ae-d8990f1a6772", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "listVulnerabilities", + "id": "{{dataStreams.listVulnerabilities}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Severity", + "visualisation": { + "type": "data-stream-bar-chart", + "config": { + "data-stream-bar-chart": { + "xAxisGroup": "none", + "showLegend": false, + "range": { + "type": "auto" + }, + "showGrid": true, + "grouping": false, + "displayMode": "actual", + "xAxisData": "severity", + "showTotals": false, + "yAxisLabel": "", + "horizontalLayout": "vertical", + "showValue": false, + "yAxisData": [ + "builtin_count_by_label" + ], + "showYAxisLabel": true, + "xAxisLabel": "", + "legendPosition": "bottom", + "showXAxisLabel": true + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 3, + "x": 0, + "y": 3, + "i": "3e302230-6ee0-46a0-9415-0a79381dda06", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "listVulnerabilities", + "id": "{{dataStreams.listVulnerabilities}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "List", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "cveId", + "severity", + "machineId", + "productName", + "productVendor", + "productVersion", + "fixingKbId", + "id" + ], + "hiddenColumns": [] + } + } + } + } + } + ], + "version": 44, + "columns": 4 + } +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/icon.png b/plugins/Microsoft Defender (Preview)/v1/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a34e4d4285d6a0653f947dbba6c6bc2d8a9988c5 GIT binary patch literal 67410 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 Date: Thu, 14 May 2026 09:35:35 +0100 Subject: [PATCH 02/10] feat: basic test button --- .../v1/configValidation.json | 13 ++++++++ .../v1/dataStreams/validation.json | 32 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 plugins/Microsoft Defender (Preview)/v1/configValidation.json create mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/validation.json diff --git a/plugins/Microsoft Defender (Preview)/v1/configValidation.json b/plugins/Microsoft Defender (Preview)/v1/configValidation.json new file mode 100644 index 0000000..d9c93aa --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/configValidation.json @@ -0,0 +1,13 @@ +{ + "steps": [ + { + "displayName": "API Access Test", + "dataStream": { + "name": "validation" + }, + "success": "Successfully connected to Endpoint", + "error": "Cannot access the Endpoint API - check your client ID & secret. Do you have the correct permissions set?", + "required": true + } + ] +} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/validation.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/validation.json new file mode 100644 index 0000000..54ca99f --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/dataStreams/validation.json @@ -0,0 +1,32 @@ +{ + "name": "validation", + "displayName": "Validation", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "api/alerts", + "pathToData": "value", + "getArgs": [ + { + "key": "$top", + "value": "1", + "needsEncryption": false + } + ], + "headers": [] + }, + "matches": "none", + "timeframes": false, + "providesPluginDiagnostics": true, + "visibility": { + "type": "hidden" + }, + "options": { "noMatch": true } +} \ No newline at end of file From 46cf8de1627e1e44cf71470e0f56f4b6db2df4e1 Mon Sep 17 00:00:00 2001 From: jame2O Date: Thu, 14 May 2026 11:01:55 +0100 Subject: [PATCH 03/10] feat: Alerts data stream --- .../v1/dataStreams/alerts.json | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/alerts.json diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/alerts.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/alerts.json new file mode 100644 index 0000000..a10f978 --- /dev/null +++ b/plugins/Microsoft Defender (Preview)/v1/dataStreams/alerts.json @@ -0,0 +1,115 @@ +{ + "name": "alerts", + "displayName": "Alerts", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "offset", + "pageSize": { + "realm": { + "value": "queryArg", + "label": "Query parameter" + }, + "path": "$top", + "value": "100" + }, + "offset": { + "rowCountIn": { + "realm": { + "value": "payloadArraySize", + "label": "Body array size" + }, + "path": "value" + }, + "mode": "row", + "base": "0" + }, + "out": { + "realm": { + "value": "queryArg", + "label": "queryArg" + }, + "path": "$skip" + } + }, + "expandInnerObjects": true, + "endpointPath": "api/alerts", + "getArgs": [ + { + "key": "$filter", + "value": "{{ status && status.length > 0 ? \"(status eq \" + status.map((m) => { return `'${m}'` }).join(\" or status eq \") + \") and \" : \"\" }}{{ severity && severity.length > 0 ? \"(severity eq \" + severity.map((m) => { return `'${m}'` }).join(\" or severity eq \") + \") and \" : \"\" }}{{ category ? \"(category eq \" + category.split(\",\").map(c => {return `'${c.trim()}'`}).join(\" or category eq \") + \") and \" : \"\"}}{{timeframe.enum !== \"none\" ? timeframeCol + \" ge \" + timeframe.start + \" and \" + timeframeCol + \" le \" + timeframe.end : \"1 eq 1\"}}" + } + ], + "pathToData": "value", + "headers": [] + }, + "providesPluginDiagnostics": true, + "manualConfigApply": true, + "rowPath": [], + "matches": [ + { + "sourceType": { + "type": "equals", + "value": "squaredup/data-source" + }, + "pluginId": { + "type": "equals", + "value": "plugin-bi89KMBtdXqKNJIwcn2N" + }, + "sourceId": { + "type": "equals", + "value": "config-4Y3oF35ZzEn8X2Gxq8we" + } + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear" + ], + "tags": [ + "Alerts" + ], + "ui": [ + { + "name": "status", + "description": "Filter alerts by the specified status", + "label": "Status", + "type": "autocomplete", + "data": { + "source": "fixed", + "values": [ + { + "value": "Unknown", + "label": "Unknown" + }, + { + "value": "New", + "label": "New" + }, + { + "value": "InProgress", + "label": "InProgress" + }, + { + "value": "Resolved", + "label": "Resolved" + } + ] + }, + "isClearable": true + } + ] +} \ No newline at end of file From 03c6f1c4a72bdf2e9ed0960990e491f733a07447 Mon Sep 17 00:00:00 2001 From: jame2O Date: Fri, 15 May 2026 08:59:42 +0100 Subject: [PATCH 04/10] chore: add none timeframe to defender --- .../v1/dataStreams/alerts.json | 88 ++++++++++++++----- 1 file changed, 67 insertions(+), 21 deletions(-) diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/alerts.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/alerts.json index a10f978..7363160 100644 --- a/plugins/Microsoft Defender (Preview)/v1/dataStreams/alerts.json +++ b/plugins/Microsoft Defender (Preview)/v1/dataStreams/alerts.json @@ -1,6 +1,7 @@ { "name": "alerts", "displayName": "Alerts", + "supportsNoneTimeframe": true, "baseDataSourceName": "httpRequestUnscoped", "config": { "httpMethod": "get", @@ -50,22 +51,7 @@ "providesPluginDiagnostics": true, "manualConfigApply": true, "rowPath": [], - "matches": [ - { - "sourceType": { - "type": "equals", - "value": "squaredup/data-source" - }, - "pluginId": { - "type": "equals", - "value": "plugin-bi89KMBtdXqKNJIwcn2N" - }, - "sourceId": { - "type": "equals", - "value": "config-4Y3oF35ZzEn8X2Gxq8we" - } - } - ], + "matches": "none", "timeframes": [ "last1hour", "last12hours", @@ -79,13 +65,16 @@ "lastQuarter", "lastYear" ], - "tags": [ - "Alerts" - ], + "tags": ["Alerts"], "ui": [ + { + "name": "category", + "label": "Category", + "placeholder": "Category1, Category2", + "type": "text" + }, { "name": "status", - "description": "Filter alerts by the specified status", "label": "Status", "type": "autocomplete", "data": { @@ -110,6 +99,63 @@ ] }, "isClearable": true + }, + { + "name": "severity", + "label": "Severity", + "type": "autocomplete", + "data": { + "source": "fixed", + "values": [ + { + "value": "UnSpecified", + "label": "Unspecified" + }, + { + "value": "Informational", + "label": "Informational" + }, + { + "value": "Low", + "label": "Low" + }, + { + "value": "Medium", + "label": "Medium" + }, + { + "value": "High", + "label": "High" + } + ] + }, + "isClearable": true + }, + { + "isMulti": false, + "help": "Select the column to apply the timeframe", + "data": { + "source": "fixed", + "values": [ + { + "value": "alertCreationTime", + "label": "Creation Time" + }, + { + "value": "lastUpdateTime", + "label": "Last Update Time" + }, + { + "value": "lastEventTime", + "label": "Last Event Time" + } + ] + }, + "defaultValue": "alertCreationTime", + "name": "timeframeCol", + "label": "Timeframe Column", + "type": "autocomplete", + "isClearable": false } ] -} \ No newline at end of file +} From 9f5145fce0bf7ac691958c5019a90881bb69b496 Mon Sep 17 00:00:00 2001 From: jame2O Date: Mon, 1 Jun 2026 07:57:20 +0100 Subject: [PATCH 05/10] feat: graph plugin --- .../v1/configValidation.json | 13 + .../MicrosoftDefender/v1/custom_types.json | 9 + .../v1/dataStreams/Vulnerabilities.json | 44 ++ .../v1/dataStreams/advancedHuntingQuery.json | 50 +++ .../v1/dataStreams/alerts.json | 143 ++++++ .../v1/dataStreams/devices.json | 64 +++ .../v1/dataStreams/incidents.json | 151 +++++++ .../v1/dataStreams/listDevices.json | 29 ++ .../v1/dataStreams/recommendations.json | 32 ++ .../v1/dataStreams/secureScoreHistory.json | 49 +++ .../v1/dataStreams/validation.json | 32 ++ .../Devices/deviceStatus.dash.json | 393 +++++++++++++++++ .../v1/defaultContent/Devices/manifest.json | 12 + .../defaultContent/Devices/overview.dash.json | 175 ++++++++ .../v1/defaultContent/cockpit.dash.json | 406 ++++++++++++++++++ .../v1/defaultContent/manifest.json | 20 + .../defaultContent/recommendations.dash.json | 291 +++++++++++++ .../v1/defaultContent/scopes.json | 29 ++ .../defaultContent/vulnerabilities.dash.json | 394 +++++++++++++++++ plugins/MicrosoftDefender/v1/icon.png | Bin 0 -> 67410 bytes .../v1/indexDefinitions/default.json | 29 ++ plugins/MicrosoftDefender/v1/metadata.json | 43 ++ plugins/MicrosoftDefender/v1/ui.json | 29 ++ 23 files changed, 2437 insertions(+) create mode 100644 plugins/MicrosoftDefender/v1/configValidation.json create mode 100644 plugins/MicrosoftDefender/v1/custom_types.json create mode 100644 plugins/MicrosoftDefender/v1/dataStreams/Vulnerabilities.json create mode 100644 plugins/MicrosoftDefender/v1/dataStreams/advancedHuntingQuery.json create mode 100644 plugins/MicrosoftDefender/v1/dataStreams/alerts.json create mode 100644 plugins/MicrosoftDefender/v1/dataStreams/devices.json create mode 100644 plugins/MicrosoftDefender/v1/dataStreams/incidents.json create mode 100644 plugins/MicrosoftDefender/v1/dataStreams/listDevices.json create mode 100644 plugins/MicrosoftDefender/v1/dataStreams/recommendations.json create mode 100644 plugins/MicrosoftDefender/v1/dataStreams/secureScoreHistory.json create mode 100644 plugins/MicrosoftDefender/v1/dataStreams/validation.json create mode 100644 plugins/MicrosoftDefender/v1/defaultContent/Devices/deviceStatus.dash.json create mode 100644 plugins/MicrosoftDefender/v1/defaultContent/Devices/manifest.json create mode 100644 plugins/MicrosoftDefender/v1/defaultContent/Devices/overview.dash.json create mode 100644 plugins/MicrosoftDefender/v1/defaultContent/cockpit.dash.json create mode 100644 plugins/MicrosoftDefender/v1/defaultContent/manifest.json create mode 100644 plugins/MicrosoftDefender/v1/defaultContent/recommendations.dash.json create mode 100644 plugins/MicrosoftDefender/v1/defaultContent/scopes.json create mode 100644 plugins/MicrosoftDefender/v1/defaultContent/vulnerabilities.dash.json create mode 100644 plugins/MicrosoftDefender/v1/icon.png create mode 100644 plugins/MicrosoftDefender/v1/indexDefinitions/default.json create mode 100644 plugins/MicrosoftDefender/v1/metadata.json create mode 100644 plugins/MicrosoftDefender/v1/ui.json diff --git a/plugins/MicrosoftDefender/v1/configValidation.json b/plugins/MicrosoftDefender/v1/configValidation.json new file mode 100644 index 0000000..d9c93aa --- /dev/null +++ b/plugins/MicrosoftDefender/v1/configValidation.json @@ -0,0 +1,13 @@ +{ + "steps": [ + { + "displayName": "API Access Test", + "dataStream": { + "name": "validation" + }, + "success": "Successfully connected to Endpoint", + "error": "Cannot access the Endpoint API - check your client ID & secret. Do you have the correct permissions set?", + "required": true + } + ] +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/custom_types.json b/plugins/MicrosoftDefender/v1/custom_types.json new file mode 100644 index 0000000..23ac01b --- /dev/null +++ b/plugins/MicrosoftDefender/v1/custom_types.json @@ -0,0 +1,9 @@ +[ + { + "name": "Defender Device", + "sourceType": "Defender Device", + "icon": "server", + "singular": "Device", + "plural": "Devices" + } +] \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/dataStreams/Vulnerabilities.json b/plugins/MicrosoftDefender/v1/dataStreams/Vulnerabilities.json new file mode 100644 index 0000000..4e2a8a1 --- /dev/null +++ b/plugins/MicrosoftDefender/v1/dataStreams/Vulnerabilities.json @@ -0,0 +1,44 @@ +{ + "name": "Vulnerabilities", + "displayName": "Vulnerabilities", + "baseDataSourceName": "httpRequestScoped", + "config": { + "httpMethod": "post", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "runHuntingQuery", + "postBody": { + "Query": "DeviceTvmSoftwareVulnerabilities | where DeviceId in ({{objects.map(o => {return `\"${o.deviceid}\"`}).join(\",\")}})", + "Timespan": "{{timeframe.enum != \"none\" ? `${timeframe.start}/${timeframe.end}` : \"\" }}" + }, + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "sourceId": "DeviceId", + "name": "DeviceName", + "shape": "string", + "role": "label", + "sourceType": "Defender Device" + }, + { + "pattern": ".*" + } + ], + "matches": { + "sourceType": { + "type": "equals", + "value": "Defender Device" + } + }, + "timeframes": false, + "providesPluginDiagnostics": true, + "tags": [] +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/dataStreams/advancedHuntingQuery.json b/plugins/MicrosoftDefender/v1/dataStreams/advancedHuntingQuery.json new file mode 100644 index 0000000..e2053f5 --- /dev/null +++ b/plugins/MicrosoftDefender/v1/dataStreams/advancedHuntingQuery.json @@ -0,0 +1,50 @@ +{ + "name": "advancedHuntingQuery", + "displayName": "Advanced Hunting Query", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "post", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "runHuntingQuery", + "postBody": { + "Query": "{{query}}", + "Timespan": "{{timeframe.enum != \"none\" ? `${timeframe.start}/${timeframe.end}` : \"\" }}" + }, + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear" + ], + "supportsNoneTimeframe": true, + "providesPluginDiagnostics": true, + "tags": [], + "ui": [ + { + "name": "query", + "language": "kusto", + "label": "Query", + "type": "code", + "validation": { + "required": true + } + } + ] +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/dataStreams/alerts.json b/plugins/MicrosoftDefender/v1/dataStreams/alerts.json new file mode 100644 index 0000000..993a4d6 --- /dev/null +++ b/plugins/MicrosoftDefender/v1/dataStreams/alerts.json @@ -0,0 +1,143 @@ +{ + "name": "alerts", + "displayName": "Alerts", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "nextUrl", + "pageSize": { + "realm": { + "value": "none", + "label": "none" + } + }, + "in": { + "realm": { + "value": "payload", + "label": "payload" + }, + "path": "@odata.nextLink" + } + }, + "expandInnerObjects": true, + "endpointPath": "alerts", + "pathToData": "value", + "getArgs": [ + { + "key": "$filter", + "value": "{{ status && status.length > 0 ? \"(status eq \" + status.map((m) => { return `'${m}'` }).join(\" or status eq \") + \") and \" : \"\" }}{{ severity && severity.length > 0 ? \"(severity eq \" + severity.map((m) => { return `'${m}'` }).join(\" or severity eq \") + \") and \" : \"\" }}{{timeframe.enum !== \"none\" ? timeframeCol + \" ge \" + timeframe.start + \" and \" + timeframeCol + \" le \" + timeframe.end : \"1 eq 1\"}}" + } + ], + "headers": [] + }, + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear" + ], + "supportsNoneTimeframe": true, + "providesPluginDiagnostics": true, + "tags": [], + "ui": [ + { + "name": "severity", + "label": "Severity", + "type": "autocomplete", + "data": { + "source": "fixed", + "values": [ + { + "value": "low", + "label": "Low" + }, + { + "value": "medium", + "label": "Medium" + }, + { + "value": "high", + "label": "High" + }, + { + "value": "informational", + "label": "Informational" + }, + { + "value": "unknown", + "label": "Unknown" + }, + { + "value": "unknownFutureValue", + "label": "Unknown Future Value" + } + ] + }, + "isClearable": true + }, + { + "name": "status", + "label": "Status", + "type": "autocomplete", + "data": { + "source": "fixed", + "values": [ + { + "value": "new", + "label": "New" + }, + { + "value": "inProgress", + "label": "In Progress" + }, + { + "value": "resolved", + "label": "Resolved" + }, + { + "value": "unknown", + "label": "Unknown" + }, + { + "value": "unknownFutureValue", + "label": "Unknown Future Value" + } + ] + }, + "isClearable": true + }, + { + "isMulti": false, + "help": "Select the column to apply the timeframe", + "data": { + "source": "fixed", + "values": [ + { + "value": "createdDateTime", + "label": "Creation Time" + }, + { + "value": "lastUpdateDateTime", + "label": "Last Update Time" + } + ] + }, + "defaultValue": "createdDateTime", + "name": "timeframeCol", + "label": "Timeframe Column", + "type": "autocomplete", + "isClearable": false + } + ] +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/dataStreams/devices.json b/plugins/MicrosoftDefender/v1/dataStreams/devices.json new file mode 100644 index 0000000..c1afcae --- /dev/null +++ b/plugins/MicrosoftDefender/v1/dataStreams/devices.json @@ -0,0 +1,64 @@ +{ + "name": "devices", + "displayName": "Devices", + "baseDataSourceName": "httpRequestScoped", + "config": { + "httpMethod": "post", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "runHuntingQuery", + "postBody": { + "Query": "DeviceInfo | where DeviceId in ({{objects.map(o => {return `\"${o.deviceid}\"`}).join(\",\")}}) | summarize arg_max(Timestamp, *) by DeviceId" + }, + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "sourceId": "DeviceId", + "name": "DeviceName", + "shape": "string", + "role": "label", + "sourceType": "Defender Device" + }, + { + "shape": [ + "state", + { + "map": { + "unmonitored": [], + "unknown": [], + "error": [ + "High" + ], + "warning": [ + "Medium" + ], + "success": [ + "Low" + ] + } + } + ], + "name": "ExposureLevel" + }, + { + "pattern": ".*" + } + ], + "matches": { + "sourceType": { + "type": "equals", + "value": "Defender Device" + } + }, + "timeframes": false, + "providesPluginDiagnostics": true, + "tags": [] +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/dataStreams/incidents.json b/plugins/MicrosoftDefender/v1/dataStreams/incidents.json new file mode 100644 index 0000000..d95529e --- /dev/null +++ b/plugins/MicrosoftDefender/v1/dataStreams/incidents.json @@ -0,0 +1,151 @@ +{ + "name": "incidents", + "displayName": "Incidents", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "nextUrl", + "pageSize": { + "realm": { + "value": "none", + "label": "None" + } + }, + "in": { + "realm": { + "value": "payload", + "label": "Body" + }, + "path": "@odata.nextLink" + } + }, + "expandInnerObjects": true, + "endpointPath": "incidents", + "pathToData": "value", + "getArgs": [ + { + "key": "$filter", + "value": "{{ status && status.length > 0 ? \"(status eq \" + status.map((m) => { return `'${m}'` }).join(\" or status eq \") + \") and \" : \"\" }}{{ severity && severity.length > 0 ? \"(severity eq \" + severity.map((m) => { return `'${m}'` }).join(\" or severity eq \") + \") and \" : \"\" }}{{timeframe.enum !== \"none\" ? timeframeCol + \" ge \" + timeframe.start + \" and \" + timeframeCol + \" le \" + timeframe.end : \"1 eq 1\"}}" + } + ], + "headers": [] + }, + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear" + ], + "supportsNoneTimeframe": true, + "providesPluginDiagnostics": true, + "tags": [], + "ui": [ + { + "name": "severity", + "label": "Severity", + "type": "autocomplete", + "data": { + "source": "fixed", + "values": [ + { + "value": "low", + "label": "Low" + }, + { + "value": "medium", + "label": "Medium" + }, + { + "value": "high", + "label": "High" + }, + { + "value": "unknown", + "label": "Unknown" + }, + { + "value": "unknownFutureValue", + "label": "Unknown Future Value" + }, + { + "value": "new", + "label": "New" + }, + { + "value": "informational", + "label": "Informational" + } + ] + }, + "isClearable": true + }, + { + "name": "status", + "label": "Status", + "type": "autocomplete", + "data": { + "source": "fixed", + "values": [ + { + "value": "active", + "label": "Active" + }, + { + "value": "resolved", + "label": "Resolved" + }, + { + "value": "inProgress", + "label": "In Progress" + }, + { + "value": "redirected", + "label": "Redirected" + }, + { + "value": "unknownFutureValue", + "label": "Unknown Future Value" + }, + { + "value": "awaitingAction", + "label": "Awaiting Action" + } + ] + }, + "isClearable": true + }, + { + "isMulti": false, + "help": "Select the column to apply the timeframe", + "data": { + "source": "fixed", + "values": [ + { + "value": "createdDateTime", + "label": "Creation Time" + }, + { + "value": "lastUpdateDateTime", + "label": "Last Update Time" + } + ] + }, + "defaultValue": "createdDateTime", + "name": "timeframeCol", + "label": "Timeframe Column", + "type": "autocomplete", + "isClearable": false + } + ] +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/dataStreams/listDevices.json b/plugins/MicrosoftDefender/v1/dataStreams/listDevices.json new file mode 100644 index 0000000..4cb0ffc --- /dev/null +++ b/plugins/MicrosoftDefender/v1/dataStreams/listDevices.json @@ -0,0 +1,29 @@ +{ + "name": "listDevices", + "displayName": "List Devices", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "post", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "runHuntingQuery", + "postBody": { + "Query": "DeviceInfo | summarize arg_max(Timestamp, *) by DeviceId" + }, + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "providesPluginDiagnostics": true, + "manualConfigApply": true, + "timeframes": false, + "tags": [], + "visibility": { + "type": "hidden" + } +} diff --git a/plugins/MicrosoftDefender/v1/dataStreams/recommendations.json b/plugins/MicrosoftDefender/v1/dataStreams/recommendations.json new file mode 100644 index 0000000..e4953fd --- /dev/null +++ b/plugins/MicrosoftDefender/v1/dataStreams/recommendations.json @@ -0,0 +1,32 @@ +{ + "name": "recommendations", + "displayName": "Recommendations", + "baseDataSourceName": "httpRequestScoped", + "config": { + "httpMethod": "post", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "runHuntingQuery", + "postBody": { + "Query": "DeviceTvmSecureConfigurationAssessment | where DeviceId in ({{objects.map(o => {return `\"${o.deviceid}\"`}).join(\",\")}}) | join kind=leftouter (DeviceTvmSecureConfigurationAssessmentKB) on ConfigurationId | project DeviceId, DeviceName, Timestamp, ConfigurationId, ConfigurationName, ConfigurationCategory, ConfigurationSubcategory, ConfigurationImpact, RiskDescription, RemediationOptions, IsApplicable, IsCompliant, Tags", + "Timespan": "{{timeframe.enum != \"none\" ? `${timeframe.start}/${timeframe.end}` : \"\" }}" + }, + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "matches": { + "sourceType": { + "type": "equals", + "value": "Defender Device" + } + }, + "timeframes": false, + "providesPluginDiagnostics": true, + "tags": [] +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/dataStreams/secureScoreHistory.json b/plugins/MicrosoftDefender/v1/dataStreams/secureScoreHistory.json new file mode 100644 index 0000000..07b03b1 --- /dev/null +++ b/plugins/MicrosoftDefender/v1/dataStreams/secureScoreHistory.json @@ -0,0 +1,49 @@ +{ + "name": "secureScoreHistory", + "displayName": "Secure Score History", + "description": "Retrieves the current tenant's Secure Score data from the past 90 days", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "offset", + "pageSize": { + "realm": { + "value": "queryArg", + "label": "Query parameter" + }, + "path": "$top", + "value": "100" + }, + "offset": { + "rowCountIn": { + "realm": { + "value": "payloadArraySize", + "label": "Body array size" + }, + "path": "value" + }, + "mode": "row", + "base": "0" + }, + "out": { + "realm": { + "value": "queryArg", + "label": "queryArg" + }, + "path": "$skip" + } + }, + "expandInnerObjects": true, + "endpointPath": "secureScores", + "pathToData": "value", + "getArgs": [], + "headers": [] + }, + "providesPluginDiagnostics": true, + "timeframes": false, + "tags": [] +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/dataStreams/validation.json b/plugins/MicrosoftDefender/v1/dataStreams/validation.json new file mode 100644 index 0000000..bc27903 --- /dev/null +++ b/plugins/MicrosoftDefender/v1/dataStreams/validation.json @@ -0,0 +1,32 @@ +{ + "name": "validation", + "displayName": "Validation", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "errorHandling": { + "type": "default" + }, + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "alerts", + "pathToData": "value", + "getArgs": [ + { + "key": "$top", + "value": "1", + "needsEncryption": false + } + ], + "headers": [] + }, + "matches": "none", + "timeframes": false, + "providesPluginDiagnostics": true, + "visibility": { + "type": "hidden" + }, + "options": { "noMatch": true } +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/defaultContent/Devices/deviceStatus.dash.json b/plugins/MicrosoftDefender/v1/defaultContent/Devices/deviceStatus.dash.json new file mode 100644 index 0000000..82b0a2a --- /dev/null +++ b/plugins/MicrosoftDefender/v1/defaultContent/Devices/deviceStatus.dash.json @@ -0,0 +1,393 @@ +{ + "name": "Device Status", + "schemaVersion": "1.5", + "dashboard": { + "_type": "layout/grid", + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 0, + "y": 0, + "i": "a42fe41f-7cbd-42d0-b32e-6d68eb4f016f", + "z": 0, + "config": { + "timeframe": "none", + "variables": [ + "{{variables.[Defender Device]}}" + ], + "dataStream": { + "name": "devices", + "id": "{{dataStreams.devices}}" + }, + "scope": { + "variable": "{{variables.[Defender Device]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[Defender Devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Exposure Level", + "visualisation": { + "type": "data-stream-blocks", + "config": { + "data-stream-blocks": { + "stateColumn": "ExposureLevel", + "linkColumn": "DeviceName", + "labelColumn": "ExposureLevel[Expanded].rawState" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 1, + "y": 0, + "i": "b606fb70-4a88-4fdf-9a19-dded55059092", + "z": 0, + "config": { + "timeframe": "none", + "variables": [ + "{{variables.[Defender Device]}}" + ], + "dataStream": { + "name": "devices", + "metadata": [ + { + "shape": [ + "state", + { + "map": { + "warning": [ + "Inactive" + ], + "unmonitored": [], + "error": [ + "ImpairedCommunication", + "NoSensorData", + "Misconfigured" + ], + "success": [ + "Active" + ], + "unknown": [ + "Unknown" + ] + } + } + ], + "name": "SensorHealthState" + } + ], + "id": "{{dataStreams.devices}}" + }, + "scope": { + "variable": "{{variables.[Defender Device]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[Defender Devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Sensor Health State", + "visualisation": { + "type": "data-stream-blocks", + "config": { + "data-stream-blocks": { + "stateColumn": "SensorHealthState", + "linkColumn": "DeviceName", + "labelColumn": "SensorHealthState[Expanded].rawState" + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 3, + "i": "384ae7b5-a86c-46eb-aa43-02057f67f2f3", + "z": 0, + "config": { + "timeframe": "none", + "variables": [ + "{{variables.[Defender Device]}}" + ], + "dataStream": { + "name": "devices", + "id": "{{dataStreams.devices}}" + }, + "scope": { + "variable": "{{variables.[Defender Device]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[Defender Devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Device Properties", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "DeviceId", + "PublicIP", + "ConnectivityType", + "OSPlatform", + "OSBuild", + "OSArchitecture", + "OSVersion", + "OSDistribution", + "OSVersionInfo", + "OsBuildRevision", + "ClientVersion", + "HardwareUuid" + ], + "hiddenColumns": [ + "@odata.context", + "mergedIntoMachineId", + "isPotentialDuplication", + "isExcluded", + "exclusionReason", + "firstSeen", + "lastSeen", + "healthStatus", + "deviceValue", + "rbacGroupId", + "rbacGroupName", + "riskScore", + "exposureLevel", + "isAadJoined", + "aadDeviceId", + "onboardingStatus", + "managedBy", + "managedByStatus", + "ipAddresses.0.ipAddress", + "ipAddresses.0.macAddress", + "ipAddresses.0.type", + "ipAddresses.0.operationalStatus", + "ipAddresses.1.ipAddress", + "ipAddresses.1.macAddress", + "ipAddresses.1.type", + "ipAddresses.1.operationalStatus", + "ipAddresses.2.ipAddress", + "ipAddresses.2.macAddress", + "ipAddresses.2.type", + "ipAddresses.2.operationalStatus", + "ipAddresses.3.ipAddress", + "ipAddresses.3.macAddress", + "ipAddresses.3.type", + "ipAddresses.3.operationalStatus", + "healthStatus[Expanded].rawState", + "computerDnsName", + "exposureLevel[Expanded].rawState", + "Timestamp", + "DeviceName", + "OSBuild@odata.type", + "IsAzureADJoined@odata.type", + "IsAzureADJoined", + "JoinType", + "AadDeviceId", + "LoggedOnUsers", + "RegistryDeviceTag", + "MachineGroup", + "ReportId@odata.type", + "ReportId", + "OnboardingStatus", + "AdditionalFields", + "DeviceCategory", + "DeviceType", + "DeviceSubtype", + "Model", + "Vendor", + "MergedDeviceIds", + "MergedToDeviceId", + "SensorHealthState", + "IsExcluded@odata.type", + "IsExcluded", + "ExclusionReason", + "ExposureLevel", + "AssetValue", + "DeviceManualTags", + "DeviceDynamicTags", + "CloudPlatforms", + "AzureVmId", + "AzureResourceId", + "AzureVmSubscriptionId", + "GcpFullResourceName", + "AwsResourceName", + "IsTransient@odata.type", + "IsTransient", + "HostDeviceId", + "MitigationStatus", + "FirmwareVersions", + "DiscoverySources", + "DlpInfo", + "ExposureLevel[Expanded].rawState" + ], + "transpose": true + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 3, + "i": "b0526c96-e0ea-4028-b44b-13c120e5ae83", + "z": 0, + "config": { + "timeframe": "none", + "variables": [ + "{{variables.[Defender Device]}}" + ], + "dataStream": { + "name": "devices", + "id": "{{dataStreams.devices}}" + }, + "scope": { + "variable": "{{variables.[Defender Device]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[Defender Devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Device Attributes", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "DeviceId", + "PublicIP", + "ConnectivityType", + "OSPlatform", + "OSBuild", + "OSArchitecture", + "OSVersion", + "OSDistribution", + "OSVersionInfo", + "OsBuildRevision", + "ClientVersion", + "HardwareUuid" + ], + "hiddenColumns": [ + "@odata.context", + "mergedIntoMachineId", + "isPotentialDuplication", + "isExcluded", + "exclusionReason", + "firstSeen", + "lastSeen", + "healthStatus", + "deviceValue", + "rbacGroupId", + "rbacGroupName", + "riskScore", + "exposureLevel", + "isAadJoined", + "aadDeviceId", + "onboardingStatus", + "managedBy", + "managedByStatus", + "ipAddresses.0.ipAddress", + "ipAddresses.0.macAddress", + "ipAddresses.0.type", + "ipAddresses.0.operationalStatus", + "ipAddresses.1.ipAddress", + "ipAddresses.1.macAddress", + "ipAddresses.1.type", + "ipAddresses.1.operationalStatus", + "ipAddresses.2.ipAddress", + "ipAddresses.2.macAddress", + "ipAddresses.2.type", + "ipAddresses.2.operationalStatus", + "ipAddresses.3.ipAddress", + "ipAddresses.3.macAddress", + "ipAddresses.3.type", + "ipAddresses.3.operationalStatus", + "healthStatus[Expanded].rawState", + "computerDnsName", + "exposureLevel[Expanded].rawState", + "Timestamp", + "DeviceName", + "OSBuild@odata.type", + "IsAzureADJoined@odata.type", + "IsAzureADJoined", + "JoinType", + "AadDeviceId", + "LoggedOnUsers", + "RegistryDeviceTag", + "MachineGroup", + "ReportId@odata.type", + "ReportId", + "OnboardingStatus", + "AdditionalFields", + "DeviceCategory", + "DeviceType", + "DeviceSubtype", + "Model", + "Vendor", + "MergedDeviceIds", + "MergedToDeviceId", + "SensorHealthState", + "IsExcluded@odata.type", + "IsExcluded", + "ExclusionReason", + "ExposureLevel", + "AssetValue", + "DeviceManualTags", + "DeviceDynamicTags", + "CloudPlatforms", + "AzureVmId", + "AzureResourceId", + "AzureVmSubscriptionId", + "GcpFullResourceName", + "AwsResourceName", + "IsTransient@odata.type", + "IsTransient", + "HostDeviceId", + "MitigationStatus", + "FirmwareVersions", + "DiscoverySources", + "DlpInfo", + "ExposureLevel[Expanded].rawState" + ], + "transpose": true + } + } + } + } + } + ], + "version": 28, + "columns": 4 + }, + "variables": [ + "{{variables.[Defender Device]}}" + ] +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/defaultContent/Devices/manifest.json b/plugins/MicrosoftDefender/v1/defaultContent/Devices/manifest.json new file mode 100644 index 0000000..4b56ba1 --- /dev/null +++ b/plugins/MicrosoftDefender/v1/defaultContent/Devices/manifest.json @@ -0,0 +1,12 @@ +{ + "items": [ + { + "name": "overview", + "type": "dashboard" + }, + { + "name": "deviceStatus", + "type": "dashboard" + } + ] +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/defaultContent/Devices/overview.dash.json b/plugins/MicrosoftDefender/v1/defaultContent/Devices/overview.dash.json new file mode 100644 index 0000000..0cba9bd --- /dev/null +++ b/plugins/MicrosoftDefender/v1/defaultContent/Devices/overview.dash.json @@ -0,0 +1,175 @@ +{ + "name": "Overview", + "schemaVersion": "1.5", + "dashboard": { + "_type": "layout/grid", + "contents": [ + { + "static": false, + "w": 4, + "moved": false, + "h": 3, + "x": 0, + "y": 0, + "i": "a42fe41f-7cbd-42d0-b32e-6d68eb4f016f", + "z": 0, + "config": { + "timeframe": "none", + "variables": [ + "{{variables.[All Object]}}" + ], + "dataStream": { + "name": "devices", + "id": "{{dataStreams.devices}}", + "sort": { + "by": [ + [ + "ExposureLevel", + "desc" + ] + ] + } + }, + "scope": { + "variable": "{{variables.[All Object]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[All Objects]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Exposure Level", + "visualisation": { + "type": "data-stream-blocks", + "config": { + "data-stream-blocks": { + "stateColumn": "ExposureLevel", + "linkColumn": "DeviceName", + "sublabel": "ExposureLevel[Expanded].rawState", + "columns": 3, + "labelColumn": "DeviceName" + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 4, + "x": 0, + "y": 3, + "i": "e5ec8d5c-4184-46cb-8c61-94913be88729", + "z": 0, + "config": { + "timeframe": "none", + "variables": [ + "{{variables.[All Object]}}" + ], + "dataStream": { + "name": "devices", + "filter": { + "multiOperation": "and", + "filters": [] + }, + "id": "{{dataStreams.devices}}", + "sort": { + "by": [ + [ + "DeviceName", + "asc" + ] + ] + } + }, + "scope": { + "variable": "{{variables.[All Object]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[All Objects]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Properties", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "DeviceId", + "Timestamp", + "DeviceName", + "ClientVersion", + "PublicIP", + "OSArchitecture", + "OSPlatform", + "OSBuild@odata.type", + "OSBuild", + "IsAzureADJoined@odata.type", + "IsAzureADJoined", + "JoinType", + "AadDeviceId", + "LoggedOnUsers", + "RegistryDeviceTag", + "OSVersion", + "MachineGroup", + "ReportId@odata.type", + "ReportId", + "OnboardingStatus", + "AdditionalFields", + "DeviceCategory", + "DeviceType", + "DeviceSubtype", + "Model", + "Vendor", + "OSDistribution", + "OSVersionInfo", + "MergedDeviceIds", + "MergedToDeviceId", + "SensorHealthState", + "IsExcluded@odata.type", + "IsExcluded", + "ExclusionReason", + "ExposureLevel", + "AssetValue", + "DeviceManualTags", + "DeviceDynamicTags", + "HardwareUuid", + "CloudPlatforms", + "AzureVmId", + "AzureResourceId", + "AzureVmSubscriptionId", + "GcpFullResourceName", + "AwsResourceName", + "IsTransient@odata.type", + "IsTransient", + "OsBuildRevision", + "HostDeviceId", + "MitigationStatus", + "ConnectivityType", + "DiscoverySources", + "FirmwareVersions", + "DlpInfo", + "IsInternetFacing@odata.type", + "IsInternetFacing", + "ExposureLevel[Expanded].rawState" + ], + "hiddenColumns": [] + } + } + } + } + } + ], + "version": 22, + "columns": 4 + }, + "variables": [ + "{{variables.[All Object]}}" + ] +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/defaultContent/cockpit.dash.json b/plugins/MicrosoftDefender/v1/defaultContent/cockpit.dash.json new file mode 100644 index 0000000..5346e99 --- /dev/null +++ b/plugins/MicrosoftDefender/v1/defaultContent/cockpit.dash.json @@ -0,0 +1,406 @@ +{ + "name": "Cockpit", + "schemaVersion": "1.5", + "dashboard": { + "_type": "layout/grid", + "contents": [ + { + "static": false, + "w": 2, + "moved": false, + "h": 2, + "x": 0, + "y": 0, + "i": "7a6ca038-e744-488e-8f2f-ad3d86b4e42d", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "secureScoreHistory", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "createdDateTime", + "unit": "days", + "operation": "datewithinlast", + "value": "1" + } + ] + }, + "id": "{{dataStreams.secureScoreHistory}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Current Secure Score", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "currentScore", + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 2, + "x": 2, + "y": 0, + "i": "bc314cab-b69a-4379-920a-872a3b005c66", + "z": 0, + "config": { + "dataStream": { + "pluginConfigId": "{{configId}}", + "id": "{{dataStreams.devices}}", + "group": { + "by": [ + [ + "ExposureLevel", + "uniqueValues" + ] + ], + "aggregate": [ + { + "type": "count" + } + ] + } + }, + "scope": { + "query": "g.V().order().by('__name').hasNot('__canonicalType').or(__.has(\"sourceType\", \"Defender Device\")).limit(500)", + "bindings": {}, + "queryDetail": {} + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Device Exposure State", + "visualisation": { + "type": "data-stream-bar-chart", + "config": { + "data-stream-bar-chart": { + "xAxisGroup": "none", + "showLegend": false, + "range": { + "type": "auto" + }, + "showGrid": true, + "grouping": false, + "displayMode": "actual", + "xAxisData": "ExposureLevel_uniqueValues", + "showTotals": true, + "yAxisLabel": "", + "horizontalLayout": "vertical", + "showValue": false, + "yAxisData": [ + "count" + ], + "showYAxisLabel": true, + "xAxisLabel": "", + "legendPosition": "bottom", + "showXAxisLabel": true + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 0, + "y": 2, + "i": "fe0118a8-d043-4bb4-9907-10b1b29cd486", + "z": 0, + "config": { + "timeframe": "last24hours", + "dataStream": { + "name": "advancedHuntingQuery", + "dataSourceConfig": { + "query": "DeviceEvents\r\n| where ActionType in (\"AntivirusDetection\",\"AntivirusDetectionCancelled\",\"AntivirusMalwareActionFailed\")\r\n| project Timestamp, DeviceName, ActionType" + }, + "id": "{{dataStreams.advancedHuntingQuery}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "monitor": { + "tileRollsUp": true, + "monitorType": "threshold", + "condition": { + "columns": [], + "logic": { + "if": [ + { + ">": [ + { + "var": "count" + }, + 0 + ] + }, + "error" + ] + } + }, + "_type": "simple", + "aggregation": "count", + "groupBy": "__group_by_none__", + "frequency": 15 + }, + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Malware & Antivirus Detected", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": {} + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 1, + "y": 2, + "i": "cf2d60f6-b7cf-4602-bd3c-70f1ef215514", + "z": 0, + "config": { + "timeframe": "last24hours", + "dataStream": { + "name": "advancedHuntingQuery", + "dataSourceConfig": { + "query": "DeviceEvents\r\n| where ActionType in (\"UserAccountCreated\",\"ScheduledTaskCreated\",\"ScheduledTaskDeleted\",\"UserAccountModified\",\"UserAccountAddedToLocalGroup\")\r\n| project Timestamp, DeviceName, ActionType" + }, + "id": "{{dataStreams.advancedHuntingQuery}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "monitor": { + "tileRollsUp": true, + "monitorType": "threshold", + "condition": { + "columns": [], + "logic": { + "if": [ + { + ">": [ + { + "var": "count" + }, + 0 + ] + }, + "error" + ] + } + }, + "_type": "simple", + "aggregation": "count", + "groupBy": "__group_by_none__", + "frequency": 15 + }, + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Persistence & Privilege Escalation", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": { + "type": "count" + }, + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 2, + "y": 2, + "i": "cf1f3273-caa3-4b96-9e1f-b70c8a207214", + "z": 0, + "config": { + "timeframe": "last24hours", + "dataStream": { + "name": "advancedHuntingQuery", + "dataSourceConfig": { + "query": "DeviceEvents\r\n| where ActionType startswith \"AppControl\"\r\n| project Timestamp, DeviceName, ActionType" + }, + "id": "{{dataStreams.advancedHuntingQuery}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "monitor": { + "tileRollsUp": true, + "monitorType": "threshold", + "condition": { + "columns": [], + "logic": { + "if": [ + { + ">": [ + { + "var": "count" + }, + 0 + ] + }, + "error" + ] + } + }, + "_type": "simple", + "aggregation": "count", + "groupBy": "__group_by_none__", + "frequency": 15 + }, + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Application Control", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": { + "type": "count" + }, + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 3, + "y": 2, + "i": "21756e83-fc0c-47a8-98f7-7e96e765662b", + "z": 0, + "config": { + "timeframe": "last24hours", + "dataStream": { + "name": "advancedHuntingQuery", + "dataSourceConfig": { + "query": "DeviceEvents\r\n| where ActionType in (\"ExploitGuardNetworkProtectionBlocked\",\"ExploitGuardNonMicrosoftSignedBlocked\")\r\n| project Timestamp, DeviceName, ActionType" + }, + "id": "{{dataStreams.advancedHuntingQuery}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "monitor": { + "tileRollsUp": true, + "monitorType": "threshold", + "condition": { + "columns": [], + "logic": { + "if": [ + { + ">": [ + { + "var": "count" + }, + 0 + ] + }, + "error" + ] + } + }, + "_type": "simple", + "aggregation": "count", + "groupBy": "__group_by_none__", + "frequency": 15 + }, + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Exploits", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": { + "type": "count" + }, + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 2, + "x": 0, + "y": 4, + "i": "5c32f4c0-9729-42dd-b3c4-c057f9547092", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "secureScoreHistory", + "id": "{{dataStreams.secureScoreHistory}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Secure Score History", + "visualisation": { + "type": "data-stream-line-graph", + "config": { + "data-stream-line-graph": { + "yAxisLabel": "Secure Score", + "xAxisColumn": "createdDateTime", + "seriesColumn": "none", + "xAxisLabel": "Date", + "dataPoints": false, + "showTrendLine": true, + "yAxisRangeMode": "auto", + "yAxisColumn": [ + "currentScore" + ] + } + } + } + } + } + ], + "version": 49, + "columns": 4 + } +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/defaultContent/manifest.json b/plugins/MicrosoftDefender/v1/defaultContent/manifest.json new file mode 100644 index 0000000..571fefe --- /dev/null +++ b/plugins/MicrosoftDefender/v1/defaultContent/manifest.json @@ -0,0 +1,20 @@ +{ + "items": [ + { + "name": "cockpit", + "type": "dashboard" + }, + { + "name": "recommendations", + "type": "dashboard" + }, + { + "name": "vulnerabilities", + "type": "dashboard" + }, + { + "name": "Devices", + "type": "folder" + } + ] +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/defaultContent/recommendations.dash.json b/plugins/MicrosoftDefender/v1/defaultContent/recommendations.dash.json new file mode 100644 index 0000000..0d813fa --- /dev/null +++ b/plugins/MicrosoftDefender/v1/defaultContent/recommendations.dash.json @@ -0,0 +1,291 @@ +{ + "name": "Recommendations", + "schemaVersion": "1.5", + "dashboard": { + "_type": "layout/grid", + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "x": 0, + "h": 2, + "y": 0, + "i": "777d4030-bbb1-4d20-a362-eef301140a35", + "z": 0, + "config": { + "variables": [ + "{{variables.[All Object]}}" + ], + "dataStream": { + "pluginConfigId": "{{configId}}", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "IsCompliant", + "operation": "equals", + "value": "0" + }, + { + "column": "IsApplicable", + "operation": "equals", + "value": "1" + } + ] + }, + "id": "{{dataStreams.recommendations}}" + }, + "scope": { + "variable": "{{variables.[All Object]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[All Objects]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Active", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": { + "type": "count" + }, + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "x": 1, + "h": 2, + "y": 0, + "i": "30f6f706-cd44-4396-be7c-e0ca3c7999a7", + "z": 0, + "config": { + "dataStream": { + "pluginConfigId": "{{configId}}", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "IsCompliant", + "operation": "equals", + "value": "0" + }, + { + "column": "IsApplicable", + "operation": "equals", + "value": "1" + } + ] + }, + "id": "{{dataStreams.recommendations}}", + "group": { + "by": [ + [ + "ConfigurationCategory", + "uniqueValues" + ] + ], + "aggregate": [ + { + "type": "count" + } + ] + } + }, + "scope": { + "query": "g.V().order().by('__name').hasNot('__canonicalType').or(__.has(\"sourceType\", \"Defender Device\")).limit(500)", + "bindings": {}, + "queryDetail": {} + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Category", + "visualisation": { + "type": "data-stream-donut-chart", + "config": { + "data-stream-donut-chart": { + "valueColumn": "count", + "hideCenterValue": false, + "showValuesAsPercentage": false, + "legendPosition": "right", + "legendMode": "table", + "labelColumn": "ConfigurationCategory_uniqueValues" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "x": 2, + "h": 2, + "y": 0, + "i": "d2e6be29-4c2d-4cb6-8954-ce4d87c94f10", + "z": 0, + "config": { + "timeframe": "none", + "variables": [ + "{{variables.[All Object]}}" + ], + "dataStream": { + "name": "recommendations", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "IsApplicable", + "operation": "equals", + "value": "1" + }, + { + "column": "IsCompliant", + "operation": "equals", + "value": "0" + } + ] + }, + "id": "{{dataStreams.recommendations}}", + "group": { + "by": [ + [ + "ConfigurationImpact", + "uniqueValues" + ] + ], + "aggregate": [ + { + "type": "count" + } + ] + } + }, + "scope": { + "variable": "{{variables.[All Object]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[All Objects]}}" + }, + "_type": "tile/data-stream", + "description": "On active recommendations", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Configuration Impact (Severity Score)", + "visualisation": { + "type": "data-stream-bar-chart", + "config": { + "data-stream-bar-chart": { + "xAxisGroup": "none", + "showLegend": false, + "range": { + "type": "auto" + }, + "showGrid": true, + "grouping": false, + "displayMode": "actual", + "xAxisData": "ConfigurationImpact_uniqueValues", + "showTotals": false, + "yAxisLabel": "", + "horizontalLayout": "vertical", + "showValue": false, + "yAxisData": [], + "showYAxisLabel": true, + "xAxisLabel": "", + "legendPosition": "bottom", + "showXAxisLabel": true + } + } + } + } + }, + { + "static": false, + "w": 3, + "moved": false, + "x": 0, + "h": 4, + "y": 2, + "i": "a501edac-6ed8-4835-a64c-a7579937f16a", + "z": 0, + "config": { + "timeframe": "none", + "variables": [ + "{{variables.[All Object]}}" + ], + "dataStream": { + "name": "recommendations", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "IsApplicable", + "operation": "equals", + "value": "1" + }, + { + "column": "IsCompliant", + "operation": "equals", + "value": "0" + } + ] + }, + "id": "{{dataStreams.recommendations}}" + }, + "scope": { + "variable": "{{variables.[All Object]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[All Objects]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "List", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "DeviceId", + "DeviceName", + "Timestamp", + "ConfigurationId", + "ConfigurationName", + "ConfigurationCategory", + "ConfigurationSubcategory", + "RiskDescription", + "RemediationOptions", + "IsApplicable@odata.type", + "IsApplicable", + "IsCompliant@odata.type", + "IsCompliant" + ], + "hiddenColumns": [] + } + } + } + } + } + ], + "version": 42, + "columns": 3 + }, + "variables": [ + "{{variables.[All Object]}}" + ] +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/defaultContent/scopes.json b/plugins/MicrosoftDefender/v1/defaultContent/scopes.json new file mode 100644 index 0000000..7e8fa0b --- /dev/null +++ b/plugins/MicrosoftDefender/v1/defaultContent/scopes.json @@ -0,0 +1,29 @@ +[ + { + "name": "All Objects", + "matches": "all", + "variable": { + "name": "All Object", + "type": "object", + "default": "all", + "allowMultipleSelection": false + } + }, + { + "name": "Defender Devices", + "matches": { + "sourceType": { + "type": "oneOf", + "values": [ + "Defender Device" + ] + } + }, + "variable": { + "name": "Defender Device", + "type": "object", + "default": "none", + "allowMultipleSelection": false + } + } +] \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/defaultContent/vulnerabilities.dash.json b/plugins/MicrosoftDefender/v1/defaultContent/vulnerabilities.dash.json new file mode 100644 index 0000000..6fdee49 --- /dev/null +++ b/plugins/MicrosoftDefender/v1/defaultContent/vulnerabilities.dash.json @@ -0,0 +1,394 @@ +{ + "name": "Vulnerabilities", + "schemaVersion": "1.5", + "dashboard": { + "_type": "layout/grid", + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 0, + "y": 0, + "i": "7c498c96-9efb-46fd-8b06-9d0970b51b45", + "z": 0, + "config": { + "timeframe": "last24hours", + "variables": [ + "{{variables.[All Object]}}" + ], + "dataStream": { + "pluginConfigId": "{{configId}}", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "VulnerabilitySeverityLevel", + "operation": "equals", + "value": "Critical" + } + ] + }, + "id": "{{dataStreams.Vulnerabilities}}" + }, + "scope": { + "variable": "{{variables.[All Object]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[All Objects]}}" + }, + "_type": "tile/data-stream", + "description": "", + "monitorOld": { + "tileRollsUp": true, + "monitorType": "threshold", + "condition": { + "columns": [], + "logic": { + "if": [ + { + ">": [ + { + "var": "count" + }, + 0 + ] + }, + "error" + ] + } + }, + "_type": "simple", + "aggregation": "count", + "groupBy": "DeviceName", + "frequency": 15 + }, + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Critical", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": { + "type": "count" + }, + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 1, + "y": 0, + "i": "7a35db77-a19d-4b51-9712-f45e6cfe0004", + "z": 0, + "config": { + "timeframe": "last24hours", + "variables": [ + "{{variables.[All Object]}}" + ], + "dataStream": { + "pluginConfigId": "{{configId}}", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "VulnerabilitySeverityLevel", + "operation": "equals", + "value": "High" + } + ] + }, + "id": "{{dataStreams.Vulnerabilities}}" + }, + "scope": { + "variable": "{{variables.[All Object]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[All Objects]}}" + }, + "_type": "tile/data-stream", + "monitorOld": { + "tileRollsUp": true, + "monitorType": "threshold", + "condition": { + "columns": [], + "logic": { + "if": [ + { + ">": [ + { + "var": "count" + }, + 0 + ] + }, + "error" + ] + } + }, + "_type": "simple", + "aggregation": "count", + "groupBy": "DeviceName", + "frequency": 15 + }, + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "High", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": { + "type": "count" + }, + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 2, + "y": 0, + "i": "ecca69a0-eb1c-4433-8ba7-e90cad89d561", + "z": 0, + "config": { + "timeframe": "last24hours", + "variables": [ + "{{variables.[All Object]}}" + ], + "dataStream": { + "pluginConfigId": "{{configId}}", + "filter": { + "multiOperation": "and", + "filters": [] + }, + "id": "{{dataStreams.Vulnerabilities}}" + }, + "scope": { + "variable": "{{variables.[All Object]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[All Objects]}}" + }, + "_type": "tile/data-stream", + "monitorOld": { + "tileRollsUp": true, + "monitorType": "threshold", + "condition": { + "columns": [], + "logic": { + "if": [ + { + ">": [ + { + "var": "count" + }, + 0 + ] + }, + "error" + ] + } + }, + "_type": "simple", + "aggregation": "count", + "groupBy": "DeviceName", + "frequency": 15 + }, + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Software", + "visualisation": { + "type": "data-stream-donut-chart", + "config": { + "data-stream-donut-chart": { + "valueColumn": "builtin_count_by_label", + "hideCenterValue": false, + "showValuesAsPercentage": false, + "legendPosition": "right", + "legendMode": "table", + "labelColumn": "SoftwareName" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 3, + "y": 0, + "i": "b0385f1f-3367-4721-83cd-b3dc44a0734f", + "z": 0, + "config": { + "timeframe": "last24hours", + "variables": [ + "{{variables.[All Object]}}" + ], + "dataStream": { + "pluginConfigId": "{{configId}}", + "filter": { + "multiOperation": "and", + "filters": [] + }, + "id": "{{dataStreams.Vulnerabilities}}", + "group": { + "by": [ + [ + "VulnerabilitySeverityLevel", + "uniqueValues" + ] + ], + "aggregate": [ + { + "type": "count" + } + ] + } + }, + "scope": { + "variable": "{{variables.[All Object]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[All Objects]}}" + }, + "_type": "tile/data-stream", + "monitorOld": { + "tileRollsUp": true, + "monitorType": "threshold", + "condition": { + "columns": [], + "logic": { + "if": [ + { + ">": [ + { + "var": "count" + }, + 0 + ] + }, + "error" + ] + } + }, + "_type": "simple", + "aggregation": "count", + "groupBy": "DeviceName", + "frequency": 15 + }, + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Severity", + "visualisation": { + "type": "data-stream-bar-chart", + "config": { + "data-stream-bar-chart": { + "xAxisGroup": "none", + "showLegend": false, + "range": { + "type": "auto" + }, + "showGrid": true, + "grouping": false, + "displayMode": "actual", + "xAxisData": "VulnerabilitySeverityLevel_uniqueValues", + "showTotals": false, + "yAxisLabel": "", + "horizontalLayout": "vertical", + "showValue": false, + "yAxisData": [ + "count" + ], + "showYAxisLabel": true, + "xAxisLabel": "", + "legendPosition": "bottom", + "showXAxisLabel": true + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 3, + "x": 0, + "y": 3, + "i": "eb36c383-0ca3-4d60-8e0d-c09c0ec2e6d8", + "z": 0, + "config": { + "timeframe": "none", + "variables": [ + "{{variables.[All Object]}}" + ], + "dataStream": { + "name": "Vulnerabilities", + "id": "{{dataStreams.Vulnerabilities}}" + }, + "scope": { + "variable": "{{variables.[All Object]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[All Objects]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "List", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "CveId", + "VulnerabilitySeverityLevel", + "DeviceId", + "SoftwareVendor", + "SoftwareName", + "SoftwareVersion", + "RecommendedSecurityUpdateId" + ], + "hiddenColumns": [ + "DeviceName", + "OSPlatform", + "OSVersion", + "OSArchitecture", + "AadDeviceId", + "RecommendedSecurityUpdate", + "CveTags@odata.type", + "CveMitigationStatus" + ] + } + } + } + } + } + ], + "version": 42, + "columns": 4 + }, + "variables": [ + "{{variables.[All Object]}}" + ] +} \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/icon.png b/plugins/MicrosoftDefender/v1/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a34e4d4285d6a0653f947dbba6c6bc2d8a9988c5 GIT binary patch literal 67410 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 Date: Mon, 1 Jun 2026 07:57:42 +0100 Subject: [PATCH 06/10] chore: delete old plugin --- .../v1/configValidation.json | 13 - .../v1/dataStreams/advancedHuntingQuery.json | 52 -- .../v1/dataStreams/alerts.json | 161 ------ .../v1/dataStreams/deviceSecureStore.json | 24 - .../v1/dataStreams/devicesNew.json | 84 --- .../v1/dataStreams/exposureScore.json | 24 - .../v1/dataStreams/listDevices.json | 42 -- .../v1/dataStreams/listRecommendations.json | 25 - .../v1/dataStreams/listVulnerabilities.json | 26 - .../v1/dataStreams/validation.json | 32 -- .../Devices/deviceStatus.dash.json | 378 -------------- .../v1/defaultContent/Devices/manifest.json | 12 - .../defaultContent/Devices/overview.dash.json | 197 ------- .../v1/defaultContent/cockpit.dash.json | 494 ------------------ .../v1/defaultContent/manifest.json | 20 - .../defaultContent/recommendations.dash.json | 442 ---------------- .../v1/defaultContent/scopes.json | 19 - .../defaultContent/vulnerabilities.dash.json | 231 -------- .../Microsoft Defender (Preview)/v1/icon.png | Bin 67410 -> 0 bytes .../v1/indexDefinitions/default.json | 31 -- .../v1/metadata.json | 46 -- .../Microsoft Defender (Preview)/v1/ui.json | 29 - 22 files changed, 2382 deletions(-) delete mode 100644 plugins/Microsoft Defender (Preview)/v1/configValidation.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/advancedHuntingQuery.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/alerts.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/deviceSecureStore.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/devicesNew.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/exposureScore.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/listDevices.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/listRecommendations.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/listVulnerabilities.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/dataStreams/validation.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/deviceStatus.dash.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/manifest.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/overview.dash.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/cockpit.dash.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/manifest.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/recommendations.dash.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/scopes.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/defaultContent/vulnerabilities.dash.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/icon.png delete mode 100644 plugins/Microsoft Defender (Preview)/v1/indexDefinitions/default.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/metadata.json delete mode 100644 plugins/Microsoft Defender (Preview)/v1/ui.json diff --git a/plugins/Microsoft Defender (Preview)/v1/configValidation.json b/plugins/Microsoft Defender (Preview)/v1/configValidation.json deleted file mode 100644 index d9c93aa..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/configValidation.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "steps": [ - { - "displayName": "API Access Test", - "dataStream": { - "name": "validation" - }, - "success": "Successfully connected to Endpoint", - "error": "Cannot access the Endpoint API - check your client ID & secret. Do you have the correct permissions set?", - "required": true - } - ] -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/advancedHuntingQuery.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/advancedHuntingQuery.json deleted file mode 100644 index df4d478..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/dataStreams/advancedHuntingQuery.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "advancedHuntingQuery", - "displayName": "Advanced Hunting Query", - "baseDataSourceName": "httpRequestUnscoped", - "config": { - "httpMethod": "post", - "errorHandling": { - "type": "default" - }, - "paging": { - "mode": "none" - }, - "expandInnerObjects": true, - "pathToData": "Results", - "endpointPath": "/api/advancedqueries/run", - "postBody": { - "Query": "{{query}}" - }, - "getArgs": [], - "headers": [] - }, - "matches": "none", - "timeframes": [ - "last1hour", - "last12hours", - "last24hours", - "last7days", - "last30days", - "thisMonth", - "thisQuarter", - "thisYear", - "lastMonth", - "lastQuarter", - "lastYear" - ], - "providesPluginDiagnostics": true, - "tags": [ - "KQL", - "Advanced Hunting" - ], - "ui": [ - { - "name": "query", - "language": "kusto", - "label": "Query", - "type": "code", - "validation": { - "required": true - } - } - ] -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/alerts.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/alerts.json deleted file mode 100644 index 7363160..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/dataStreams/alerts.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "name": "alerts", - "displayName": "Alerts", - "supportsNoneTimeframe": true, - "baseDataSourceName": "httpRequestUnscoped", - "config": { - "httpMethod": "get", - "errorHandling": { - "type": "default" - }, - "paging": { - "mode": "offset", - "pageSize": { - "realm": { - "value": "queryArg", - "label": "Query parameter" - }, - "path": "$top", - "value": "100" - }, - "offset": { - "rowCountIn": { - "realm": { - "value": "payloadArraySize", - "label": "Body array size" - }, - "path": "value" - }, - "mode": "row", - "base": "0" - }, - "out": { - "realm": { - "value": "queryArg", - "label": "queryArg" - }, - "path": "$skip" - } - }, - "expandInnerObjects": true, - "endpointPath": "api/alerts", - "getArgs": [ - { - "key": "$filter", - "value": "{{ status && status.length > 0 ? \"(status eq \" + status.map((m) => { return `'${m}'` }).join(\" or status eq \") + \") and \" : \"\" }}{{ severity && severity.length > 0 ? \"(severity eq \" + severity.map((m) => { return `'${m}'` }).join(\" or severity eq \") + \") and \" : \"\" }}{{ category ? \"(category eq \" + category.split(\",\").map(c => {return `'${c.trim()}'`}).join(\" or category eq \") + \") and \" : \"\"}}{{timeframe.enum !== \"none\" ? timeframeCol + \" ge \" + timeframe.start + \" and \" + timeframeCol + \" le \" + timeframe.end : \"1 eq 1\"}}" - } - ], - "pathToData": "value", - "headers": [] - }, - "providesPluginDiagnostics": true, - "manualConfigApply": true, - "rowPath": [], - "matches": "none", - "timeframes": [ - "last1hour", - "last12hours", - "last24hours", - "last7days", - "last30days", - "thisMonth", - "thisQuarter", - "thisYear", - "lastMonth", - "lastQuarter", - "lastYear" - ], - "tags": ["Alerts"], - "ui": [ - { - "name": "category", - "label": "Category", - "placeholder": "Category1, Category2", - "type": "text" - }, - { - "name": "status", - "label": "Status", - "type": "autocomplete", - "data": { - "source": "fixed", - "values": [ - { - "value": "Unknown", - "label": "Unknown" - }, - { - "value": "New", - "label": "New" - }, - { - "value": "InProgress", - "label": "InProgress" - }, - { - "value": "Resolved", - "label": "Resolved" - } - ] - }, - "isClearable": true - }, - { - "name": "severity", - "label": "Severity", - "type": "autocomplete", - "data": { - "source": "fixed", - "values": [ - { - "value": "UnSpecified", - "label": "Unspecified" - }, - { - "value": "Informational", - "label": "Informational" - }, - { - "value": "Low", - "label": "Low" - }, - { - "value": "Medium", - "label": "Medium" - }, - { - "value": "High", - "label": "High" - } - ] - }, - "isClearable": true - }, - { - "isMulti": false, - "help": "Select the column to apply the timeframe", - "data": { - "source": "fixed", - "values": [ - { - "value": "alertCreationTime", - "label": "Creation Time" - }, - { - "value": "lastUpdateTime", - "label": "Last Update Time" - }, - { - "value": "lastEventTime", - "label": "Last Event Time" - } - ] - }, - "defaultValue": "alertCreationTime", - "name": "timeframeCol", - "label": "Timeframe Column", - "type": "autocomplete", - "isClearable": false - } - ] -} diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/deviceSecureStore.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/deviceSecureStore.json deleted file mode 100644 index d6d809b..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/dataStreams/deviceSecureStore.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "deviceSecureStore", - "displayName": "Device Secure Score", - "baseDataSourceName": "httpRequestUnscoped", - "config": { - "httpMethod": "get", - "errorHandling": { - "type": "default" - }, - "paging": { - "mode": "none" - }, - "expandInnerObjects": true, - "endpointPath": "/api/configurationScore", - "getArgs": [], - "headers": [] - }, - "matches": "none", - "timeframes": false, - "providesPluginDiagnostics": true, - "tags": [ - "Device" - ] -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/devicesNew.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/devicesNew.json deleted file mode 100644 index a982236..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/dataStreams/devicesNew.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "name": "devicesNew", - "displayName": "Devices", - "baseDataSourceName": "httpRequestScopedSingle", - "config": { - "httpMethod": "get", - "errorHandling": { - "type": "default" - }, - "paging": { - "mode": "none" - }, - "expandInnerObjects": true, - "endpointPath": "api/machines/{{object.deviceid}}", - "getArgs": [], - "headers": [] - }, - "metadata": [ - { - "sourceId": "id", - "name": "computerDnsName", - "shape": "string", - "role": "label", - "sourceType": "defender-device" - }, - { - "shape": [ - "state", - { - "map": { - "unmonitored": [], - "unknown": [ - "Unknown", - "Inactive" - ], - "error": [ - "ImpairedCommunication", - "NoSensorDataImpairedCommunication", - "NoSensorData" - ], - "warning": [], - "success": [ - "Active" - ] - } - } - ], - "name": "healthStatus" - }, - { - "shape": [ - "state", - { - "map": { - "unmonitored": [], - "unknown": [], - "error": [ - "High" - ], - "warning": [ - "Medium" - ], - "success": [ - "Low" - ] - } - } - ], - "name": "exposureLevel" - }, - { - "pattern": ".*" - } - ], - "matches": { - "sourceType": { - "type": "equals", - "value": "defender-device" - } - }, - "timeframes": false, - "providesPluginDiagnostics": true, - "tags": [] -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/exposureScore.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/exposureScore.json deleted file mode 100644 index 0605c99..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/dataStreams/exposureScore.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "exposureScore", - "displayName": "Device Exposure Score", - "baseDataSourceName": "httpRequestUnscoped", - "config": { - "httpMethod": "get", - "errorHandling": { - "type": "default" - }, - "paging": { - "mode": "none" - }, - "expandInnerObjects": true, - "endpointPath": "api/exposurescore", - "getArgs": [], - "headers": [] - }, - "matches": "none", - "timeframes": false, - "providesPluginDiagnostics": true, - "tags": [ - "Device" - ] -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/listDevices.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/listDevices.json deleted file mode 100644 index 00a2a45..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/dataStreams/listDevices.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "listDevices", - "displayName": "List Devices", - "description": "", - "baseDataSourceName": "httpRequestUnscoped", - "config": { - "httpMethod": "get", - "errorHandling": { - "type": "default" - }, - "paging": { - "mode": "none" - }, - "expandInnerObjects": true, - "endpointPath": "api/machines", - "pathToData": "value", - "getArgs": [], - "headers": [] - }, - "matches": [ - { - "sourceType": { - "type": "equals", - "value": "squaredup/data-source" - }, - "pluginId": { - "type": "equals", - "value": "plugin-bi89KMBtdXqKNJIwcn2N" - }, - "sourceId": { - "type": "equals", - "value": "config-TPvNIMMPMu4LhSro2Rk7" - } - } - ], - "providesPluginDiagnostics": true, - "timeframes": false, - "tags": [], - "visibility": { - "type": "hidden" - } -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/listRecommendations.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/listRecommendations.json deleted file mode 100644 index c18f891..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/dataStreams/listRecommendations.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "listRecommendations", - "displayName": "Recommendations", - "baseDataSourceName": "httpRequestUnscoped", - "config": { - "httpMethod": "get", - "errorHandling": { - "type": "default" - }, - "paging": { - "mode": "none" - }, - "expandInnerObjects": true, - "endpointPath": "api/recommendations", - "pathToData": "value", - "getArgs": [], - "headers": [] - }, - "matches": "none", - "timeframes": false, - "providesPluginDiagnostics": true, - "tags": [ - "Recommendations" - ] -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/listVulnerabilities.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/listVulnerabilities.json deleted file mode 100644 index 0d9750d..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/dataStreams/listVulnerabilities.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "listVulnerabilities", - "displayName": "Vulnerabilities", - "baseDataSourceName": "httpRequestUnscoped", - "config": { - "httpMethod": "get", - "errorHandling": { - "type": "default" - }, - "paging": { - "mode": "none" - }, - "expandInnerObjects": true, - "endpointPath": "api/vulnerabilities/machinesVulnerabilities", - "pathToData": "value", - "getArgs": [], - "headers": [] - }, - "matches": "none", - "timeframes": false, - "providesPluginDiagnostics": true, - "tags": [ - "Machines", - "Vulnerabilities" - ] -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/dataStreams/validation.json b/plugins/Microsoft Defender (Preview)/v1/dataStreams/validation.json deleted file mode 100644 index 54ca99f..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/dataStreams/validation.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "validation", - "displayName": "Validation", - "baseDataSourceName": "httpRequestUnscoped", - "config": { - "httpMethod": "get", - "errorHandling": { - "type": "default" - }, - "paging": { - "mode": "none" - }, - "expandInnerObjects": true, - "endpointPath": "api/alerts", - "pathToData": "value", - "getArgs": [ - { - "key": "$top", - "value": "1", - "needsEncryption": false - } - ], - "headers": [] - }, - "matches": "none", - "timeframes": false, - "providesPluginDiagnostics": true, - "visibility": { - "type": "hidden" - }, - "options": { "noMatch": true } -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/deviceStatus.dash.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/deviceStatus.dash.json deleted file mode 100644 index 7133c36..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/deviceStatus.dash.json +++ /dev/null @@ -1,378 +0,0 @@ -{ - "name": "Device Status", - "schemaVersion": "1.5", - "dashboard": { - "_type": "layout/grid", - "contents": [ - { - "static": false, - "w": 1, - "moved": false, - "h": 3, - "x": 0, - "y": 0, - "i": "6038c7ef-4b3b-484d-bfda-94d509b4517d", - "z": 0, - "config": { - "variables": [ - "{{variables.[Defender Device]}}" - ], - "dataStream": { - "name": "devicesNew", - "id": "{{dataStreams.devicesNew}}" - }, - "scope": { - "variable": "{{variables.[Defender Device]}}", - "workspace": "{{workspaceId}}", - "scope": "{{scopes.[Defender Devices]}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Exposure Level", - "visualisation": { - "type": "data-stream-blocks", - "config": { - "data-stream-blocks": { - "stateColumn": "exposureLevel", - "linkColumn": "none", - "labelColumn": "exposureLevel[Expanded].rawState" - } - } - } - } - }, - { - "static": false, - "w": 1, - "moved": false, - "h": 3, - "x": 1, - "y": 0, - "i": "c5c507d9-02c0-44f1-adfb-d39aaac0ba22", - "z": 0, - "config": { - "variables": [ - "{{variables.[Defender Device]}}" - ], - "dataStream": { - "name": "devicesNew", - "id": "{{dataStreams.devicesNew}}" - }, - "scope": { - "variable": "{{variables.[Defender Device]}}", - "workspace": "{{workspaceId}}", - "scope": "{{scopes.[Defender Devices]}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Health Status (Sensor)", - "visualisation": { - "type": "data-stream-blocks", - "config": { - "data-stream-blocks": { - "stateColumn": "healthStatus", - "linkColumn": "none", - "labelColumn": "healthStatus[Expanded].rawState" - } - } - } - } - }, - { - "static": false, - "w": 1, - "moved": false, - "h": 3, - "x": 2, - "y": 0, - "i": "5c51849e-01ae-4319-8505-f89854815182", - "z": 0, - "config": { - "variables": [ - "{{variables.[Defender Device]}}" - ], - "dataStream": { - "name": "devicesNew", - "metadata": [ - { - "shape": [ - "state", - { - "map": { - "warning": [], - "unmonitored": [], - "error": [ - "Down" - ], - "success": [ - "Up" - ], - "unknown": [] - } - } - ], - "name": "ipAddresses.0.operationalStatus" - } - ], - "id": "{{dataStreams.devicesNew}}" - }, - "scope": { - "variable": "{{variables.[Defender Device]}}", - "workspace": "{{workspaceId}}", - "scope": "{{scopes.[Defender Devices]}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Network Operational Status", - "visualisation": { - "type": "data-stream-blocks", - "config": { - "data-stream-blocks": { - "stateColumn": "ipAddresses.0.operationalStatus", - "linkColumn": "none", - "labelColumn": "ipAddresses.0.operationalStatus[Expanded].rawState" - } - } - } - } - }, - { - "static": false, - "w": 1, - "moved": false, - "h": 3, - "x": 3, - "y": 0, - "i": "76485e06-c17a-4239-bf23-561ae12ceaa4", - "z": 0, - "config": { - "variables": [ - "{{variables.[Defender Device]}}" - ], - "dataStream": { - "name": "devicesNew", - "id": "{{dataStreams.devicesNew}}" - }, - "scope": { - "variable": "{{variables.[Defender Device]}}", - "workspace": "{{workspaceId}}", - "scope": "{{scopes.[Defender Devices]}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Risk Score", - "visualisation": { - "type": "data-stream-scalar", - "config": { - "data-stream-scalar": { - "value": "riskScore", - "comparisonColumn": "none" - } - } - } - } - }, - { - "static": false, - "w": 2, - "moved": false, - "h": 4, - "x": 0, - "y": 3, - "i": "0c276a67-d530-42a2-86a9-8aeb613372ac", - "z": 0, - "config": { - "variables": [ - "{{variables.[Defender Device]}}" - ], - "dataStream": { - "name": "devicesNew", - "id": "{{dataStreams.devicesNew}}" - }, - "scope": { - "variable": "{{variables.[Defender Device]}}", - "workspace": "{{workspaceId}}", - "scope": "{{scopes.[Defender Devices]}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Device Attributes", - "visualisation": { - "type": "data-stream-table", - "config": { - "data-stream-table": { - "columnOrder": [ - "mergedIntoMachineId", - "isPotentialDuplication", - "isExcluded", - "exclusionReason", - "firstSeen", - "lastSeen", - "agentVersion", - "deviceValue", - "rbacGroupId", - "rbacGroupName", - "isAadJoined", - "aadDeviceId", - "onboardingStatus", - "managedBy", - "managedByStatus" - ], - "hiddenColumns": [ - "@odata.context", - "computerDnsName", - "osPlatform", - "osProcessor", - "version", - "lastIpAddress", - "lastExternalIpAddress", - "osBuild", - "healthStatus", - "riskScore", - "exposureLevel", - "osArchitecture", - "ipAddresses.0.ipAddress", - "ipAddresses.0.macAddress", - "ipAddresses.0.type", - "ipAddresses.0.operationalStatus", - "ipAddresses.1.ipAddress", - "ipAddresses.1.macAddress", - "ipAddresses.1.type", - "ipAddresses.1.operationalStatus", - "ipAddresses.2.ipAddress", - "ipAddresses.2.macAddress", - "ipAddresses.2.type", - "ipAddresses.2.operationalStatus", - "ipAddresses.3.ipAddress", - "ipAddresses.3.macAddress", - "ipAddresses.3.type", - "ipAddresses.3.operationalStatus", - "healthStatus[Expanded].rawState", - "exposureLevel[Expanded].rawState", - "id", - "vmMetadata.vmId", - "vmMetadata.cloudProvider", - "vmMetadata.resourceId", - "vmMetadata.subscriptionId" - ], - "transpose": true - } - } - } - } - }, - { - "static": false, - "w": 2, - "moved": false, - "h": 4, - "x": 2, - "y": 3, - "i": "d815528c-6c58-4e27-b390-d95f070fa1a4", - "z": 0, - "config": { - "variables": [ - "{{variables.[Defender Device]}}" - ], - "dataStream": { - "name": "devicesNew", - "id": "{{dataStreams.devicesNew}}" - }, - "scope": { - "variable": "{{variables.[Defender Device]}}", - "workspace": "{{workspaceId}}", - "scope": "{{scopes.[Defender Devices]}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Devices Properties", - "visualisation": { - "type": "data-stream-table", - "config": { - "data-stream-table": { - "columnOrder": [ - "osPlatform", - "osProcessor", - "version", - "lastIpAddress", - "lastExternalIpAddress", - "agentVersion", - "osBuild", - "osArchitecture", - "vmMetadata.cloudProvider", - "vmMetadata.resourceId", - "vmMetadata.subscriptionId", - "id", - "vmMetadata.vmId" - ], - "hiddenColumns": [ - "@odata.context", - "mergedIntoMachineId", - "isPotentialDuplication", - "isExcluded", - "exclusionReason", - "firstSeen", - "lastSeen", - "healthStatus", - "deviceValue", - "rbacGroupId", - "rbacGroupName", - "riskScore", - "exposureLevel", - "isAadJoined", - "aadDeviceId", - "onboardingStatus", - "managedBy", - "managedByStatus", - "ipAddresses.0.ipAddress", - "ipAddresses.0.macAddress", - "ipAddresses.0.type", - "ipAddresses.0.operationalStatus", - "ipAddresses.1.ipAddress", - "ipAddresses.1.macAddress", - "ipAddresses.1.type", - "ipAddresses.1.operationalStatus", - "ipAddresses.2.ipAddress", - "ipAddresses.2.macAddress", - "ipAddresses.2.type", - "ipAddresses.2.operationalStatus", - "ipAddresses.3.ipAddress", - "ipAddresses.3.macAddress", - "ipAddresses.3.type", - "ipAddresses.3.operationalStatus", - "healthStatus[Expanded].rawState", - "computerDnsName", - "exposureLevel[Expanded].rawState" - ], - "transpose": true - } - } - } - } - } - ], - "version": 124, - "columns": 4 - }, - "variables": [ - "{{variables.[Defender Device]}}" - ] -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/manifest.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/manifest.json deleted file mode 100644 index 4b56ba1..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/manifest.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "items": [ - { - "name": "overview", - "type": "dashboard" - }, - { - "name": "deviceStatus", - "type": "dashboard" - } - ] -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/overview.dash.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/overview.dash.json deleted file mode 100644 index 7cae0d3..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/defaultContent/Devices/overview.dash.json +++ /dev/null @@ -1,197 +0,0 @@ -{ - "name": "Overview", - "schemaVersion": "1.5", - "dashboard": { - "_type": "layout/grid", - "contents": [ - { - "static": false, - "w": 2, - "moved": false, - "h": 3, - "x": 0, - "y": 0, - "i": "29387eac-2ed1-4862-bbb1-c7a23079733e", - "z": 0, - "config": { - "dataStream": { - "name": "devicesNew", - "id": "{{dataStreams.devicesNew}}", - "sort": { - "by": [ - [ - "exposureLevel", - "desc" - ] - ] - } - }, - "scope": { - "workspace": "{{workspaceId}}", - "scope": "{{scopes.[Defender Devices]}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Exposure Level", - "visualisation": { - "type": "data-stream-blocks", - "config": { - "data-stream-blocks": { - "stateColumn": "exposureLevel", - "linkColumn": "computerDnsName", - "sublabel": "exposureLevel[Expanded].rawState", - "columns": 1, - "labelColumn": "computerDnsName" - } - } - } - } - }, - { - "static": false, - "w": 2, - "moved": false, - "h": 3, - "x": 2, - "y": 0, - "i": "395663f6-9e18-4837-89ec-6013d3e85493", - "z": 0, - "config": { - "dataStream": { - "name": "devicesNew", - "id": "{{dataStreams.devicesNew}}", - "sort": { - "by": [ - [ - "healthStatus", - "desc" - ] - ] - } - }, - "scope": { - "workspace": "{{workspaceId}}", - "scope": "{{scopes.[Defender Devices]}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Health Status (Sensor)", - "visualisation": { - "type": "data-stream-blocks", - "config": { - "data-stream-blocks": { - "stateColumn": "healthStatus", - "linkColumn": "computerDnsName", - "sublabel": "healthStatus[Expanded].rawState", - "columns": 1, - "labelColumn": "computerDnsName" - } - } - } - } - }, - { - "static": false, - "w": 4, - "moved": false, - "h": 4, - "x": 0, - "y": 3, - "i": "1a8ad0a9-dbf6-4b42-91d8-d0c0ef62a9b3", - "z": 0, - "config": { - "dataStream": { - "name": "devicesNew", - "id": "{{dataStreams.devicesNew}}", - "sort": { - "by": [ - [ - "computerDnsName", - "asc" - ] - ] - } - }, - "scope": { - "workspace": "{{workspaceId}}", - "scope": "{{scopes.[Defender Devices]}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Properties", - "visualisation": { - "type": "data-stream-table", - "config": { - "data-stream-table": { - "columnOrder": [ - "computerDnsName", - "exposureLevel", - "healthStatus", - "riskScore", - "onboardingStatus", - "lastSeen", - "agentVersion", - "osPlatform", - "osBuild", - "osProcessor", - "version", - "id", - "mergedIntoMachineId", - "isPotentialDuplication", - "isExcluded", - "exclusionReason", - "firstSeen", - "lastIpAddress", - "lastExternalIpAddress", - "deviceValue", - "rbacGroupId", - "rbacGroupName", - "isAadJoined", - "aadDeviceId", - "osArchitecture", - "managedBy", - "managedByStatus", - "ipAddresses.0.ipAddress", - "ipAddresses.0.macAddress", - "ipAddresses.0.type", - "ipAddresses.0.operationalStatus", - "ipAddresses.1.ipAddress", - "ipAddresses.1.macAddress", - "ipAddresses.1.type", - "ipAddresses.1.operationalStatus", - "ipAddresses.2.ipAddress", - "ipAddresses.2.macAddress", - "ipAddresses.2.type", - "ipAddresses.2.operationalStatus", - "ipAddresses.3.ipAddress", - "ipAddresses.3.macAddress", - "ipAddresses.3.type", - "ipAddresses.3.operationalStatus", - "vmMetadata.vmId", - "vmMetadata.cloudProvider", - "vmMetadata.resourceId", - "vmMetadata.subscriptionId", - "@odata.context", - "healthStatus[Expanded].rawState", - "exposureLevel[Expanded].rawState" - ], - "hiddenColumns": [] - } - } - } - } - } - ], - "version": 59, - "columns": 4 - } -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/cockpit.dash.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/cockpit.dash.json deleted file mode 100644 index d7a6297..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/defaultContent/cockpit.dash.json +++ /dev/null @@ -1,494 +0,0 @@ -{ - "name": "Cockpit", - "schemaVersion": "1.5", - "dashboard": { - "_type": "layout/grid", - "contents": [ - { - "static": false, - "w": 2, - "moved": false, - "h": 2, - "x": 0, - "y": 0, - "i": "c10e229a-9e67-41f0-ba01-83ee1e33e7b2", - "z": 0, - "config": { - "dataStream": { - "name": "deviceSecureStore", - "id": "{{dataStreams.deviceSecureStore}}", - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Device Secure Score", - "visualisation": { - "type": "data-stream-scalar", - "config": { - "data-stream-scalar": { - "value": "score_percentage", - "comparisonColumn": "none" - } - } - } - } - }, - { - "static": false, - "w": 2, - "moved": false, - "h": 2, - "x": 2, - "y": 0, - "i": "ef878c08-56ff-4b33-b499-8809b0bbc73a", - "z": 0, - "config": { - "timeframe": "none", - "dataStream": { - "name": "exposureScore", - "id": "{{dataStreams.exposureScore}}", - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "monitorOld": { - "tileRollsUp": true, - "monitorType": "threshold", - "condition": { - "columns": [ - "score" - ], - "logic": { - "if": [ - { - ">": [ - { - "var": "top" - }, - 70 - ] - }, - "error", - { - ">": [ - { - "var": "top" - }, - 30 - ] - }, - "warning" - ] - } - }, - "_type": "simple", - "column": "score", - "aggregation": "top", - "groupBy": "__group_by_none__", - "frequency": 15 - }, - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Device Exposure Score", - "visualisation": { - "type": "data-stream-gauge", - "config": { - "data-stream-gauge": { - "value": { - "type": "mean", - "columns": [ - "score" - ] - } - } - } - } - } - }, - { - "static": false, - "w": 1, - "moved": false, - "h": 3, - "x": 0, - "y": 2, - "i": "1740a4de-4864-498e-a3e0-747a5d8ffa11", - "z": 0, - "config": { - "dataStream": { - "name": "advancedHuntingQuery", - "filter": { - "multiOperation": "or", - "filters": [ - { - "column": "ActionType", - "operation": "equals", - "value": "AntivirusDetection" - }, - { - "column": "ActionType", - "operation": "equals", - "value": "AntivirusDetectionCancelled" - }, - { - "column": "ActionType", - "operation": "equals", - "value": "AntivirusMalwareActionFailed" - } - ] - }, - "dataSourceConfig": { - "query": "DeviceEvents\n| project Timestamp, DeviceName, ActionType\n| where Timestamp >= datetime({{{{raw}}}}{{timeframe.start}}) and Timestamp <= datetime({{timeframe.end}}{{{{/raw}}}})" - }, - "id": "{{dataStreams.advancedHuntingQuery}}", - "group": { - "by": [], - "aggregate": [] - }, - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "monitorOld": { - "tileRollsUp": true, - "monitorType": "threshold", - "condition": { - "columns": [], - "logic": { - "if": [ - { - ">": [ - { - "var": "count" - }, - 0 - ] - }, - "error" - ] - } - }, - "_type": "simple", - "aggregation": "count", - "groupBy": "__group_by_none__", - "frequency": 15 - }, - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Malware & Antivirus Detected", - "visualisation": { - "type": "data-stream-scalar", - "config": { - "data-stream-scalar": { - "value": { - "type": "count" - }, - "comparisonColumn": "none" - } - } - } - } - }, - { - "static": false, - "w": 1, - "moved": false, - "h": 3, - "x": 1, - "y": 2, - "i": "f5de789a-8f5e-4a36-82b6-f6a2fc2e0ba9", - "z": 0, - "config": { - "dataStream": { - "name": "advancedHuntingQuery", - "filter": { - "multiOperation": "or", - "filters": [ - { - "column": "ActionType", - "operation": "equals", - "value": "UserAccountCreated" - }, - { - "column": "ActionType", - "operation": "equals", - "value": "ScheduledTaskCreated" - }, - { - "column": "ActionType", - "operation": "equals", - "value": "ScheduledTaskDeleted" - }, - { - "column": "ActionType", - "operation": "equals", - "value": "UserAccountModified" - }, - { - "column": "ActionType", - "operation": "equals", - "value": "UserAccountAddedToLocalGroup" - } - ] - }, - "dataSourceConfig": { - "query": "DeviceEvents\n| project Timestamp, DeviceName, ActionType\n| where Timestamp >= datetime({{{{raw}}}}{{timeframe.start}}) and Timestamp <= datetime({{timeframe.end}}{{{{/raw}}}})" - }, - "id": "{{dataStreams.advancedHuntingQuery}}", - "group": { - "by": [], - "aggregate": [] - }, - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "monitorOld": { - "tileRollsUp": true, - "monitorType": "threshold", - "condition": { - "columns": [], - "logic": { - "if": [ - { - ">": [ - { - "var": "count" - }, - 0 - ] - }, - "error" - ] - } - }, - "_type": "simple", - "aggregation": "count", - "groupBy": "__group_by_none__", - "frequency": 15 - }, - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Persistence & Privilege Escalation", - "visualisation": { - "type": "data-stream-scalar", - "config": { - "data-stream-scalar": { - "value": { - "type": "count" - }, - "comparisonColumn": "none" - } - } - } - } - }, - { - "static": false, - "w": 1, - "moved": false, - "h": 3, - "x": 2, - "y": 2, - "i": "76f4a20b-d428-479f-93ae-7899f2274b99", - "z": 0, - "config": { - "dataStream": { - "name": "advancedHuntingQuery", - "filter": { - "multiOperation": "or", - "filters": [ - { - "column": "ActionType", - "operation": "contains", - "value": "AppControl*" - } - ] - }, - "dataSourceConfig": { - "query": "DeviceEvents\n| project Timestamp, DeviceName, ActionType\n| where Timestamp >= datetime({{{{raw}}}}{{timeframe.start}}) and Timestamp <= datetime({{timeframe.end}}{{{{/raw}}}})" - }, - "id": "{{dataStreams.advancedHuntingQuery}}", - "group": { - "by": [], - "aggregate": [] - }, - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "monitorOld": { - "tileRollsUp": true, - "monitorType": "threshold", - "condition": { - "columns": [], - "logic": { - "if": [ - { - ">": [ - { - "var": "count" - }, - 0 - ] - }, - "error" - ] - } - }, - "_type": "simple", - "aggregation": "count", - "groupBy": "__group_by_none__", - "frequency": 15 - }, - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Application Control", - "visualisation": { - "type": "data-stream-scalar", - "config": { - "data-stream-scalar": { - "value": { - "type": "count" - }, - "comparisonColumn": "none" - } - } - } - } - }, - { - "static": false, - "w": 1, - "moved": false, - "h": 3, - "x": 3, - "y": 2, - "i": "b63f2258-84f3-4f2e-9ee5-701a7953eea3", - "z": 0, - "config": { - "dataStream": { - "name": "advancedHuntingQuery", - "filter": { - "multiOperation": "or", - "filters": [ - { - "column": "ActionType", - "operation": "equals", - "value": "ExploitGuardNetworkProtectionBlocked" - }, - { - "column": "ActionType", - "operation": "equals", - "value": "ExploitGuardNonMicrosoftSignedBlocked" - } - ] - }, - "dataSourceConfig": { - "query": "DeviceEvents\n| project Timestamp, DeviceName, ActionType\n| where Timestamp >= datetime({{{{raw}}}}{{timeframe.start}}) and Timestamp <= datetime({{timeframe.end}}{{{{/raw}}}})" - }, - "id": "{{dataStreams.advancedHuntingQuery}}", - "group": { - "by": [], - "aggregate": [] - }, - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "monitorOld": { - "tileRollsUp": true, - "monitorType": "threshold", - "condition": { - "columns": [], - "logic": { - "if": [ - { - ">": [ - { - "var": "count" - }, - 0 - ] - }, - "error" - ] - } - }, - "_type": "simple", - "aggregation": "count", - "groupBy": "__group_by_none__", - "frequency": 15 - }, - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Exploits", - "visualisation": { - "type": "data-stream-scalar", - "config": { - "data-stream-scalar": { - "value": { - "type": "count" - }, - "comparisonColumn": "none" - } - } - } - } - }, - { - "static": false, - "w": 4, - "moved": false, - "h": 2, - "x": 0, - "y": 5, - "i": "956930e3-37fa-49da-a015-7630a5d2d754", - "z": 0, - "config": { - "dataStream": { - "name": "advancedHuntingQuery", - "dataSourceConfig": { - "query": "DeviceEvents\n| project Timestamp, DeviceName, ActionType\n| where Timestamp >= datetime({{{{raw}}}}{{timeframe.start}}) and Timestamp <= datetime({{timeframe.end}}{{{{/raw}}}})" - }, - "id": "{{dataStreams.advancedHuntingQuery}}", - "group": { - "by": [], - "aggregate": [] - }, - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Events Timeline", - "visualisation": { - "type": "data-stream-line-graph", - "config": { - "data-stream-line-graph": { - "seriesColumn": "none", - "cumulative": false, - "xAxisColumn": "Timestamp", - "yAxisColumn": [ - "builtin_count_by_label" - ] - } - } - } - } - } - ], - "version": 99, - "columns": 4 - } -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/manifest.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/manifest.json deleted file mode 100644 index 34a749f..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/defaultContent/manifest.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "items": [ - { - "name": "cockpit", - "type": "dashboard" - }, - { - "name": "Devices", - "type": "folder" - }, - { - "name": "recommendations", - "type": "dashboard" - }, - { - "name": "vulnerabilities", - "type": "dashboard" - } - ] -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/recommendations.dash.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/recommendations.dash.json deleted file mode 100644 index 22bcbbc..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/defaultContent/recommendations.dash.json +++ /dev/null @@ -1,442 +0,0 @@ -{ - "name": "Recommendations", - "schemaVersion": "1.5", - "dashboard": { - "_type": "layout/grid", - "contents": [ - { - "static": false, - "w": 1, - "moved": false, - "h": 2, - "x": 0, - "y": 0, - "i": "530fbd65-3d58-407a-951e-7569b1222ab5", - "z": 0, - "config": { - "timeframe": "none", - "dataStream": { - "name": "listRecommendations", - "filter": { - "multiOperation": "and", - "filters": [ - { - "column": "status", - "operation": "equals", - "value": "Active" - } - ] - }, - "id": "{{dataStreams.listRecommendations}}", - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Active", - "visualisation": { - "type": "data-stream-scalar", - "config": { - "data-stream-scalar": { - "value": { - "type": "count" - }, - "comparisonColumn": "none" - } - } - } - } - }, - { - "static": false, - "w": 1, - "moved": false, - "h": 2, - "x": 1, - "y": 0, - "i": "2b047798-81f8-4a32-8b5d-e350bb41aaf8", - "z": 0, - "config": { - "timeframe": "none", - "dataStream": { - "name": "listRecommendations", - "filter": { - "multiOperation": "and", - "filters": [ - { - "column": "status", - "operation": "equals", - "value": "Active" - } - ] - }, - "id": "{{dataStreams.listRecommendations}}", - "group": { - "by": [ - [ - "remediationType", - "uniqueValues" - ] - ], - "aggregate": [ - { - "type": "count" - } - ] - }, - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Remediation Type", - "visualisation": { - "type": "data-stream-donut-chart", - "config": { - "data-stream-donut-chart": { - "valueColumn": "count", - "hideCenterValue": false, - "showValuesAsPercentage": false, - "legendPosition": "right", - "legendMode": "table", - "labelColumn": "remediationType_uniqueValues" - } - } - } - } - }, - { - "static": false, - "w": 1, - "moved": false, - "h": 2, - "x": 2, - "y": 0, - "i": "5e08dc7b-d981-4abc-8051-6f389b745b8e", - "z": 0, - "config": { - "timeframe": "none", - "dataStream": { - "name": "listRecommendations", - "filter": { - "multiOperation": "and", - "filters": [ - { - "column": "status", - "operation": "equals", - "value": "Active" - } - ] - }, - "id": "{{dataStreams.listRecommendations}}", - "group": { - "by": [ - [ - "recommendationCategory", - "uniqueValues" - ] - ], - "aggregate": [ - { - "type": "count" - } - ] - }, - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Category", - "visualisation": { - "type": "data-stream-donut-chart", - "config": { - "data-stream-donut-chart": { - "valueColumn": "count", - "hideCenterValue": false, - "showValuesAsPercentage": false, - "legendPosition": "right", - "legendMode": "table", - "labelColumn": "recommendationCategory_uniqueValues" - } - } - } - } - }, - { - "static": false, - "w": 1, - "moved": false, - "h": 2, - "x": 3, - "y": 0, - "i": "2ba85224-a580-4164-bafa-b727fc931fe8", - "z": 0, - "config": { - "timeframe": "none", - "dataStream": { - "dataSourceConfig": { - "version": "2.0", - "tables": [ - { - "config": { - "timeframe": "none", - "activePluginConfigIds": [ - "{{configId}}" - ], - "dataStream": { - "name": "listRecommendations", - "filter": { - "multiOperation": "and", - "filters": [ - { - "column": "status", - "operation": "equals", - "value": "Active" - } - ] - }, - "metadata": [ - { - "shape": [ - "number", - { - "decimalPlaces": 0 - } - ], - "name": "severityScore_uniqueValues" - }, - { - "pattern": ".*" - } - ], - "id": "{{dataStreams.listRecommendations}}", - "group": { - "by": [ - [ - "severityScore", - "uniqueValues" - ] - ], - "aggregate": [ - { - "type": "count" - } - ] - }, - "pluginConfigId": "{{configId}}" - } - }, - "tableName": "dataset1" - } - ], - "sql": "WITH \"scores\" AS (\n SELECT 0 AS \"severityScore_uniqueValues\"\n UNION ALL SELECT 1\n UNION ALL SELECT 2\n UNION ALL SELECT 3\n UNION ALL SELECT 4\n UNION ALL SELECT 5\n UNION ALL SELECT 6\n UNION ALL SELECT 7\n UNION ALL SELECT 8\n UNION ALL SELECT 9\n)\nSELECT\n \"scores\".\"severityScore_uniqueValues\",\n COALESCE(\"dataset1\".\"count\", 0) AS \"count\"\nFROM \"scores\"\nLEFT JOIN \"dataset1\" ON \"scores\".\"severityScore_uniqueValues\" = \"dataset1\".\"severityScore_uniqueValues\"" - }, - "id": "datastream-sql" - }, - "scope": { - "query": "g.V().has('id', within(ids_OhlTXsVd3W6ErLLqvWW8))", - "bindings": { - "ids_OhlTXsVd3W6ErLLqvWW8": [ - "node-1dwkxV4HX7rWIiV3UddbjAZxFztYmHV1NQ8t1-TPvNIMMPMu4LhSro2Rk7" - ] - }, - "queryDetail": { - "ids": [ - "node-1dwkxV4HX7rWIiV3UddbjAZxFztYmHV1NQ8t1-TPvNIMMPMu4LhSro2Rk7" - ] - } - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Severity Score", - "visualisation": { - "type": "data-stream-bar-chart", - "config": { - "data-stream-bar-chart": { - "xAxisGroup": "none", - "showLegend": false, - "range": { - "type": "auto" - }, - "showGrid": true, - "grouping": false, - "displayMode": "actual", - "xAxisData": "severityScore_uniqueValues", - "showTotals": false, - "yAxisLabel": "", - "horizontalLayout": "vertical", - "showValue": false, - "yAxisData": [ - "count" - ], - "showYAxisLabel": true, - "xAxisLabel": "", - "legendPosition": "bottom", - "showXAxisLabel": true - } - } - } - } - }, - { - "static": false, - "w": 4, - "moved": false, - "h": 4, - "x": 0, - "y": 2, - "i": "193720b0-9e92-4782-b1ff-70280e2bade0", - "z": 0, - "config": { - "timeframe": "none", - "dataStream": { - "name": "listRecommendations", - "id": "{{dataStreams.listRecommendations}}", - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "List", - "visualisation": { - "type": "data-stream-table", - "config": { - "data-stream-table": { - "columnOrder": [ - "recommendationName", - "id", - "productName", - "weaknesses", - "vendor", - "recommendedVersion", - "recommendedVendor", - "recommendedProgram", - "recommendationCategory", - "subCategory", - "severityScore", - "publicExploit", - "activeAlert", - "remediationType", - "status", - "associatedThreats.85", - "associatedThreats.86", - "configScoreImpact", - "exposureImpact", - "totalMachineCount", - "exposedMachinesCount", - "nonProductivityImpactedAssets", - "relatedComponent", - "hasUnpatchableCve", - "tags.0", - "exposedCriticalDevices", - "tags.1" - ], - "hiddenColumns": [ - "associatedThreats.0", - "associatedThreats.1", - "associatedThreats.2", - "associatedThreats.3", - "associatedThreats.4", - "associatedThreats.5", - "associatedThreats.6", - "associatedThreats.7", - "associatedThreats.8", - "associatedThreats.9", - "associatedThreats.10", - "associatedThreats.11", - "associatedThreats.12", - "associatedThreats.13", - "associatedThreats.14", - "associatedThreats.15", - "associatedThreats.16", - "associatedThreats.17", - "associatedThreats.18", - "associatedThreats.19", - "associatedThreats.20", - "associatedThreats.21", - "associatedThreats.22", - "associatedThreats.23", - "associatedThreats.24", - "associatedThreats.25", - "associatedThreats.26", - "associatedThreats.27", - "associatedThreats.28", - "associatedThreats.29", - "associatedThreats.30", - "associatedThreats.31", - "associatedThreats.32", - "associatedThreats.33", - "associatedThreats.34", - "associatedThreats.35", - "associatedThreats.36", - "associatedThreats.37", - "associatedThreats.38", - "associatedThreats.39", - "associatedThreats.40", - "associatedThreats.41", - "associatedThreats.42", - "associatedThreats.43", - "associatedThreats.44", - "associatedThreats.45", - "associatedThreats.46", - "associatedThreats.47", - "associatedThreats.48", - "associatedThreats.49", - "associatedThreats.50", - "associatedThreats.51", - "associatedThreats.52", - "associatedThreats.53", - "associatedThreats.54", - "associatedThreats.55", - "associatedThreats.56", - "associatedThreats.57", - "associatedThreats.58", - "associatedThreats.59", - "associatedThreats.60", - "associatedThreats.61", - "associatedThreats.62", - "associatedThreats.63", - "associatedThreats.64", - "associatedThreats.65", - "associatedThreats.66", - "associatedThreats.67", - "associatedThreats.68", - "associatedThreats.69", - "associatedThreats.70", - "associatedThreats.71", - "associatedThreats.72", - "associatedThreats.73", - "associatedThreats.74", - "associatedThreats.75", - "associatedThreats.76", - "associatedThreats.77", - "associatedThreats.78", - "associatedThreats.79", - "associatedThreats.80", - "associatedThreats.81", - "associatedThreats.82", - "associatedThreats.83", - "associatedThreats.84" - ] - } - } - } - } - } - ], - "version": 44, - "columns": 4 - } -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/scopes.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/scopes.json deleted file mode 100644 index 0232f0f..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/defaultContent/scopes.json +++ /dev/null @@ -1,19 +0,0 @@ -[ - { - "name": "Defender Devices", - "matches": { - "sourceType": { - "type": "oneOf", - "values": [ - "defender-device" - ] - } - }, - "variable": { - "name": "Defender Device", - "type": "object", - "default": "none", - "allowMultipleSelection": false - } - } -] \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/defaultContent/vulnerabilities.dash.json b/plugins/Microsoft Defender (Preview)/v1/defaultContent/vulnerabilities.dash.json deleted file mode 100644 index 557dcac..0000000 --- a/plugins/Microsoft Defender (Preview)/v1/defaultContent/vulnerabilities.dash.json +++ /dev/null @@ -1,231 +0,0 @@ -{ - "name": "Vulnerabilities", - "schemaVersion": "1.5", - "dashboard": { - "_type": "layout/grid", - "contents": [ - { - "static": false, - "w": 1, - "moved": false, - "h": 3, - "x": 2, - "y": 0, - "i": "0c28021b-1047-423b-915f-ac975bf61c71", - "z": 0, - "config": { - "timeframe": "none", - "dataStream": { - "name": "listVulnerabilities", - "id": "{{dataStreams.listVulnerabilities}}", - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Product", - "visualisation": { - "type": "data-stream-donut-chart", - "config": { - "data-stream-donut-chart": { - "valueColumn": "builtin_count_by_label", - "hideCenterValue": false, - "showValuesAsPercentage": false, - "legendPosition": "right", - "legendMode": "table", - "labelColumn": "productName" - } - } - } - } - }, - { - "static": false, - "w": 1, - "moved": false, - "h": 3, - "x": 0, - "y": 0, - "i": "a66e092f-73d9-4fb2-9344-91ff1b072dcb", - "z": 0, - "config": { - "timeframe": "none", - "dataStream": { - "name": "listVulnerabilities", - "filter": { - "multiOperation": "and", - "filters": [ - { - "column": "severity", - "operation": "equals", - "value": "Critical" - } - ] - }, - "id": "{{dataStreams.listVulnerabilities}}", - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Critical", - "visualisation": { - "type": "data-stream-scalar", - "config": { - "data-stream-scalar": { - "value": { - "type": "count" - }, - "comparisonColumn": "none" - } - } - } - } - }, - { - "static": false, - "w": 1, - "moved": false, - "h": 3, - "x": 1, - "y": 0, - "i": "776252a0-8be0-4082-b239-ea5b4d9f789e", - "z": 0, - "config": { - "timeframe": "none", - "dataStream": { - "name": "listVulnerabilities", - "filter": { - "multiOperation": "and", - "filters": [ - { - "column": "severity", - "operation": "equals", - "value": "High" - } - ] - }, - "id": "{{dataStreams.listVulnerabilities}}", - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "High", - "visualisation": { - "type": "data-stream-scalar", - "config": { - "data-stream-scalar": { - "value": { - "type": "count" - }, - "comparisonColumn": "none" - } - } - } - } - }, - { - "static": false, - "w": 1, - "moved": false, - "h": 3, - "x": 3, - "y": 0, - "i": "07a49165-983f-465c-b1ae-d8990f1a6772", - "z": 0, - "config": { - "timeframe": "none", - "dataStream": { - "name": "listVulnerabilities", - "id": "{{dataStreams.listVulnerabilities}}", - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "Severity", - "visualisation": { - "type": "data-stream-bar-chart", - "config": { - "data-stream-bar-chart": { - "xAxisGroup": "none", - "showLegend": false, - "range": { - "type": "auto" - }, - "showGrid": true, - "grouping": false, - "displayMode": "actual", - "xAxisData": "severity", - "showTotals": false, - "yAxisLabel": "", - "horizontalLayout": "vertical", - "showValue": false, - "yAxisData": [ - "builtin_count_by_label" - ], - "showYAxisLabel": true, - "xAxisLabel": "", - "legendPosition": "bottom", - "showXAxisLabel": true - } - } - } - } - }, - { - "static": false, - "w": 4, - "moved": false, - "h": 3, - "x": 0, - "y": 3, - "i": "3e302230-6ee0-46a0-9415-0a79381dda06", - "z": 0, - "config": { - "timeframe": "none", - "dataStream": { - "name": "listVulnerabilities", - "id": "{{dataStreams.listVulnerabilities}}", - "pluginConfigId": "{{configId}}" - }, - "_type": "tile/data-stream", - "description": "", - "activePluginConfigIds": [ - "{{configId}}" - ], - "title": "List", - "visualisation": { - "type": "data-stream-table", - "config": { - "data-stream-table": { - "columnOrder": [ - "cveId", - "severity", - "machineId", - "productName", - "productVendor", - "productVersion", - "fixingKbId", - "id" - ], - "hiddenColumns": [] - } - } - } - } - } - ], - "version": 44, - "columns": 4 - } -} \ No newline at end of file diff --git a/plugins/Microsoft Defender (Preview)/v1/icon.png b/plugins/Microsoft Defender (Preview)/v1/icon.png deleted file mode 100644 index a34e4d4285d6a0653f947dbba6c6bc2d8a9988c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67410 zcmXuK2UHW?^FBUzcT-6qgx;4bO^H|lMOcc0ii(PYf*M~NzM{kis0bTGK}86@DyS&2 zf)(u8aIsi)6aC1y-7_BQhra2a`dA^}esVN8Z(7u_NE^+O)&y`OhS-07n3>HQw)y&Ci$ zPxZmKyL|8Ky&viQ?{)QhtnYJQ@9|LYf2+&&q29B;tKaP|=Lh;ex4Zh)b~)E~dEU{x z-0dRkx_aN}a=6>&aii1aW|!@qF7jrV^{p0^ry!MYYS8Kfb zm+`8vk}R#1{v^rxW|aO#vb{u-~&$J11hlrN3i|}Q2#xs-;RQLymrh_Ze!-qYXRp`Q zJ$>=2>Fv9AkEDff0TJ(qhlj+ZJ#Tq_f8D`o%Qdf;#NYdOO{+YFG!7qJe)`(5XS^$G z`dk~VO&k5ug`cIAOh5NxVb|C}w}%^yJW>78X=-)TEL=0$bi(8QM;`zCsW7F(^`G$N zh1IehcV~Y))NxKzk~(O|$2r%FUp;ul1**&aAb)3Vs=*qR&;WxKb$FG-U}k;`-5#Iq}CwzBVzO3GS=;(_YAi9h=8h#d$P-OM88BzDc6V z>HgUg=riWo>Vh%ZV{hF=-a%-1Y~}uv{bVQ~VtY5e+irYd5oVv~k#$_w-|FFy4H8(l zsbI`Mlh9!~c76X6!`q=suHzs+^eQTFE1f?k-+DqYa^3QU)AXjz%5AIL9}-Hm%=GW0 zBJJEX_Zs5Ab+nxoXG%03B-mQ5JiWJpu-)X39*RZ%(u<>RG(Cd)=;pAd5>t`T|WZsV0KSn5@<)`=|i1e<$bI&1!i|h+^kLEP|GVKU*Bdu11r07*4bi|4H zmHGV&9;afH8&~KtU(p^-(%MF zxv~&?$iFft;ul?uX47DYy#66@tPb;$O@^v5PJC_ z-wt6TliC+?eE9jT1&4nfo_Hv=vp25zuYBd`Tk~Hr?=4j6$5Q?7&bNuTrYqt+k0+Ha zIy7@w;qKvkqn3@ZcFm7?y7=q6b(Q@IX?L#II$uBU-j(k{2YXN17d(XOcc*Y|!NUy? z8=DuDJng?@*2FOv%f{fg!B5)T+zacT4GNSl_BWhWX<(7?4z*09DP=izkjmHSPZU2_Tt%u7IK{A@e^a=z}YCB5Fmzr#0OR{OfasDbApuy|ulSV-!U z#|YBXiEh=*XV-%#s;+#JUE3Dh(AGcWE@Kx%)xLG_6iu;hF%V$?U(60@iG~WJaWtMIJ@Q&-3^pg)}oSP&6?n&~?RWC*v5cmx{#LrdnR<%&R?wL-9Mm^}?z4wCc zYsJiUP2mkinZKt{1T_lNZ@Sq+)jL{t#=qsk{>#i#U7YI50gsHj?jVn!7IXsIAmm%U zg@X>*QIeCX>e$5l$8gTP=H8m^5^y;jlIu79f%I_TIb}e=1)53LcEY`;0i3_>clP_0IL&oUX%YlO8 z*B0nd3Nv?lscubsTMTtHt0ZH;d&blIF56BLm2GCxZzZB4?9hwSlFau~_m)-dy{fP2 zI*RB7PQZ|;>aUg&PJCK_kC{4=*~V%!y{;x?q6}Lvt@@EX%7I@yLG|#EY1sFrhVcX( z9WPLi>?ga3wUgu~=1BUMsVMBU9|NQOQtLtu^pmio{P2)a^N1w0QcM4?pUpvO#hbjIMolvux`0X@glW zcy5*DSTU|;KFtdJb>5&l>PO1oZDX z+1?h*%w`e+uZF%{Y}|YwVy3N1i$#OYBu%SL^=tKQ4Tl}VwY=eTu|D4{40h%O*bi-4 zZt%(!@;0HCv7D1jMf~BV?Kw|_`7f0SY>2CZ1U~wu4ZO23_{-7=`zg?Vo_l{XI%43T z@y21dL%Th(ksj%&aSJqBT(ZGE<8Q-?`CO`Fp2WzL^d(Fd?R*`~#l+DQn3$;yhaZ>y zaeDqp)Or2#5L2d{%M7=pU)^ISnAJO@={9-7xZeZQ(feQ@1Mv2H7_@{*^r9{i8MO>1U14Z{RBKjW zO{@A_XpeneFB$jaNEqevCR%0uuAvt4J6kdTAGVau3P}g{YPQuPli4qVenecN%d-{_ zQ_YysWIS!!e~`xq>+Q-bHd#vr{u5uJFje2UGxV~wewX`R_^#s09^mpsv-&fRx)(-# z`YtAHZ{hnlWmk+`yyVjT_h0f*UwQC>h!DE>%07j7het& z%Ra-@r(o%U8nz3YTl#9w%rUy#<@4ek7B^y@LHQxfH_P^j&P?+gs3tG!Kjq>3&!0W>5mU@3vq4^FCb=XuDW{wEZ;cTogzyfxPgxR99SM_VKfPl6yYze2 zt%tpU^|0O*S&nBW&9BG!-)b_Qu+Il+$uQNPtWpPfQV~*xrMPNtjb%N=%hdm;ZZpao zj4Lji)sIDmMbkrO5_^qm7Q6W6k!9bIk+O6SJTIr;4T&VN{E>e`y7mYY&tX}#-%BEZ zpV5dcAEVkb`lx^}T<)s5EA|T+&B@5e9|R#TM9M%iT1y zxf#-Gr-vs@XM8W!JqF7TTpnRo|Jbo1g_mCMseWg~nP;lnF0b>oJo;m?8B=QnOJk^D zj%_k(kW4@a%p^`mq+gBwtW~8&aJoux1>0t>-DQJ*)E)`3tkDzNRi?TCUXMO$WpoOW z-E5&%x~cCvT2|1Kj1>P$)8wTdRWo3Su?p0^QO%{p`{+hH{2$N{Ho7#_P1VwZWekG6 z^LYIN&eb;Zn_f40n1BtkNWQ=atL0dyeY43o_jFOSfzR%vcNec!sHfhY)H*Xq;-hk^XIV`pWCravFl*uPH&|CM? zt&WzS%@CI-}E@z==UZ)J5GOUS4MLJOwPgOvy-Bou{VgY#s9r=W52`{-;60I$X%>2Y6@Nn z)3zU(5l-#JoUm;@8f|#lx?)E!cX0Nl4Pz-EqQ5`4%xV*J8e5k+!AlL5!>P-TCP>bL7jQs81cE`fKn??3a)d5X|d-2kCV%0&Bh|dAXThf+dGg+rzYzgEHaW+^URk zW($p&1~0HXLZ9ZGoQ7SBSJKj=>A7Z-tclFu3va`yooie_yb2V_tr$M4e{P>0MA%Hp zuIKDEN!xi-$eQcc3W;4m?VZWI?DV_mU;on-9}~=t=2ADjSRhKFs6omZ9;nbU?i?1n zrESe@xkObqef;9@&z}8VrhsAXP;wGvFCB|X^#*Bikg>!e>!z6`v{Wg;9vHX0AN48y zTi2(SmOK;#_1}ff8|WjfArf85YF-UW=#N*CkT|hs>Z?tCKD@ddG!615pr}nK?=$4> zgywWk_!{|b?0GLm$;}>=ePDzT^$`1$)Z5pRwH!5w{^LciRQU-Wm@F~A6Kh{q zRwg15wVWf;SgJ_%GVI3I!}K;U%|>5*Fpw^_9ew}adfWQ=lLy{_F~bdDid|Nhl;xrx zQ>Y&mKaE@*lWR-;K3-RbQITVE`7$LMQ?yE3PP5N24&69gfBEY#=JjopTmzUo4rMP9Xu_d+ zKfM{2yOT<4rcr1){kfm)CqCR@CbtiioHdZ|yjXZ>fMU+3UpGJsdFe#G5i%P=?qJUB z6*esAzRJ7&yM1kDAWv4ItV zEp;>C4D@)JEjRjmU-cdgQ@Y@F_WUr}F3g;G1OLRUwr-!N@j3C)P|1`IqCbk%w)9v- zxz?<51HC}%e|j?7g&rVNY&ob$5{6^)ttbOHPH!1OHZtEQZW2ZoD-pvbu0Z|fkhHe< zKNhZlIxC7zasjlXxTdx*8AA2qcdCX6s(FPKbZZ#H$>2AC9?JMCcT|L>>~wJ8apkrm z+T2SXhY7K{-2Iyz8!n6Ta6a*>%1d+M?a01+{+p4EF8CVBcN;V1V!Dq}&1eI6{$5L6 z{Qe-~;Zt%D%Jvt@Gfe$EO~Qj zS}pB70BN7?>DbYjyoxGjWe_r5*3R23{kD9c{%5B5SPuw zm@@LtMCw2o8}+ZOs^%nH_)2w%el?Kss)Lzqu@>1&f|*IoBpgZB1nQkcBDsoM>!^9> zRUad|II^R->;Nts%VT+hthNWN1lT8TXlpF9DF}ax`*&lMgE)Qms!KJuow=1JAdaET z*^D~Ki!E@wB$A(|l!NifO0m7I!*9gIInZm*!|5Y55=6R6SV9!a$)-4u()fG?7sKmy zAsTH5yNWYhG}B(%VJ_is670ifXAAj`w%8kSG{1^lA4dG@HoDR_eON?9AJE+kq!-%J z$9(CvgXpnC=zOD^fyBuP*e9ZT>`~gEW)TgKPJd!n??WUH-1>d8w$7YRwq$yN)KmTC z2AxY!*-V{N9?%PO4~INIszlUS?3XS}b9dsJ4^J-TXOOs# z>AqW?chky}pWwvWOwor}GPP#=XVHegXOQGF{4t@ftd}HEgNX;?C;=wy0O}+b>JIm= z&S}JU%+l`f>l~(k#?x+yh3iYft#J7*HUJ1DAU29RDWsU-hdX1Z2NNap5ue!j&#<5s zSXSl`TxKYs%vB_LlbNsraWV$Ley$A(eC~ribwfH>iPI?ktr;z_qap=VotK(}zMACP z_}@G2gp+$0am|~oQ8o#mg=Va9zM&OWfm+pUW|od%apSl$c;*9a3%cs1ZZ{7%rl$3K z^nIEYGXrS^coph7`};r|L`qZ?XvZl7)<*O`i>hK&4ZS? z_=Rs=YH?WQTTFUg?x|dYPn)w5yH&@yz(<{v3m-nV6EBC%1XmRGl2aef5lx`TXgsU! zE`*vsAw{J9{5p>=IjKAI>nAfD zng$Ex<9KqZ6Frb~ax$i*24!_0+sKh@SN;g28nWu4BnLEi4SGX$V6!QeI})zjLGyOH zc9x~hAqiPutyF7@qtSHk#9$(!&k94$-F|i!u(2+Qe#;DZAq-Hha(`ZqbOpOTsjp0AO+x#LL=ACD8u4;#vN zTd)TnjUBPpT?re?x$|hYX7go7&A5NWFHKb zhu}_PKiNug9_DWV%y!35AmM5ER>1YoFnTVW8$`S?Q;k-y#Je}2Iz%gs_xHzbCgV9g zR$YIX34?hu40f>j*|^dRi;d)j`&{0HE)@9_GvQau*afi8*1kWMb{TGA#kDy9uK^XD zqfrw{^E6c=brR?B5LRwhXxe}$&2k%N&x7QwW{!3M-T>+fO#gB+n)_p-UDj}=Llh^jGhOMr@-wegc7tjIbGx?jr5Zp zF|BWLRKM9nf?Rr(?a#zu*#)qu&d;sbncokY8K4nBoT`9SbO(4 z;=RQ?Bf|?k?eXzoG6gW@y;!DN=srs`Z=Y4Mf}eX>=_rKuCcJHvAL+DxeZ5G10@{6v z@kA?4QT10vA_%R8KJA41js48jOasce4lXP)W%jzVnuSnoY!NrC5rJ7zTiq|2e{jVk zxw890`6E#G>VdWFzQrTdW`vLL=0o(|_K^A&vRrz7HI%mo)+T1+n(8_jSSAf#3MTWQ zJsNpn&wZ4XnnPs9ojO8m{VP-8yZQR_JHekVoN~&sFKS9gIsz2`~!haC~j!H<|XUtsnr_(q+=kkeoVAg5ji+@3q%i=~?WA+%$ z6RCY^)nq6;!XDvDmrDKxi^&%;jGl0Ij18D_ed+Cadky3|m^zn`-8WFTg;gT-L)tt@ zIdp*s>|YA|N5Q(j#mH1CbYF?p!Zu7X*+|_TR(T2A=Bh}V$sIkOU;;(z+Q^^1`L1x+ zJLKMZLOa5l9^U)^evqh!%W2)ptUp|G6t&!!hW}ZpDsly*(;boJAo`cDzu~iM6E%dJf3siZ0O$%)?B5jf z)|E*<2!S)9FASXw{=HG;5jF;t)LZV7e z3g>QV^0tIrF^n@~W^h$PP0V1n4v(~4B_ON^Dh^|EeGQ5#oby@%7ODH%kmn79_DZWX z-KZh7Qwp1g-RWb!AuNEK&eT3-(KNg^? zC@&uTk8l)|4dk-*lBXO3+hCKnOGI9Er&FyV+n?_+v&@hQD}y@^jiBr+h=w!mtEi`f zm|@zGQPkEj>c=iTEtYhLlJ^c%7KRVmn);9UPY+|BF%Q-(67jL;z1hh2;_e>?7s{|I z4`r$i;P?2;L|5&=rycdA&q(aF!>W~Jw0%uH2Vy@%C@?Dq!1qv|qT=sRKI4GL@#HTt z#sg6+!W5T!G<4LR9|(^A^hmBGmdY?U3M0H#llW zFN32!yy!DhtV88NMB8|36SbSgugp7-jL;`oC!;sy&|wznf*e-3Xngjw)pca7;;|Jy zaxUOat1gsRb8=DIRj|et&!tqIxnmU_VjOoflrt2#L}Lw=T_xh5E^vO6KD?E zgKn%3{m_#=)-0N@B=EVS{PP^eBwSv2Rv}A=LuW`9fHGmAVa-J|meb588*7>#@8s^s z`Guf(WdNyO6(KJ`>un3cpE*6RY|2Lq(JD9X4Tq*Vk3%547O$EK@6V7|k}atLFykVO zz72oIQ#P&={>fyy9lg~J93Q~F6K7=f%>~Mm`weZ^?i#e^>BQ=6*&GuqJ&GknV>EJ=~_pXJ(?o&XRvHs@@2f z>_$|i1G3%J`QoozrrnYXly{z|c+T>>Tz;fu{Xykh(E-{Vb)M9Jv!mayke%`7L`*H`5l8+>&aI{AwgCTuvHMhY5D$en=1yWjN4J$m!iP%>Y zHe(M+=koO)xcdVf+HO4s4&5Z9rI67oW}-PRl1P~UlqL38BJLq@V5GCr@T7jx^UK-p&a6Gxq3xqWtL@QT!jFRmAU zTxffK{Yrs(lI5Db7Vp6SqOR966GfAqyBk zx^O{A(xrRz&4+fmr=$*vJ+`y@&}(AFwuB&E_n{GwG7kh1{V`GiPF&jY(i#t>%e7&8 z>G8O4hQUGbf^~^lYNunp1Ey3Dga{GT1)#vaNEg%xx;GdwrwH{>DD-305NMgic`8>_Onr$_Y$Cu11Pp@&n4h|5%$P+yP&>&sa&&Ed>3a1b?2 zB`W75#)Ta^ny>;FMFUUbk-PESTVVeRi^OQhrtD3Sum_J^WX6bhfKvxJ^#x-ys)!@n zMoHhNzE*kDE`w-y)ZB}<`Gz%Y!L)NA?jRwTO0dbjB;13&c$!*wnkQi5^-}r}M{*Oh zJW02&p(Ke-O!o&|vKa+F7HeKh=?($Y0UIZZG}lKUmrtBZSCA9fzm`~+te&LH+Q21v zpXVjf>}3!I?Sy8HE4(-br}se;V#cvq7m1~bRyD@G=tz6Us6`-wVT%PV9<+^saZwLL zA?hi3&INFq0rqy)W8ewW$xxytvn7b#3IoJUvR1paBs1ns@Q*IHgaLHoH3+KU zvg*Bz3!vwFK)f5YPNHfY>w}c;d`KP%M}bK;p+T~1DEvno8s{Fya{FU^%;;6bFX0*< zlOv!Ac;O4DKO!(o?8x1e~d|RafKdbdawd4YtFps1$Tix(MngLx}9&ifhOzom5IOM@}&?=u@8a_44Bg* z`Vt@IE3io~jRtWP-#}%Ch`v&B_kQ z(D1Y?vFKpBZa1pzjgwO-OkRRnH>~<m^r)B zR?OO2auy>!Teo9zoqW*kdSfMzDPjcF8OWxW&hLc+_^nqdG3*YYuVwzg<4k{h6%(3& zMy-I;?(kp^Q_kr>LcNkOdImyC8c$vb^w>*TKkONY-l*Y;SU%F6bvOgU=?vK31MeUX z1g>i{i^5bE%;^OXKY`WYt4K*I_VEqbnN|=_+ZmID1r8bk*D=lL-t;Id$Yi^*LQeWV zcXeqP$&b0)hjw;^*G=-9!3i9PyP}fMMUZe<)#ji~^2^?sim-tT{Ft>NZ13 zDYmhD`83lYn#Y?34&g|XFQVr+!nZ!S4^FDFO&tJN+riaT<42$uKbFS-n$%Lm_mGiHufD&bVgsn&=6Q^|yu>X0Uq@#IqVerL7t3avs=y zA+lYJx0RGsVp56iEFD z!`##n#5S2Ck;{Yzvnn?0@M_`o3_;6ZV@=4|Bv|kWYmga|2YHp(kUSb&Bv#rRm)q4G z6F^;=_&^ae3xe4ucY5?D=r54R8#3k`rqPN`RyPEX=4z&yf$ca{k`ak=n}|QA%&Ogl zdMpf|2;ng>#G?MHq&Y`faSg%)!TkQz8ub+qIy`ve4R+VH1L>gxX4!9;{eTU)4JJLQ zW|oczMGp<+#^C+an86RM>-%&Pl;-f|*D)5Bwo{ggb~UNj*=u8oMNHzLwq0*ZlTqtG zc#!Hz-CQUgEGDIxq6o=pj2lHt`u{YXypR)Qh7{AeCEX8K80CYJsxm`B-36y*tV;|M zEP2T&1L@z~oqZrJ!+}9|j8Uq-v1?h?n=6x8+3buU&?R7u!xWyP$WVR(TOOtM&I&W9 zf7{4fO^_DvMKA77=$hP#yX>2W)sKbvBQBcH{A}eGiS3DvNLxaHM=Hs0pMXUMS-LNy znxcXWApKi!+KR*65zz|_YR_<2j8?0&D&B+bMhE?1iHm^zQ4n)i?a&%>siSL7APn@z zir3=B#1bXDciWmFt`Kp#h`tdcTK0sF_P2`Ip_6BzmxNizs|u zg*0AbB~+ZmLqqCAn#V|u>!csOFsR0#+M>^hgHrs zW2Ok{^D*EosdvPts}VP%M86dzV^N6_J(c?|0cp41hJjyDQU@lN)`L2vjZTq z$;&e449YAI#MoN*O=bqBxCW;^;M*;%xkJ?K!%7-uk6H$0+<&Wafq-hBEut<@3xw0} z;f_0e8wW4gLA4`qE`PZBbUgg7 z&OGP=EJLKpTG~%HLgwpZ4 z%uSa(432gyD@_Hb-tdi&v$!SukE1wa%`_9~e^ZS_rV$GNfk5ViBbk*E1tFv#ZQsD_ z+6(EMU=xy^=gIdAga$Q=PrS9-|TfAmz#+Hnfi$2C)HL~}uCk1%Fj z5X0*tAU)cMTqIyNEC-u>D87kR#dGVo(PP;JD(>fh@7K#mUd1e9eIGAb3Wa;VHGZ-P zqHV6D@QpBg78K5g`zi7;bty5?x8cs>(a7vOwFM4`YjZOQch#(44Y~lKrgR?aoa#eY z3_!Uq=*}&0a%9!XuudzjIdcK>PvZWPv-s8wUBlS1fv}(fmmI)ZxtTsS)qM9*^;7OW zyTI(syz)$GzE~3=rv7kS_GMn{Uh))mo*34{_QkPq#}mRaxZX#ziTWz1)iAST7x%AUm-3In%uCRk6dx*=WiqYyD z+-eh0WP^MVw&{97mtkc%X}}UI(tsLgMO_uk8Enu9HNtrT!SuhWWZxtv!m}#^Qw)XK zi&y~uZqmF@Ib#MG?)yfq>wHNUsK$aoX`o+->&hD7&Or!w1!FNY1uRd~M-7$B#YrDs zj--<1g#2p{0ba&sRW_23#ZKk(d{Xr@84iSnMI(%Sgt84mfKl?nXwhOdo`ckqOS zk?_$ISXSsceTVlPxB(dn%Xs3b?v;o z(3winpHF>SX3f$qLjKT@y$wWh(2&9W^xqF`u+@^67Cgz1MkSfB8mQ;sUR>6)t4ZfZ zZFGj+zO>D_{|_h$ay+AE*;&=`?17q>_w4vn!@L$SEuG}|jHlKp-P(zsKO9c@(tL1= zF(5tqust7DSk36szKeLf4dqFzxtcYm^r*q$WW~B|wInXQkruyF%JB~!CrGVNP{&o2 z-t0%aOotb2NbH8)|3a6s%-DZ@HTszHjk;B_>md|_Da-o>^4WZ5$^bNkbwO9f|8?@*nP0F-t!rkQK@7kmw8K&CQMEs1a0PM<5$2p9i}-- z&=MIlz#p(VhWeEk_+*aqaw0Gh>g-5!pjh%4WOaYN<3KH`!eP0GE_j2Y4q z6)+3JucMa>In+jPx=?6ID02d=fAt^7VO=0{ohj240O@g<_WnvV1XGmRGy4s|$(sI* zwGY?aE~>WCEh=%YMv{==5s#dib7KEjWioS=?j|HXP#jk_6 z3c4%#ntnX+Uc_gj44Gn1YY8*{uQTOcb2wh|!y2wW85LfN|>f-y(R5p^?p)K2*kzxoc zx1eI!lAwM(#ybdxt5H-0{U~Uep=Q_+dV`G3ji|hjJc&5^h$&rkK7wxk#+S`!+B%9P zba|`rdI+$kcRi;ykLi-q`wL*9wAj8TCS??oxWckqC$ZeUY`Hb@iTn~jVYBkBD-;fc zoKvu0T=nQ!H|&=F?+u$V3C0Z~+QT&GU+RrXy|=B$kgQ3Eb+Od~YvySRy3>l~Zb7XR zsqsYnbj<;8`f~*R@sn}X@Zbk`=k$T6Qu;7|`2+AJ6IhDZ?5zA+(#Drn{26oGSVP*O zd%tI3xvU6PIt=cwgho?^>pU5M$txyoI6N)@-Y0(LxZvYhj#z%hm)_c+-U{?o14}Pu z8t%M;x4RORmWeIfd;jT}Q+P>$bxY|K2w%^davp!lGo~y3zyw<~tQt8KwL7zhWbTZD zXT*YtQEZXjJ*qtSYm<|5vVD!{O(R|4HK_Zrhy~<&cRJCS=}$b7HkT_cVJq?BRHiZU zX*pqXyKR?!tRLI2CAhjlQkzQT5)L(2r)w6@KMS-(yKu5{A9`uVliWp1 z;;B+W|Jj=JY_)N$b{c_{B{m98!LEV>Q$B&>qB#@n3QK{l+oLdF!IHa7p@`nYf^Z{M z9U;5%8c)0P`M>)DNhj-uUfjx0X7u@f5N2FI0h_jst z?5NJ^8Vw{FV7W{1Tt5BHpf;GeK3$W`C1)AhHWs9U?RC}~i&MVZ&^8lM(rv6^sTuR6 z&RDD@qkRo<5>>vUk{FlMEIDkRW5JZAz{^UZ{KgO{>;AZ!ei_C#+N=8qf%*G~mJzf| zq1bZhDdezz>3^^nZ#Zp4?zsG1co~T{g=ycr z&#_1U@Mqeh5%ZZegNH`*A#masBLO(7hePQ+o+3iZ{PugM?HbmD?6QTr+f8o$h%&r4(qWwD6>J4SGJ%AVYFD zv3x(FK1bhYY0={uMs${q3@O@o{W8A8w25_b$+`&|A6IZtpvXm1=58E_VwfYb)mD+? zE4Tgv|D%}dq+0!k8#VbQ-LX?d-}rFuy6_IJ+4CmdFFAfjJyp8DHHrmynxp!8{$)AlW zzuvF6r3-d&E2jgK?+E>@VC?Nf1LE?iG2-m3G<=FlJ_I0JU+D|_K<~kpThc+h-jn`P z2o1YX!)Bgr4_3_HcMhj21m2g${Cy9&30QO@Uae}NpKvdRiS`(578g&EeQW$Z7{ccXsPiy8hRvFKYyYZqx1Jqv zK)Zh#=*4j!nfK#c7Gu#C^c2qj^z<@r-mkn{5IZzbHx|OJ{WPYZI!9vB1Y;;>qHL*f zBnwA7T(z4&plG17#c3Y%Z501L*~f18E2dl33!IL?FdvfNdWT8r3mG%9NGljRhcQTE zMsD`g?3Lf&d|IF~MYNqCdgLf~l6+#zgM&7*H_Lf(Q=Zet?R&*cFE`Zbh>D5uYRfng zy|;6O0=K_uL__87lgKCa2w!6&4W@@q$Ny(3ytpr?HCdceLQNpXBzL_fB>D}%7ck|) zkv0lU77Z6o>z83>qLu`+*L>BEvtrBS>H7)8{PAZR-GSfD&zz0YUrT5^>;G+k5Zz)` ze`P@0irdSuX$M4fi!;TgKikMYn?TvV0df84F}9q_=~#~`j$*VG&XAl|C1pi4OamYd87nAQ4vLbH4( zq(q_O;V5^qu}Eo(*@bEwBi4#7`wo<=Q^$5jCNZDfW=`%t;Z7G^z_q8mdlv0c7;+_M zOdeNWg|&x~y|OB<$GQ|o$eMlYmicMcZ_P@#kvYmx+S6-A|ANCKytz>r#i<;QSI)4b zq&VfpQ?6xA))sur7CG%?Q_2+6zJ8jF=XBBSMqImM475a}7EdU?4^d%ik@Ao6OKTGd z7A{~SXX4fCPocJl-1JKVAKJ(OhR=fG)~NH99Soj`!cPIWk2;mWYJNhlp#Cy9FD{mx zi%)HtHW^$vf*z-h@S`IQ*#KKA{-a_>5Sh0sl9HL+YE(B;Z#HEyuB)F1Hpe05B_T6l z@AC@0J^ZWQ5Yctqgg*0`gvLjZW&sKRA+1d#RBL$*%fJ4&T8jA9tDl<~4(CNIsCH_& zcibfV#Kn`QSu-~_L(l*tjR6h=_o0@0XgLbhqjhuGX4mL!zxp&HZ1^(#=(qItLVGms zv&E+pC~ZKBFhhnbX7*dbc_}yzqNf{FU3`B^`TZzc?N#~7mrU&3E3TRx{9w*o$ap*C zf5-6^oC091mvPm$)7N7SJXlL5;z5_3wJqLV)(NXK_MY&02}hS9jT?vIawr#}yhtdI z#i($etkto88rD|vt!yCdc6=hQ7VGlB-)laT+P-Tff@f!#%aBp#z>E^o;z=;LKb+5k z<9)+TVZN~WuB4f(41PZwYz;@Yk$1$p!@7`9Pc`jr=f`ohHxroOX{aTUCwYupuBJ1j z{#BDlyyXUNd`8!quls8(zw{`%6E?cT#wD2Ur5OxQL2QfbN-*D>-+GU^x4A}~=6(w8 zN#ij=p)5aVo0OXUE8#qw6*j`|Eg!?!V>Ya4na_mn5?5s!$kW@%u5AmXv@L8bhZH+* zeJ1L1(l&0sVx!2MoW%cQ%z8^WN-(l#^83@?oE1>%JG{qWi4|WL3aAw}vfW9{oW70? z5$(w3wc%AOuvw16e?!UvNZA0Ek0tC0tX1Yb(C->~i|ai?{#QsKMrPL1uOq=gvx==t zhO`5` z>ndul`N5xS=eA%HJz{!|fQ;=x&;xqo&F9#9KP_$FT>PGZF4{Bl@w8Qgb24^0pg-5n z?_9u4vjfRoymFTb70#&~$^PJ~DOOD6Q%x2XA#Q2b7Bu@c(LO_2bT2?ca=Husl98(YG&;~E@x z4~2_8Un%%zRTX@{8cn+uh~+g4_f|alXhm-lNFIakY9JjP$u@b77<)TrCyR1k#f}nU z&_5aWLe&zeo)#<(8a8xl|m898?79Z)cx-t7PQ?}k~cajGZ zJO8zT^)h(llf~cJZRRj%*HmTesU?#j&V{3y;Q--T@XZRZ^x}|{30eC9OJdy|4SP}f zi!Uz8q$lPPi&sID~pzYiM2rlV%&N<&Ls-Jxyo25Nqq@&8i)#FC&2T>XQ+!)Wtm z%?0HFqz!3-lx!643CFE2aOx`@Wl7kX>%Va|WIZ1!4<#={^Hc6iKZ{o(^EleMmSLeq8n&&f^rj&`gqCkRB~V-z6n)!irfNW@SC1K!P$&nSHsW_H^s=d z?+l`@MbMvP$#M}HoP}=sec7!o;K!}x7DIo&yugsWAt|5g707ls6CN07vj>886?Rs2 z2@CiX8~a_Z_}RE6)Ai>627DZvf1kb3gx&@4*nAL#6~6n<+=oq__Sqwk#FD)%;Zsdb z^y}?ya}6~XLGY9vhWs^@kGE%z3h5!9bYMSLeGlS!|H`n|LoO2ij|Gg2S1j3bdCB*q zUn)+pofvNxbaCx!W7zJ6RYo9LBFcPac$+zLKl~wAgpHc2tToMF-sYp6^8+Gv@dIcd zTfFiRAumAcWK1Yh+DmE+H2Ul$#)JdAnrxXBdhvj1%JPqUQinl0)|~`ZyBw$(Of~jQ zq%|cqpy~{$fv|tUVD=lbnkh@!Im|nxty=`uxk6^DH2PTY zw_N+tU0&M~R}lQJKCEN^Y|gob%a4E02;eZh<1*8!k2iwD?JrH>i^$dzdhRjr-nXJM7 z++vR0@~QD%#K}S`7X|yfQb+Y-lkd05VkUykf{$^{Vvin}cR6+bq$T{ZgymISUX;c+ zYn5OYzNHEa0ST5x^?`>F`E{6(iD-w;d%iTAa@yGT*9~A#ral&3}xl-S6)%o5ISjQr>qYJ+K)QIKK<)w}TK_aSOE{mR%sOk0+oC9W#T_fjppa@(o7 z7t-8(HhejLqG3)MN?(96EFWxnj5QylcN5DKHBUb6xkH)Cs5YDzb<`C_(HF^RkLmTM#JhqHGffVJwV7~86{jWuX=zWQ>QA+=WKQ1Wz z{95V-H|3~X6?R~FE){MCXZeSJCZEQ8!T)3F%j2Q?zyHs@cXq>!oh&m%Q9>$IG9yH# zs1%hl?J7l^l$fiHN>M6WK2d33XjiGZN>M4=wQ)sJDPtduncvI%`}6SU+~u{M^E}V< zJm)s_o#n_rNy6Z3yO6Rbq`^%75$bQtc1GWGB9|UkP>dlbFlXDcd2b=YkR99SJ{DFV z#bPVW$Z@Rx{|Ds=*UiS>>v|oR5wk$}`l|G-R^$e)cwtk`!~u|XPoJF;N}xbH#9C@# zC5`zgOW}sPDRVMshrJd3#<$qtB4%8bzCpy)*RNH1P!+3BoiHHxUoO^R+*?JvbbnQx zTG0#Q$b&`g%AX+cr{{gvv7Gve{@ADxWM$`%XIlICDt=rw2ivLear7W+*#VRsu_Wi&Lqd!Z)}El-xl1Yz9|QIG@Yf^2 zgsVrMv9*HW-}g=uDvD25*rBik{d^Q8?1r`6M%QFXub)_0k`ERNJUNL$?WsLe52=|{ zqk6255iCKgePIBi#poL{Xu620CUB*#`tOA(yK9`p%ziAH7bdPsUdEdgfq3-u9IplK zhu9PwJ?aupew&G#k)%f7(?8a;7S+~3_!b8}GS9P_W6~A_ z$h`9AQB?uBVDRL5)7Gv7z7=J7)q5hLit>ktt^}QbiBRei{U@bafRb&>Z+;Bv84uS3 z1U>sJL33k1M)cFJFBCdOL;kaDDDSd=9MqtdeGO^rIT06<|E4b_a&bg8amo5RTU~Ou z>ZFA={EFPA;M0aTz~l%P8?&L`c%Y2Q&VjkXjC~R==1@S~sHTM4?bbe}OnO(8JQh-$ zFje9((rzI9yTYSvXTuXl5M#wJBTb9&yeGWs7-$hY05&wHym~kZ@he#1oZ;lL`FK?( z!_^7v6UWM1CzdI^bjf|SDQn%yR70x6m?->ZPsZ3`L5$UN|9vZ|hSZv^lZo63>dKgl zaNWhH>AxS0bA-o+1sylOux?8>j|7&0-nH;!5bUw?#G;s#hZ{`dWOG7SL@xlpU-~z> z>PlT5YSg~0$`P9NMEGJBWfg;MnZa@m!mI`<+cV9`yOtz6sy!{fIZwc;mko}~$eKVb z{3Z@vYF0tklgYWdMAyljT1+@mk2FozBefOPeH{}vELl!yjeK0jb6#9;bZDGuyZ=~h z^1-N7{@!2Nr*tOpz(``iU zjYEv~sl{u}fLgZ!i+^H{LZ6T`-Z1kr7Ts*d$B!+b~2Oh1nKt-gJh;l7)aOo+hR<-Do;W?&35-C!vBntrTTq9gSe zLtZE^cTzm;5B%>EGlT;hy;ygSP-ZM|v-h*WhF-S^=fG>saFb}oVpRb#`XJ`F9%T>J zD|w{kI$Zt0qVF+i$z_O^bE7%QT>-aDrDsHm*Lv14h08B*Rm{vj$*0326YcR-ZuUxY zXe}063+nyM*jw%pGZC)dCsMygPvbI@JIt%hKbuk>wK}=G!?1S)$5wfFPjwqkgbb|I zmF5irdGrwSju%$4oIb?~ADis4@%KiFAf z+G9a_Cv%L+@+naQaJh?C&xABU>Vu21Fg+ghwFcST`n4PV9NS_%BevsJ7rjn3iN;G= z(w~FYXCRT~bV7M}ENP@C3F?Wf;TF6rY z2OE*>&8q%7@jQ4xV}?`;Hm&8rnLU+mWH$K?^8<1FB}{7KLpLzQJBSQhys$bHvk0Pt zJ56O1b{SE1ylkD^T+x!noZMO1Y;cLvjU6o{Yfv`v)-$-e2b`nPN)Fdm|N7Nv_sobI z9K04Y>Nstc`pjI`J*Dx66FJ#js)zCz8MaszJzUjO@ykNh8+91%L0UyBk|j-CdiJlqm4}GBc=TzeGbwZSCR@MA4i6=ilU8Dj^ZgnO%pOz6Tmo)0g}Xw4{dRP`YZrebFfw%kmggkJw$z^#Es^j^BZ%Lpo-2c~PUMhR{Up`1LsHv< zYpiOk+0YmUIc!Ig!=opx)S(AgQC&@)b9*)p`d z_l_tS!KZU3?O+N&MQy~|O9bYYNAbYnpj3O2bcHdctw3hmih7?7aa#$8$X&1OLsDS=Bpb5fD-@Mrsw*S@Gsf-%s10M`EfS%+ zKc$W-1q;-5JXxh_ab?zW?5pR*9;Ptu?w2WG4%qb|!h^4Dw;j_Or3z>|#d#j|U}(8iQmGxYlguEF{=6k*Wrp zO5yy0@y1(>94w{}8qoji50RXz->j+&`beDH!z+|AG!Z`|N9c%mw2x)QQby87kLJis z^DW!`-U&Y4VP-rcI9d~onz|Qk88QoGj1Qfm6fK1%3Ij-)>BUHiH<37HsIs8!)*J%h() z+igipdZVAq7k7%EqKFa-zgmL60LJ3vJUKL9-ZKqu`%4c~Dwelpud$TD4B0&ov%__H zVq6<^U{C^8;bkZQ#~onHgo_b;o_M+`c?Xr88<6w#sj(C6T@4$v47H(ZcX8@8Ec9AO z^WD~%-0AZ{^ov>P=$Ok^N8gCS#Onl4S=1RLtf-i%(ubx=5N8jjQ>ooZ1}S)2i}b%{ zGo|;j_*uZVqs7tK!5NB;8dWW)k}LhSisOhE4iHEu1@$|jN{{-;LOgI+C^)vK=!w^O zgu$0%x*yZ@=D~Kk6KVQR@%f7k)xsbd=sYM`$(5-M3NskhDe_kqLL=!CQDU5LcM4wC z8vv`fRO5F(NtU6`7rhS+M21Q)(sVi=dk8HH_W$3}AMWdf;XblHjqVh-%&#^@udHMV zfrC!X*4XJibLIgy`w-YVk$&`etZJ7)=37dC5C&>yn@}giVde@4vb6QqZCJg%tj*T~ zf*10||9o6H0l9UU%(goDu#VW?pJjgMloi$rCx+kSI6M@@{?dW{PmxlaC6u?|l@U}>?q2yB z(Cfy-dyUQRf~})#;k237qHHWxKU;2dQIFp78T^nEbRbsfj8*->BAN{1#~qLd5tqAp z{73VXeU@r4>99Ed?VyL5e8Ck6?OdRL9J{Pf`6H#CE8T~-V{Vu%BR)(P0y{W*w+$c8 z9@GiHyJS-jAj~-g?RON6O@V@9{H(vYStNn`#?q2|a4|guJVIda2=;>ewa1o3qH1v? zJ!qBe)pReXw=VNR=X)PRh6?lc@nxCZq7!<_^@vbjsqw#yZ`&rF+gI)(UcG#D!sm6d zv*5&XUGksLM=t#FC#uTqI#-eYN%Y~lJHJ)Xx`n~>GXr%ix^4w!nDsW=uy+=(6P-Z0kyNWXn zD>~rZe}b=qIB^-?SEJoZN%D0$uzo0cJt=$JZ zuOZ@!K)RcQM&z0$Jw&28&DTwBF{jt58YYOjp4l#>xztB;=;Y5F5dW1#3Em8V{hOg_ zH&idcZVFuu9aI6sMPyCv2-j13_$F;=5s!X$i;93%?Wdc*;PK@mjbjlvJRU!f6&8sh z?!T$n7!Qtrj!=J2_GNmAeV4+%8NeQs>=(ITZZ4f5c^;sPMz0JSO$sx*m$d&d!K(H{ zQx6fJg1PErG4o^2CMzqp5L*ifgkBq1jGk+#OoW;7R@U3wYkQ^*S`E|rSYCM!c3YR)2mPn!1rg}TcFm&h zs#IYHPbF)J>lV#CKJs?Dl#_UyXdfK0FM!;5U6$s(fKI=KSN(uI6g%|~=`LfAzDicE zM+H9i5br?8I)@mq*vfC8?8*Y$@^Mk-)b2Y}UHRwxCyerW@!?ZWm<{8^O`Pe@p(# zxs8k*M?4*5gEFQZkq4JD*Hn|@ThY?B*vJn8bL)HkBDcchcI3*}SkYr55Tz7nQ1`e+ z-3^7V)9puR*)DPav#B$>q$F|T}`EQ!+~^XFpxJ1 z7JcVrU>T2a)ywaA)h$-#O8$ITJYW0OeBV5l%+HL}SC!f}y23!6NDz(v*==)!*pG!S zK#>dBRlh*GeJHl_}&-gC)3W9MNjVb;D5M!G6fghQjYmx(k6p z0lG#v_tXoVGU0IWmF+S0%_5%Iwx{8$Nd3i2R6i&YxX9k?U^$?t7vhFBfHk|w|ngPe= z;>X74Hs$mf`LjZ-$vRW&E*5@fUX1Vi_T3WfMgHRh$Z;}tUA@U6eDdQ8T(}==dIoR) z*JyGG^^Nkj9O2j!Q$H5Mim;P61B*-dyS1={YZ$R-=0mIva zego*_L(`~8Y7V#Q;ioTO>R9x(b(kN&kJ#$n^Nc94d{un-Q3^MEG`<*nhxTv<9_fI` zUNDENoALj%f`K&#UG^`xkthyMl>(??-!Z#$U+1h z`mcCnYHCiM;L8ja#ol5(*DL_*-c{rmt*zDg~@g`9{`fFU>)_>I5@xlZfV$=OTBfr__c+vPg$M#7D~Dt<)s`7SMX3 zS1FKx`SLGIc2K^pDJRkW3^$x5yapi%pKd2Yb`Z+ar$kjI*2IOSxK3M!>V}Ba9}4=X zvG}=9d?brU^e)TMN84$xY?a>AVP|(7D-?T+R(QPWH&*X+H5O zPJ?LSG`RCW=i+ERcaNF6U&~?6;&toRX;Y7oOQ2(1YOHRh88z97%tHLbSBTi7m%E!U zs{m^LAmQEa25Un6WFbt5*9uLwi~H!D93v_c6$WmK9J*Nt1gHja7EV)oR|K1GolGh#-L^azbm6c@f`WdG8sP z>WbGbpjTi;hk+cYk7z8aeUg~NUr4{Ksm-a?H7h|4)SUXh=*2Tby0dh0xk+UYpD-f$ zxz*Z{@PtM^EmSwV>mmO zJC|l*sqa|**BRhaPL&DXyl-l4fX4V16-yK>$F|FV*LCwFs>!O_lp?R|kg>@ew{-f1 z&!8h;|0#&lIe@*x5Dj8$4`(BApWG#}eN4x;;M#`u#M5=aN_Hk(+b!ycl5r}V-Z(?$ z;M!HL?o1&pxjnE0_Xa8Pi$^sSMA>;odOO%G8UBIMjn zkg6nH7rMhD{%sNI5qv$K8T)qd{SIUGfKgk`A~c$suaGvZOl?wV{2$Uj1m`1Dk%t_K%y>lay0(hT zaM5KooUP(hH?*!*x6R2f`QkmZ%eiLEkp9INw|!|eOJ1g#7i2^|3ZJSNXN`DVgqln< zsFWGnK|xyI36FeZn^ibR`>ynjq7}m_UB$GleGxQC_U4!tRkRj(wQpc)y8xu@wtnY+Wp24rUn zIr)Z6Cy3>4LfskyO)W4z2ugNjyC0S=5#P}KFNhZHl>H&3J!ORJnUh4pq@(;fD@-;q zr|XFq>d1NRK12oq_dZn-MOm;)syRU&FABGvZ@#E-r&1+jC<&2@Utb_J3XJz)nu*`%)} z{2rm4oQ_o~c{hXkR?((gZfv=Uv>i}(HMs#8$@cJlwh#&IsJ9(1gldUS^r&QQziaWX^xk{vtD5fUDJ(BTj{Qzxl=L2GLX zW5(g*FRX*ZZ{6CaHvBmGl8Y##zT|*fKoV=}NK%_ZC!q7SN#Q53?SRzdP^h$5W>X#i zdp7cHpGz4gRwpbnzB+!PEY=_wW3?9HmnMN34E}ru$bmG0f(qU5XYyq{F7O`Z1P#s6lKr!bA@k}!s)r)<`0$(#3h}Ch_ zKyD98>fd4#1%Dad$3wRCWpWqm!T(sYlFd;4d`7{drvWDLMu84ydOjI%5%h@@q*=gi z-7penn&?ug_=jNe75NlXs(FdFTK7y8Q4qr{CzKP9-p3sY;iyWEG}`Cq9jZh$BzLO| zQDuvtZu$7FwkPLb&ThJUhIj%4i#=ED%47&Wa1kTd)-jQysv{D;B(xXxj$+!I)ETD9Uk@I1^)I|Cj_aG>XD@4Jeb+K}%-aE^Z zbe8_EaY&Q9>``ZO%Zb>pMK=-cT=PO`2D_w>f}h~ji{Y5xaja<$k$r;Ppr6{|!t7b2 zBUE`fcQpU+njG!u>zW5|tg+f5G6d9@*62~eo$&pCl@q{uB}(i;(brhG{{aE8D<2gm zrn2hE{Xpum&Dg$Iy?3lu!>hiEabHq?BDaE4Afh2+0nJVBF<{IUE&|0WPbBK2=9~UH z<0zZQxT<~D-Q|1HIDm?7^Qfzw}K2&XFR zkVI97T8WsNjXlk~3<_6g75s@*okQ__sTF+gRCwIhJY$onr;OUs^DZiSI4|KB@;$Ti&up0&-%B7?6J(FM7$v)g z?BU3Ua*8A;#Ah^#Dq$RED+1ed>Vzd*Ae&8Re;Nbi1ZE|dnmrOKuEAAL{QM&<{t)8h z5l4v^tYpgW;j<=)KZw5a;(yniV96+Epf#EKqU49c&6hVQBYi24!5}9|C(VI4KhRC$ z{xd=>!06z;{iimMsk~pPdCh5BM=brL8Y-Z?KlL=mu_v%H);@|HO_n;cV{bDjUdH0a zJcRGZu6yEF?_ZTfs54E)`vuU)mYs>TCclmFb~`~%gTx%>2b6xiBfjy`CXXlnj>($) zpR}gW2IZ=2*mFpF9=VfEE{LHj_3U)Qf7mx>pptlo@S_Y#8;7ukk~DK`>e30gddr9^ z;WYg->$$_$R$mhIJ?mk^T}tA;ludHfnM3KNo%#202ZF;y38*z-kenmHMv#MN+hJ4q zO@hIQ=GZB3H$61XF7`}WL*b1=u*=egXZ%?X^gnB(d_ zJo-If_M6dJs;7C)50VePLJlUBk-tUTC<%)SvlBZy=%RGSdr@o8KmqmY)924FSjI3? zQ-S|Ue`M?-#be_*RYCA^jt)wed1s5&V?oj0{NS2=0vzo=2PIf;qbL$;jXWW}EQ!||C56J2zS9Kt`ki9qQq2Xvu6iIu zn(I=^;PdEc+%8T39tulPCB&)euXe#j!46g1oUQ5%EP7b-H{=xIybD>ADgTOZSN9Ih zkn^Oi!TzlkQOF_^1?frinISA852v=W0y)=VK7)K)f?_Macwj&OIreC|eX2a1H0$l! zsjkxzt53%)hgtB`!gY<(P=`Lb22)2t|LLkCUd$D$!dUdiIGF!GLOF-!s*8U-a!yiZ z%<=CGj)as}0h=6BTGNWj9%6=sf<%v1ri~!ujb1UR=5TPdBtN>5TmzNtJ1ugCo%2Zk z5^X!K+ARTO@uJj^OsU|*$UH_TJ35gEvtj-VxQ@GLp!r#>?HsACV#aP~qVEO}(iDPP z*3C*AkyO^$=sBOMJgsuDWW2j0Za}dAxnwC92bW%y2*QH)Q2(axk{iBK2nxY08gmj* z`DR*6HoXkZXtB$D%n35aF}yBe@l)q+4ViSCk`HAnzm!3BpbnMrpy2LXC%ku{hc=WW z{m3lPV!4%CKWzw>Gwy|l>~f3mQw@6ZZd0;EB%q%le`Ly&&Z6FNizIPv>9#$~?!$yr z)-YbN>>_w4On{$Qm7b)25kgIP{8^Ch);L(6$%U)gxN6lJLo+2}SRcptl%;E-*d|Rqq~2 zcKKES#KI5&y`!QU880xn5dLkNY?q%2w-=}4qvUg>I+hpM+ zFW5f_&c6wVKZ6S-Lpov}b$4N!Y0pimHR?<~(9gtFZJ2CU#x<8X>|g-Bwm%K~c31&F zcM=Y9h-`hy6yi@)i+g-q1=qR+eHGF8;l8(~Vi&{-o@J9d>9oo8L@cjLqJz3~@YJUR zb(M(o+^_nNG_)mE@@H^6g-S8}Bq@2S*tkw}L_Z3rhjt7f1AhF~REWv!;$i90C@H-R zYDI0+w{RS+@IfFewUAD7fEiPoC+R<2+T(iB0_04r*r2a*X$tDfT7N696O&W+zyZ2XzR zraPbo7cy+mY8+vT9+*xkzT*069D_{iKMI!?!ZqSZ@ACFpP}PD7xeVFnUV0%ew=(VZ zIO3{FtW?jaRrmh6A@>!bcXk^K>y^RY5IuU^+@MpYl&v->KvtXe`c^=#b9t|aKzwE? z$Xi$;_G@71U}bU1BS{f!fNAa~Z7f9ntC?FYxhY{VGde07pkN+vHM2rlb_Wh5#liI5 z{keAM$C5f${Aj|HE!(f^(vxC_eCA9`u;q>|{IOrftVEe| zGs@mddT0_vtg<27bKckrS)Fmm)iXL@-}xz8humkg$b{Pbl_zG&8tiK6S@l8Vjiqk` zY90RdLjfD|k^#B$7nbds+;{B(+GPRB@^U6ssUwtYQE{F&$R?V-rI4^Hfah>nJ;Xq3 zSLOy0j;Po~0{N{lJsds`0iix@Uu8*h=cjoOQflUJ(7fcd#~YYwY?^GtI|a+gZG~RZ zwpSKbT!Ewmyj(AQE(E@wpK|NECA;6pOg~D{<5ohZzVg-Mi4)c8w=SSZ^rT?nooJS~ z%ir=+4a`QYnlAWs+lkECN(3@+=`Y*$Ea41SB6l~J@>l^%E~VY)ekGVrs@LRUgalDUE=%A2~hSCE$mZ zgZpXV!S8%OdyN^~%JILKjg4dpZ?A!~p~!4_YCHLTzRz8xmx9B!!utf(6j{<_)omhu zBhd7XWsnCC?5Q-(N(A+S*HAQ=$bRFkT5hk|yIA|(MOu$}_BQ;l7@Gkv^C|J|{%4Gn zAUt&}4tcpBX4D=XJy|3xb^w=J&uMBdRNV<%s~OzA@xaDw>dY8e-9S)fM;I=oE&0{u z^l9xcaDFQZ$1izes%=2u+73;7VESTsTWI)J6r6pq=T1QTnm$3Yd`5Sf#GJbG`*D!s zl}^Urzgxg8kw8)>g%Dxz-JD#t!*L5Ti~;%crm(4`NF1f+vw6u~qx%h9dEbm9ZNdJ^ z;6at2C821nMNM-}rAfpiC<~R|KpZdkIv*SdkTodu^o0CT1eGM=kVY&jl%an7Sn;M! z(REaQ@U3QAJ@3513JljGkM%BXpBW%ll@lcp^H89*10uQ?a$7sR$Qsm`>?2SQF|y0A zKkGA5SoLLr@)$=mt*MV7A1nN{p^u!&_mXaKU2(#yO!F*E7J=1A?h;_NA~=4g13ITb zQ7NPzB(m}3zWtZvfg`om*78TyqzUpwcVY8VgY$^2+s63mrmcZ(;tu7(|~)$o3bCW$A@ydllFL-Ngg27GfD8|_ITA*2S+!V1^(>F18%vIL$v z#lZggnVhD+*%#!^PU?gg-E91>tLD%k5%kmsm|N|5i2JUQ8!Wb_kPA9o3GY)Zl3hw! z$_W7XPogp6sYXafjo-}@h5pVtac7^7FfX2CU73~9FY-Cf*MnS?D30u38TAdSkR9$p zdiX)i3y9kWNHUii1?~}4Z$h!!mlSdGVl{m~ZbS93(sTsf*Fmb+3(aUcrD+7S673TK zinuV^E4hjcF-nRwg;YOWh&)+WIPBj97E|cv%tlQulVc>;)-zo>?aK56eK)QN7M#F* znmok+g16?P)*p|Kp>~v5)p9;rW=ZM}D(E^_5^1I#iMk2!G%aj0|8HNW05F+*rHKL= zz+V%E|7=I1z&TVD3Hh^tUWHP%9;9>_s)Ea(kN5hTNakvV)smjA@~JxX$F~(L{l!_| zv8pOXTCROk>JMWiu~Rj0#6xm_nV6;YVe zDz$_GJz4rUZwfwn%V2#Cx&1C@uP=4VJ~fUL|Eta4Y%t_+CRCF%A#?%K*vW3;wy*AJ zGuCQ5zp8!5tIjDCR^0}lGy#m*dbYD$K(W6=G#lmTl+j#N0*#=3WGK~qd_eA`@z7}x zj<>-*ld68Z%W|1^DIb?Sz_*V1rcikIc6}(82*XW2p+V>*72;7d;D>H1@_cF39Ks0l z^vraqnOrK;4)oC{5o}4LjR*?}OXX|7HblOb@al4I!dZe+qC%_7xmOau8cU6&S<9qO zu$_zx-U`&AA9t4}yZEzXXX3F}-2S^kFyazYm8J6Qa>E2|b*9|tsl<4x#$N02N@Md= zf~p>_Z*@v+g`k#)IHCRe51a0awM`Zl>0xL{Ln22&QnLDN@&&imf$E7z=V%?MzvK5O3Q9&Pxezt348Jt$DbQj|g04)+ET= zjtS>oo6UG$Do^;Tsq=Nv?o*7`3SUa@FcG7ze!<`B{bI{vUhWH439~1VY;haSQ(HI6 zzo0_&fNos6iF<0^_BeKky$u}le+p*<==?<=Tf*7|NQ)L0LX6U?O{nW~7dx%Vj^bt2 zpL9nfK&(w5d!|IyP83Ebn+m9hApZHKp0mYs7hU79TYhk%HqIBJlV2|?6>)B=^5Ly4 z#sYWo8%R^9fAo*y!Mh~0%;`N2WoP*GmIDR_DRq*pj(~$2kCE-^?@kx#)r;B_hW{mp zIBV>i=^F({Ed4)`ltc$A8UxTbi_T$%^%yOX+~iW42jjtTaDl?`y#iUeLWA({H7lP= zx|kfbg=KG7@S$b@CO#`(Htl+XSv>K*zfXX)!_k`&F=YPMke{I5$5y7y!s7Ee)J?9@ zK5b`SY0dZUfYYwd(k#`vhueAsaxh0v!gXiz_3e)LJzhw<9*-k%ZEj9$1xORQ(_3Fq zUkw=Q+KCy>D%N>hh<`7lzRZV5-saLnILt5!8KYU(BABNBrLpnX?BA?x&acqeDAQGs znc4B0ai{aMlee!55fnqY5$dEL&Is{lcvV1Z&IFevtMW6QP?d#+I^wRg@tmhh!SK%X z>2ys&rQ)Nfc7|NI^SE4`(Snq5mqv0=r^vwlD_JF=hUl4|ylc;4l$g`IlURWWsXak& zv;dkWBiSz&bb!)Kou{!mF2A8YU0<{2(J=BFB+I7+*4=u08j)EWh(|rk2-z?HDAeov z514!-O8ykQYq;MCnt2T6Z3)RC#Ai4ZgR9;UU6)g&Rps`cd!!0jpgw(Em7+st2sBnH zEfuSfZ(D2m-3>$>q5!FSfANK|Vsgfzg`hb0Jqs(^=rS4;@s!U#Y8PuAoHegkNq4sf z_Ze&cuF#;5f9N+RKz84{y(8fdV@w2U1nl<{J8p$PlCY$^S#+B8QH7zDr$g6RVB+Zv z*&N0_D{ZmlA6KRd&{rpf)z>r>XdWz8*O`a|FUar0PBZd!jMTw8|FJ>MPS+Q_B%^vW zsVblrQ=h~kCJg$WmK$TUmDao`CB8c#@}Ps}f#)z;r%NlORUxf8TWEUn$6z0aC~}E_ zSj4)@q7-|e`XOq6sf(c+u52U}FZJn5X#Q2h-CPpsqg~_z54|Uzl)ELnoXs(P8A;}4 z*Dh$%Da)=u_50g%Mixq`^Yso3n{OC(qMvKmr zOL|T`c_QKcsgWkKTv~CvSQh&=Tee3(oRxw4rus_%CWaq0M-`*}a_CT$0Kbh%g=Sin z%R@P2bfmjFiwgeqGXsqJEIY7MDUFlz0zf7j`MHbdr+r#^?E=PuE$cMK5cRW0r{kGU2FF~)bRZ{a`hrpP=Bg`%=?{0x8M%{K zv4>fP@$!m|eHPCZ8{0Ix4SflhIwU=hn9|kQc>Rkt$K^alQ)F(mD1J2pd{q}QHvzG3 zF6{;`2#+$367jcq5L3zynYxIn{?@Dto*bxEraXiRM)7HKXT|~f2>jeL%?>m2in|yo zM=)|(8s-(LNAK3lZLQFwE}5frcv086X?-iN%VVA??z~}|mAsRzkROyU)fSD|<&A2a zQHJO~XO(U)kD(rrLe7Hu9V{hEY)?G{nscMWHW*fkHmSng@s+#kL~c8puk4WL2bog+ zj=OCWBkvyOX-1-^hbVc;l1|zJW0O#50vtRsUE67?PN?Yh*j-!m<&H8K5fSrYn-oVP z$RqMGd@A)lcNW#+|Q$P%j`^V3F9&oQ+>qu@p$Y?b~}RV4OJE7VN+rZD}1JOT>5 zY!|R)BcS3SmdbM&Me$|pkYaWCKCLV#N6x7eeXq;eqW_cG5b0j&a(dt~{JippHCc3?ET7blHDie+V3V5xDISYspwWkC!tKPgJ>i#tk=U_ z0ujNIMvcM>KX}5Qa|QLPn9@bPlRJ%PN{8F4H>vJS)-2yNGn&5LW7N~-(y_pVGWTKk zX4Fo*MHKuPW!AZhQp@E{y z{t{PUcNolL%RG=m8KcqHK;>!|Vv%mzV4sHUb$;Fnj+z=O|> zH#^PcJQ=@#e^asl)?McDJB>zdwqxvWa<-kl@F`hq6>p?-a;594+B@`+$hBi9b!{l< zKJegETzAaJG0U#>-G1eLZiRLR!@D?m<=etwHAkW!ju|M_7&CmE>I9&_gO$xj4ue4+s#u^8&E=VwVs$>j$cY4f5om`we_2X{ zY%(X%875C;pmCS>=Lu*}r-Ox_FfF16e5x(8s#=~cVJLZB#U5DOKPD>a5r=-Iha(9`)SW@JTV{y9n31ojdm1CMG?2?I_BP6c((|zju~x&4L3T zWgy-x8wR2?sGWh3n*SCannhV_e{>00Z-m;kO}d|yPrJdRjLN95C}EX z;FqnKVQIeADae|9Fn=ial~XVH;xe)ChNPrMGFdj|xB3R0NFPV%blX#BaRv&Un6ZgIM58Fo{iwrvp|X)(fc zS`_(Xs2Keeq?-HL>v?>wD-%l|hAEfdfKCRqxYz@-`c#ehrz*Hp!1%YkC&gB%d2pqp z;;bsm>%M%@3i82KGCM~?mLF3s6htu5c$f2vzVgXn3zWy^$ny0ea`8&}{&yN1Z_TRt zoiT=*#AkoLN4`<_dCn!G+aj%3x;l}qndgn9?G#Q9+6$_Y=H!F*@VSvF)PJja^EWF> z+qqEvC9Xq|=-MFSZ0XzF_8#5fp5=v+2%6i#+L-TOGR9FyeWj{9g|fa()V~(<8$c8^ z;JJHoGU40$@A zR41Lm_F)V=Gx=>g z-D%p=E|`d>{c=Z4+xw-ncTDwyr51FVZnmU^xvT8IlGl2M!}W2o46=Su+4wgmRp$p2 zDo+Mw%%d+Fk|>m$f><|3)2hI4G16X(-y%-?q(kztdYVr{ZBSZViNpy^h_{QIGb>?e zG?hV61vVUJ$UR*?yv9$nr|QxJ^{K%=a5W8&LK5I$R^?7CB!F7h`|G*nreeS5@1{Z5 ztNhLlIjm7OA1k|D1ldW zvUW^0bfOwUJofYU5~8&KRwGfZCUi^g*8_t5RU@^67|df~Xm6 zdRX^p1_VCT*{CP}t%!$VNmua7oorNFb9S(Dlj6X*y`5n-l9DHg_8!*F#wz-Tas~|m zwmbFO!d2qdyK8m~Ot&e|v^HBtPQT;^@ zeP>MROG%q)Lk)-ADa{OH78`YsRj*X)hi(S5TbwE0d;Hu_PGowHtZZe&%b0q8CGGJL zIuBr}B_i#UEcwMc!6(UjYLK30)ecqHk6<5H_xycR^H`p7#7{v3OO>PT2o8fEjs?b* z#?;ty^V~HqE~F8fjQxwj_I0T|aYt+LUsX)N`+g%Jln#~oxIV$lcYSB2HHjGOiP(EA z$_8abA;TJd>ab;sGm(0eN#(df>ZaI9Si&Eh_oC;LF@24>@|czCOWsiQJEt2Vl9BoI zb*Fw_52|1fIQOR$VsPmn(R2@{b?e54M+*OW$ax@PAw~we!F~pM3G~6wzlawO^MDJj z`QpY^IWJQTEq>^lb%PLgI*&&QwKoj~KQZwu&?V)oMw5~!1S$udKE%+V@V01#x-sCE z;{CHm(f8)aX_edh(U1|@?JkRjMy|MRww*rJb6?yr?IKM1+>b<3?TnQEQC*ipG&>HH zg<6Y$IrEb54v_TYpiY}Fr6+X@-k`ll+ul?z2m((JhEQOern-}>OV`P>uq{Usc&G#0 ze?8dw>c~;e3!R#zWS=r!{@5#J}ZAkG+6> zm+=!=VTP&H&q8WvLvq^MAC%0b5*)AGq8`Ajfj`FGPf!Ng@bG_rH|a_C_^+H#2W zCm*@aH)c>}2zkPbI;vB_-I;xln>=Rr?z#C!am7qK=wNZ!YI90rSBIf*fV^$BUB5*q z$mHa$xw38Oqvf4wnNv&U2m8mFMJb3S+6)IRZb4s5Q65U5a~h0=Z2`X^0}GkI&4=r- z1w|p%gFtUY&w}!4kY$K^&*+mwr~Y>rPO1Fgx0o&6rIuP|ntYV{OP=OPUT4e}@fPC) zeZdZ}&Kd?WGHz2fVYp|&)kherh{92>2&Ncdh1YHIs7y?{eXNF%w<=FpI4SB!Yuefb zYuW^(vw~kJu1-`9@j|TvKasD;z`+Wr!w$}sjbY5TH5R|oLradTl}cJf%aeZ82FSVt zzSO8St0rq+qjm^Q%O#t$T60PV&$n>xVUyLyxyHye9I%cz15dty?n|(O*!Ns%8$rHg zm&zBYhu^QzO_#)FH{?ek(6T@?nHhaWKF0Fln`a1nZ6uWHLLp|XnFUYt zjhMkpujCiVTGF$#!KE-DPLHY@Kn z_F4QI&Jo?DsW9deTnCX8sd&+@F>m!pHnI4iNZuO~sGP=N&^0mA%pPLhU1*xFDv0i6 z)^F`Hi+XV!@?tj?ZvCLKc=J&Z`P6GfbA0scbW~3E&i*Ty=~E_3W@4X35Ha}d9dmJU zS0;QjhX>|{PQsqzj{~uAIM=RWA2~x8Kd52P#QNn~?>HrbW!Zv}yig+j6EA+az}VO% z0LXt~GtqN8U>nHw&ME0Z9tkR6?4~W`QE8A5SWE0N4_Wkxf}fUEF^R?L=)o9N-fj1m zh>N)nH_-ZcIIxt;KLUu26EVlBm?QxNb@Qm)fGDHjR7kq_Vqimq{_TZ!Ntn${b# zTN#I0!FTcc;{)$zi?=W_xmlg8z*O94-XOGR?u-zE#5oz)F#oul&tQ`tbT zeBo8bIV6Zxx>q)ewsH?3_uo?a0u`KS5J5LG!+2JHfyY>g7{3b|401o1a6E6Db^MXNHa^ zMrvJBrTuoL$_m^u1s#G*z5lqY68;J5d}Dru(P2YJ*E^z9d)1l4WlhY)3&c!=M@r7l}79;@(Ndji8WK%CgPB3hHrzh>3UWpdItb0%)Ic5aH;-C3Q5UlgrpvzXbs!^^+eDEj zGs*GORMwtl<>T6^Vq7~2A8wkXAuX&wip}}}J|N;PHo$x;G7j2m2LJ3KO3_e02aRf$ z*_9GCeC;JUY%4_b6Ut7CRMq6P?mM4DW0`c7*In1JA-2H~E%F*g^skZ5N=DL4j7 zliOJZPq6Xu_>>{Qb(#J-O)G#lv;f*DgL!*vT zlsI|SLuM3D6PxCMB~oDF5}F`Q`A&FkAdhfVGg~DyhYQMeN-f_0lHcw|vPnkaLNMa5 zEe(g$#OnGdm#VMW9CsU^aYp?obv8bSC0+ImM4HUTPj#}$#lMs{T2tN*6!_|t-kkT( zt{0KEPc*~${Bb|x-S0ObPVQrx@gnLrlWeZm$3HBl7xC}EG5|jxHCG9U9%_4*+o)Nm zWL+-Wtg%ufzTo>e1?xm4#T5msnbLDk^vVf^ld*qeryp>>+kRs@xF5z856i~{OkOV- zySbsIc%$utsywJD|54dI@OzWggazL2kdEYo#yR3U1+n_zSQYD43TZ!@I8D_y< zvUfXUX8ZdxFY$^AuR}z_V0ufIpMLH*_fbKGb{CGo(qX@tUH9qt#`@W2@sndbI>knW zt=%+$FJjc?wu92ZfpK_wm)|vFf#+Ou3VG1FsZu1S^5XHq6a!X z)jdO~+jKkr7~|1gEafs-^i&^dT8+pmLy*S8Vq1cWc9L z*iF>j;=e=YhA%a@A}<#AQ5x1_GFG^&RPsGah=R1kV8vzFuBIk!-0K7Pd=5TJ5*H0w z$a6e>@n1E^TxUwtCL@CZ%GLjBm zC1W5TS(vFKxSY_1lTLD@*@`$@+F zZDp&G)IB^+UqKZ4VAT9OSvl(WLDj!w^oPh-iFgtob-R>-vCcvJ#zh!YvPZUPAKw*I zydvm1^RR*VpFT)S7dhN3prCi!1qAM1Larj}hrNSA4iAueJ+4VfSUq7qdkB1=d=1Us zCVZhDjJ)tXIVYnkWgJM{&IqOA^Zqc&+10%1qS?PWtBD!|Jg*43cZjM(ZeeYR&__!Q zAv0!548lF4&pC<}(x!tJJmpV%0z?nipH@jZEge}EA&>F&HlHRyQZWM`Fc9Ws1Jyb^?>_tzyxgy-s3Eb zi`IBquzD;c2pH47Pxx@2yDI50N?kO{xUBsZ?7GZL+OEtzKLil&W3^LrGCmp}euV@y z4cD=VC-=sT&g24>f$Fm|$pY(=U@)>W&3>Wg)Jslr2{$pmZ5})QN4d3@2A{2_3IhSV z#$ksEY28v$*DoVtY7e=u3at>WY?szgm4JMd<{S-@=ZLF+$i7hr{=`6}jW>=WjhZH1 zL@jc8%~I^rN2T7|@P}6Bs!1DE<%20LS({yqRbfo7f-1a=^e18co1A2R51HjI3HCe% z_v@y!%RqW2Y?R#uNuY^>ptcmdv!7Ad=@(%&mytb@H}XKb(Drd=8Ti=K8= zsL8!4?%bA27-TO!3Idv#(R(YhY|vGcu?16~suH7KkE!5&bn<7>*>w`^`e2rp^qEC? zvzP)(QNbL>4y0uuFjX7OLo>_4gO!$rvnRf+|(8?5!p<3@po~#4^68=ja7!K{X2o`4Vc(r)wMzg zE4DS>ejLg@*c_$ZVa?=9DBBDa)p7QQ{2EEz8sPF<1FJo>cJTVog39;LuAHkvXOicW zL{lA{7AqU%i2YOHodZ@<8}kS$0DaJ7n!IWz?MSMQc=AsW8Z24NYf?PDz`LfjB@a%Q z{lCiYd?rlojyVcvT& zD#Ryi#iZTNo@1=RHGtl)7B&~UVwY%;)<9ZP5-s)4Cz_TXfg&gRJnCmr`e~5$yAHq! zBW8{u_>D!jCKf>VY!JTlrpZ2D-vfs9sQBi!JXzi*@|yA#)J*&to^C0tJpev+j2-Ad zJ$m*D4(3GF%A%Ob9wFbn)S-Q+M>`G2MVAn_p%>697*Ti}AzfC?J%#=>1LIV$E$tmz zU#g#C;1@ypxGcY|ZJ58q?jZ@Sty>jq>$YDqaHQZ(7gtI#5H)m3!eKX0fPGSo5^3)W_8PYdEui|YkTaX#8F5jR}`#{4X_2{~SspNz{!a5j=g>8dm{|*+p!x&7PE*7f2 ztJLP3QG~swT6A_Ec3czzILj%RojnQQS6fJ(4G)OvDQFVfNJdQ<6u_yK0l>xM0Tqr0~kFs5KC;-2^04TA1V-mg>_}kt`)jS%@bDEmY;%gAXr3 zoMmWElem9}a05k81-L)sR?%P~?Ce!ES?8uMCSlsaIu+6}b~`mE%cUY6(nWK}rRGekXjwuLq#+=dPk< zVEZ11cm{~Jf@Eas*xvN!j9L5%(*DC#eE;^pnK8UD(ZwbK+t`V;B@I-@DtnsYYE9{E zdC1ef+DmSMV0-%Ji9jdowZJq4I38CVJkPsLOd}847m>QNz+AL{hWM~fOq$s{(`1@( zt>!|H5NgAmGOK4X=~ZUpz&`oD>x>ci7C(W0qhJfM>T8y6MYm{~H$QMAmKMl;6YhY0 zaSlDmT-f=UQg2aY3H%;`#NJNUP~J5T?t3vRoACNVt{%MwZz04NW~>&7KpY%b=WB5k zd#r`6*3<$e?(ng!m9fK@G@o#M=Y$SgfIiytv= zd&aT1)X-Kou=pd(<0w>yGFsLX;Tub1TNor>Pcd%07~I1vdpDQ9| zec5<|g)#Uw;6%#}#189*X6$3so#wIIf2H>)ys|@K;b#(B96Q*Vjf4go3PEmXymXz?RT-jL~mX^ic=&QhOFD7s%nbisFA`%gWT)7w;gcqc(}7 zo7ifHkLX6k=(tXaVQr)d-{J1PZQdPy*(=&57qZZH!h3R4RhD-Zid0g?1s4r7UYxMo zOt-Xs(7o0vbFLrO+?taAvafWdeDc3^32y`sd7O;uws&*ncMlc7X~0R$n9i*xQJWV3!nGAvoKsW0T8QQX9sDmTb$_^FBlW1 zAK@z|WDkY}fXJ+MA~sp_mAudtq8JI?e`yP{WCvn@h!GnQ{!%+x%uDH;04KXM4u>Qo z#1Yjp)zMp)Ze&7)ja6odMfu~i~Cl$G_&Eyf^ZCeTP}X|gaju>y`dx;vCUM2si^ zdd+gdZ*&nR8oWyK$1v%x3ljE(E~y5fVZCfSA)4?kd{BrxUMymPxV>iLN&ByYeYip?*Y1u0vUw+?Lj;c3P z5}h5b2>*3RznaHR#82@~qPreJbZK%R!uG((1g!qu4yOnsCvB|XGTQ}E=tK=PT7v)1L*=qZ{|4vs2@|v%VvqnF6q#NZJ^;WM_PnxLl}SN#`%raPFV@XF@%N z=f8QGmee;2{Kn%n)QFq`cX|3{XhZjmq=$~udqYgnTQ||I#O`5D?1W)1%4N=j9DO zOXjiP52n}t)wFMY08Ux)JKy1m|4jOluDqFV6VfuKzUl8@?FhZ?zHNgQpO|31QY_^6 z9j#kFZ1#h!ZmP}PL0o%D_8)m=m>ul0`5z)h&x^7n&)*yVGF5dqs(nuUEJ961I)XbQi z2|lsP<-S4?)XJ1@V*$T4;5BaKY`;`L8U_u!K18=Bh`yFeTSYL{-%#L!UM->rLDAl> z(7@L4KT*yu=2!K-x<+XeRCv%J_{W##0cmFG+iTjh2q(Os8f~H2HBh=>@6Un_qe)e) zYTW$*vEYbiofBo?jdllgP=%24dM$fCeRB^aIHz!VBptg&d22IUs5zBv{H4_BwfiG- zAbo0eiJAxC-T)P7dg@VS-NFh|1Rk^Gr={;0S&`q_p*@)D&5zx+wT*0kMYMp|!-04aiPACT*==|B2to@%B04T5L|K?te!779KP92Nz~wjKf{KGV7LW?rBlW zUJ(u=Ls+U%+8Ytdz9T4k&znQmkrPVC-uK^%n%vD02N1TgU<+yP(9$*kw%rtO*NR;% zRu~?>Z3ZrdsPuq)&vnJ`fbavo(FQj;uZA=&L^iD{i&`ZoUV>OFz9iC}<1YLFbQ4x| zEdX^pbRU?3`%zB0>XN9LZLXrza>wbaYPsN-kZ5YrG=G5nvmci4U6omsgFE7ukB_dZB(_GB&p z0N(Dlx7O$XUGaIelQ;;(MhQh^O##?2bR1pV>@iTUiF-9FH;m>EJ;M`jrJ$4hG`VoD z;a1(_3#gFVqc65@@~WR8;0`skI2Zy0cnojIgvQVC;)(wHiN+MQu~ni@P&@~8xqHi3 z%*w2D^zh=#67*8}B439&}cENYDe!Obs z5Zx(Eyb8VpMVfA!u!_K~27EZ+%kEf9bRdf+f~?-5(d(3G;Z>|m7AIvY_xBsEBG->D zQq8TAb8;4tS7e%@{;}%SPoO}AKAzP{y#MNl^;CVVn5qT>7%|4N+nMYF)p~HzL~T=y z<(%y3*5~dXqWSHd2~S1sxc31fzl-BW)R6RCe3Eh7@fVENr%Yo;cBGjT58FNZpzlBP zEOE{aiR(CGYM5w7Z^%5-eV|Gd{1TWSMOKEZA0HCmQr&DHeh{SYU(9sk3|hP^-?0gd z1Qe4Wc_~89>JuDSI~H0g>J3%BD==5JYgdY7AzST0)p%s9?#@ff*^0YH5EiRFOG%xI zqzDTC?2u+fc#*O_M;B*LGpnr#QV!^Lk7 zKI;_jfn?z&YKh%qeE$415!#i1(joq6teUUQ3t}c0Vmv%Odf0?KU&S&tQ9T_+;%{k+ z731yu-xs4UlcdAZFvP;j`Mmh2;t?eBJLfnv6vbKnQrDw+{Zxo?8#UQgh+el!-YO|O z2|X=`)}bk-kw%N64YHIDJ2era=~(m++ahISXWz%cjt&;I(<6STRhO!z`s9i(Bm35Z z7_Q_R-4MJmpky1!PV->8(G2U(C0Zqz3m4dUWbw|So5%i$?|9WK(c5T%j1OI2Iw=q% zuH$pV)K(ugqJdA7SEU;x2dG6QGXZ)%9GeF|s-7l@y82mZHKIq#oQ!)qcwQ*tpHE%F z>Y;EAuN|8j`qTJzcWYP8JY+UGxZ=N^T!NgnSA6gaZ@53?>~6G1E_l>qZiZJ=?Q^Ls zzfx=MA-suAht!KYu0iUDCC_Q+kbo1+(82eBnwk%m3B-%kzj4w29{1Zsc}?vN<(JyB zrM{$P45^&;i#MoaobJlacA`Gqa#P%rkB8|@?<*s^n9^m_u}V?d2xYeRM)J2~*@6kE z8lGhHKV8#Wxk=d#mk$QA#=>rWW7`L<7Rz5k7}}D;@WZV4fl^m_r&v;2kwVG1D8m0X z9967p6b#Bej5wJ3bC5@{Df`QhXdgeSpG8ew4ukn!F|(-Ox-Y6;c3Xw1z0=~c2Y(p_ zqUNZg9U6AC>YdQq&S7uY0GHJKT&JTe)0;yXYCyM&kv&->RrV4lPn+ znGsJpg`5;ctdWJhvcOLK#nKA$k8{~FYdZU)yL#7ZB!@OI;-t8~1erZ3!E{qEE1Ly( znAieS;_cXSO=&M5{_`#Yc_iFr9Fn>Yo(q&b6~hD;MGtWLfy-@#EeD~4FFzLOh*>|_ z`07XFl@%$`tKgOPhTI-Ka|7K#c>P4Id=KunpY;Xgs2@T?)3Rby_3A|QC9%k&L!*gS zn8H!IX5>1p4A#Z!7#A=3Duh*lo1`0c>?ofcSM@ytXWD=aHfbpI zq6bDs+Z4U{KO+HI-0#;YSagJ#xsH|nN|Zd_e!n{iy+HMe*135S;`$#r$LpD?AJF$K z@W@>VZhalyPc+NCpA*;XQ$CS*c6!x_c3OztGDbW;=omXcSV(_*`zpoHS);d5&2uHP z&nR~vkZd8EXVTWaK#Xd$qM-p0v^RxpYk{r569vrVO!b57tmN zf3Z`C6*^nojzbEH)bY_h-}~);s%@V^KK{?o0_3rJPchbUdIC&cc@ElzJAUv zq%*Moe4Ka|<6L^$f+e*96JbS~F*)8iCu;?T8V*5{v7fo|{PkSY5^j3Fw96tRN|)`O zvo7G+b;^gci;c-uT}KDE2`3t0@C|ipkqEbg{YPl4Pf6M>AKa)V_pd>l{tzGA(?5}a zcGgsh)FXiXdS>#ETURNwZ0$9rKKy=td?6I!mA>G&sn!)rCT}ZCOXaCP<(}Ja2pR+Id_nfQgdb50 zoP4H|kN$boh(3{X9mpvxe)l19SB!I>_}MqTy4J<~y&B0=sQA`Ui`n7_1rcDilE@lK zaFge~;UT2oezOL0qxv0am~IFr-;Gl_-_yosUHxOU?0u` zL3;HH2javtmw_5yk4w|Jbno*A))2nE*e+JUM)0XdJOTSRMqhK2{uT0lg!F6+hYcCb z(e3p4Th*rjNzdYq8aXPb^oEq|F;J~pAiT7DmMZ1Nar48vJUpcs*vx-ps?i)&pWh zR*i6fN3U1}hV5x9>lG1lh&!DB?QwSA!c{PnMdiNbV0%N5AQ5Y!J{xW`Ps3*h^4;R_ zdca<)E`2Ou7O7(Nd?FY-vrh8~B;%Z*DWlfSzuBva!}TNI5e54k%8>h%;dKj~$r?`*ed z>>t&@lJu}-tOV@UQp4`UV0rWC+cEfl|A^mB&Y$n2pEs!b7h-pY^ljdsdSHZf!rW>x zmZZM!+BhB8RFQUSwXJcdWoT-2;oz4}7Gr)ox?`l^_JDU1IyOhxuTfRIvu)Y_!D*1TO*t`wEWAfIa$LpTS$tQ^FrVX&QVVGo3c}4)qNaZi+t7XYh8Ab;=SQUUfOD-4U!wxX*9lEaCp1)lG80 z-tYlw3p&;5p(AHd)>(kx6{vH^Q_eOg6oN!cPYY$+caO+1Uo$sE5?(2iG_^`X8V10N z&Bbbm&(cHh-=Wd4uyMyxc2cpn-$&Xgwdm1;TbpATk+>dA6gg5D(f1Wo`zMEstjbfM zpq?$;C9j?I$BNyydjaJd^u>@#z>>?%jx_iHD_UM6Ke$6{qcs=28k|CmgX_k7^O} z7=A3b4;$LjU#*OV7(*~f&a7SOj+P$)yk7-;(lgw6E|@4J07it7U0?~v+ITTl-K&4G`~P_6&UHub{~)n_H>v9}l@${BIfuTvJq4uQ7@!s*C- zBoWejD1P^+KNz)z2<*_T4vy_$?duxRN+WD&)%2&dwh$_HtT(pbn^L(J>!!vZVNQed zn&`?f{A@my&8fjWBb8eYk5Xo>gLA1*Uj<6WFaVN!@g-pmt$6E3qwiI$? z$2dvDeV&nL+JN*6nG&Qe7nEB4>keHR9k5dGMC;Z>paLp$2C5 zZt9-ML^)lCeqVt8ayq>y$t#wN#Gj#`pH7RRP&NInX~w}h@6ygD3{ym&l(`48>-?R@ zX|4a~lwsMy*`@P))6th9#S;c6J-ZnZ@gYp|=V*S3fBmMP2fx+Ndi0O;_hsj2TdK10 zlxPik>=Ezs$nZRQ%5SW^k$VeVOGYOEb>wG=hllzUyZAH&zqW{XK;!s&WD3Q;A^DoX zi8!@Mo<0q>8`Mi}ygaN{>r)oA(L$))d&%S_o>h#O8 zv%C)RjTO44b7Nth>*AqF=h18RwIuQU_jr{sCjN^{J>{|2wJoucPgd}~z$>QZczbU? zc(6fomcn+hK#uPzaLfAkso)4P>EAQNR`jjEZ-%@8(WFIafW5D+uW8S)*A(+&u>ExW ziNZ6TN`<>!-oW=V+S1rAs8%!gRm@2d#e7!Y>g zDYkzr&&{ZU4V}BO@A_Jf#974Y;>=Sa<@oiVAvUT*x4(D3=6PQOS_KJh+(aMBrTz8; zP7gMz2MuB0t^Fz7r_yvg%BmJSx5<|-9;j=iEqTv8)s)B^wAyr})ZMmEPemM~*cV+@ zpCpZ`Xz!X1R4~XhEP_-T(L!_fFY0FgAq&sLiWB(R1oSQO?cV*;iDbnZaOVrYoZT^L zlcrK*E9_&{fN8cmZ%TF#=EI4cvC&4){afm<1zcF^1Rh>WW&5mq4&rvVA-y`h$D}e*=P!S={LRCX;lD<{_ zER&2)UFuZ+jR+86CG&SqR;N%(Bq@74v4Benn32Jw7n-ME!JqfBSpcu)ZcWo`9?z2Y z(yLcf6JaH4FGspWdZ`x2tR`h^@u$1m&!Eu2E}h0h#Is<8d5^68i+h!ej>iu?9#tIm zBbE98h*9dcn0PJsjh(_a6R2u|AQtQSnNfK*RAOfW?j$Tw+j`VseplYrxy>QMkMOVC z4dAs(MapZ@>x~X3hys!lUYW%qmKMLi3ME;c-lI=|8b*F|9HqHf=&(-Mea1?-XT^pG+)^`L!5){T;5?{!l{ zakGX>!Jp{xg7);+qETH3`{$n@FQdewk?Obf0Vd7ThM}yb)1-KC!&qnl;)0*s7>g9W zLCTv?>`tlGu!si9^M8GU@ogLp@z3A;-ZHFRjdd_?_6z+lUl{ukX}Eqgobm$p%iLMh zWg&XPfzD*!_fgM}qVYX0+L20+5IjNa-Ha!F6n-M8gVFbsDEb>GF364?-?6nUUieL! zceZi~`XJhOxGDF+=x1j#9rrlK9ymRiTc~#)7QyH@PJ?bv>JRqv518jv$7Wl+*+K8E;_|B^c4y zI>@&MTkdy62pWlM+^bzsBp0*@m>T@?$1iLWF5??w1r1@lldc`qH{H5CmDpTlwbQng z&p$FrdI>8sJ}rq|e4s8_ec{>Pj@E_`1bt@4&?+`H|MfLTy@&&b8e;2#*r`an2Aj5s z?%%+i@n$x4O^RVF7CP1VjT(O(?YBYK@CM?DG{uC}{v@-*|JH+URU|%qw2f%>E<46! zd3aMrF9hJ~9`%L^^CX%%S1E{U^#s8X1uPw|85C)jllj@W+5BejA(z>T)x&1~<%|*L zmkx=fsY-NQgMW9CbX|^xlkMv>j$08dR(-3Bc7P4iX)unjMw|F0>oVA`SGRfKUlkNS zGu=a3iUOXjlM`k~#2u;;b!fm$2jIS@$PAw8`gFw{8Aqc*qcD72Q84kZmW+<7?LD&= zTdec-I%g`mP@bM+2PfR{Qd&8iiMStl-sk_wIcwot`dTYhn^Mvfmxg$E#Y+scqpLFuJ)t)?T*@tH??gh5fxZ&(>DnDI%peJ&1DC_?-jqV7is2zfrnP9qVt; zFc}46R(!NRcF2IM#V(;S3`3n2X)U$m&|SFSHNzCu-!xRrX_qk2G&zedoE5PMOkt<~ zNdU?n2FJ@@X;rc1== zWxU}J94}{(#FkCUscUh&YmO0a#j6LH*c~I|{w~=x;|nz#Dd|9b%dJ1fKx%ysl!rR%5k#k`fai^~N>jOY2geAE6yA zPcISNifL!Qlc!XU4CjwmnO1PVa%bPEx_Ld+F5^75NB!{YbPRQQco(dvko0d>2!FrY zhhjPdG-E|9(ubHtRM}Lj6@nbVw#S_jc6INj7XXV&){SC6_L|dh8IBJ7oC| z5yME1{?O6Vc3^TI=dqdrao~EEhdl5VoRX3Gg_tWZsG&nk?5=aXP`p}wO5Y-9xT+;Z z+_&r((_9!3A9lh(t>4wDnzvs!!e4BU!@lwC&K zve%>2XzMlRgf_ggl z3Z)|!mSVV>gB@lW&~upvqMyYF4fK6Nuvtk-see8e7?Q_Vj=d#wQ&g0G?^2RFuzSwf zneQo=fzmd|oJW4!6cZ6wp6PLy$(<6hYa{6ZF2BD!#EsA8R0#TA8n43_U1XsT>$i64 zHcqAW)EzRO6iZ)On3VvWy&sA8V$ttHvf&BNIdZ=pT-$&P~jUp zM;b0sV4JR{yI$RRn5Rk!h!U2JOQnRC#7`l!|Im{Ck-fWm_#){Sc(y}%-&eE<&@r8- zVI79}c>{1Uzu6p7qm;U<@_%U|J6O4R^HJkdm|4o@EAozA*rd`?A58}7G+1yWvL{ljg>dm=FxnUQ-L*|8Q4st*W1 zTHO#2+g%1eB5|H>tk~ zNYNqW>%00wW$9ibfN`Zc(|0mm(qm2BEM69vk!J=qpKKdhdze%{t|xYPz(EzX=`)U5 zPg_Oj;7=m{G;-NS@fQW_nAvg)aOKnaCF&bC$J(2m)sSsIl@c#H^xMXUR9gS5byj_n zP-JCs&Y!4f&)@3l?fS8S7-s?R@!~1_zOQ6~BHxA7d@tWtO4@?ZoU3z~Ro0sEvfBLN z75IU*Nv(Dk@<7!f`cPhQg)WU_vIJzBx0@I2=i)-|NfmRH-K2C&(u3t6K*LhpI8ZaT zw&Ct6dw8@a!8l=diEVZ?xMta;5FGIL>p% zlSr-mIrIximjD{YFFtU$r{$fc{|a7?ZPi=AA3R|1u~on1g1SRN4rdwvF_JSqbtLD3 z25P+y6AM;=|2|KhL@d6Rw2?LHep&^4!v5SxPsF3PGr)PBDX`5}dI5-^hy0P!G8L`Ty8Klx` zFR8rt<$otPHd@5s+VD#Z6uI1*WA=4N$AQ{|Kt{O|VuC4Rn6Ki&ZN#lXc%|`EZ87eJ z?_OD+4~9H4T0_E=0<8v>TknrppU*DO*t?Ukj&km0);q*!$o0b%GORB@%=INJLgR1j zHI5tfGQP*6f4(V7220h^6}vup5{pmsYPtmzHlUYo-`L1L84&=u7b){8vW$6JEuU$k zS#!ndot-ue|E_2`>$RYx5WjwA@2k7@ir8oe(#4vX1C?Vm{RD4xJeqVB?X?4|D5mLd z9OD&iU5u=X5jmEK?$FkN+-b5-`xv8>=nk-2?aWA4gfF=IXdpjDINQf_v~3jk5roSYWT4O3nU8{kMD7F6Q0Q&5L22duyIc7+p(N z1yWD;MgC->rjhDs&iq29)FlOd{gkvhqoy^F%_P)U*dyFE6mDCX>EDDFxuoY_SHfST zdj%2gwOg+V;$zIg6U;R}d$FRprEl9SPTrv=k%iny)yhfhFZgK^)HPKe^Al0~0=Tl-`8|~FFx=Ep<*M?KE+mBQ$0x06?KzMUdojpi3$d2BvNNe;i)gF&upJ#kLTIXH?L-0zVSs3~h zb#AfKQz?8@i+y2%y>hj`hT2TW^6_gkxHHywv6^5(>$8ihD+T0-h8tPyF2p^Z#kXFr zVM-y?lmYVLnau_JHbpeTYvid~L-yTO)#&>o86I0UQ?Ql|LAy9wld=chXg`sxz$cQM zAbv*S(qgE)w9k@k7#U^w=EvDPK&ouTmTEX9CVX~@ypFZv(yD6dtQ zPpg(xixN$RH$3ciP%QSIC^o|_9@QQAG;A}lYZb8h?YIpqT8EWuVPQQ?#oG$OpQzw3 zwxh$ppaeW2kKFTjsJk({P`+1~$jmmU7t*B%v_)PTe6CN_?FNnLq>%t;6H4c;(ShrN z>B?`JsoNEAUxvKOy0tT%hi>U*4dY2wa#pp-xIwgNJ-9P_0Ex9{ewZsui{MH$WTVMZ z=?t)WPcCxnKi-=LK#9=Uh(KZOTLtmMz#!-1zluj_J|woD=Av{zjU0!z=_7a}e%J6P@|{CP@=Ch)vtU zn!Xi^z6tr@_TeGd*D6~*`|AQ5a>AEa-^p9Ss*`fjRddw$Z2BLVCAfj6IZGwFf3 zGMmc(jD;M*cUd{*Wig~b>{YGtwsk*Nbj=v>dKzN(WKT6IOX0;uuj;pRV=n4$j&6S+ zI$&>3<7H-mdDG^GwmduN2f9Q>^TZ zuiAs{JF#T#{Sy$l+q<#R#gD348`%4LT36TQQp~L-R_m@jB1T)bpm?RK4L|UrN^)-N zLB2z;FR)n(21-n5&N8!oG^d6s6T!r-z(3%4?dIcuKPhgu6l}Uw+$gHk>6LsKk3KIw z{S|pTkjUhEiLI=F_jKeIdB+2rLiX5*ZC30A*+H>BkRRC20PX!;aZiHRO2~V~%6aaB z&qUG}559b2nK^4r=Z#-ksA~r+qAYi)e()n+WYguu;+o}rn)HOs!Ui0}{y!Jb}f@oSjK+pcp zY-Uk+6YK3NJJsHt25FHqJaz3;T=Iu6Mb`IZZr~CV#A`K^7uTJLUUhOK89w$5BQyS9S1bWKZrq3 zM1S0U#3+dH7}Il2xbSc20+~vJ99uhU@g5IF;!-i#PCBZQP+{-%mYO67ovL+a;vabqDh$v?(U*y zINQiW@BjKTRd^rmB%9(a#i~z@vomCATVm7ciCkmfRVj*bB$HnTtjg)m>IN;|5~+k@vfd-WN=sdLvMeo?*Ly@({A6m@^CYH1O8 zK)ak!06jH5pOutqFk8&3lHNgzGVatK$NsF63`_{COF_7Mc?u`bfutohKCQg}R3#zk z?`R_AhUj1}viZ0A3AcXuQ?I z&ow-JkTT<=oz1BbQ)5+eljzEi=u5YKwPnjv!Zfu`!0GCYhcqdRPHutF9L_OMor)(I z8qeWEy22y6@2U!=^Gx5nJbxkzKh?;YO*W{L2dyY-&d#tf^eS!P+(t1iHgIvbJCKGU zL%~{X<*5>OTPA|F(ac|J`6Bio?R0GW{-mfDjao$#?awkocpLH$(6e=@4qmH9x<5_@ zwvX!s>5vKb65_P++#|d1qPa^vU52MU5r3MHVUEQu5~&qx*^`=kRIzB9gnYU#VFFgy zO7$$YxRSwrwS{f_k@~Uc`cR)KR=>3`6LujmbTg(FtLMf>7ttq%#MFOG8LBBK@kriK z)l-Fu>iOT*GW7c#P30j??1CR!)Gq7|JT=-$3yk~|KEFOF&Jj-Yi2Bw5QV5PgG8mMh)^??q7u_e zg?q=6ddrd)+E5~`l(Mv#D?+8Hh*BA(tQoS*nC*A_eE%5*k z!HjJN@35^b{=2(^*{5?5km1%GL@(4#xenaKOGcK@Er|e~-+9;>RK#Yuw8O_Rc-(Fr5vtHTy=hY~Kt2Rxy6Q&HC04FBX)Asxb#I9Uzt(RVtV-wKHbV2U<6Gc|s*g z+)uCK?>MkFMcdE4UC0PP1_-1(l24Quihm!+>G(iw!>3AZvV(8^w#cR(WwGB+JGSk1 zJwBj>nr?)aY=~4s{~n@dTLK*g+P*zu!rOyR*Did|I%^44c<}EIPjW@xe!PFy zmM*_PwN_ysRh^ikXmUT52xev70pfPx`G!dTYvau|E$wW(=)U({tF3f2Mt;-+8+k7=uGss*Z|(*xdS40*>9&!WnaEQ)0eE-$XV1Qj z+gMGVgkmMT^)?CJELdFMD$9Vy6`OAvupR2=14*H@mvld4) z>DE)iNp)Z+bsvn^l^^S-ZOxExjh!SL?oS#>AcZ)P5&}R}36h!N?8JRwX_wPm{od0b z7hotcrZ0J$rf(|Qxvh(K!Hx<<3Q|{@u;++VD|+b)`w;cA0(%3%ezhmNVn2`{sKE)j zzvVV)bf47-3C=^DJfQ37)^AIlWJNRH1^u?Jk;n&pcOVjC4LorMJn*T*aFKi<4IT!8 zURbl(9>I7)xE}go*Vw=7lcH|gi~o32h2WxlsoN|2_Dy)Zug{!M6NwANC+>IyET;+X&)5^YBsZ(>Ha!Zg=1U#=BOG@Qr@(%A3CzSlj=UVM;#WQ{W z?e&%_31^~0|EkPRQKZG-f)n)138sC(C&fZVBzZf;-skun)4#bh@^Eog1-2e?KugSp z{&c!8)xtoyU)9ZKikB*1Lre?^2Ymy@cSHH%NexApiln{EWXh59Mw)zNE$;bu{FUUk z(TxERbGId5Y)`VbR+xO}7yWeH%GLbEB_?V>F>7Nu!6m~}| zxT!0WfHyg=*_S-{GkVo$Z?J3r27a8TfrXpDDs-*4`TmuaH9`B>IyvMNE3UGajI73; zG0$73>|N3JXPw|g4bXmSMZXmj&z?HrVB*bRzYf5IpOz0U-OG9Mte$q{k6VtY^R|%H zw8$fOs_U17U?0$SUvZUcNc%T+B$C@S{ICGTm>AH1<+$)%6Z~T)ElMu?>ME}C!+i0H zVC8q;GPWGh#ZLnCz0B!H5Z?#KxoM<9$goEPz{-I1R`-v#DTzO36h?d2H?ihA04vvT z5$kakTOy}}A9%SY2Sayqw<^1s01agSXLLp6Y~-=uXA`$K!q2K0%jm6WsGL#FI|F(FZm|$w?~rP6 zE_@7hF0tXvEcl@943;0c{LM#ruDeIj&+y{?XkZ=h0?MX@TBPOyHWptrGtdPNQx(t_ z;KSB(5E&gdxLR=F>Mkqot_T*j?Q-ClrG(rT(~R1*A(1_Sd#SSqCX8 zdGxRHby{q)eppQmVK z10gEwVl4MxRmEIk(B`Ib@ZwbSBgn<1sW%*`WgObDZ4yN0?t`T~2cYSS9^aA_N#qwg z;C%5>!Ec`qu(Br#{ti{CM)NifANi-uU(&OR5p89)y_jz0zZDL0d94_Y?x5Mx4vEY~6jfaVk+n@;A zA!QezW$4k!n);cbZ8B`vaX1r}c5|6enrs{4F%RZ%J-S0u$(QuVGc0EyN!M2o88Y)( z;lRO`h>v-gc=y7GyJYKdsIM4XGik(IdxKJdbV>2lPEK&Le?C~ERKD!>Ow%= zazps$4%JHCvN!!a=8U(6Fjw8KP2-BXz|kI;aupo>3}tOL7k~wCpU!-W@dTaQ@h#h|v?35jqVLy-+Epr* zSPJ-uSXnX1b{8jFJuLLMu^XkRpi4jy?Y(sm@_kl*xnnZ3j|S zI_T|#cJ0xS7ExQ8V0~nMLi?Jn9L~FFk7`=xkWQ%&FB}fLg(u&&m=E0m&R=G)L4PwW zuM>az)m{7Y*DtnC3kbV_+|mOA)r7a>wW9?)U-mrs)Eb-kC+%wD1Wi62E-JtVJNfnQ z68G9W6z23`ZlcDrR-j`i+GC-DRRF>TlJy^?ti_Y>?EcD{onXOZSq^~apW8@8xyQ9SubV@EoTc#?AE)QZjiul0#ilC2_eLxoL41Jk z#2CN_Wc^GF{%f1-j0>Pm=T7tVWRI1vl603yM_IDeHN572o?91f53pcFaqxFF1zZUE z&(_VUT!Nj=rLuAJY% z(avpU+delgys$J;bL`RL(N|1mbt<$&X!5_F-+D@ZFEZ%p0;cu<*Aob!ul;{RYJ)-zt%!)cF9%o#IkRMFg-J#J-KU zbVN68C6YJ6q_0_M1kC%x5!du%urY;K@)LXrALN4r! zU$lgyhord9XLpT7bn$>O@3sk+e1tL&IGzQ%GlA>?SE9=kL%x_0Fp1oRQkIFoVW-b+ zKUv3ZQylZiu~QF>>{4VWTD!3LT_-Hj*($w`W0oy0RAK%J35Y}Of%22c;L0U4HC}9O z>7G{Du~GvV+1 z0ez$a!N$tSncbtrmOwYzvu#NT0gKIa;E3X(wLfI;u}MNJUAbaq!Lx1hVW2I@q8o_c zW&0Aq5SIB3QIh&3<5XM6a{+P}98NtQ75OacUZa{K4uoAyiwGD|;Qp%aii9EX* z693kK<$H8s(F9Gc`5Dq1gF8q790n5#WWq)0n z7<^eZogb#SpeL~sgJPITo`A8d*scF$T>0sAI>B&h3jf2)K-$)o0#hI{>J(}g%mA`Y zIKSlQ5#vSh*>1)$$$lqUdhb-z*nJFycqcPaiFC~)7_X_pxrhOqz1Ig$d7`f(dI9^N zw-v}!pK>XXOz~^aamgO(b;-GrL58YpbNLTkzU{XGfO)(FYD3FTp(hho{e71q-1Hb- zwG5p8FJOZdlpXuy_O`z)N}{ttdYy3UFijsHE{grCjnH(+K!klV(;V_#`*$Ib_b^L# z9$E1;Hn;_xvwlZrKHvJMFik* z*$Rxk!3s*8$zmmfQX@;*s!ebtXkzWL%>$s5oTC7~!FFhsg3H@&zxEx0e$c6+T!#YI zC4-5FG6;Hq0eShB_4A+fclGmRowVhE=J2u#(oPmx<(lF={yj1(DVi}#QF>=dICqgS zF$jXwN$An1H9a*_@t*^KD>CKZigC<`nfFMe?&#SllJnbbggK=HlF&Y7kn{8x?I!;G zUadx%sEH*K+CtbNn?z&y_1jebdO*;LMwYstttSi?VP zyJVPh&+YGwUt6MG8so5}$p^#7ZBx`qs!9zU{EL;=?oBv36&n8%D*3$C?&28*hsd{} z^L1N#p%Ga-OlI;3p6roc$db<`ij-GlZ+@T@Qzbd`3p*3+sPU|5NhNT~cIe(-6{<+* z@?|ytVH|3iqIpjtIW$Z*>Aym{qFvbSEF0N{jko)3eo!bgABoX6TDU4vR|+DR0CbBb z#OmYIAe6TiFuI?!N?(zTkaTq#uX9 zBIAolE?YIIG7A2i^{c@(k9!7e7cl-OHqn@lz&7*Qc*YdIdHwX`zN%jOF%>fKYl&GD zoxQiqd)y0u^38&)8laPEw$Xg{$XxPT9_7(YauyFQz;IO_jr|U_L1OQogOI7XZ=^%D z0u%a+|Gp_J1mAYZLiZfiW3RU4QUC|M1K>aofGY1Z@}`teV;NI0?{i~MUK1RGq*!{8 zkW#K_*I*rn0wzE*B&OR{G55b`E=D1bm3-khD`y=u=fTQn9W=5GQ|&5vxvamK;Dg+K zINXSxgSOux7z+;oD;0LQ6dvQKHkj~p@}KwHbzSj21Px!OGVU8mMhgn1*$u3Da!YyA zP<5|!b9p6E?-untu7Z2Z!9ol8F(*&&Vr@}Do2xu(CHaK=eX8o{w<`l3kMDrH}$y;XDQT8`KiM;k_m~J zHQLXxVM0U4q%TU3RC!QV?E^AhO0dmU3JKW-z0Z&qMI28psn5d#KOw}RZwYdGIV?WS zlgzAz|CUYKa?~K1G1N&FL_G$;;;H0~$LY@Q07rwXh?Fv0aFEAS)lH%BXr1hJU(C;c zJ-r;l_M+8CXdc%T;u$7fgbaK)&I^Gs074E{G4GuPK`8LTF6RAvMX|5!g;c#q=!ezV zD$EbZN7ZU;%_j}TpI>VSJx;|xpMM_J!#O#zwMxozkl@pwQ_-=xes{LqY)pX$kB#Zf zlb@BfL1yt=SFL#OgPzsPRIiO)}&A;-Mh6T+&yT zDK{*}q29NXSb@~?KTVjq{7f!qDTeu>=fg|jpBT8;IYVSX^PVzSby^`pPS+7zL^4vk zZ68K4tmH=Sty?e=38Pb}E=oGw>xM`;&^gd#d+1z}g}*B}op^7Fys&V_4`t*E4L%9| zL^|8N85fRT-vZ_1kSPln5>!0BsGNgMJ-5F6r;I8Ds{40tUt$xqegHF9LOSo^)j1vhdniBS%~yhKqYkibS1djIkxHZ!v{&z{bn2Lm?C5TJ^*>XSb=yj@#Q-Sr zIX?GhdLxqz8kgX=jFOQ}hg7sx(XH#PJ07fT+De3LC{c3Z0K-i-EG)Bj1<9#pN&6wy zPAtbyx}7xG59;Ko<8R2E6u#V~^NVrdLsg9lKVnaHU)DnyQ}!nK{YR)_W7opGyWF8V zYPt1l()xLzv#p81WoOt0g_U-n7pB~1_$T6@!1B=@;`wjJ7y~{1!xn!WNQV3`%^SaK zEw-oo4+9pONvl`Z9$UYBe&IQ{duBsH(Q<&fMUtTchX9N_nfDeKZWu70STA!3UAl1wB=+r@9rVdbI(CuAjB27Z} zzv2IA{JE!&Pv9$#C(5Xzqb8g%w35rISFxsE(xnuudUZy$H(9~{U| ztnX&*kz^c@+;T!kx3q4QsbQftC+c4=F;&ponzfPZ{9JO9Ud`SvG8Q*Xm0 zO^<0Gg$DgXKOJE90gV+1P#(W5pIXAe__VyE9zR#ot% z@NODo=|@ONow~7CgXlpSH9bbEy=h@_Ee|>8Homfd>Wa1W%_7;k7~V=}*(TY%6k?ek zV1oO*!-al+5^(6R-4CsggL3+Adqn>s45T&46#H#I*iMe=4D@gZ2iyB-=eS<@27ES` zeG$HX2M(xVm{uwcy`~EqL0Dm*+^|0;Ms!QrF70~1F%CVdSA7~G!uGX9a7vJ2Ob<<+ zilkPDJ*?XHq#T|c&~e4CJC5Y!2jjy}u(#R&ZU4>6HR`&N@5Ss~Qk|P?8df&5S1z2X z$ChKuWuFR=6?E5mOPaU`jJo_Ph*&|=^3zDmn#X~uQ~Rl>KJnBgi)U`Ep;F$SoMpo3g5e^tK77y zz)yz*3zDxVsz5P+Y$S>wV*v53iK@*Q2u9r8L#!Y({}LG~(ylVT8CY5NROxgKwR*?L zvYjI1(8LeI?ln(=L#K|{NtnMxKIT27_|;kWCzi_NpqT@v4-#fW1C~3;-A)H+ywJMNiNdMpldcb`Eu%xNCLE8=l zYE;9?gO|qpPae_DM_%aSH%hHg7F9fZL12;2n>Zss3<{V}mZ@)4Vb%~*6nqyz7JE{2 zG+74+FOYoX`p@pyGZWJ53ThW)Da$jhu_DTZ(_}sE4bSuQ#Gdzz<558VYbRUc-J<47PiTgGIFSK&n)r@jL3?|h>P za?Sg#30Y^8n)*i{YD3s3MN_+KmI_a<=EeWBFZqB@2JgW~!XU2m)Aj+so0J3kEB}D+ zn)G8&@0tVZQe=%g-_Gn3?j$u+pl2sAfbI^2@lblsme=0MdNCIu>LjRv`!<8C8RJ;0 zsr{j2Q@gjl;thhpxdS_xxj0*~Ds=o}o%B@QmATm;IRIP^-~UR<;AMWq(dV_jw)0g< z(u^WSe%qGwbF|ye))KUP_gVqU+yXrfGM;y)EN!=(ngV=u zrdo*n+mRZLwe#)tE~(LdSw^Qa{*%wg<^624PZC@CULSeQZ**tp&TLPVZ%*SiVT)#= zSVsdEyI|&Z#Dft6Xm-+P9Jic|tr@cVMko1XfqdOJLrql9$Gz09v$_(|`vjqdHG?hx zIhNMgrECoFH?1fs~A&O+nQ0(}O zUw_$TnbRE$zUbL^diJ1`RbCL&?jgQ?F+Th)|EoJYc86fie>_(V^EDo2HFVp);Vs&O z;k-Bjg}$pjDCf;P0N;i79Pz^NHGUR51qVB#g-yA%2IgsLe>bI}CyoLykS{OU3%#*n zZ`?sQ1*m1Qhhfn01%f9y57lN z)W~P?Ko~2~aOxk)44%OdSp9xz@ZPTww4mo~xRD)Kz7y2FjC7?faQ9_W1in^!FAXi(C|&$ zB(Zn%Ct+yLHsBM@^=`HPWn=mkI00C&AbCToGXgu|2?_XnF&fNkMFizpxH z{zl0|Hj*sX56`-f;}=7!X!`I4SPjE#UFhowWK0N1BFoif$1o&S}+>j{5f2O*wTdAIO`qo}y zY%jcUrFydRB$x_*E>MK0JiyT`UVSAj&BTb;rjz2HP9PD6z&k_1es?CWK8msmVn%+8 zraDh#)M2HV76-#8M@f=vM#tu!#Inq0D8f&euBT&xD0>xWKpo6jWtN?7QXY;cWq2hs zW&hn1m{Uhu(Smv0{gSbFvI!^otJ!DR?Z3Q~Wrd!kMI@h}_T#5e2$)lW1{OO@Hc#b> z*GSwIvJ<(C{a9_D#mYw6l)9T$t4_iqpX_ZLDI{sZi$h;B3~FAM7n3&XtLT#WPOsM( zxUMO?Z158M2e*(8AbQTt_=&htpZ#8+Uq#Q38E;y*^hm>lx3~MYJAQd5H<*dcQ4k8` zM^w|tlPFMG{H;2yUvVSGj!*c!544K8rqNoT5?U!wz>>$^-})b_m%V_TSFEQPZ+oqXs^d$Ovs+7L=Tdt(m&i=HXf1-EJzD@1L0hXTVGP-`0?Bb}~r!fkSiYb`pMU!3KCj+VjJcXgJn@XhQYg z#-FLdvLlmj>q(M?Uz0tD@HffLk6CpBPi^_!R=Af}>p}F5#|t;_Mq^i|=v%9DdzBlqfjhj*q{*DPo)f^}wZ3%!6zLW5Mo+VSDF71Kd(?im*st>ICHzMM%k0 z8B8FT8kytf@^QPj+}}XjluR(T3)l6Kg)WEqS9`#p-DNH^%l_?ipd7Ti^&6gcBgXG* zLEJSb51mP|9qC~IUXY^M{Cu9TtMdYRP4vsEabTl(AdU7&m^PG_(Tzc_yL#)jiFN&@ zhaaIA2A{~&M!Ii87L^I)rQ_qQijs4ZM zq1SMWD*ce!=lA`z5?Z%x#c={s1-?#Lf>S>#_bROejoYrt6N@D}M^!vtAxotPCdL<= z$<*=^Q5b!*VLSTQEDQ-pS8by2WL|+fOcl8S@R+Nx;0;W~P4+;&*cn{nm2~)j&EJ18 zC~)@~MwakZ$<6I-cT)HXLCmJRazhK`DM%P|a+dv%b+))#HGR7bHq%{2RfSubq5A`t zG%-s;2*19T*EuaQqOTtASL=IKXnqCN6~EkRM{_c-^&;LDEvUF7BlXN! zW&K~jX`OCGY;)Wnj;0BP+v_UK5`A2V9&6hwd?cLZpMirD4d zzHdb~a*i32UOB_}`^hK)D>~_MLw-hbJ1HVZoa*DLIV60ruHE+wAa1wuN;b(%XPd2q zbjzQY5pE~nwF0W>fgb*1G%$peQ`rXDtLk2dW~4Z=C&pLJZeQfO z&rZIL#86#2%eQTZziY*n80}W@x2Hd0HSkXH=XCgWuU~yd6g9wOgH-=$jQ1B)n8S4i zI=iK6bLzf?MEqm}nGudzLRML|j1YG~62*LjD9%UCrp-)0R_-ll{gdXcVxo9iOPdBt z?57QvfzM?`Xj}RU>{i2GbEYe<(CqUT!x_gaC6i3>~eJrkZi1q*1W zB2hC-Q`W?|fb0X7pJy#Bts6^4DWB$Vzm48x>;$Gt(Npl^x{(;Vpg3E37y1N$E@K)} z@zE>SCEsO;dJ+`5H&NCR`Rz2Z;iD%e*#G-jBnorDzyVwmlzA@1t!?NR~4z$gSz*yelz(opiQyi180~ z&nb}?l-B*ZA8C$XpETvvzlz>%ffR#RPGd^Ml{4+h=Rv2hRw}{fb!L3S?8G-P;RAUA ziMyHb!+Gi!4cx1eCpI(;WEb?Nt-us{JAS0KQ2SOf=(yCzc|xbqq)2|TgWqgieh1A; zFIF4b)i!@-99|2+4YKrFF-lxM+((gHhok?7_lwXTW|Z`J8dU({2F>& z8xW1xO%xyr2@&Cr_@MePxZi!8BK=PQ9wMSus z?nX`a^xu%Avn=AewRV&%q_`|$kik73QgSSz&cIG>fxmz9&J^@Y;QNm&+jKtMo!c1= zSxbIL@=n2SY>D#a2=skY_wBl*RNZF~d}+m0)#G^O6sS;og7asVx$P=2{LHptULVGV zqwl_4Npateb{V&cA4Oh9bhVnZn0a^Ed9zHT&vaP_#s#{%#TjtZ^x-;Wk}5nfu(b#~TN(mbZ5n+$1V{6durBvVE#4h&|ck*FDQ`aWZbh>rRvr zb>&HU;~| z)Cr0VxBt*fWxI8czd0E-mDNR&rVLN|;tT{HCn&-GT&KCWgkV$I^l=fPpT&Iath9Qq zV&+=4%#Qv~$rYuJU1bWabFz4RvaeVbSS67t3 z&~Hh@+?pnU%Vqn(4G!OsWrv~2tqH3nClnib>{zmT{*9T;w+v&YmJns`eilzTCBtFjj9Pt~mn-{7_)|XdZpR_XST>$INV<$-(1_1{E4CH+pfts2Y#5!M973f*RrP5l>T*n zR@1lgwfEZ5AWLX{9`Rmp6uOd0D4CBw0o3Hq7$|`a$6+dveT?M%!#CxbA;ho_`lENM zX@BV?F>D@WDqB`3#67M@-@+@^6tq<4;oo=`K0r?w$Vi=v>@MvyMqoN1RGDZcG|~!f z-p7;kG~ZaM_?VyBn0)$eh%u+u#AA_XUdJ<)3yYFB`>Af?I!cXY+a=)FzJ?xTWk_Xj zDe?KeVszhTIFuM3?YRpoEQW%3P?9i0p`U`bo!!t}iEoP(I-C8?0;vJjng8Mh1Z7}Zn)u2PaJyM;f}-FuK10(8L`R7_&>Eu#_b3t>#I6>KKd*I<9sjn4OvCkHzkVt z>HEcI*}KssN7Ovp^Mw-uUD3c(H{P|J-k44uL7!UrOod_RokwPQhJ?#A^e2_-3K)W)-KZYa|8XEPTOWC_J;9Gx?Qr2!u?ATuL%z4Gx1N)uc-a#i!A!KEIOUhGnQV&zB{ zPqqAPx4)HaQ`UCn^51jy-{C^Bp@nJcMX>1@aWtBA)eZ`;J$?IoD&HBjUJR>$cf)U< z`U-c+aANdBTO=B8-HbeJsxxE06njx8ds=D<_5;zL3I4&+p7X((V7QdWW;w52N;KR+ zD*?Jzsr=HaCQs6M#QL6-cX$feI$0NDmnqv-vd|x#90PyX)uL=*XFFT8s)dJ_UHOuR zHmsFO+a4r6T*~iTqN_`7g4qSZoqQLu<K&2fLL8Tv8bZ){+!Z35>6+x;}GMk%$o+_jkn%vU?c^>@kUjel>=S5~d+qe>ZV|C_e7qH^Qfw|IzPn@K44OP4=`HNwTPNwFkx|7I&@m(hovnNmdgQoJdS- zp5SyNBEM+nF_NUJ4t|Q$=_a;6zyKg+?Y2`_I34(|Zg)%j3e?>ay zEU?Rng}&*m`JuJyQC@ksh5$RCxcTG?m(HDG2E-I4-m-mo8_PKvvSg zAB06xZ{p~{V){inT6d_WoxjwBpAo6#(w~NYwk*HVMw`!kk0_k*bSt41>X4UfL93B? zVt7pQLsGVU!7tCngbhe)tr}4_xF5n&pePi`OALguaxj?K_0s6ygU;o_lxe>wqO7YP$ zi{8iC>B--$fe`NQvuiDhK%jJLBZG8wcJLKdm^%cNu1EWaZYnY>@aKb41OoeTW%XJ7 zVHzY4_*Gznvymxod`c)HF>kN68&ha_7DVA*`&x1+AueANAdUNuYj~Tt6 z*4C7o_l9&hk+ODnlUX|6aBMO5u#i*r$QNS*Ct^-FY0l)a3Ft_<@!5@N_^vETPmY9G za7#9N4*R)VCn_IYlBoXlJiOx{BML{1{b}5q%OET1u%67}n`KO}|SM?e01 z1JQqZ!3!%~R96z?(fvI|J0FqT$-r$C?v@An;1R2G6Y!lk)0k3^J> zKc3O|?cEZr_A)nysgYEjevbL+3KGa@bb0Zsr-QtphO}Kw&{uy-;U2%VU2%uZ=nNkV zmOB-`HEwf-X8#jfd9jB`f_qA+37D#lX#un7<;^jCSogP-%`Z+ZtR-ES04IY^8n#UO z%^IDVGD(@lMS4=Jt{^AUwSOMoOep+mk}{?ou7 zMREzA2Q4?}&!#_=EX>0mA0@0l;mLOk!kUh1aIASsB@!S+=fPKf2(A$6S2r_yy+}cF zWD)*As3&{3+J^^+&%d@vOhCf_o?I8Z#(inl6z1ga31Z*H8+Mc> zeM#g-6Al=7vP;6a)ALWsbU6*SKP#lr`){-S;uH7>_xG|3vcOPTpq*0zw>HHp-ME|` zl1yF!b{m2c8|_XZm7pin_*Tphz9eY-+N`ZTiZ8HKiUMd&Wq0X2W=qS|9n zrX)4Kk0N+uW=Y{5Rja<+#kKTsmf)UiJmX@1ypz zm&UKUTZ9(x!tXu_E)cjmOen-fsqahsr?2Nt>0Zq}YH2XiV}5!qesdP0X>2G1aa8lm zOI8|iM{+mHPTP8%VzB9dHfNp?)EXj>(z6w0M^(wIIAxZeht=X1%>O5@VIAFz^rQNa z(|{+lH9h-s6VgDl+Z(NxS7XkfaL!>7G+>mzZim>_IpMXXN3{qde=(~xf~uBzktP(# z-DVFnQ0v@nDO4Ecr=I?9bk#^}UlqpD!|Ko})QZrxb$xpo6 zgm^*fFhVXSJ;wZjTv>$mxP1G@6O{FSm^197=oZ`EUV)F^_I#0tKE@LvuAy`ucg2=} z9iI8xL~4KAxFtmsY<|ID=DZe@;%|~fTCgvS;LrV(8jT)N`}j&(g#EO3f8>yfKIu{H zTB$a9L5N$a*mq&b=(&-&-p(bCa7v@0KqU=*mxnQ>k3zLP)wx@(dfr$x#NlFm|pgC<{ zhmZE&l){-(D15HilZj@uHX*-wO1}mv%ntK-E3h?L9%%Q>7FqLQ?lZO8P4yY+QiT|* z-lY#e$V43sIBG8i3QXIt0p9GTZ6@JvrZON;+ayq}n&zQ)Pz#Z7j0Z|*uW`Ka(d%(1 zj0<`x$Sd8vg{F4zh=<9-4D6?LII57A%YNC>SOMED1 z_ByS4T%nNmDNbq+iJggOd>BB2(v4Sh-uV2d>(I2wH+{;5tXHS`vbI3AgZy?1;`cJ{ zZ1khg|50C3ke-qWlNFWK_*O**;HJF$!}AQhnFJtvo=uwJDVd7_a_2s!_uv1^KBoDu zdI(|{CJkBt_iH*myK}HVUl~~}WGMWe)8nk41a Date: Mon, 1 Jun 2026 08:30:03 +0100 Subject: [PATCH 07/10] chore: add manual config apply to hunting query --- .../MicrosoftDefender/v1/dataStreams/advancedHuntingQuery.json | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/MicrosoftDefender/v1/dataStreams/advancedHuntingQuery.json b/plugins/MicrosoftDefender/v1/dataStreams/advancedHuntingQuery.json index e2053f5..65ef643 100644 --- a/plugins/MicrosoftDefender/v1/dataStreams/advancedHuntingQuery.json +++ b/plugins/MicrosoftDefender/v1/dataStreams/advancedHuntingQuery.json @@ -35,6 +35,7 @@ ], "supportsNoneTimeframe": true, "providesPluginDiagnostics": true, + "manualConfigApply": true, "tags": [], "ui": [ { From 1063f37d69d92b5bc3a9f5c37a1d5fbbce9bca75 Mon Sep 17 00:00:00 2001 From: jame2O Date: Tue, 2 Jun 2026 07:58:02 +0100 Subject: [PATCH 08/10] chore: manual config apply for alerts and incidents --- plugins/MicrosoftDefender/v1/dataStreams/alerts.json | 1 + plugins/MicrosoftDefender/v1/dataStreams/incidents.json | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/MicrosoftDefender/v1/dataStreams/alerts.json b/plugins/MicrosoftDefender/v1/dataStreams/alerts.json index 993a4d6..eb0015a 100644 --- a/plugins/MicrosoftDefender/v1/dataStreams/alerts.json +++ b/plugins/MicrosoftDefender/v1/dataStreams/alerts.json @@ -48,6 +48,7 @@ "lastYear" ], "supportsNoneTimeframe": true, + "manualConfigApply": true, "providesPluginDiagnostics": true, "tags": [], "ui": [ diff --git a/plugins/MicrosoftDefender/v1/dataStreams/incidents.json b/plugins/MicrosoftDefender/v1/dataStreams/incidents.json index d95529e..cc76b96 100644 --- a/plugins/MicrosoftDefender/v1/dataStreams/incidents.json +++ b/plugins/MicrosoftDefender/v1/dataStreams/incidents.json @@ -49,6 +49,7 @@ ], "supportsNoneTimeframe": true, "providesPluginDiagnostics": true, + "manualConfigApply": true, "tags": [], "ui": [ { From 284da4c8d93a41457211ef7d9c929ae4061a2dae Mon Sep 17 00:00:00 2001 From: jame2O Date: Tue, 2 Jun 2026 08:01:47 +0100 Subject: [PATCH 09/10] chore: rename Defender Device source type to device --- .../MicrosoftDefender/v1/custom_types.json | 4 +-- .../v1/dataStreams/Vulnerabilities.json | 4 +-- .../v1/dataStreams/devices.json | 4 +-- .../v1/dataStreams/recommendations.json | 2 +- .../Devices/deviceStatus.dash.json | 26 +++++++++---------- .../v1/defaultContent/cockpit.dash.json | 2 +- .../defaultContent/recommendations.dash.json | 2 +- .../v1/defaultContent/scopes.json | 6 ++--- .../v1/indexDefinitions/default.json | 2 +- 9 files changed, 26 insertions(+), 26 deletions(-) diff --git a/plugins/MicrosoftDefender/v1/custom_types.json b/plugins/MicrosoftDefender/v1/custom_types.json index 23ac01b..e7aa71f 100644 --- a/plugins/MicrosoftDefender/v1/custom_types.json +++ b/plugins/MicrosoftDefender/v1/custom_types.json @@ -1,7 +1,7 @@ [ { - "name": "Defender Device", - "sourceType": "Defender Device", + "name": "device", + "sourceType": "device", "icon": "server", "singular": "Device", "plural": "Devices" diff --git a/plugins/MicrosoftDefender/v1/dataStreams/Vulnerabilities.json b/plugins/MicrosoftDefender/v1/dataStreams/Vulnerabilities.json index 4e2a8a1..218c04e 100644 --- a/plugins/MicrosoftDefender/v1/dataStreams/Vulnerabilities.json +++ b/plugins/MicrosoftDefender/v1/dataStreams/Vulnerabilities.json @@ -26,7 +26,7 @@ "name": "DeviceName", "shape": "string", "role": "label", - "sourceType": "Defender Device" + "sourceType": "device" }, { "pattern": ".*" @@ -35,7 +35,7 @@ "matches": { "sourceType": { "type": "equals", - "value": "Defender Device" + "value": "device" } }, "timeframes": false, diff --git a/plugins/MicrosoftDefender/v1/dataStreams/devices.json b/plugins/MicrosoftDefender/v1/dataStreams/devices.json index c1afcae..13ced7c 100644 --- a/plugins/MicrosoftDefender/v1/dataStreams/devices.json +++ b/plugins/MicrosoftDefender/v1/dataStreams/devices.json @@ -25,7 +25,7 @@ "name": "DeviceName", "shape": "string", "role": "label", - "sourceType": "Defender Device" + "sourceType": "device" }, { "shape": [ @@ -55,7 +55,7 @@ "matches": { "sourceType": { "type": "equals", - "value": "Defender Device" + "value": "device" } }, "timeframes": false, diff --git a/plugins/MicrosoftDefender/v1/dataStreams/recommendations.json b/plugins/MicrosoftDefender/v1/dataStreams/recommendations.json index e4953fd..cd1d7ec 100644 --- a/plugins/MicrosoftDefender/v1/dataStreams/recommendations.json +++ b/plugins/MicrosoftDefender/v1/dataStreams/recommendations.json @@ -23,7 +23,7 @@ "matches": { "sourceType": { "type": "equals", - "value": "Defender Device" + "value": "device" } }, "timeframes": false, diff --git a/plugins/MicrosoftDefender/v1/defaultContent/Devices/deviceStatus.dash.json b/plugins/MicrosoftDefender/v1/defaultContent/Devices/deviceStatus.dash.json index 82b0a2a..8580165 100644 --- a/plugins/MicrosoftDefender/v1/defaultContent/Devices/deviceStatus.dash.json +++ b/plugins/MicrosoftDefender/v1/defaultContent/Devices/deviceStatus.dash.json @@ -16,16 +16,16 @@ "config": { "timeframe": "none", "variables": [ - "{{variables.[Defender Device]}}" + "{{variables.[device]}}" ], "dataStream": { "name": "devices", "id": "{{dataStreams.devices}}" }, "scope": { - "variable": "{{variables.[Defender Device]}}", + "variable": "{{variables.[device]}}", "workspace": "{{workspaceId}}", - "scope": "{{scopes.[Defender Devices]}}" + "scope": "{{scopes.[devices]}}" }, "_type": "tile/data-stream", "description": "", @@ -57,7 +57,7 @@ "config": { "timeframe": "none", "variables": [ - "{{variables.[Defender Device]}}" + "{{variables.[device]}}" ], "dataStream": { "name": "devices", @@ -91,9 +91,9 @@ "id": "{{dataStreams.devices}}" }, "scope": { - "variable": "{{variables.[Defender Device]}}", + "variable": "{{variables.[device]}}", "workspace": "{{workspaceId}}", - "scope": "{{scopes.[Defender Devices]}}" + "scope": "{{scopes.[devices]}}" }, "_type": "tile/data-stream", "description": "", @@ -125,16 +125,16 @@ "config": { "timeframe": "none", "variables": [ - "{{variables.[Defender Device]}}" + "{{variables.[device]}}" ], "dataStream": { "name": "devices", "id": "{{dataStreams.devices}}" }, "scope": { - "variable": "{{variables.[Defender Device]}}", + "variable": "{{variables.[device]}}", "workspace": "{{workspaceId}}", - "scope": "{{scopes.[Defender Devices]}}" + "scope": "{{scopes.[devices]}}" }, "_type": "tile/data-stream", "description": "", @@ -260,16 +260,16 @@ "config": { "timeframe": "none", "variables": [ - "{{variables.[Defender Device]}}" + "{{variables.[device]}}" ], "dataStream": { "name": "devices", "id": "{{dataStreams.devices}}" }, "scope": { - "variable": "{{variables.[Defender Device]}}", + "variable": "{{variables.[device]}}", "workspace": "{{workspaceId}}", - "scope": "{{scopes.[Defender Devices]}}" + "scope": "{{scopes.[devices]}}" }, "_type": "tile/data-stream", "description": "", @@ -388,6 +388,6 @@ "columns": 4 }, "variables": [ - "{{variables.[Defender Device]}}" + "{{variables.[device]}}" ] } \ No newline at end of file diff --git a/plugins/MicrosoftDefender/v1/defaultContent/cockpit.dash.json b/plugins/MicrosoftDefender/v1/defaultContent/cockpit.dash.json index 5346e99..6cf5700 100644 --- a/plugins/MicrosoftDefender/v1/defaultContent/cockpit.dash.json +++ b/plugins/MicrosoftDefender/v1/defaultContent/cockpit.dash.json @@ -76,7 +76,7 @@ } }, "scope": { - "query": "g.V().order().by('__name').hasNot('__canonicalType').or(__.has(\"sourceType\", \"Defender Device\")).limit(500)", + "query": "g.V().order().by('__name').hasNot('__canonicalType').or(__.has(\"sourceType\", \"device\")).limit(500)", "bindings": {}, "queryDetail": {} }, diff --git a/plugins/MicrosoftDefender/v1/defaultContent/recommendations.dash.json b/plugins/MicrosoftDefender/v1/defaultContent/recommendations.dash.json index 0d813fa..213e15e 100644 --- a/plugins/MicrosoftDefender/v1/defaultContent/recommendations.dash.json +++ b/plugins/MicrosoftDefender/v1/defaultContent/recommendations.dash.json @@ -103,7 +103,7 @@ } }, "scope": { - "query": "g.V().order().by('__name').hasNot('__canonicalType').or(__.has(\"sourceType\", \"Defender Device\")).limit(500)", + "query": "g.V().order().by('__name').hasNot('__canonicalType').or(__.has(\"sourceType\", \"device\")).limit(500)", "bindings": {}, "queryDetail": {} }, diff --git a/plugins/MicrosoftDefender/v1/defaultContent/scopes.json b/plugins/MicrosoftDefender/v1/defaultContent/scopes.json index 7e8fa0b..9b79bd0 100644 --- a/plugins/MicrosoftDefender/v1/defaultContent/scopes.json +++ b/plugins/MicrosoftDefender/v1/defaultContent/scopes.json @@ -10,17 +10,17 @@ } }, { - "name": "Defender Devices", + "name": "devices", "matches": { "sourceType": { "type": "oneOf", "values": [ - "Defender Device" + "device" ] } }, "variable": { - "name": "Defender Device", + "name": "device", "type": "object", "default": "none", "allowMultipleSelection": false diff --git a/plugins/MicrosoftDefender/v1/indexDefinitions/default.json b/plugins/MicrosoftDefender/v1/indexDefinitions/default.json index 6e46995..b84def4 100644 --- a/plugins/MicrosoftDefender/v1/indexDefinitions/default.json +++ b/plugins/MicrosoftDefender/v1/indexDefinitions/default.json @@ -10,7 +10,7 @@ "id": "DeviceId", "name": "DeviceName", "type": { - "value": "Defender Device" + "value": "device" }, "properties": [ "OSPlatform", From 6b97fb02ec2e8fc91b0d40bea918b6e99b1f6547 Mon Sep 17 00:00:00 2001 From: jame2O Date: Tue, 2 Jun 2026 10:41:04 +0100 Subject: [PATCH 10/10] feat: update device status OOB dash --- .../Devices/deviceStatus.dash.json | 172 +++++++++++------- 1 file changed, 108 insertions(+), 64 deletions(-) diff --git a/plugins/MicrosoftDefender/v1/defaultContent/Devices/deviceStatus.dash.json b/plugins/MicrosoftDefender/v1/defaultContent/Devices/deviceStatus.dash.json index 8580165..7d788bc 100644 --- a/plugins/MicrosoftDefender/v1/defaultContent/Devices/deviceStatus.dash.json +++ b/plugins/MicrosoftDefender/v1/defaultContent/Devices/deviceStatus.dash.json @@ -100,7 +100,7 @@ "activePluginConfigIds": [ "{{configId}}" ], - "title": "Sensor Health State", + "title": "Health State (Sensor)", "visualisation": { "type": "data-stream-blocks", "config": { @@ -113,6 +113,86 @@ } } }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 2, + "y": 0, + "i": "86c6198e-d8a3-456e-a014-fb14a079f058", + "z": 0, + "config": { + "timeframe": "none", + "variables": [ + "{{variables.[device]}}" + ], + "dataStream": { + "name": "devices", + "id": "{{dataStreams.devices}}" + }, + "scope": { + "variable": "{{variables.[device]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Asset Value", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "AssetValue", + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 3, + "x": 3, + "y": 0, + "i": "951c5d29-1b5c-4509-a83c-70e183ddc881", + "z": 0, + "config": { + "timeframe": "none", + "variables": [ + "{{variables.[device]}}" + ], + "dataStream": { + "name": "devices", + "id": "{{dataStreams.devices}}" + }, + "scope": { + "variable": "{{variables.[device]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[devices]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Last Seen", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "Timestamp", + "comparisonColumn": "none" + } + } + } + } + }, { "static": false, "w": 2, @@ -281,77 +361,28 @@ "type": "data-stream-table", "config": { "data-stream-table": { - "columnOrder": [ - "DeviceId", - "PublicIP", - "ConnectivityType", - "OSPlatform", - "OSBuild", - "OSArchitecture", - "OSVersion", - "OSDistribution", - "OSVersionInfo", - "OsBuildRevision", - "ClientVersion", - "HardwareUuid" - ], "hiddenColumns": [ - "@odata.context", - "mergedIntoMachineId", - "isPotentialDuplication", - "isExcluded", - "exclusionReason", - "firstSeen", - "lastSeen", - "healthStatus", - "deviceValue", - "rbacGroupId", - "rbacGroupName", - "riskScore", - "exposureLevel", - "isAadJoined", - "aadDeviceId", - "onboardingStatus", - "managedBy", - "managedByStatus", - "ipAddresses.0.ipAddress", - "ipAddresses.0.macAddress", - "ipAddresses.0.type", - "ipAddresses.0.operationalStatus", - "ipAddresses.1.ipAddress", - "ipAddresses.1.macAddress", - "ipAddresses.1.type", - "ipAddresses.1.operationalStatus", - "ipAddresses.2.ipAddress", - "ipAddresses.2.macAddress", - "ipAddresses.2.type", - "ipAddresses.2.operationalStatus", - "ipAddresses.3.ipAddress", - "ipAddresses.3.macAddress", - "ipAddresses.3.type", - "ipAddresses.3.operationalStatus", - "healthStatus[Expanded].rawState", - "computerDnsName", - "exposureLevel[Expanded].rawState", + "DeviceId", "Timestamp", "DeviceName", + "ClientVersion", + "PublicIP", + "OSArchitecture", "OSBuild@odata.type", + "OSBuild", "IsAzureADJoined@odata.type", "IsAzureADJoined", - "JoinType", "AadDeviceId", "LoggedOnUsers", "RegistryDeviceTag", - "MachineGroup", "ReportId@odata.type", "ReportId", - "OnboardingStatus", "AdditionalFields", - "DeviceCategory", - "DeviceType", "DeviceSubtype", "Model", "Vendor", + "OSDistribution", + "OSVersionInfo", "MergedDeviceIds", "MergedToDeviceId", "SensorHealthState", @@ -359,9 +390,9 @@ "IsExcluded", "ExclusionReason", "ExposureLevel", - "AssetValue", "DeviceManualTags", "DeviceDynamicTags", + "HardwareUuid", "CloudPlatforms", "AzureVmId", "AzureResourceId", @@ -370,21 +401,34 @@ "AwsResourceName", "IsTransient@odata.type", "IsTransient", + "OsBuildRevision", "HostDeviceId", - "MitigationStatus", - "FirmwareVersions", + "ConnectivityType", "DiscoverySources", - "DlpInfo", - "ExposureLevel[Expanded].rawState" + "FirmwareVersions", + "ExposureLevel[Expanded].rawState", + "OSPlatform", + "OSVersion", + "DlpInfo" ], - "transpose": true + "transpose": true, + "columnOrder": [ + "DeviceCategory", + "DeviceType", + "AssetValue", + "JoinType", + "MachineGroup", + "OnboardingStatus", + "MitigationStatus" + ], + "columnDisplayNames": {} } } } } } ], - "version": 28, + "version": 42, "columns": 4 }, "variables": [