ApexSQL DevOps toolkit - Deploy

Octopus.Script exported 2020-08-20 by ApexSQLtechops belongs to ‘ApexSQL’ category.

This step will execute schema and data synchronization scripts created as deployment resource after comparison is done.

ApexSQL DevOps toolkit - Sync and/or ApexSQL DevOps toolkit - Sync data steps are reqiured

Parameters

When steps based on the template are included in a project’s deployment process, the parameters below can be set.

Retrieve package from

DownloadPackageStepName =

Select the step from which the synchronization sripts package can be sourced

Export location

ExportPath =

The location for exported deployment resources. Provide the path used for synchronization steps. All tentacles used in database deployment steps should have access to the chosen location

SQL Server

ServerName =

Provide the SQL Server name for the deployment target database

Database

Database =

The target database for the deployment of schema and data synchronization scripts.

Username

Username =

The account name used for SQL authentication method. Windows authentication method with the account that runs the Tentacle service will be used for SQL Server connection if left empty

Password

Password =

Enter password for chosen account used for SQL authentication method. Leave empty if Windows authentication method is used

Script body

Steps based on this template will execute the following PowerShell script.

$schemaSyncScript = ''
$dataSyncScript = ''
$schemaSyncQuery = ''
$dataSyncQuery= ''
$query = ''

function AddArtifact() {
    Param(
        [Parameter(Mandatory = $true)]
        [string]$artifact
    )
    if (Test-Path $artifact) {
        New-OctopusArtifact $artifact
    }
}

function Get-ParamValue
{
    param
    (
        [Parameter(Mandatory = $true)]
        [String] $ParamName
    )
    if($OctopusParameters -and ($OctopusParameters["$($ParamName)"] -ne $null))
    {
        # set the variable value
        return $OctopusParameters["$($ParamName)"]
    }
    else
    {
        # warning
        return $null
    }
}

$exportPath = '#{ExportPath}'
$PackageDownloadStepName = '#{PackageDownloadStepName}'

$projectId = $OctopusParameters["Octopus.Project.Id"]
$releaseNumber = $OctopusParameters["Octopus.Release.Number"]
$nugetPackageId = $OctopusParameters["Octopus.Action[$PackageDownloadStepName].Package.NuGetPackageId"]
$exportPath = Join-Path (Join-Path $exportPath $projectId) $releaseNumber

$defaultSchemaSyncScript = $OctopusParameters["Octopus.Action[$PackageDownloadStepName].Output.Package.InstallationDirectoryPath"] + '\SchemaSyncScript.sql'
$defaultDataSyncScript = $OctopusParameters["Octopus.Action[$PackageDownloadStepName].Output.Package.InstallationDirectoryPath"] + '\DataSyncScript.sql'

New-Item -Path $exportPath -Name "DeploySummary.txt" -ItemType "file" -Force | Out-Null
$deploySummary = $exportPath + "\DeploySummary.txt"

$schemaSyncScript = $exportPath + '\SchemaSyncScript.sql'
$dataSyncScript = $exportPath + '\DataSyncScript.sql'
$serverName = Get-ParamValue -ParamName 'ServerName'
  $database = Get-ParamValue -ParamName 'Database'
  $username = Get-ParamValue -ParamName 'Username'
  $password = Get-ParamValue -ParamName 'Password'
  $auth = ''
  
  if (-not ($null -eq $username -and $null -eq $password))
  {	
      $auth = " -U ""$($username)"" -P ""$($password)"""
  }
  else
  {	
      $auth = " -E"
  }

$sqlcmdProps = "sqlcmd.exe -S ""$($serverName)"" -d ""$($database)""$auth -b -i"
	if(Test-Path $schemaSyncScript) 
    {
		$result = Invoke-Expression -Command "$sqlcmdProps ""$schemaSyncScript"""
        $content = "Sync summary: " + $result
        if (Test-Path $deploySummary)
        {
        	Add-Content $deploySummary $content
        }
	}
  	if(Test-Path $dataSyncScript) 
    {
		$result = Invoke-Expression -Command "$sqlcmdProps ""$dataSyncScript"""
        $content = "Sync data summary: " + $result
        if (Test-Path $deploySummary)
        {
        	Add-Content $deploySummary $content
        }
	}

	if(Test-Path $defaultSchemaSyncScript) 
    {
		$result = Invoke-Expression -Command "$sqlcmdProps ""$defaultSchemaSyncScript"""
	}
    if(Test-Path $defaultDataSyncScript) 
    {
		$result = Invoke-Expression -Command "$sqlcmdProps ""$defaultDataSyncScript"""
	}

AddArtifact("$deploySummary")

Provided under the Apache License version 2.0.

Report an issue

To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.

