NetScalerToolkit.Configuration/Public/ns-functions-config-appqoe.ps1
|
# Generated NetScalerToolkit Configuration bundle for category 'appqoe'. # region Invoke-NSAddAppQoEAction function Invoke-NSAddAppQoEAction { <# .SYNOPSIS Creates a NetScaler appqoeaction resource. .DESCRIPTION Configuration for AppQoS action resource. .PARAMETER AltContentPath Path to the alternative content service to be used in the ACS. Minimum length = 4 Maximum length = 127 .PARAMETER AltContentSvcName Name of the alternative content service to be used in the ACS. Minimum length = 1 Maximum length = 127 .PARAMETER CustomFile name of the HTML page object to use as the response. Minimum length = 1 .PARAMETER Delay Delay threshold, in microseconds, for requests that match the policy's rule. If the delay statistics gathered for the matching request exceed the specified delay, configured action triggered for that request, if there is no action then requests are dropped to the lowest priority level. Minimum value = 1 Maximum value = 599999999 .PARAMETER DosAction DoS Action to take when vserver will be considered under DoS attack and corresponding rule matches. Mandatory if AppQoE actions are to be used for DoS attack prevention. Possible values = SimpleResponse, HICResponse .PARAMETER Dostrigexpression Optional expression to add second level check to trigger DoS actions. Specifically used for Analytics based DoS response generation. .PARAMETER MaxConn Maximum number of concurrent connections that can be open for requests that matches with rule. Minimum value = 1 Maximum value = 4294967294 .PARAMETER Name Name for the AppQoE action. Must begin with a letter, number, or the underscore symbol (_). Other characters allowed, after the first character, are the hyphen (-), period (.) hash (#), space ( ), at (@), equals (=), and colon (:) characters. This is a mandatory argument. .PARAMETER Numretries Retry count. Default value: 3 Minimum value = 0 Maximum value = 7 .PARAMETER Polqdepth Policy queue depth threshold value. When the policy queue size (number of requests queued for the policy binding this action is attached to) increases to the specified polqDepth value, subsequent requests are dropped to the lowest priority level. Minimum value = 0 Maximum value = 4294967294 .PARAMETER Priority Priority for queuing the request. If server resources are not available for a request that matches the configured rule, this option specifies a priority for queuing the request until the server resources are available again. If priority is not configured then Lowest priority will be used to queue the request. Possible values = HIGH, MEDIUM, LOW, LOWEST .PARAMETER Priqdepth Queue depth threshold value per priorirty level. If the queue size (number of requests in the queue of that particular priorirty) on the virtual server to which this policy is bound, increases to the specified qDepth value, subsequent requests are dropped to the lowest priority level. Minimum value = 0 Maximum value = 4294967294 .PARAMETER ResponseOndwith Responder action to be taken when the threshold is reached. Available settings function as follows: ACS - Serve content from an alternative content service Threshold : maxConn or delay NS - Serve from the Citrix ADC (built-in response) Threshold : maxConn or delay. Possible values = ACS, NS .PARAMETER Retryonreset Retry on TCP Reset. Default value: NO Possible values = YES, NO .PARAMETER RetryonTimeout Retry on request Timeout(in millisec) upon sending request to backend servers. Minimum value = 30 Maximum value = 2000 .PARAMETER TCPProfile Bind TCP Profile based on L2/L3/L7 parameters. Minimum length = 1 Maximum length = 127 .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .PARAMETER PassThru Returns the updated resource after the operation completes. .EXAMPLE Invoke-NSAddAppQoEAction -Name 'example' -PassThru .EXAMPLE Invoke-NSAddAppQoEAction -Name 'example' -WhatIf .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter()] [string] $AltContentPath, [Parameter()] [string] $AltContentSvcName, [Parameter()] [string] $CustomFile, [Parameter()] [int] $Delay, [Parameter()] [ValidateSet('SimpleResponse', 'HICResponse')] [string] $DosAction, [Parameter()] [string] $Dostrigexpression, [Parameter()] [int] $MaxConn, [Parameter(Mandatory, Position = 0)] [string] $Name, [Parameter()] [int] $Numretries, [Parameter()] [int] $Polqdepth, [Parameter()] [ValidateSet('HIGH', 'MEDIUM', 'LOW', 'LOWEST')] [string] $Priority, [Parameter()] [int] $Priqdepth, [Parameter()] [ValidateSet('ACS', 'NS')] [string] $ResponseOndwith, [Parameter()] [ValidateSet('YES', 'NO')] [string] $Retryonreset, [Parameter()] [int] $RetryonTimeout, [Parameter()] [string] $TCPProfile, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning, [Parameter()] [switch] $PassThru ) $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $properties = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) if ($PSBoundParameters.ContainsKey('AltContentPath')) { $properties['altcontentpath'] = $AltContentPath } if ($PSBoundParameters.ContainsKey('AltContentSvcName')) { $properties['altcontentsvcname'] = $AltContentSvcName } if ($PSBoundParameters.ContainsKey('CustomFile')) { $properties['customfile'] = $CustomFile } if ($PSBoundParameters.ContainsKey('Delay')) { $properties['delay'] = $Delay } if ($PSBoundParameters.ContainsKey('DosAction')) { $properties['dosaction'] = $DosAction } if ($PSBoundParameters.ContainsKey('Dostrigexpression')) { $properties['dostrigexpression'] = $Dostrigexpression } if ($PSBoundParameters.ContainsKey('MaxConn')) { $properties['maxconn'] = $MaxConn } if ($PSBoundParameters.ContainsKey('Name')) { $properties['name'] = $Name } if ($PSBoundParameters.ContainsKey('Numretries')) { $properties['numretries'] = $Numretries } if ($PSBoundParameters.ContainsKey('Polqdepth')) { $properties['polqdepth'] = $Polqdepth } if ($PSBoundParameters.ContainsKey('Priority')) { $properties['priority'] = $Priority } if ($PSBoundParameters.ContainsKey('Priqdepth')) { $properties['priqdepth'] = $Priqdepth } if ($PSBoundParameters.ContainsKey('ResponseOndwith')) { $properties['respondwith'] = $ResponseOndwith } if ($PSBoundParameters.ContainsKey('Retryonreset')) { $properties['retryonreset'] = $Retryonreset } if ($PSBoundParameters.ContainsKey('RetryonTimeout')) { $properties['retryontimeout'] = $RetryonTimeout } if ($PSBoundParameters.ContainsKey('TCPProfile')) { $properties['tcpprofile'] = $TCPProfile } $body = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) foreach ($key in $properties.Keys) { if ($null -ne $properties[$key] -and (-not ($properties[$key] -is [string]) -or $properties[$key] -ne '')) { $body[$key] = $properties[$key] } } if ($PSCmdlet.ShouldProcess("$Name", 'Create appqoeaction')) { $response = Invoke-NSRestRequest @transportParameters -Session $Session -Method POST -Task config -Type appqoeaction -Payload @{ appqoeaction = $body } -RawResponse if ($PassThru) { return Invoke-NSGetAppQoEAction -Name $Name -Session $Session } return $response } } # endregion Invoke-NSAddAppQoEAction # region Invoke-NSAddAppQoEPolicy function Invoke-NSAddAppQoEPolicy { <# .SYNOPSIS Creates a NetScaler appqoepolicy resource. .DESCRIPTION Configuration for AppQoS policy resource. .PARAMETER Action Configured AppQoE action to trigger. Minimum length = 1 .PARAMETER Name . Minimum length = 1 .PARAMETER Rule Expression or name of a named expression, against which the request is evaluated. The policy is applied if the rule evaluates to true. .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .PARAMETER PassThru Returns the updated resource after the operation completes. .EXAMPLE Invoke-NSAddAppQoEPolicy -Name 'example' -Action 'example' -Rule 'example' -PassThru .EXAMPLE Invoke-NSAddAppQoEPolicy -Name 'example' -Action 'example' -Rule 'example' -WhatIf .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory)] [string] $Action, [Parameter(Mandatory, Position = 0)] [string] $Name, [Parameter(Mandatory)] [string] $Rule, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning, [Parameter()] [switch] $PassThru ) $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $properties = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) if ($PSBoundParameters.ContainsKey('Action')) { $properties['action'] = $Action } if ($PSBoundParameters.ContainsKey('Name')) { $properties['name'] = $Name } if ($PSBoundParameters.ContainsKey('Rule')) { $properties['rule'] = $Rule } $body = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) foreach ($key in $properties.Keys) { if ($null -ne $properties[$key] -and (-not ($properties[$key] -is [string]) -or $properties[$key] -ne '')) { $body[$key] = $properties[$key] } } if ($PSCmdlet.ShouldProcess("$Name", 'Create appqoepolicy')) { $response = Invoke-NSRestRequest @transportParameters -Session $Session -Method POST -Task config -Type appqoepolicy -Payload @{ appqoepolicy = $body } -RawResponse if ($PassThru) { return Invoke-NSGetAppQoEPolicy -Name $Name -Session $Session } return $response } } # endregion Invoke-NSAddAppQoEPolicy # region Invoke-NSDeleteAppQoEAction function Invoke-NSDeleteAppQoEAction { <# .SYNOPSIS Removes a NetScaler appqoeaction resource. .DESCRIPTION Configuration for AppQoS action resource. .PARAMETER Name Name for the AppQoE action. Must begin with a letter, number, or the underscore symbol (_). Other characters allowed, after the first character, are the hyphen (-), period (.) hash (#), space ( ), at (@), equals (=), and colon (:) characters. This is a mandatory argument. .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .EXAMPLE Invoke-NSDeleteAppQoEAction -Name 'example' -Confirm:$false .EXAMPLE Invoke-NSGetAppQoEAction -Name 'appqoeaction_example' | Invoke-NSDeleteAppQoEAction -Confirm:$false .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')] param( [Parameter(Mandatory, Position = 0, ValueFromPipelineByPropertyName)] [string] $Name, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning ) process { $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } if ($PSCmdlet.ShouldProcess("$Name", 'Delete appqoeaction')) { Invoke-NSRestRequest @transportParameters -Session $Session -Method DELETE -Task config -Type appqoeaction -Resource $Name -RawResponse } } } # endregion Invoke-NSDeleteAppQoEAction # region Invoke-NSDeleteAppQoECustomResponse function Invoke-NSDeleteAppQoECustomResponse { <# .SYNOPSIS Removes a NetScaler appqoecustomresp resource. .DESCRIPTION Configuration for AppQoE custom response page resource. .PARAMETER Name Indicates name of the custom response HTML page to import/update. Minimum length = 1 Maximum length = 31 .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .EXAMPLE Invoke-NSDeleteAppQoECustomResponse -Name 'example' -Confirm:$false .EXAMPLE Invoke-NSGetAppQoECustomResponse -Name 'appqoecustomresp_example' | Invoke-NSDeleteAppQoECustomResponse -Confirm:$false .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')] param( [Parameter(Mandatory, Position = 0, ValueFromPipelineByPropertyName)] [string] $Name, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning ) process { $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } if ($PSCmdlet.ShouldProcess("$Name", 'Delete appqoecustomresp')) { Invoke-NSRestRequest @transportParameters -Session $Session -Method DELETE -Task config -Type appqoecustomresp -Resource $Name -RawResponse } } } # endregion Invoke-NSDeleteAppQoECustomResponse # region Invoke-NSDeleteAppQoEPolicy function Invoke-NSDeleteAppQoEPolicy { <# .SYNOPSIS Removes a NetScaler appqoepolicy resource. .DESCRIPTION Configuration for AppQoS policy resource. .PARAMETER Name . Minimum length = 1 .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .EXAMPLE Invoke-NSDeleteAppQoEPolicy -Name 'example' -Confirm:$false .EXAMPLE Invoke-NSGetAppQoEPolicy -Name 'appqoepolicy_example' | Invoke-NSDeleteAppQoEPolicy -Confirm:$false .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')] param( [Parameter(Mandatory, Position = 0, ValueFromPipelineByPropertyName)] [string] $Name, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning ) process { $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } if ($PSCmdlet.ShouldProcess("$Name", 'Delete appqoepolicy')) { Invoke-NSRestRequest @transportParameters -Session $Session -Method DELETE -Task config -Type appqoepolicy -Resource $Name -RawResponse } } } # endregion Invoke-NSDeleteAppQoEPolicy # region Invoke-NSGetAppQoEAction function Invoke-NSGetAppQoEAction { <# .SYNOPSIS Gets NetScaler appqoeaction configuration. .DESCRIPTION Configuration for AppQoS action resource. .PARAMETER Name Name for the AppQoE action. Must begin with a letter, number, or the underscore symbol (_). Other characters allowed, after the first character, are the hyphen (-), period (.) hash (#), space ( ), at (@), equals (=), and colon (:) characters. This is a mandatory argument. .PARAMETER Filter NITRO filter values as a hashtable. .PARAMETER ViewSummary Requests the NITRO summary view. .PARAMETER Count Returns only the number of matching resources. .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .EXAMPLE Invoke-NSGetAppQoEAction .EXAMPLE Invoke-NSGetAppQoEAction -Name 'appqoeaction_example' .EXAMPLE Invoke-NSGetAppQoEAction -Filter @{ servicetype = 'HTTP' } .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(DefaultParameterSetName = 'All')] param( [Parameter(ParameterSetName = 'ByName', Mandatory, Position = 0, ValueFromPipelineByPropertyName)] [string] $Name, [Parameter(ParameterSetName = 'All')] [hashtable] $Filter, [Parameter(ParameterSetName = 'All')] [switch] $ViewSummary, [Parameter(ParameterSetName = 'Count')] [switch] $Count, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning ) process { $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $query = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) if ($Filter) { $query.filter = (($Filter.GetEnumerator() | Sort-Object Name | ForEach-Object { "{0}:{1}" -f $_.Key, $_.Value }) -join ',') } if ($ViewSummary) { $query.view = 'summary' } if ($Count) { $query.count = 'yes' } $request = @{ Session = $Session Method = 'GET' Task = 'config' Type = 'appqoeaction' Query = $query } if ($PSCmdlet.ParameterSetName -eq 'ByName') { $request.Resource = $Name } foreach ($key in $transportParameters.Keys) { $request[$key] = $transportParameters[$key] } Invoke-NSRestRequest @request } } # endregion Invoke-NSGetAppQoEAction # region Invoke-NSGetAppQoECustomResponse function Invoke-NSGetAppQoECustomResponse { <# .SYNOPSIS Gets NetScaler appqoecustomresp configuration. .DESCRIPTION Configuration for AppQoE custom response page resource. .PARAMETER ViewSummary Requests the NITRO summary view. .PARAMETER Count Returns only the number of matching resources. .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .EXAMPLE Invoke-NSGetAppQoECustomResponse .EXAMPLE Invoke-NSGetAppQoECustomResponse -Filter @{ servicetype = 'HTTP' } .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(DefaultParameterSetName = 'All')] param( [Parameter(ParameterSetName = 'All')] [hashtable] $Filter, [Parameter(ParameterSetName = 'All')] [switch] $ViewSummary, [Parameter(ParameterSetName = 'Count')] [switch] $Count, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning ) process { $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $query = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) if ($Filter) { $query.filter = (($Filter.GetEnumerator() | Sort-Object Name | ForEach-Object { "{0}:{1}" -f $_.Key, $_.Value }) -join ',') } if ($ViewSummary) { $query.view = 'summary' } if ($Count) { $query.count = 'yes' } $request = @{ Session = $Session Method = 'GET' Task = 'config' Type = 'appqoecustomresp' Query = $query } foreach ($key in $transportParameters.Keys) { $request[$key] = $transportParameters[$key] } Invoke-NSRestRequest @request } } # endregion Invoke-NSGetAppQoECustomResponse # region Invoke-NSGetAppQoEParameter function Invoke-NSGetAppQoEParameter { <# .SYNOPSIS Gets NetScaler appqoeparameter configuration. .DESCRIPTION Configuration for QOS parameter resource. .PARAMETER ViewSummary Requests the NITRO summary view. .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .EXAMPLE Invoke-NSGetAppQoEParameter .EXAMPLE Invoke-NSGetAppQoEParameter -Filter @{ servicetype = 'HTTP' } .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(DefaultParameterSetName = 'All')] param( [Parameter(ParameterSetName = 'All')] [hashtable] $Filter, [Parameter(ParameterSetName = 'All')] [switch] $ViewSummary, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning ) process { $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $query = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) if ($Filter) { $query.filter = (($Filter.GetEnumerator() | Sort-Object Name | ForEach-Object { "{0}:{1}" -f $_.Key, $_.Value }) -join ',') } if ($ViewSummary) { $query.view = 'summary' } $request = @{ Session = $Session Method = 'GET' Task = 'config' Type = 'appqoeparameter' Query = $query } foreach ($key in $transportParameters.Keys) { $request[$key] = $transportParameters[$key] } Invoke-NSRestRequest @request } } # endregion Invoke-NSGetAppQoEParameter # region Invoke-NSGetAppQoEPolicy function Invoke-NSGetAppQoEPolicy { <# .SYNOPSIS Gets NetScaler appqoepolicy configuration. .DESCRIPTION Configuration for AppQoS policy resource. .PARAMETER Name . Minimum length = 1 .PARAMETER Filter NITRO filter values as a hashtable. .PARAMETER ViewSummary Requests the NITRO summary view. .PARAMETER Count Returns only the number of matching resources. .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .EXAMPLE Invoke-NSGetAppQoEPolicy .EXAMPLE Invoke-NSGetAppQoEPolicy -Name 'appqoepolicy_example' .EXAMPLE Invoke-NSGetAppQoEPolicy -Filter @{ servicetype = 'HTTP' } .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(DefaultParameterSetName = 'All')] param( [Parameter(ParameterSetName = 'ByName', Mandatory, Position = 0, ValueFromPipelineByPropertyName)] [string] $Name, [Parameter(ParameterSetName = 'All')] [hashtable] $Filter, [Parameter(ParameterSetName = 'All')] [switch] $ViewSummary, [Parameter(ParameterSetName = 'Count')] [switch] $Count, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning ) process { $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $query = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) if ($Filter) { $query.filter = (($Filter.GetEnumerator() | Sort-Object Name | ForEach-Object { "{0}:{1}" -f $_.Key, $_.Value }) -join ',') } if ($ViewSummary) { $query.view = 'summary' } if ($Count) { $query.count = 'yes' } $request = @{ Session = $Session Method = 'GET' Task = 'config' Type = 'appqoepolicy' Query = $query } if ($PSCmdlet.ParameterSetName -eq 'ByName') { $request.Resource = $Name } foreach ($key in $transportParameters.Keys) { $request[$key] = $transportParameters[$key] } Invoke-NSRestRequest @request } } # endregion Invoke-NSGetAppQoEPolicy # region Invoke-NSGetAppQoEPolicyBinding function Invoke-NSGetAppQoEPolicyBinding { <# .SYNOPSIS Gets NetScaler appqoepolicy_binding configuration. .DESCRIPTION Binding object which returns the resources bound to appqoepolicy. .PARAMETER Name . Minimum length = 1 .PARAMETER Filter NITRO filter values as a hashtable. .PARAMETER ViewSummary Requests the NITRO summary view. .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .EXAMPLE Invoke-NSGetAppQoEPolicyBinding .EXAMPLE Invoke-NSGetAppQoEPolicyBinding -Name 'appqoepolicy_binding_example' .EXAMPLE Invoke-NSGetAppQoEPolicyBinding -Filter @{ servicetype = 'HTTP' } .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(DefaultParameterSetName = 'All')] param( [Parameter(ParameterSetName = 'ByName', Mandatory, Position = 0, ValueFromPipelineByPropertyName)] [string] $Name, [Parameter(ParameterSetName = 'All')] [hashtable] $Filter, [Parameter(ParameterSetName = 'All')] [switch] $ViewSummary, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning ) process { $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $query = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) if ($Filter) { $query.filter = (($Filter.GetEnumerator() | Sort-Object Name | ForEach-Object { "{0}:{1}" -f $_.Key, $_.Value }) -join ',') } if ($ViewSummary) { $query.view = 'summary' } $request = @{ Session = $Session Method = 'GET' Task = 'config' Type = 'appqoepolicy_binding' Query = $query } if ($PSCmdlet.ParameterSetName -eq 'ByName') { $request.Resource = $Name } foreach ($key in $transportParameters.Keys) { $request[$key] = $transportParameters[$key] } Invoke-NSRestRequest @request } } # endregion Invoke-NSGetAppQoEPolicyBinding # region Invoke-NSGetAppQoEPolicyLBVServerBinding function Invoke-NSGetAppQoEPolicyLBVServerBinding { <# .SYNOPSIS Gets NetScaler appqoepolicy_lbvserver_binding configuration. .DESCRIPTION Binding object showing the lbvserver that can be bound to appqoepolicy. .PARAMETER Name . Minimum length = 1 .PARAMETER Filter NITRO filter values as a hashtable. .PARAMETER ViewSummary Requests the NITRO summary view. .PARAMETER Count Returns only the number of matching resources. .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .EXAMPLE Invoke-NSGetAppQoEPolicyLBVServerBinding .EXAMPLE Invoke-NSGetAppQoEPolicyLBVServerBinding -Name 'appqoepolicy_lbvserver_binding_example' .EXAMPLE Invoke-NSGetAppQoEPolicyLBVServerBinding -Filter @{ servicetype = 'HTTP' } .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(DefaultParameterSetName = 'All')] param( [Parameter(ParameterSetName = 'ByName', Mandatory, Position = 0, ValueFromPipelineByPropertyName)] [string] $Name, [Parameter(ParameterSetName = 'All')] [hashtable] $Filter, [Parameter(ParameterSetName = 'All')] [switch] $ViewSummary, [Parameter(ParameterSetName = 'Count')] [switch] $Count, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning ) process { $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $query = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) if ($Filter) { $query.filter = (($Filter.GetEnumerator() | Sort-Object Name | ForEach-Object { "{0}:{1}" -f $_.Key, $_.Value }) -join ',') } if ($ViewSummary) { $query.view = 'summary' } if ($Count) { $query.count = 'yes' } $request = @{ Session = $Session Method = 'GET' Task = 'config' Type = 'appqoepolicy_lbvserver_binding' Query = $query } if ($PSCmdlet.ParameterSetName -eq 'ByName') { $request.Resource = $Name } foreach ($key in $transportParameters.Keys) { $request[$key] = $transportParameters[$key] } Invoke-NSRestRequest @request } } # endregion Invoke-NSGetAppQoEPolicyLBVServerBinding # region Invoke-NSImportAppQoECustomResponse function Invoke-NSImportAppQoECustomResponse { <# .SYNOPSIS Imports NetScaler appqoecustomresp data. .DESCRIPTION Configuration for AppQoE custom response page resource. .PARAMETER Name Indicates name of the custom response HTML page to import/update. Minimum length = 1 Maximum length = 31 .PARAMETER Src . Minimum length = 1 Maximum length = 2047 .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .EXAMPLE Invoke-NSImportAppQoECustomResponse -Name 'example' .EXAMPLE Invoke-NSImportAppQoECustomResponse -Name 'example' -WhatIf .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory, Position = 0, ValueFromPipelineByPropertyName)] [string] $Name, [Parameter()] [string] $Src, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning ) process { $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $body = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) if ($PSBoundParameters.ContainsKey('Name')) { $body['name'] = $Name } if ($PSBoundParameters.ContainsKey('Src')) { $body['src'] = $Src } if ($PSCmdlet.ShouldProcess('appqoecustomresp', 'Import appqoecustomresp')) { Invoke-NSRestRequest @transportParameters -Session $Session -Method POST -Task config -Type appqoecustomresp -Action Import -Payload @{ appqoecustomresp = $body } -RawResponse } } } # endregion Invoke-NSImportAppQoECustomResponse # region Invoke-NSUnsetAppQoEAction function Invoke-NSUnsetAppQoEAction { <# .SYNOPSIS Clears one or more NetScaler appqoeaction resource properties. .DESCRIPTION Configuration for AppQoS action resource. .PARAMETER Name Name for the AppQoE action. Must begin with a letter, number, or the underscore symbol (_). Other characters allowed, after the first character, are the hyphen (-), period (.) hash (#), space ( ), at (@), equals (=), and colon (:) characters. This is a mandatory argument. .PARAMETER AltContentPath Path to the alternative content service to be used in the ACS. Minimum length = 4 Maximum length = 127 .PARAMETER AltContentSvcName Name of the alternative content service to be used in the ACS. Minimum length = 1 Maximum length = 127 .PARAMETER Delay Delay threshold, in microseconds, for requests that match the policy's rule. If the delay statistics gathered for the matching request exceed the specified delay, configured action triggered for that request, if there is no action then requests are dropped to the lowest priority level. Minimum value = 1 Maximum value = 599999999 .PARAMETER DosAction DoS Action to take when vserver will be considered under DoS attack and corresponding rule matches. Mandatory if AppQoE actions are to be used for DoS attack prevention. Possible values = SimpleResponse, HICResponse .PARAMETER MaxConn Maximum number of concurrent connections that can be open for requests that matches with rule. Minimum value = 1 Maximum value = 4294967294 .PARAMETER Numretries Retry count. Default value: 3 Minimum value = 0 Maximum value = 7 .PARAMETER Polqdepth Policy queue depth threshold value. When the policy queue size (number of requests queued for the policy binding this action is attached to) increases to the specified polqDepth value, subsequent requests are dropped to the lowest priority level. Minimum value = 0 Maximum value = 4294967294 .PARAMETER Priority Priority for queuing the request. If server resources are not available for a request that matches the configured rule, this option specifies a priority for queuing the request until the server resources are available again. If priority is not configured then Lowest priority will be used to queue the request. Possible values = HIGH, MEDIUM, LOW, LOWEST .PARAMETER Priqdepth Queue depth threshold value per priorirty level. If the queue size (number of requests in the queue of that particular priorirty) on the virtual server to which this policy is bound, increases to the specified qDepth value, subsequent requests are dropped to the lowest priority level. Minimum value = 0 Maximum value = 4294967294 .PARAMETER Retryonreset Retry on TCP Reset. Default value: NO Possible values = YES, NO .PARAMETER RetryonTimeout Retry on request Timeout(in millisec) upon sending request to backend servers. Minimum value = 30 Maximum value = 2000 .PARAMETER TCPProfile Bind TCP Profile based on L2/L3/L7 parameters. Minimum length = 1 Maximum length = 127 .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .PARAMETER PassThru Returns the updated resource after the operation completes. .EXAMPLE Invoke-NSUnsetAppQoEAction -Name 'example' -AltContentPath -PassThru .EXAMPLE Invoke-NSUnsetAppQoEAction -Name 'example' -AltContentPath -WhatIf .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory, Position = 0, ValueFromPipelineByPropertyName)] [string] $Name, [Parameter()] [switch] $AltContentPath, [Parameter()] [switch] $AltContentSvcName, [Parameter()] [switch] $Delay, [Parameter()] [ValidateSet('SimpleResponse', 'HICResponse')] [switch] $DosAction, [Parameter()] [switch] $MaxConn, [Parameter()] [switch] $Numretries, [Parameter()] [switch] $Polqdepth, [Parameter()] [ValidateSet('HIGH', 'MEDIUM', 'LOW', 'LOWEST')] [switch] $Priority, [Parameter()] [switch] $Priqdepth, [Parameter()] [ValidateSet('YES', 'NO')] [switch] $Retryonreset, [Parameter()] [switch] $RetryonTimeout, [Parameter()] [switch] $TCPProfile, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning, [Parameter()] [switch] $PassThru ) process { $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $body = @{ name = $Name } if ($PSBoundParameters.ContainsKey('AltContentPath')) { $body['altcontentpath'] = $true } if ($PSBoundParameters.ContainsKey('AltContentSvcName')) { $body['altcontentsvcname'] = $true } if ($PSBoundParameters.ContainsKey('Delay')) { $body['delay'] = $true } if ($PSBoundParameters.ContainsKey('DosAction')) { $body['dosaction'] = $true } if ($PSBoundParameters.ContainsKey('MaxConn')) { $body['maxconn'] = $true } if ($PSBoundParameters.ContainsKey('Numretries')) { $body['numretries'] = $true } if ($PSBoundParameters.ContainsKey('Polqdepth')) { $body['polqdepth'] = $true } if ($PSBoundParameters.ContainsKey('Priority')) { $body['priority'] = $true } if ($PSBoundParameters.ContainsKey('Priqdepth')) { $body['priqdepth'] = $true } if ($PSBoundParameters.ContainsKey('Retryonreset')) { $body['retryonreset'] = $true } if ($PSBoundParameters.ContainsKey('RetryonTimeout')) { $body['retryontimeout'] = $true } if ($PSBoundParameters.ContainsKey('TCPProfile')) { $body['tcpprofile'] = $true } if ($body.Count -le 1) { throw 'Specify at least one property switch to clear.' } if ($PSCmdlet.ShouldProcess("$Name", 'Clear appqoeaction properties')) { $response = Invoke-NSRestRequest @transportParameters -Session $Session -Method POST -Task config -Type appqoeaction -Action unset -Payload @{ appqoeaction = $body } -RawResponse if ($PassThru) { return Invoke-NSGetAppQoEAction -Name $Name -Session $Session } return $response } } } # endregion Invoke-NSUnsetAppQoEAction # region Invoke-NSUnsetAppQoEParameter function Invoke-NSUnsetAppQoEParameter { <# .SYNOPSIS Clears one or more NetScaler appqoeparameter resource properties. .DESCRIPTION Configuration for QOS parameter resource. .PARAMETER AvgwaitingClient average number of client connections, that can sit in service waiting queue. Default value: 1000000 Minimum value = 0 Maximum value = 4294967294 .PARAMETER Dosattackthresh average number of client connection that can queue up on vserver level without triggering DoS mitigation module. Default value: 2000 Minimum value = 0 Maximum value = 4294967294 .PARAMETER MaxAltResponseBandwidth maximum bandwidth which will determine whether to send alternate content response. Default value: 100 Minimum value = 1 Maximum value = 4294967294 .PARAMETER Sessionlife Time, in seconds, between the first time and the next time the AppQoE alternative content window is displayed. The alternative content window is displayed only once during a session for the same browser accessing a configured URL, so this parameter determines the length of a session. Default value: 300 Minimum value = 1 Maximum value = 4294967294 .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .PARAMETER PassThru Returns the updated resource after the operation completes. .EXAMPLE Invoke-NSUnsetAppQoEParameter -AvgwaitingClient -PassThru .EXAMPLE Invoke-NSUnsetAppQoEParameter -AvgwaitingClient -WhatIf .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter()] [switch] $AvgwaitingClient, [Parameter()] [switch] $Dosattackthresh, [Parameter()] [switch] $MaxAltResponseBandwidth, [Parameter()] [switch] $Sessionlife, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning, [Parameter()] [switch] $PassThru ) process { $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $body = @{} if ($PSBoundParameters.ContainsKey('AvgwaitingClient')) { $body['avgwaitingclient'] = $true } if ($PSBoundParameters.ContainsKey('Dosattackthresh')) { $body['dosattackthresh'] = $true } if ($PSBoundParameters.ContainsKey('MaxAltResponseBandwidth')) { $body['maxaltrespbandwidth'] = $true } if ($PSBoundParameters.ContainsKey('Sessionlife')) { $body['sessionlife'] = $true } if ($body.Count -le 0) { throw 'Specify at least one property switch to clear.' } if ($PSCmdlet.ShouldProcess('appqoeparameter', 'Clear appqoeparameter properties')) { $response = Invoke-NSRestRequest @transportParameters -Session $Session -Method POST -Task config -Type appqoeparameter -Action unset -Payload @{ appqoeparameter = $body } -RawResponse return $response } } } # endregion Invoke-NSUnsetAppQoEParameter # region Invoke-NSUpdateAppQoEAction function Invoke-NSUpdateAppQoEAction { <# .SYNOPSIS Updates a NetScaler appqoeaction resource. .DESCRIPTION Configuration for AppQoS action resource. .PARAMETER AltContentPath Path to the alternative content service to be used in the ACS. Minimum length = 4 Maximum length = 127 .PARAMETER AltContentSvcName Name of the alternative content service to be used in the ACS. Minimum length = 1 Maximum length = 127 .PARAMETER Delay Delay threshold, in microseconds, for requests that match the policy's rule. If the delay statistics gathered for the matching request exceed the specified delay, configured action triggered for that request, if there is no action then requests are dropped to the lowest priority level. Minimum value = 1 Maximum value = 599999999 .PARAMETER DosAction DoS Action to take when vserver will be considered under DoS attack and corresponding rule matches. Mandatory if AppQoE actions are to be used for DoS attack prevention. Possible values = SimpleResponse, HICResponse .PARAMETER Dostrigexpression Optional expression to add second level check to trigger DoS actions. Specifically used for Analytics based DoS response generation. .PARAMETER MaxConn Maximum number of concurrent connections that can be open for requests that matches with rule. Minimum value = 1 Maximum value = 4294967294 .PARAMETER Name Name for the AppQoE action. Must begin with a letter, number, or the underscore symbol (_). Other characters allowed, after the first character, are the hyphen (-), period (.) hash (#), space ( ), at (@), equals (=), and colon (:) characters. This is a mandatory argument. .PARAMETER Numretries Retry count. Default value: 3 Minimum value = 0 Maximum value = 7 .PARAMETER Polqdepth Policy queue depth threshold value. When the policy queue size (number of requests queued for the policy binding this action is attached to) increases to the specified polqDepth value, subsequent requests are dropped to the lowest priority level. Minimum value = 0 Maximum value = 4294967294 .PARAMETER Priority Priority for queuing the request. If server resources are not available for a request that matches the configured rule, this option specifies a priority for queuing the request until the server resources are available again. If priority is not configured then Lowest priority will be used to queue the request. Possible values = HIGH, MEDIUM, LOW, LOWEST .PARAMETER Priqdepth Queue depth threshold value per priorirty level. If the queue size (number of requests in the queue of that particular priorirty) on the virtual server to which this policy is bound, increases to the specified qDepth value, subsequent requests are dropped to the lowest priority level. Minimum value = 0 Maximum value = 4294967294 .PARAMETER Retryonreset Retry on TCP Reset. Default value: NO Possible values = YES, NO .PARAMETER RetryonTimeout Retry on request Timeout(in millisec) upon sending request to backend servers. Minimum value = 30 Maximum value = 2000 .PARAMETER TCPProfile Bind TCP Profile based on L2/L3/L7 parameters. Minimum length = 1 Maximum length = 127 .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .PARAMETER PassThru Returns the updated resource after the operation completes. .EXAMPLE Invoke-NSUpdateAppQoEAction -Name 'example' -PassThru .EXAMPLE Invoke-NSUpdateAppQoEAction -Name 'example' -WhatIf .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter()] [string] $AltContentPath, [Parameter()] [string] $AltContentSvcName, [Parameter()] [int] $Delay, [Parameter()] [ValidateSet('SimpleResponse', 'HICResponse')] [string] $DosAction, [Parameter()] [string] $Dostrigexpression, [Parameter()] [int] $MaxConn, [Parameter(Mandatory, Position = 0)] [string] $Name, [Parameter()] [int] $Numretries, [Parameter()] [int] $Polqdepth, [Parameter()] [ValidateSet('HIGH', 'MEDIUM', 'LOW', 'LOWEST')] [string] $Priority, [Parameter()] [int] $Priqdepth, [Parameter()] [ValidateSet('YES', 'NO')] [string] $Retryonreset, [Parameter()] [int] $RetryonTimeout, [Parameter()] [string] $TCPProfile, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning, [Parameter()] [switch] $PassThru ) $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $properties = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) if ($PSBoundParameters.ContainsKey('AltContentPath')) { $properties['altcontentpath'] = $AltContentPath } if ($PSBoundParameters.ContainsKey('AltContentSvcName')) { $properties['altcontentsvcname'] = $AltContentSvcName } if ($PSBoundParameters.ContainsKey('Delay')) { $properties['delay'] = $Delay } if ($PSBoundParameters.ContainsKey('DosAction')) { $properties['dosaction'] = $DosAction } if ($PSBoundParameters.ContainsKey('Dostrigexpression')) { $properties['dostrigexpression'] = $Dostrigexpression } if ($PSBoundParameters.ContainsKey('MaxConn')) { $properties['maxconn'] = $MaxConn } if ($PSBoundParameters.ContainsKey('Name')) { $properties['name'] = $Name } if ($PSBoundParameters.ContainsKey('Numretries')) { $properties['numretries'] = $Numretries } if ($PSBoundParameters.ContainsKey('Polqdepth')) { $properties['polqdepth'] = $Polqdepth } if ($PSBoundParameters.ContainsKey('Priority')) { $properties['priority'] = $Priority } if ($PSBoundParameters.ContainsKey('Priqdepth')) { $properties['priqdepth'] = $Priqdepth } if ($PSBoundParameters.ContainsKey('Retryonreset')) { $properties['retryonreset'] = $Retryonreset } if ($PSBoundParameters.ContainsKey('RetryonTimeout')) { $properties['retryontimeout'] = $RetryonTimeout } if ($PSBoundParameters.ContainsKey('TCPProfile')) { $properties['tcpprofile'] = $TCPProfile } $body = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) foreach ($key in $properties.Keys) { if ($null -ne $properties[$key] -and (-not ($properties[$key] -is [string]) -or $properties[$key] -ne '')) { $body[$key] = $properties[$key] } } if ($PSCmdlet.ShouldProcess("$Name", 'Update appqoeaction')) { $response = Invoke-NSRestRequest @transportParameters -Session $Session -Method PUT -Task config -Type appqoeaction -Payload @{ appqoeaction = $body } -RawResponse if ($PassThru) { return Invoke-NSGetAppQoEAction -Name $Name -Session $Session } return $response } } # endregion Invoke-NSUpdateAppQoEAction # region Invoke-NSUpdateAppQoECustomResponse function Invoke-NSUpdateAppQoECustomResponse { <# .SYNOPSIS Invokes the change operation for a NetScaler appqoecustomresp resource. .DESCRIPTION Configuration for AppQoE custom response page resource. .PARAMETER Name Indicates name of the custom response HTML page to import/update. Minimum length = 1 Maximum length = 31 .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .EXAMPLE Invoke-NSUpdateAppQoECustomResponse -Name 'example' .EXAMPLE Invoke-NSUpdateAppQoECustomResponse -Name 'example' -WhatIf .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory, Position = 0, ValueFromPipelineByPropertyName)] [string] $Name, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning ) process { $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $body = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) if ($PSBoundParameters.ContainsKey('Name')) { $body['name'] = $Name } if ($PSCmdlet.ShouldProcess('appqoecustomresp', 'Change appqoecustomresp')) { Invoke-NSRestRequest @transportParameters -Session $Session -Method POST -Task config -Type appqoecustomresp -Action update -Payload @{ appqoecustomresp = $body } -RawResponse } } } # endregion Invoke-NSUpdateAppQoECustomResponse # region Invoke-NSUpdateAppQoEParameter function Invoke-NSUpdateAppQoEParameter { <# .SYNOPSIS Updates a NetScaler appqoeparameter resource. .DESCRIPTION Configuration for QOS parameter resource. .PARAMETER AvgwaitingClient average number of client connections, that can sit in service waiting queue. Default value: 1000000 Minimum value = 0 Maximum value = 4294967294 .PARAMETER Dosattackthresh average number of client connection that can queue up on vserver level without triggering DoS mitigation module. Default value: 2000 Minimum value = 0 Maximum value = 4294967294 .PARAMETER MaxAltResponseBandwidth maximum bandwidth which will determine whether to send alternate content response. Default value: 100 Minimum value = 1 Maximum value = 4294967294 .PARAMETER Sessionlife Time, in seconds, between the first time and the next time the AppQoE alternative content window is displayed. The alternative content window is displayed only once during a session for the same browser accessing a configured URL, so this parameter determines the length of a session. Default value: 300 Minimum value = 1 Maximum value = 4294967294 .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .PARAMETER PassThru Returns the updated resource after the operation completes. .EXAMPLE Invoke-NSUpdateAppQoEParameter -PassThru .EXAMPLE Invoke-NSUpdateAppQoEParameter -WhatIf .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter()] [int] $AvgwaitingClient, [Parameter()] [int] $Dosattackthresh, [Parameter()] [int] $MaxAltResponseBandwidth, [Parameter()] [int] $Sessionlife, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning, [Parameter()] [switch] $PassThru ) $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $properties = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) if ($PSBoundParameters.ContainsKey('AvgwaitingClient')) { $properties['avgwaitingclient'] = $AvgwaitingClient } if ($PSBoundParameters.ContainsKey('Dosattackthresh')) { $properties['dosattackthresh'] = $Dosattackthresh } if ($PSBoundParameters.ContainsKey('MaxAltResponseBandwidth')) { $properties['maxaltrespbandwidth'] = $MaxAltResponseBandwidth } if ($PSBoundParameters.ContainsKey('Sessionlife')) { $properties['sessionlife'] = $Sessionlife } $body = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) foreach ($key in $properties.Keys) { if ($null -ne $properties[$key] -and (-not ($properties[$key] -is [string]) -or $properties[$key] -ne '')) { $body[$key] = $properties[$key] } } if ($PSCmdlet.ShouldProcess('appqoeparameter', 'Update appqoeparameter')) { $response = Invoke-NSRestRequest @transportParameters -Session $Session -Method PUT -Task config -Type appqoeparameter -Payload @{ appqoeparameter = $body } -RawResponse return $response } } # endregion Invoke-NSUpdateAppQoEParameter # region Invoke-NSUpdateAppQoEPolicy function Invoke-NSUpdateAppQoEPolicy { <# .SYNOPSIS Updates a NetScaler appqoepolicy resource. .DESCRIPTION Configuration for AppQoS policy resource. .PARAMETER Action Configured AppQoE action to trigger. Minimum length = 1 .PARAMETER Name . Minimum length = 1 .PARAMETER Rule Expression or name of a named expression, against which the request is evaluated. The policy is applied if the rule evaluates to true. .PARAMETER Session The NetScaler session. If omitted, the current default session is used. .PARAMETER IgnoreNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ReturnNullOnNotFound Returns null instead of throwing for known NITRO not-found responses. .PARAMETER ThrowOnWarning Treats NITRO warning responses as terminating errors. .PARAMETER PassThru Returns the updated resource after the operation completes. .EXAMPLE Invoke-NSUpdateAppQoEPolicy -Name 'example' -PassThru .EXAMPLE Invoke-NSUpdateAppQoEPolicy -Name 'example' -WhatIf .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Generated from NetScaler NITRO API metadata. Generated: 2026-06-01 21:28 Supported metadata versions: 13.1, 14.1. #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter()] [string] $Action, [Parameter(Mandatory, Position = 0)] [string] $Name, [Parameter()] [string] $Rule, [Parameter()] [psobject] $Session = (Get-NSSession), [Parameter()] [switch] $IgnoreNotFound, [Parameter()] [switch] $ReturnNullOnNotFound, [Parameter()] [switch] $ThrowOnWarning, [Parameter()] [switch] $PassThru ) $metadataVersion = Resolve-NSMetadataVersion -Session $Session -SupportedVersion @('13.1', '14.1') $transportParameters = @{} if ($PSBoundParameters.ContainsKey('IgnoreNotFound')) { $transportParameters.IgnoreNotFound = $IgnoreNotFound } if ($PSBoundParameters.ContainsKey('ReturnNullOnNotFound')) { $transportParameters.ReturnNullOnNotFound = $ReturnNullOnNotFound } if ($PSBoundParameters.ContainsKey('ThrowOnWarning')) { $transportParameters.ThrowOnWarning = $ThrowOnWarning } $properties = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) if ($PSBoundParameters.ContainsKey('Action')) { $properties['action'] = $Action } if ($PSBoundParameters.ContainsKey('Name')) { $properties['name'] = $Name } if ($PSBoundParameters.ContainsKey('Rule')) { $properties['rule'] = $Rule } $body = [System.Collections.Generic.Dictionary[string, object]]::new([System.StringComparer]::Ordinal) foreach ($key in $properties.Keys) { if ($null -ne $properties[$key] -and (-not ($properties[$key] -is [string]) -or $properties[$key] -ne '')) { $body[$key] = $properties[$key] } } if ($PSCmdlet.ShouldProcess("$Name", 'Update appqoepolicy')) { $response = Invoke-NSRestRequest @transportParameters -Session $Session -Method PUT -Task config -Type appqoepolicy -Payload @{ appqoepolicy = $body } -RawResponse if ($PassThru) { return Invoke-NSGetAppQoEPolicy -Name $Name -Session $Session } return $response } } # endregion Invoke-NSUpdateAppQoEPolicy # SIG # Begin signature block # MIImdwYJKoZIhvcNAQcCoIImaDCCJmQCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCEz6COmwLcOMoj # F7UPHYDEnscMgPxO08rcXMue9ypzHaCCIAowggYUMIID/KADAgECAhB6I67aU2mW # D5HIPlz0x+M/MA0GCSqGSIb3DQEBDAUAMFcxCzAJBgNVBAYTAkdCMRgwFgYDVQQK # Ew9TZWN0aWdvIExpbWl0ZWQxLjAsBgNVBAMTJVNlY3RpZ28gUHVibGljIFRpbWUg # U3RhbXBpbmcgUm9vdCBSNDYwHhcNMjEwMzIyMDAwMDAwWhcNMzYwMzIxMjM1OTU5 # WjBVMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSwwKgYD # VQQDEyNTZWN0aWdvIFB1YmxpYyBUaW1lIFN0YW1waW5nIENBIFIzNjCCAaIwDQYJ # KoZIhvcNAQEBBQADggGPADCCAYoCggGBAM2Y2ENBq26CK+z2M34mNOSJjNPvIhKA # VD7vJq+MDoGD46IiM+b83+3ecLvBhStSVjeYXIjfa3ajoW3cS3ElcJzkyZlBnwDE # JuHlzpbN4kMH2qRBVrjrGJgSlzzUqcGQBaCxpectRGhhnOSwcjPMI3G0hedv2eNm # GiUbD12OeORN0ADzdpsQ4dDi6M4YhoGE9cbY11XxM2AVZn0GiOUC9+XE0wI7CQKf # OUfigLDn7i/WeyxZ43XLj5GVo7LDBExSLnh+va8WxTlA+uBvq1KO8RSHUQLgzb1g # bL9Ihgzxmkdp2ZWNuLc+XyEmJNbD2OIIq/fWlwBp6KNL19zpHsODLIsgZ+WZ1AzC # s1HEK6VWrxmnKyJJg2Lv23DlEdZlQSGdF+z+Gyn9/CRezKe7WNyxRf4e4bwUtrYE # 2F5Q+05yDD68clwnweckKtxRaF0VzN/w76kOLIaFVhf5sMM/caEZLtOYqYadtn03 # 4ykSFaZuIBU9uCSrKRKTPJhWvXk4CllgrwIDAQABo4IBXDCCAVgwHwYDVR0jBBgw # FoAU9ndq3T/9ARP/FqFsggIv0Ao9FCUwHQYDVR0OBBYEFF9Y7UwxeqJhQo1SgLqz # YZcZojKbMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMBMGA1Ud # JQQMMAoGCCsGAQUFBwMIMBEGA1UdIAQKMAgwBgYEVR0gADBMBgNVHR8ERTBDMEGg # P6A9hjtodHRwOi8vY3JsLnNlY3RpZ28uY29tL1NlY3RpZ29QdWJsaWNUaW1lU3Rh # bXBpbmdSb290UjQ2LmNybDB8BggrBgEFBQcBAQRwMG4wRwYIKwYBBQUHMAKGO2h0 # dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1B1YmxpY1RpbWVTdGFtcGluZ1Jv # b3RSNDYucDdjMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTAN # BgkqhkiG9w0BAQwFAAOCAgEAEtd7IK0ONVgMnoEdJVj9TC1ndK/HYiYh9lVUacah # RoZ2W2hfiEOyQExnHk1jkvpIJzAMxmEc6ZvIyHI5UkPCbXKspioYMdbOnBWQUn73 # 3qMooBfIghpR/klUqNxx6/fDXqY0hSU1OSkkSivt51UlmJElUICZYBodzD3M/SFj # eCP59anwxs6hwj1mfvzG+b1coYGnqsSz2wSKr+nDO+Db8qNcTbJZRAiSazr7KyUJ # Go1c+MScGfG5QHV+bps8BX5Oyv9Ct36Y4Il6ajTqV2ifikkVtB3RNBUgwu/mSiSU # ice/Jp/q8BMk/gN8+0rNIE+QqU63JoVMCMPY2752LmESsRVVoypJVt8/N3qQ1c6F # ibbcRabo3azZkcIdWGVSAdoLgAIxEKBeNh9AQO1gQrnh1TA8ldXuJzPSuALOz1Uj # b0PCyNVkWk7hkhVHfcvBfI8NtgWQupiaAeNHe0pWSGH2opXZYKYG4Lbukg7HpNi/ # KqJhue2Keak6qH9A8CeEOB7Eob0Zf+fU+CCQaL0cJqlmnx9HCDxF+3BLbUufrV64 # EbTI40zqegPZdA+sXCmbcZy6okx/SjwsusWRItFA3DE8MORZeFb6BmzBtqKJ7l93 # 9bbKBy2jvxcJI98Va95Q5JnlKor3m0E7xpMeYRriWklUPsetMSf2NvUQa/E5vVye # fQIwggZFMIIELaADAgECAhAIMk+dt9qRb2Pk8qM8Xl1RMA0GCSqGSIb3DQEBCwUA # MFYxCzAJBgNVBAYTAlBMMSEwHwYDVQQKExhBc3NlY28gRGF0YSBTeXN0ZW1zIFMu # QS4xJDAiBgNVBAMTG0NlcnR1bSBDb2RlIFNpZ25pbmcgMjAyMSBDQTAeFw0yNDA0 # MDQxNDA0MjRaFw0yNzA0MDQxNDA0MjNaMGsxCzAJBgNVBAYTAk5MMRIwEAYDVQQH # DAlTY2hpam5kZWwxIzAhBgNVBAoMGkpvaG4gQmlsbGVrZW5zIENvbnN1bHRhbmN5 # MSMwIQYDVQQDDBpKb2huIEJpbGxla2VucyBDb25zdWx0YW5jeTCCAaIwDQYJKoZI # hvcNAQEBBQADggGPADCCAYoCggGBAMslntDbSQwHZXwFhmibivbnd0Qfn6sqe/6f # os3pKzKxEsR907RkDMet2x6RRg3eJkiIr3TFPwqBooyXXgK3zxxpyhGOcuIqyM9J # 28DVf4kUyZHsjGO/8HFjrr3K1hABNUszP0o7H3o6J31eqV1UmCXYhQlNoW9FOmRC # 1amlquBmh7w4EKYEytqdmdOBavAD5Xq4vLPxNP6kyA+B2YTtk/xM27TghtbwFGKn # u9Vwnm7dFcpLxans4ONt2OxDQOMA5NwgcUv/YTpjhq9qoz6ivG55NRJGNvUXsM3w # 2o7dR6Xh4MuEGrTSrOWGg2A5EcLH1XqQtkF5cZnAPM8W/9HUp8ggornWnFVQ9/6M # ga+ermy5wy5XrmQpN+x3u6tit7xlHk1Hc+4XY4a4ie3BPXG2PhJhmZAn4ebNSBwN # Hh8z7WTT9X9OFERepGSytZVeEP7hgyptSLcuhpwWeR4QdBb7dV++4p3PsAUQVHFp # wkSbrRTv4EiJ0Lcz9P1HPGFoHiFAQQIDAQABo4IBeDCCAXQwDAYDVR0TAQH/BAIw # ADA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY2NzY2EyMDIxLmNybC5jZXJ0dW0u # cGwvY2NzY2EyMDIxLmNybDBzBggrBgEFBQcBAQRnMGUwLAYIKwYBBQUHMAGGIGh0 # dHA6Ly9jY3NjYTIwMjEub2NzcC1jZXJ0dW0uY29tMDUGCCsGAQUFBzAChilodHRw # Oi8vcmVwb3NpdG9yeS5jZXJ0dW0ucGwvY2NzY2EyMDIxLmNlcjAfBgNVHSMEGDAW # gBTddF1MANt7n6B0yrFu9zzAMsBwzTAdBgNVHQ4EFgQUO6KtBpOBgmrlANVAnyiQ # C6W6lJwwSwYDVR0gBEQwQjAIBgZngQwBBAEwNgYLKoRoAYb2dwIFAQQwJzAlBggr # BgEFBQcCARYZaHR0cHM6Ly93d3cuY2VydHVtLnBsL0NQUzATBgNVHSUEDDAKBggr # BgEFBQcDAzAOBgNVHQ8BAf8EBAMCB4AwDQYJKoZIhvcNAQELBQADggIBAEQsN8wg # PMdWVkwHPPTN+jKpdns5AKVFjcn00psf2NGVVgWWNQBIQc9lEuTBWb54IK6Ga3hx # QRZfnPNo5HGl73YLmFgdFQrFzZ1lnaMdIcyh8LTWv6+XNWfoyCM9wCp4zMIDPOs8 # LKSMQqA/wRgqiACWnOS4a6fyd5GUIAm4CuaptpFYr90l4Dn/wAdXOdY32UhgzmSu # xpUbhD8gVJUaBNVmQaRqeU8y49MxiVrUKJXde1BCrtR9awXbqembc7Nqvmi60tYK # lD27hlpKtj6eGPjkht0hHEsgzU0Fxw7ZJghYG2wXfpF2ziN893ak9Mi/1dmCNmor # GOnybKYfT6ff6YTCDDNkod4egcMZdOSv+/Qv+HAeIgEvrxE9QsGlzTwbRtbm6gwY # YcVBs/SsVUdBn/TSB35MMxRhHE5iC3aUTkDbceo/XP3uFhVL4g2JZHpFfCSu2TQr # rzRn2sn07jfMvzeHArCOJgBW1gPqR3WrJ4hUxL06Rbg1gs9tU5HGGz9KNQMfQFQ7 # 0Wz7UIhezGcFcRfkIfSkMmQYYpsc7rfzj+z0ThfDVzzJr2dMOFsMlfj1T6l22GBq # 9XQx0A4lcc5Fl9pRxbOuHHWFqIBD/BCEhwniOCySzqENd2N+oz8znKooSISStnkN # aYXt6xblJF2dx9Dn89FK7d1IquNxOwt0tI5dMIIGYjCCBMqgAwIBAgIRAKQpO24e # 3denNAiHrXpOtyQwDQYJKoZIhvcNAQEMBQAwVTELMAkGA1UEBhMCR0IxGDAWBgNV # BAoTD1NlY3RpZ28gTGltaXRlZDEsMCoGA1UEAxMjU2VjdGlnbyBQdWJsaWMgVGlt # ZSBTdGFtcGluZyBDQSBSMzYwHhcNMjUwMzI3MDAwMDAwWhcNMzYwMzIxMjM1OTU5 # WjByMQswCQYDVQQGEwJHQjEXMBUGA1UECBMOV2VzdCBZb3Jrc2hpcmUxGDAWBgNV # BAoTD1NlY3RpZ28gTGltaXRlZDEwMC4GA1UEAxMnU2VjdGlnbyBQdWJsaWMgVGlt # ZSBTdGFtcGluZyBTaWduZXIgUjM2MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC # CgKCAgEA04SV9G6kU3jyPRBLeBIHPNyUgVNnYayfsGOyYEXrn3+SkDYTLs1crcw/ # ol2swE1TzB2aR/5JIjKNf75QBha2Ddj+4NEPKDxHEd4dEn7RTWMcTIfm492TW22I # 8LfH+A7Ehz0/safc6BbsNBzjHTt7FngNfhfJoYOrkugSaT8F0IzUh6VUwoHdYDpi # ln9dh0n0m545d5A5tJD92iFAIbKHQWGbCQNYplqpAFasHBn77OqW37P9BhOASdmj # p3IijYiFdcA0WQIe60vzvrk0HG+iVcwVZjz+t5OcXGTcxqOAzk1frDNZ1aw8nFhG # EvG0ktJQknnJZE3D40GofV7O8WzgaAnZmoUn4PCpvH36vD4XaAF2CjiPsJWiY/j2 # xLsJuqx3JtuI4akH0MmGzlBUylhXvdNVXcjAuIEcEQKtOBR9lU4wXQpISrbOT8ux # +96GzBq8TdbhoFcmYaOBZKlwPP7pOp5Mzx/UMhyBA93PQhiCdPfIVOCINsUY4U23 # p4KJ3F1HqP3H6Slw3lHACnLilGETXRg5X/Fp8G8qlG5Y+M49ZEGUp2bneRLZoyHT # yynHvFISpefhBCV0KdRZHPcuSL5OAGWnBjAlRtHvsMBrI3AAA0Tu1oGvPa/4yeei # Ayu+9y3SLC98gDVbySnXnkujjhIh+oaatsk/oyf5R2vcxHahajMCAwEAAaOCAY4w # ggGKMB8GA1UdIwQYMBaAFF9Y7UwxeqJhQo1SgLqzYZcZojKbMB0GA1UdDgQWBBSI # YYyhKjdkgShgoZsx0Iz9LALOTzAOBgNVHQ8BAf8EBAMCBsAwDAYDVR0TAQH/BAIw # ADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDBKBgNVHSAEQzBBMDUGDCsGAQQBsjEB # AgEDCDAlMCMGCCsGAQUFBwIBFhdodHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZn # gQwBBAIwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5zZWN0aWdvLmNvbS9T # ZWN0aWdvUHVibGljVGltZVN0YW1waW5nQ0FSMzYuY3JsMHoGCCsGAQUFBwEBBG4w # bDBFBggrBgEFBQcwAoY5aHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVi # bGljVGltZVN0YW1waW5nQ0FSMzYuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2Nz # cC5zZWN0aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOCAYEAAoE+pIZyUSH5ZakuPVKK # 4eWbzEsTRJOEjbIu6r7vmzXXLpJx4FyGmcqnFZoa1dzx3JrUCrdG5b//LfAxOGy9 # Ph9JtrYChJaVHrusDh9NgYwiGDOhyyJ2zRy3+kdqhwtUlLCdNjFjakTSE+hkC9F5 # ty1uxOoQ2ZkfI5WM4WXA3ZHcNHB4V42zi7Jk3ktEnkSdViVxM6rduXW0jmmiu71Z # pBFZDh7Kdens+PQXPgMqvzodgQJEkxaION5XRCoBxAwWwiMm2thPDuZTzWp/gUFz # i7izCmEt4pE3Kf0MOt3ccgwn4Kl2FIcQaV55nkjv1gODcHcD9+ZVjYZoyKTVWb4V # qMQy/j8Q3aaYd/jOQ66Fhk3NWbg2tYl5jhQCuIsE55Vg4N0DUbEWvXJxtxQQaVR5 # xzhEI+BjJKzh3TQ026JxHhr2fuJ0mV68AluFr9qshgwS5SpN5FFtaSEnAwqZv3IS # +mlG50rK7W3qXbWwi4hmpylUfygtYLEdLQukNEX1jiOKMIIGgjCCBGqgAwIBAgIQ # NsKwvXwbOuejs902y8l1aDANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UEBhMCVVMx # EzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYD # VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBS # U0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjEwMzIyMDAwMDAwWhcNMzgw # MTE4MjM1OTU5WjBXMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1p # dGVkMS4wLAYDVQQDEyVTZWN0aWdvIFB1YmxpYyBUaW1lIFN0YW1waW5nIFJvb3Qg # UjQ2MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAiJ3YuUVnnR3d6Lkm # gZpUVMB8SQWbzFoVD9mUEES0QUCBdxSZqdTkdizICFNeINCSJS+lV1ipnW5ihkQy # C0cRLWXUJzodqpnMRs46npiJPHrfLBOifjfhpdXJ2aHHsPHggGsCi7uE0awqKggE # /LkYw3sqaBia67h/3awoqNvGqiFRJ+OTWYmUCO2GAXsePHi+/JUNAax3kpqstbl3 # vcTdOGhtKShvZIvjwulRH87rbukNyHGWX5tNK/WABKf+Gnoi4cmisS7oSimgHUI0 # Wn/4elNd40BFdSZ1EwpuddZ+Wr7+Dfo0lcHflm/FDDrOJ3rWqauUP8hsokDoI7D/ # yUVI9DAE/WK3Jl3C4LKwIpn1mNzMyptRwsXKrop06m7NUNHdlTDEMovXAIDGAvYy # nPt5lutv8lZeI5w3MOlCybAZDpK3Dy1MKo+6aEtE9vtiTMzz/o2dYfdP0KWZwZIX # bYsTIlg1YIetCpi5s14qiXOpRsKqFKqav9R1R5vj3NgevsAsvxsAnI8Oa5s2oy25 # qhsoBIGo/zi6GpxFj+mOdh35Xn91y72J4RGOJEoqzEIbW3q0b2iPuWLA911cRxgY # 5SJYubvjay3nSMbBPPFsyl6mY4/WYucmyS9lo3l7jk27MAe145GWxK4O3m3gEFEI # kv7kRmefDR7Oe2T1HxAnICQvr9sCAwEAAaOCARYwggESMB8GA1UdIwQYMBaAFFN5 # v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBT2d2rdP/0BE/8WoWyCAi/QCj0U # JTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zATBgNVHSUEDDAKBggr # BgEFBQcDCDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0 # cDovL2NybC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25B # dXRob3JpdHkuY3JsMDUGCCsGAQUFBwEBBCkwJzAlBggrBgEFBQcwAYYZaHR0cDov # L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEADr5lQe1oRLjl # ocXUEYfktzsljOt+2sgXke3Y8UPEooU5y39rAARaAdAxUeiX1ktLJ3+lgxtoLQhn # 5cFb3GF2SSZRX8ptQ6IvuD3wz/LNHKpQ5nX8hjsDLRhsyeIiJsms9yAWnvdYOdEM # q1W61KE9JlBkB20XBee6JaXx4UBErc+YuoSb1SxVf7nkNtUjPfcxuFtrQdRMRi/f # InV/AobE8Gw/8yBMQKKaHt5eia8ybT8Y/Ffa6HAJyz9gvEOcF1VWXG8OMeM7Vy7B # s6mSIkYeYtddU1ux1dQLbEGur18ut97wgGwDiGinCwKPyFO7ApcmVJOtlw9FVJxw # /mL1TbyBns4zOgkaXFnnfzg4qbSvnrwyj1NiurMp4pmAWjR+Pb/SIduPnmFzbSN/ # G8reZCL4fvGlvPFk4Uab/JVCSmj59+/mB2Gn6G/UYOy8k60mKcmaAZsEVkhOFuoj # 4we8CYyaR9vd9PGZKSinaZIkvVjbH/3nlLb0a7SBIkiRzfPfS9T+JesylbHa1LtR # V9U/7m0q7Ma2CQ/t392ioOssXW7oKLdOmMBl14suVFBmbzrt5V5cQPnwtd3UOTpS # 9oCG+ZZheiIvPgkDmA8FzPsnfXW5qHELB43ET7HHFHeRPRYrMBKjkb8/IN7Po0d0 # hQoF4TeMM+zYAJzoKQnVKOLg8pZVPT8wgga5MIIEoaADAgECAhEAmaOACiZVO2Wr # 3G6EprPqOTANBgkqhkiG9w0BAQwFADCBgDELMAkGA1UEBhMCUEwxIjAgBgNVBAoT # GVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0 # aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0 # d29yayBDQSAyMB4XDTIxMDUxOTA1MzIxOFoXDTM2MDUxODA1MzIxOFowVjELMAkG # A1UEBhMCUEwxITAfBgNVBAoTGEFzc2VjbyBEYXRhIFN5c3RlbXMgUy5BLjEkMCIG # A1UEAxMbQ2VydHVtIENvZGUgU2lnbmluZyAyMDIxIENBMIICIjANBgkqhkiG9w0B # AQEFAAOCAg8AMIICCgKCAgEAnSPPBDAjO8FGLOczcz5jXXp1ur5cTbq96y34vuTm # flN4mSAfgLKTvggv24/rWiVGzGxT9YEASVMw1Aj8ewTS4IndU8s7VS5+djSoMcbv # IKck6+hI1shsylP4JyLvmxwLHtSworV9wmjhNd627h27a8RdrT1PH9ud0IF+njvM # k2xqbNTIPsnWtw3E7DmDoUmDQiYi/ucJ42fcHqBkbbxYDB7SYOouu9Tj1yHIohzu # C8KNqfcYf7Z4/iZgkBJ+UFNDcc6zokZ2uJIxWgPWXMEmhu1gMXgv8aGUsRdaCtVD # 2bSlbfsq7BiqljjaCun+RJgTgFRCtsuAEw0pG9+FA+yQN9n/kZtMLK+Wo837Q4QO # ZgYqVWQ4x6cM7/G0yswg1ElLlJj6NYKLw9EcBXE7TF3HybZtYvj9lDV2nT8mFSkc # SkAExzd4prHwYjUXTeZIlVXqj+eaYqoMTpMrfh5MCAOIG5knN4Q/JHuurfTI5XDY # O962WZayx7ACFf5ydJpoEowSP07YaBiQ8nXpDkNrUA9g7qf/rCkKbWpQ5boufUnq # 1UiYPIAHlezf4muJqxqIns/kqld6JVX8cixbd6PzkDpwZo4SlADaCi2JSplKShBS # ND36E/ENVv8urPS0yOnpG4tIoBGxVCARPCg1BnyMJ4rBJAcOSnAWd18Jx5n858JS # qPECAwEAAaOCAVUwggFRMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFN10XUwA # 23ufoHTKsW73PMAywHDNMB8GA1UdIwQYMBaAFLahVDkCw6A/joq8+tT4HKbROg79 # MA4GA1UdDwEB/wQEAwIBBjATBgNVHSUEDDAKBggrBgEFBQcDAzAwBgNVHR8EKTAn # MCWgI6Ahhh9odHRwOi8vY3JsLmNlcnR1bS5wbC9jdG5jYTIuY3JsMGwGCCsGAQUF # BwEBBGAwXjAoBggrBgEFBQcwAYYcaHR0cDovL3N1YmNhLm9jc3AtY2VydHVtLmNv # bTAyBggrBgEFBQcwAoYmaHR0cDovL3JlcG9zaXRvcnkuY2VydHVtLnBsL2N0bmNh # Mi5jZXIwOQYDVR0gBDIwMDAuBgRVHSAAMCYwJAYIKwYBBQUHAgEWGGh0dHA6Ly93 # d3cuY2VydHVtLnBsL0NQUzANBgkqhkiG9w0BAQwFAAOCAgEAdYhYD+WPUCiaU58Q # 7EP89DttyZqGYn2XRDhJkL6P+/T0IPZyxfxiXumYlARMgwRzLRUStJl490L94C9L # GF3vjzzH8Jq3iR74BRlkO18J3zIdmCKQa5LyZ48IfICJTZVJeChDUyuQy6rGDxLU # UAsO0eqeLNhLVsgw6/zOfImNlARKn1FP7o0fTbj8ipNGxHBIutiRsWrhWM2f8pXd # d3x2mbJCKKtl2s42g9KUJHEIiLni9ByoqIUul4GblLQigO0ugh7bWRLDm0CdY9rN # LqyA3ahe8WlxVWkxyrQLjH8ItI17RdySaYayX3PhRSC4Am1/7mATwZWwSD+B7eMc # ZNhpn8zJ+6MTyE6YoEBSRVrs0zFFIHUR08Wk0ikSf+lIe5Iv6RY3/bFAEloMU+vU # BfSouCReZwSLo8WdrDlPXtR0gicDnytO7eZ5827NS2x7gCBibESYkOh1/w1tVxTp # V2Na3PR7nxYVlPu1JPoRZCbH86gc96UTvuWiOruWmyOEMLOGGniR+x+zPF/2DaGg # K2W1eEJfo2qyrBNPvF7wuAyQfiFXLwvWHamoYtPZo0LHuH8X3n9C+xN4YaNjt2yw # zOr+tKyEVAotnyU9vyEVOaIYMk3IeBrmFnn0gbKeTTyYeEEUz/Qwt4HOUBCrW602 # NCmvO1nm+/80nLy5r0AZvCQxaQ4xggXDMIIFvwIBATBqMFYxCzAJBgNVBAYTAlBM # MSEwHwYDVQQKExhBc3NlY28gRGF0YSBTeXN0ZW1zIFMuQS4xJDAiBgNVBAMTG0Nl # cnR1bSBDb2RlIFNpZ25pbmcgMjAyMSBDQQIQCDJPnbfakW9j5PKjPF5dUTANBglg # hkgBZQMEAgEFAKCBhDAYBgorBgEEAYI3AgEMMQowCKACgAChAoAAMBkGCSqGSIb3 # DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEV # MC8GCSqGSIb3DQEJBDEiBCAvUQ8zfw0f/OjbO4GS/If/w1pOdXoloDSOgH56n15d # 9DANBgkqhkiG9w0BAQEFAASCAYBJyJxKmCXDColUfxsKmJqvmm4n4xbGQ5C3MS+8 # cVGesxzNHOZ83utKWswPwOohU9nTulr8H50DdJcikcGqcGFH+24fR9rRgMlZn4Fh # rbNPZ9HhPCLEBnqrd0598JnNJDHVKxCrBRND+UXjLJu4SfkEpbaOeqkur8xeahyP # FuuOVezUm7hfHfaAxXtXbmoHhvwwMwu9frccX/IrXZSlXuWi6tBeNGZ57dMsyNzi # bWOPak7q33BIcXAD1pxfyVC1CB/Xm8nu9gS+QpTX/9AvWWo+vcFZcHHjshOcu2eB # 6AKSym1Vzy6tIxYpwdAH2lQOFkbBtpedZIcnbt5scAPLqXISCxzoeGDL3SnKsnAK # hQbijTj/WhReKrnsTuRWwYNgsHjIXeM2pjket60yd9voSvo5xLuQZOh2Nd2JM2U9 # keynkk0crZddfZkaREzJv2Sey4f8KcIJw8YmFORFo6NPA4q0M8SbI0DQGdLbv3ZO # 7Epfl5wHHl1GuDvUG/27O7lg9JqhggMjMIIDHwYJKoZIhvcNAQkGMYIDEDCCAwwC # AQEwajBVMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSww # KgYDVQQDEyNTZWN0aWdvIFB1YmxpYyBUaW1lIFN0YW1waW5nIENBIFIzNgIRAKQp # O24e3denNAiHrXpOtyQwDQYJYIZIAWUDBAICBQCgeTAYBgkqhkiG9w0BCQMxCwYJ # KoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yNjA2MDExOTU0MTRaMD8GCSqGSIb3 # DQEJBDEyBDC/muOWaTqiDShnTk400XtKlz311aiv1o4N7TDVwRQPlNiKc7tMcUJn # T2cKFQ+phh0wDQYJKoZIhvcNAQEBBQAEggIAbqY1adN4Wpko9evesBtmyplG/xcT # MZCKZQDeJHGxRjaNMWrD5M0ApVb2Pj2fxP51NreNh+IWpzSrv4em3EKofHwu5DYT # rd+fNXofYlrRG6x9pQfl7chV3jMRHG+YeJeJy6tV8ioz0d3Gq901dTMfUqrqDXFB # riA7L1DCtyfB8lSF+/WwS0Iy1+J03khQEefgoA+sygKCmAEWFzNz6EEIFZ0hQvbF # MtroXBxA0MOauUiuwpMuE4ymbmdRAT6PecSiLoyKH3WSJl6jeoshZhgEP3/73glm # Gnh8pXgFlAR+ljWuPfdBAKPA2vJrLF+D6Z8Wfavl5WhDn4WFqNb/0mdtrV4vsbuZ # F3b/IzKhvVYvss9rR7/pOBep4eCS5ivqkEvuKoj1vJimOPXAPRJknOadyRnd1OkU # L2F+ycg/mI/ubD/wGnV5j8C4/2wIuKuOnF4Ozk5t7vtTGAJH0qvPfbR7S7TzZgmm # 4w+JAQGFBh5uP6OnZj4Gl11JCQvvvUCZmaUlsMdvq93ekh6KKI1glcPAriHAZ0VW # xAD++ivIvDAl5nnfcfh1hDj4XJ198do+R2PU1c1NwSY1mp09uP2HSpWjUNoC+K19 # 1iY5hLUTmOyTC2TdkqHnjhQLZKV9AN+kRe1EnpbhDdhK68gajIz2Kq5Fy6wOWlC4 # 6aqgGhTzVEqJ88g= # SIG # End signature block |