{
  "Id": "42412324-a768-4943-baf8-bfe26ed2dff3",
  "Name": "ApexSQL DevOps toolkit - Deploy",
  "Description": "This step will execute schema and data synchronization scripts created as deployment resource after comparison is done. \n\nApexSQL DevOps toolkit - Sync and/or ApexSQL DevOps toolkit - Sync data  steps are reqiured",
  "Version": 2,
  "ExportedAt": "2020-08-20T11:36:52.048Z",
  "ActionType": "Octopus.Script",
  "Author": "ApexSQLtechops",
  "Packages": [],
  "Parameters": [
    {
      "Id": "ad2fad54-09c4-4210-adbc-ab238632cd67",
      "Name": "DownloadPackageStepName",
      "Label": "Retrieve package from",
      "HelpText": "Select the step from which the synchronization sripts package can be sourced",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "StepName"
      }
    },
    {
      "Id": "b899f7a2-49dd-4193-8640-54e815996e02",
      "Name": "ExportPath",
      "Label": "Export location",
      "HelpText": "The location for exported deployment resources. Provide the path used for synchronization steps. All tentacles used in database deployment steps should have access to the chosen location",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "f0886e0e-f592-4fd7-ba04-8191224f3436",
      "Name": "ServerName",
      "Label": "SQL Server",
      "HelpText": "Provide the SQL Server name for the deployment target database",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "d1358f62-a3ff-4e24-b46c-036e33ff40f4",
      "Name": "Database",
      "Label": "Database",
      "HelpText": "The target database for the deployment of schema and data synchronization scripts.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "6572b012-7386-4bae-ae31-e72ac19e5171",
      "Name": "Username",
      "Label": "Username",
      "HelpText": "The account name used for SQL authentication method. Windows authentication method with the account that runs the Tentacle service will be used for SQL Server connection if left empty",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "d97dbe49-ccec-4be3-81a8-e356365aa250",
      "Name": "Password",
      "Label": "Password",
      "HelpText": "Enter password for chosen account used for SQL authentication method. Leave empty if Windows authentication method is used",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "Sensitive"
      }
    }
  ],
  "Properties": {
    "Octopus.Action.Script.ScriptSource": "Inline",
    "Octopus.Action.Script.Syntax": "PowerShell",
    "Octopus.Action.Script.ScriptBody": "$schemaSyncScript = ''\n$dataSyncScript = ''\n$schemaSyncQuery = ''\n$dataSyncQuery= ''\n$query = ''\n\nfunction AddArtifact() {\n    Param(\n        [Parameter(Mandatory = $true)]\n        [string]$artifact\n    )\n    if (Test-Path $artifact) {\n        New-OctopusArtifact $artifact\n    }\n}\n\nfunction Get-ParamValue\n{\n    param\n    (\n        [Parameter(Mandatory = $true)]\n        [String] $ParamName\n    )\n    if($OctopusParameters -and ($OctopusParameters[\"$($ParamName)\"] -ne $null))\n    {\n        # set the variable value\n        return $OctopusParameters[\"$($ParamName)\"]\n    }\n    else\n    {\n        # warning\n        return $null\n    }\n}\n\n$exportPath = '#{ExportPath}'\n$PackageDownloadStepName = '#{PackageDownloadStepName}'\n\n$projectId = $OctopusParameters[\"Octopus.Project.Id\"]\n$releaseNumber = $OctopusParameters[\"Octopus.Release.Number\"]\n$nugetPackageId = $OctopusParameters[\"Octopus.Action[$PackageDownloadStepName].Package.NuGetPackageId\"]\n$exportPath = Join-Path (Join-Path $exportPath $projectId) $releaseNumber\n\n$defaultSchemaSyncScript = $OctopusParameters[\"Octopus.Action[$PackageDownloadStepName].Output.Package.InstallationDirectoryPath\"] + '\\SchemaSyncScript.sql'\n$defaultDataSyncScript = $OctopusParameters[\"Octopus.Action[$PackageDownloadStepName].Output.Package.InstallationDirectoryPath\"] + '\\DataSyncScript.sql'\n\nNew-Item -Path $exportPath -Name \"DeploySummary.txt\" -ItemType \"file\" -Force | Out-Null\n$deploySummary = $exportPath + \"\\DeploySummary.txt\"\n\n$schemaSyncScript = $exportPath + '\\SchemaSyncScript.sql'\n$dataSyncScript = $exportPath + '\\DataSyncScript.sql'\n$serverName = Get-ParamValue -ParamName 'ServerName'\n  $database = Get-ParamValue -ParamName 'Database'\n  $username = Get-ParamValue -ParamName 'Username'\n  $password = Get-ParamValue -ParamName 'Password'\n  $auth = ''\n  \n  if (-not ($null -eq $username -and $null -eq $password))\n  {\t\n      $auth = \" -U \"\"$($username)\"\" -P \"\"$($password)\"\"\"\n  }\n  else\n  {\t\n      $auth = \" -E\"\n  }\n\n$sqlcmdProps = \"sqlcmd.exe -S \"\"$($serverName)\"\" -d \"\"$($database)\"\"$auth -b -i\"\n\tif(Test-Path $schemaSyncScript) \n    {\n\t\t$result = Invoke-Expression -Command \"$sqlcmdProps \"\"$schemaSyncScript\"\"\"\n        $content = \"Sync summary: \" + $result\n        if (Test-Path $deploySummary)\n        {\n        \tAdd-Content $deploySummary $content\n        }\n\t}\n  \tif(Test-Path $dataSyncScript) \n    {\n\t\t$result = Invoke-Expression -Command \"$sqlcmdProps \"\"$dataSyncScript\"\"\"\n        $content = \"Sync data summary: \" + $result\n        if (Test-Path $deploySummary)\n        {\n        \tAdd-Content $deploySummary $content\n        }\n\t}\n\n\tif(Test-Path $defaultSchemaSyncScript) \n    {\n\t\t$result = Invoke-Expression -Command \"$sqlcmdProps \"\"$defaultSchemaSyncScript\"\"\"\n\t}\n    if(Test-Path $defaultDataSyncScript) \n    {\n\t\t$result = Invoke-Expression -Command \"$sqlcmdProps \"\"$defaultDataSyncScript\"\"\"\n\t}\n\nAddArtifact(\"$deploySummary\")",
    "Octopus.Action.EnabledFeatures": ""
  },
  "Category": "ApexSQL",
  "HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/apexsql-devops-toolkit-deploy.json",
  "Website": "/step-templates/42412324-a768-4943-baf8-bfe26ed2dff3",
  "Logo": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAhiklEQVR4nOzdB3hUVfo/8Pece++0dEISkpBCQi8CggQCUgRFQAX1p7isUpSiz/7XdUWWVUCj7oJIEUQRe5aOgIj0ECCQ3suQhBZIb4QkpJBkZu49/2cmoBghpMzMvTNzPs+z+zwKmfsG/Oacc+8572UJIUBR1L1hsQugKCmjAaGoVtCAUFQraEAoqhU0IBTVChoQimoFDQhFtYIGRCKStm8YInYN1J8h+qBQfJ9P8XSzA+WpWzw//e9hedfErof6HR1BRFasjpepQLlKzqFBdhxeVaxerRK7Jup3NCAiK0mPGalg8TwtDyBn2Jmn3/9ktNg1Ub+jARFZ2s5NrwkAWAAALRFAo3F5PXPvXiR2XVQzugYR0ZbJASOUHArXEXC48+8YBLeaEDyz6FDOKXGro4COIOI5uXtVFxkm6wj8Hg49BKBiebI2fvtGD/Gqo+6gARHJhdDQKUoZO4ZvMYDrCICSY4aot69/RqzaqN/RgIggInSdyp7VvdbEC/f89SaeAGaYVxN2feFg9uKoP6ABEUH2nk0vsQiN0d1n+ScQAgxGIzJ2rp8fEhJi7vKou9CAmFnyts8ClAyzXEcI19qtKoEA5gT8L4eijL5mLI9qgQbEzBL3bJzJMaiH8ICbh/q1Cceibk4lKbPMVRv1ZzQgZpSybb27HPDspvvNre6iH10adQKwwMxK2uXS3SwFUn9CA2ImuRGhOGnXF+8yCPVt65MnYggKCkzb2mWl/utNXCJ1D/QP3UzSj54YocBofhsGjz/gCQEZg15Mizg4xlS1UfdHA2ImFZnxsxHG9g9ae7RkGEUwyG8kpi4wVW3U/dGAmMHX032GcBhmaHgBOrLJSsMT4BDz5MZp/sEmKI9qBQ2IicWErlPJNPL/AGDPznwOQairA2LWJOz6jD48NCMaEBO7np3yuIyDybr2zq1a0H89h9DI8tT4p4xWHPVANCAmVpkVt0grAGuMPdM6ArgiM3EBQohuhzcTGhAT2jw1cAYiMJY30pECgRDAGEZ+NcVvbnlmhFE+k2odDYiJJGz/3E2OyHpAyM6YnysQUCoQ89+8tFQfY34udW80ICaScHjVS3KG6cF3cu3REk8AWAZ5pv/46V+M+sHUPdGAmMBPo3yUDnWq1zT32c7eWRqeAKu0e/XLF93tTXIB6jc0IEZWkBKLq53ZxQAwwFSHmUnzWeleXJ39+0XpcZyJLkPRgBhfeVZCf45h3hMAWFNeRwDACga9VZIRN8iU17F1NCBGlvrTpjkcBqWRlx5/ol+LIIQ49e7P55v2SraNBsSIvp3Sq7uCwExNy4PmJoBuH81lMf6/LVP8+pv8gjaKBsRIitPjVCwWVvEA3c3VSAk1Pxtxk2P2o2J1rFFvJ1PNaECMpFQdHyRj0Ms6gZj1Kbd+sJKz+Pndz00Za87r2goaECMIgRBI3b1xgVaEHnz6S2p5Ai69XRfFb/+cMX8F1o12VjSCH6f5BSPEnuAJiPZcgkGg0YLmmQWHC06IVYM1oiNIJ0Vv3eBGAH+GQLxw3CbDhFsXu2N9N5HrsCo0IJ2UsXvTFBXHjmjvUVpj069FlCwecGHPV8+KW4l1oQHphPjtn6tUCL3WoCMghYlqE08A8cK8pO0bnMWuxVrQgHSCesdnLwMmwQIhHTpKa2wCMZxffyRl58aFYtdiLWhAOih5+4ZeLINWCMS0W0raSx8SBYsXfzr/2QFi12INaEA6KHnH53/hGKa7qbeUtJe+HgaQu0uZerbYtVgDGpAOSOzl6iln0KwmnWm2s3dWI0+AI2Tmuum9A8SuxdLRgLRTREQIUvd2eh8h6COxweMPMCA/xyZ+5WX68LBTaEDa6eaRnNEMQrMlOnj8RkcIKDg0/dL5uPFi12LJaEDaqfx8zAKMkErKowfc3oIiAChK1DH0jlYn0IC0w+anfEbIWfKkRmor8/vQCQRYxEzaPLX7OLFrsVQ0IG0Us22jnYJwKwGQu9i1tAdGqIscuE9TdmxwErsWS0QD0kbV5+Oe5Bg8XivxtUdL+lFEzjDDi9Vx9KWgHUAD0kalmQmv84RY3B0hw3Z4QnDF+cRFe19EFle/2GhAHiQiAr6ZEvAiBhhloi4+JmfYggIw7GZdj1dz09KksCvGYtCAPEBiQaoni2EtAuN2SDQ3AUDBIvjPjcyz/mLXYkloQB4gdf+Wv3AM46Oz8INlgqEjI3ZX79r8V7FrsSQ0IK34/M1ecplON09rqXOrFgzb4UE3+7vJA7qIXYuloAG5j+L0OEZxRbcMAbT5pZuWgAAEAtOwojgjQSZ2LZaABuQ+itVxA+WIWSwAktR29s4SADCL0d9L1bFDxa7FEtCA3Efq7o3zGAapBAtfe7Sk/3YwAiZtO+3I2BY0IPfw+RTfQAViXmi0krVHS1oBgGXRjM1TAh4SuxapowFpoVgdr7JH7GqegJc1PzAQCHSVIbQ6bNdqR7FrkTLaF6uFd5/t8uQA3vWYhhck0YjBVPThl7MYyup1z70dfu2A2PVIFR1B7pJ86Bvcs8l5AU+sOxzwW0dGAZzlaAHtyHh/dAS5y1dTAx9TMXBIJ4BK7FrMhQFo0gnkhfnHrh4SuxYpoiPIbQm7vnLngF9DiO2EwwCBnGHIp8mha73ELkWKaEBuS9m2coadjH3YDK/2kBT996tgmL7x+zY/L3YtUkQDYuhxtd5RgWVzmsTuHyqSRp1h2Hw1jnZk/BMaEABI3fnFbAahIFsbPe5oftqDhqh3bvin2LVIjc0HZNvyGX1ZBr+ns8DDUMak/9kgY5j/d/zdhYPFrkVKbD4gjSkZs1kMnhbSh8FkDNvhMepSqA6fK3YtUmLTAXlqu3N3DqOZtrr2aEm/FuEQeu7LqT37iF2LVNhsQCJCN7Azdrl8iAHR9px/gHyViPw3eec3nNiVSIHNBqT6fPwYDjGzLP2koLHxAtFPtZ4pTj/3mNi1SIHNBqQiK24+QqCg8fgj0rwlnitTx74hdi1SYJMB+WKy32iOwU9qbX1lfh/6UZXDMOGbKYFTICJC7HJEZXMBSdq5yUHFMmsRIFexa5E0hBxZRlidWJzqInYpYrK5gJSkxzwjY3AQHT1apxMIyBAzYM/GtTb9UlCbC0hlVsICrSCJVwpKnpYQPNBdOT8EIZv77+QOm/nGcyMiYMvUgJcBYARP71y1iX6QxUCGdp/c42+FGfE2+UPFZgJyozCjO4dgPSFIaZN/0x0kEFAwLP6oODM+UOxaxGAzAcnY88ksOYPd6OjRPjwB4DA4Z+xY94rYtYjBJgIS8rSXChPlXEt58Y3UNPEEWOBeXv14oM29Y8TqA1KYEc95E8X7CKA3HTw6g/RwZcgnJWrb6sho9QEpV8c+JENosc5w/JrqKIEAknFoQXFG7AixazEnqw5ISEgIpO3YNBcjxNLRo3OI4dkhYlJ3bHxN7FrMyaoD4p2wtTfHwEyNrR4VNDL9n6Mc4xlfTfYbJnYt5mK1ASnauMoeA1lLANzErsVaEEKAF3hnBYPWH/9ijU1s1bHagHwR8ek4lYx92tJeuilNCHidFlgQwM7JCTz7Du09eNxYm9gOb1Wt/e/IDQ3FvZq6LGzCdGrVGUQQ9P8HSpUddO0zsMype2Ck/8Tnkp29e+7hXFwbxK7PHKyys+L30wKmMQh+5gmyqVuSxmIIhk4DTi6u4Bc0odq93/BvWa/eod2HBGWJXZu5Wd0IkrLzMy9AsBaAhqOtDD8kiQAMQiC3dwIHT98atz6DT3oPG3fEvd/DiXLHLpm3b2TZHKsLSGLo5zMcVGzfBrr4aBuBBw4BOHl0A87Np2zgM3PCnR8a8YGTk3uO2KVJgVUFJG7nRieOQ3OadM3d2emmxHvjeR3IGAbkdvbg4OZ1wb3/IxleIx472H1IcDJw8oti1yclVhWQrJ0b5zMID9cSQsPREiGGqRQWePDrEQhyz4AL/Z58KUzmGbjOxTcgX+zypMpqApKyY0N/FqF/8YRgGo5md9YWcpkMGLlS69ZzQJ2TX8/9fsPG71T69L3i6OFVAgA6seuUMqsJSNqOTXNkHHLX0iZwzcEQeEC8Dhw9vInKzSsxYOz0vX1nzN2PELomdn2WxCoC8s1Ylx5yxy4vamw5HISAwOuA41hglSpt14B+ub7Dx5936T14h5NPv8MqV9cmsUu0RBYfkLTQDSy2d/4YEPK3xmc6D2JYVwAAJjx079kH7Hv0v6hTdn1/zJx/RDL2jiVi12fpLD4guVkxY2UYv6izscNQ+tFCIZeDytFFwzk4qwPGP5PoOTDoiFPAADWrUOaZu56Cspu+ESkFa9LPX/xu7ZLnT5r7+qZi8QGpzEx8ncEMZwujh/57JDwPHPDg5tcLuvV5KNr30aeOezwyaR1CSKytH9zPp7Kf2n0q6/2zyblDiKBRrV0CVhMQi95q8s0TARPkcrRfJ4DVNjfT//0gIgDLcsDZOwje/YbmO/bou99ryNjj8m4Bcc5ubvpg8CKUZp9TUDXhp1PnXz9w5uKkgtJKmcBrAbNcHdGSWaWnllrFS0EtdgSJ2faZMytDaxEgF+vbBYEMUyiMDC+1ATsPX/AcGJTi2nv4J32mzTwLAOViVkcIkW/al/zv8MSCZXGpFw13zBgGA8aGzeH2wJDVa0Mj49+Z+6iodRqDxQakOivxGRlGQ5qs7DAUr9WAUqEAB3fvW3LXbjm9n3ghycGnzx5HL79zCqcuYu+gdY9MLZz1w+G02VEpVx6qrqkHBiNAzF2nJgQeMCPvt/LI2effmfvoV2IWawwWOcUKCUHYPykgUiAQbHnV35s+GCwI0L3/UPDoNyzOzr//Z4FPvBiOEKoUuza9xMyiPntPZf3vZEJeUG5BMSjk9399CEIYCMLJpY31Y0hESKNZCzUyixtBcjMTkFdsj4VYhoZZco+r39YWHAd2rh68q09Aos+ox2Pd+48IV3n4xbAKRbXYNerduNnw8MmkvLk//pI8Pf1SkS+v1bYaDjB8bwIAwg+5s7I3o1Ny1o1+OFCMNZJRWFxAKlNj/GQs/lAgIBe7lnZDzWsLxPNgZ28PSjdv8Box4UKPYeM+cBsy5jAA3BK7xLtw56/d+GT9tpj5R6MvOBpGOBYb/tcmhOcQZkJiM4sOjX44MNvUxZqKxU2xvniq57tOGFZaUiOGO6MFx7Hg4OGtdes56JrbwBE7PAaPTrR3945kZYo6sWu8i706pyIo9HDy3yKScp8tLK0yvCjaEAvUvl1uCHMAQuN/i8OWLzdVsaZmUQH5fnpfB5bXJekI6S12LW2h/7MVtE2GRbeTd4/qXhOm57v0G/6Jx6CRYQihG2LXdw/2+8/m/LB5b/wLGdn5wGABUDtD0RLBTD7RVo8oO7WyzGhVmpHFTLFK1NEc0TR9TBjUU8onPYggAIsxYJYhXTx9mlx69M/qPurxRKWb9w/u/YZdBoAqsWtsATVoeLcTcVefC/019bWsq2XDb1TdBI7FnQ6HAQFfwHYro9Jz/zZmsL/FLdgtJyAZSUNlLHqdJ9J8V4WhJY62CZwcHYGzcyr1GzUpsteYJ791GjQmSYKh+E1xRd0Tm/enrvn59PlB5RWVwGIEMs54TSiRfnrGyF6NSy8IHTPYP9JoH2wmFjHFCgkJAb/k/33NImahlNYe+tFC/zOWYRlwcPeu7dZrQKJP8JRIxs5pq3v/YcWc0k6yPzELymsH7j91cfbe8PRZeSXV3pqmRsPDPpPALAhEt/2NUT1nh4S8IJ2/wDawiIBseaz3YJW9EK7hSVexJ1fk9mlFwmvBydkZ7LwDm+y8/L/pNen/dngNGRPfho+QEUIUCKEaM5R7Lw6nE68t3fJzysKzKdfcCK8xjBqm/q+AIKaGCLcml50MiTPxpYxK8lOskxs/ceSU2k8IwaKGQ+B1wDIMyJRKUDq6VLj3HZrmOuTRg90HBSU5ePkltmM/1EBBEB5nGGa1iUv+gyaN1i7lUsXQI1EXV/8akRlcfqO2efqDzbNRByFwRKBYs3bnqRnvzJooxRsU9yT5EeSrKT2nO3DolyZenC4l+j8fXeMt6ObpDayLR3mfCU9FqQKGrPMeGhzTwY8cRAh5FCG02ciltqbvll/Sl209kvbypZwiYBnU3ju2RoFYBfC6qlllYR/tMv/VO0bSI0jC3i9lcgyLzHnWwzCFQs09WRmWBZfugfXuvQZGO/cavNclYEC0e7+h+QBQ34lLZCOEzNNSR6dz2RaW+ddIddmy8JhMj5raemAZLEo4wDAt1QBGdgs2hEYceGvueMmuz+4m6RHk+6l+zzOY3ckTMHkTuOYGBwQwCIBYGXHx7V3lFzRhX89J03c5ePWyuLfpXy6ofOLTbbGrzqXkPlxaXgEqBSeNRkgI84To5peGLQsVu5S2kOwIErdzfXdAzH/0i1pTXofXaYFjGJCr7MCuq2el99Dg806Bgz5hVC5xAcET6wBAa8rrG9vV4soxZ5IKl24/mjLuYt51B51WCyqFhJpMEmAQMB9+uu3suX+9Mu6q2OU8iGRHkG+n9PqHiiMbGk10W1fgecPawtPHF1x6DKhnunp9MXLhB8dZhcLiRovb7PeEq/++9Wj269Epl31lLDJsRZcizMpBp2lYVha+bKXYtTyIJEeQxB0burJYmKsx4rr8To8ojBAo7OzBsatHrs/ISXlOgYP3ufj2jnTyDcy0xB5RWq1OebHg5uydx8/PPRihHllRVQcKDhnnKbiJCPq1COZesQv48Mf6qx9IurGEJEeQb6cFfCTDeIUxFud31hYsAnB0cQHXPg9X+gRNPMJ49/nYb+DDVyy5KXN9fX23jT+lr9x7OnNeXuF1kLPt31AoGswC6LRfLHpx0D9CFj4t2UbKkhtBti54drAc4zc6e9aDCIJ+sgsKB0dw9PSrdfLvc6j3xOfPqDx8I+zdvQoAwGL7RF3NL3dS51a9+7+jGbNTswrda+vqQcZiywkHNJ88BIabk55ZtUO/5BS7nPuRXEA0xWmzlSzbVaPrWH9dwuuA6LRg38WNdB88stq5z5DQgc+/fgAhZHH7gO4lKbN43Mr/Ra5KvVg66mZNDcg5BjjWEl/gSwBh5BBzsXielAMiqSnW+ieGBrrKak7rCPi29WsMW8p53nB/38G5i+Dg6VMc8Oi0fIW7z2ZH7x6nnf36VFjanah7YPNKayYeOHdh3r6wzMnXim44a7VNwGBJ7ttsH8SWCLhmStmxj9PFLuVeJDOCZO79knHEN9cAQr5tXRUIOh2wiIB7Ny9w6TPkisIj4Jvhc986ghiZNb0JSfXjrylLj8ZdW3Eq7iJiMTEEwyrC0bxk8sSC3afrtobPWDx7kthNKf5EMgG5lhrzuJxDUx/03hvDDloigMqpC3F0c7/g88iEdP9Hn46SdfU6oXB0uWKuek2N5wWP1Iul074/lD4vPO5ScFVNHZIZtohYRzDuIIIOAHMTozJKn1gMcFDselqSTEDK02MXsBjLyT2Gj+Y7UTzIGBZkTs7gGzxZ6zt09AaHh8aucnJykuxZi06QrdkZG7rvZPaTVwvLQcYAcKbaii4FhGdi0wvfAAkGRBJrkK+nBk5WYLRbR4jznX/XfNaCGHbQqpxceJW7T47XkFEnvYaNj3L09j+jdHHXB0MjbuVGhWtv6fx/icics+OYem7mlZLujRoNNvSdsqS7Ux3G1COimbvz25f3jff3F7uY34g+giRs3ejKAqwGBM7N701DoG1sACcHO0AKOwgY9fhVj56DPvOb+sqPndwkKGlHYrMfP5tafnD3sRR5w60Gw45b1ppHjZYw2PECsyYhKjd6vL+/ZB4eij6CHA7ynl/tofy2SccDCAI4dvUQuvXsk8N28fnVf9zT55z9eqYqnd0KRC3SdJjL+ZXjvz2Y9tfTiVen5Rdfd9ePmliiW0RMDTMyYBp0/8iPWPq52LXcIWpAQhDCvk/6xsg4Lkjh3FXn/lBwYY9Hxq/pMnbiATtkJ5mfIiYScCjq6oot+xNeSswsUACvMd2RV4uBgGAmjbtZElwQu14Sd7REm2LVXy9iA14ascS3Vx8X9yFjvnP0DtzqOXj0ZUahKBWrJnO4Wdfosi8sw+9MWvGalIslk65XVIE+F8jmwwG3d/2QgVp7tyXxybn/DRrmL3pHRtEC0lhbrXxsybrKbv2HB0mlzaapaQkZ++XexE9/OJgaVF1XByxChrUG9TtECIsw86/I83k/Bw3zPy+BekSbYrkCgMWcTe4EXF6t8d0dljHzSFTW0gvXKlyaGpssatuU2TEcANGsKzn+3jtilyJWQPoSQp5ACElmMWYiisTs0nmb9yWvOJN0xbOuts7QkI1qA8wU625ph18/t0zUtagoUyxBEFwRQhbb0LgtUi+VjotKL16763jagMu5ZUqMCA1HexDwwnK0NiY977XgwX6inV8XJSAY42gxrmsmPlv2py7de/r83MSMq3YKOXv7eQadU7ULMXRknBWdlvdd8GC/M2KVIfpzEGtRVdvgFJNRMP147LX3j0dfDLxZWw/6UcM2noKbCOZAELR73ljQ8y8hL4jTkZEGxAiKq2rHrNsa9+H+U5mPNR9eQnTEMBbM1RHtrWdKT70vyihCA9IJWVcr/BMulL2141jq7OycEhetVmuIBR01jAgxQECIWzJnxNOLZz1WYfbL04B0zNGoC/O/+zVzWXR6jr9O0wRyjrXcw+0ShzklIKH61cJjIT+a+9o0IO10Kb/ypV0n1P/49dzFQYVlVXZAeEOnFMqEEAZCIGrZ3Ecn/31WsFlfU0cD0kYVlXXuXx/MWHw0+tKbWVeKFDIW7rwXnDIHxOqAb3qzJHy5WV8tTQPyADX1TV7ZeVVzNu2JfTk+o6B/dU2tYVMhHTPMTD+KABQtmTVi/OI5E8x2cpQGpBUlFTeHLdscsTI+u/yJ4pJSUMroOkNMiJUBaBs+LD65PMRs16QB+RNFQVnN4ONxOQu2HU2fnpN/vatG02Q42UiJzXCP8HL95ZOP1VwLLzTLFWlA/uhY7KUPth3NDIlIygGtppEGQ2oQC7yg+Xr5nEl/e/PlIJNvh6cBaWaXdql0yo+/pr1xJulqUMn1ajuMCF2ESxICxLD1QQPdph5YM+ecqa8m+pl0sZVU1HpFZVz/acOucyOzc4oYjrlzRoMuw6XJ0LjALjatcA4AmDwgNjuCVNY0BCZmFT/11c/J89IvFA+uq6+3rSYJlg6xZbKGxml551Ykm/QythiQqJT8YYfiru7Zdyo7sLryhlHfC06ZCWYBBOHUO7OCnlk8d7zJHh7a0hSLu1JQOeBQ5KWFO45nPF9cftNdq22i4bBUzR0ZJ0SrC6YtBthrqsvYREAIIa5hcTnvbtwV81b65euMTttkaK1D71BZOMLjWHXhQjBhQKx9imV/NqXgsZ/CM1ZEpxcMLyqtbO4gQvdOWQ/ENhC+6dXdy8fsHj9+vNE/3mpHkMrquke2h1/+YNfxjMcvXCmQyTlMO4hYJUEJwKxLyMfnxgMUG/vTrW4EKa2s8zl0Ov3JE0klyxPUeb4NjY307pS1Y2TQAHhx9bF/rjf2R1tTQGTZuTee2rArdlVY/LXedTU1wNImCbbBMGVmzhP3spGl29YatX+zNUyx2OSsov7x2WVrdh5LnXSloAITXkfDYUv0P+Qx9IUyl6Wx6qsfjRoUYLS3FVt0QAghXXacyHrrx0Opb6ZfLHBibjd+RnSLiO0hPAsgWxqdUvjzqEEBacb6WEudYtlFZRS99MvZi/88ei6zz43qOhb04aB3p2wb5oAImo2lYe+9ZayPtLiA5BRVDvjhYMbKAxFZkwuKy+X2KrnYJVESQjBbjjRNI0pOL88zxudZzBQrr6Ta/VJ+5cdbDiRPi8/I89ZoNEDDQbWECHEnDF4fnZb7yugh/p3egmIJAWHCU3If/35f0uqIlNyHtJomQwtPxkZfMkM9ABEAs/LnYjIKtowe4n+ysx/X0SmW0+1wmbI7u11+Wd1ju06eX7D3RNrUovKbjMDzhjt69Ek41RqEGSC8bv+HLwx6ceHCpx/w3uQHfFZHAkIIeRgAlAghU/XYVW3am/TvKHX5ipNRaSBnaSCo9iHA1BNBmFEW/u/wznxOR0eQO1Mzo91vvq1LrLpw9ncHU+dFpeb1vX6jSibjGDpiUO2HGBCAJL0za+RTS+aMK+vwx0jlLlbaxWK/Hw6lfR+dUTLxWkEJyFhMg0F1CmaVQHQVC4rD/vNdRz9D9IBU3rw19JezF2bvDst67vyVYl+tVkc3FVLGYejISGL/9ddHJr89Z2Jthz5CxIDg1JwbK779OeXv+8LTXQVtI3AsPZ9BGRlmBEJ0b5WeeG9TR77c7AHhBcExp/DmyB+PpC0Ki7n0bGFpFTLcmqO3bSlT0E/TCSp7+5Xg8UteefRCu7/czAHh9kdc2vnlTwn/p75UCAwS6DqDMjnEyEDHN6wqD1v+Xru/1kwBcTkcfeml7w+mzMu8Uj7sRnUN5hi6CKfMBQFBkFPrwE2s37e4XVtQTB6QovLa8d/8kvz1/tPZvUvLq4Az3CCmwaDMDLEgCNofli4YtujtFye3+fGEqQKC8ktrBvwamTNr94nUv+aXVvs2NjYAgzDNBiUSBIDZhpED3KYeWDcnoq1fZYq9WF0jMwpf++5g2j+PRWZ7AK8xvC6AoWc0KFER/URLGZtRtBAA2hwQY44gyoTMkpGHoy6vOBx5YWxh6Q2GvuWVkhzEVBBN/XOlZz6MbNNvN0ZACCHdvz+UvvbbA0kzc/KvG+5O0cbPlCRhFoAXope8PHxKWx4edmqKVV/f6HIw8tLMM6lFH52Jv+BWU9cArKHvFA0HJVGCDoDhgqMziqa9DbD7Qb+9wwG5kHt92qZ96e+ejr80urzihuEpOD2jQVkEgUcx6uI3oA0BafcU62Le9T6Ho64sCk/MezUtu8CJ1y/C6XSKsjAE4UZCdIvKwpZtbe33tScgDj+FqxdsP5b1dry6wJvXNRoaP0tkMzBFtY/hUJVQuviV4KAls8fm3++33SsgQwDgt7YpWp6XX8itfHl3WOaCgxGZw69X1TGICEBvTlGWDmEZ4FsN7xaeW/7JfX/P3QEhhLgSQoZijMNv/7PnytDokD1h6oVFZVXAMfS4K2VNEADDZGtrLgRVRH9/zztady/SFfrRA2Mck325zPFKWe3SrYdT5yZnF3Wrra0HjkE0HJSVIYAI9GbsAlbEpF99L3jwnzsy3h0QLwCoUF8uH/nx/2Lfj8+4Oq6+rsFweIm28aSsFRF4BiPuzej0wt3BgwNSWv76b1Oskoq6d7ceTn3kSMy1sVcKKlx5w0tmaDAo64cYFgS+4ZvSsOWL/vRrdwIy453tZyLTCtxA26SRyTggnWqWQlEWBBP9iv0mgGZmaVhI+d2/JPqZdIqSMjqHoqhW0IBQVCtoQCiqFTQgFNUKGhCKagUNCEW1ggaEolpBA0JRraABoahW0IBQVCtoQCiqFf8/AAD//2rYDWqT6z5BAAAAAElFTkSuQmCC",
  "$Meta": {
    "Type": "ActionTemplate"
  }
}

History

Page updated on Thursday, August 20, 2020