<?xml version="1.0"?>
<ScriptProject Name="ScriptTask_136a4f89b4964bcdb199923d4eb40ac9" VSTAMajorVersion="2" VSTAMinorVersion="1" Language="VisualBasic" EntryPoint="Main" ReadOnlyVariables="" ReadWriteVariables="">
  <ProjectItem Name="\scriptmain.vb">
<![CDATA[' Microsoft SQL Server Integration Services Script Task
'
' Copyright (c) 2006-2013 COZYROC LLC
' 
' Permission is hereby granted, free of charge, to any person
' obtaining a copy of this software and associated documentation
' files (the "Software"), to deal in the Software without
' restriction, including without limitation the rights to use,
' copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following
' conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' OTHER DEALINGS IN THE SOFTWARE.
'
' The following resource was used as a reference:
' http://mattfrear.com/2010/07/13/send-as2-with-dotnet/

Imports System
Imports System.ComponentModel
Imports System.Collections
Imports System.Net
Imports System.IO
Imports System.Text
Imports System.Security.Cryptography.X509Certificates
Imports System.Security.Cryptography.Pkcs

Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<SortProperties(New String() { _
    "HttpConnection", _
    "IsInputFileVariable", "InputFileVariable", "InputFile", "ContentType", _
    "AS2From", "AS2To", _
    "ResultFile", _
    "Sign", "IsSigningCertificateVariable", "SigningCertificateVariable", "SigningCertificate", "SigningCertificatePassword", _
    "Encrypt", "IsRecipientCertificateVariable", "RecipientCertificateVariable", "RecipientCertificate"})> _
<ValidateProperties("Validate")> _
<FilterProperties("GetProperties")> _
<System.AddIn.AddIn("ScriptMain", Version:="1.0", Publisher:="", Description:="")> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
	Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase

	Enum ScriptResults
		Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success
		Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
	End Enum


    Private Class Consts
        Public Const EncryptionNone As String = "None"
    End Class   ' Consts


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' The execution engine calls this method when the task executes.
    ' To access the object model, use the Dts object. Connections, variables, events,
    ' and logging features are available as static members of the Dts class.
    ' Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.
    ' 
    ' To open Code and Text Editor Help, press F1.
    ' To open Object Browser, press Ctrl+Alt+J.
    Public Sub Main()
        Dim result As Integer = ScriptResults.Success

        Try
            Dim inputFile As String = GetFileName_(Me.IsInputFileVariable, Me.InputFile)

            ' Initialize request.
            Dim req As HttpWebRequest = SetupRequest_()
            Call req.Headers.Add("Subject", inputFile + " transmission.")

            Dim content() As Byte = File.ReadAllBytes(inputFile)
            Dim contentType As String = Me.ContentType

            If Not Me.Sign AndAlso Me.Encrypt = Consts.EncryptionNone Then
                Call req.Headers.Add("Content-Transfer-Encoding", "binary")
                Call req.Headers.Add("Content-Disposition", "inline; filename=""" + inputFile + """")
            End If

            If Me.Sign Then
                Dim signCert As String = GetFileName_( _
                    Me.IsSigningCertificateVariable, _
                    Me.SigningCertificate)

                content = CreateMessage_(content, contentType, "binary")
                content = SignMessage_(content, signCert, Me.SigningCertificatePassword, contentType)

                Call req.Headers.Add("EDIINT-Features", "multiple-attachments")
            End If

            If Me.Encrypt <> Consts.EncryptionNone Then
                Dim recipientCert As String = GetFileName_( _
                    Me.IsRecipientCertificateVariable, _
                    Me.RecipientCertificate)

                content = CreateMessage_(content, contentType, String.Empty)
                content = Encrypt_(content, recipientCert, Me.Encrypt)

                contentType = "application/pkcs7-mime; smime-type=enveloped-data; name=""smime.p7m"""
            End If

            req.ContentType = contentType
            req.ContentLength = content.Length
            Using reqStream As Stream = req.GetRequestStream()
                Call reqStream.Write(content, 0, content.Length)
            End Using

            Dim res As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse)
            Call StoreResult_(res)
        Catch ex As Exception
            result = ScriptResults.Failure
            Call Dts.Events.FireError( _
                0, _
                "AS2 Send Task", _
                ex.ToString(), _
                String.Empty, _
                0)
        End Try

        Dts.TaskResult = result
    End Sub ' Main


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Function Validate(ByRef errMessage As String) As Boolean
        Dim result As Boolean

        Try
            If String.IsNullOrEmpty(Me.HttpConnection) Then
                Throw New Exception("Select HTTP connection.")
            End If

            If String.IsNullOrEmpty(m_inputFile) Then
                Throw New Exception("Select input file.")
            End If

            If String.IsNullOrEmpty(Me.AS2From) Then
                Throw New Exception("Specify AS2 from.")
            End If

            If String.IsNullOrEmpty(Me.AS2To) Then
                Throw New Exception("Specify AS2 to.")
            End If

            If Me.Sign Then
                If String.IsNullOrEmpty(m_signCert) Then
                    Throw New Exception("Select signing certificate file.")
                End If

                If String.IsNullOrEmpty(Me.SigningCertificatePassword) Then
                    Throw New Exception("Specify signing certificate password.")
                End If
            End If

            If Me.Encrypt <> Consts.EncryptionNone Then
                If String.IsNullOrEmpty(m_recipientCert) Then
                    Throw New Exception("Select recipient certificate file.")
                End If
            End If

            result = True
        Catch ex As Exception
            result = False
            errMessage = ex.Message
        End Try

        Validate = result
    End Function    'Validate



    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of current properties based on current state.
    Public Function GetProperties() As String()
        Dim result As New ArrayList

        ' Base properties.
        Call result.Add("HttpConnection")
        Call result.Add("IsInputFileVariable")
        Call result.Add(IIf(Me.IsInputFileVariable, "InputFileVariable", "InputFile"))
        Call result.Add("ContentType")
        Call result.Add("AS2From")
        Call result.Add("AS2To")
        Call result.Add("ResultFile")

        Call result.Add("Sign")
        If Me.Sign Then
            Call result.Add("IsSigningCertificateVariable")
            Call result.Add(IIf( _
                Me.IsSigningCertificateVariable, _
                "SigningCertificateVariable", _
                "SigningCertificate"))
            Call result.Add("SigningCertificatePassword")
        End If

        Call result.Add("Encrypt")
        If Me.Encrypt <> Consts.EncryptionNone Then
            Call result.Add("IsRecipientCertificateVariable")
            Call result.Add(IIf( _
                Me.IsRecipientCertificateVariable, _
                "RecipientCertificateVariable", _
                "RecipientCertificate"))
        End If

        Return CType(result.ToArray(GetType(String)), String())
    End Function    ' GetProperties


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Settings")> _
    <Description("Select HTTP connection.")> _
    <Connection("HttpConnectionType")> _
    Public Property HttpConnection() As String
        Get
            HttpConnection = m_connection
        End Get
        Set(ByVal value As String)
            m_connection = value
        End Set
    End Property    ' HttpConnection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Settings")> _
    <Description("Specifies if InputFile is variable.")> _
    <RefreshProperties(RefreshProperties.All)> _
    <NonEssential()> _
    Public Property IsInputFileVariable() As Boolean
        Get
            IsInputFileVariable = m_isInputFileVar
        End Get
        Set(ByVal value As Boolean)
            m_isInputFileVar = value
        End Set
    End Property    ' IsInputFileVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Settings")> _
    <Description("Select variable containing input file path.")> _
    <Variable()> _
    Public Property InputFileVariable() As String
        Get
            InputFileVariable = m_inputFile
        End Get
        Set(ByVal value As String)
            m_inputFile = value
        End Set
    End Property    ' InputFileVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Settings")> _
    <Description("Select input file.")> _
    <Connection("FileConnectionType")> _
    Public Property InputFile() As String
        Get
            InputFile = m_inputFile
        End Get
        Set(ByVal value As String)
            m_inputFile = value
        End Set
    End Property    ' InputFile


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Settings")> _
    <Description("Specify content type.")> _
    <List(New Object() {"application/xml", "application/EDI-X12", "application/EDIFACT"}, False, True)> _
    <DefaultValue("application/EDI-X12")> _
    Public Property ContentType() As String
        Get
            ContentType = m_contentType
        End Get
        Set(ByVal value As String)
            m_contentType = value
        End Set
    End Property    ' ContentType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Settings")> _
    <Description("Specify AS2 From.")> _
    Public Property AS2From() As String
        Get
            AS2From = m_from
        End Get
        Set(ByVal value As String)
            m_from = value
        End Set
    End Property    ' AS2From


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Settings")> _
    <Description("Specify AS2 To.")> _
    Public Property AS2To() As String
        Get
            AS2To = m_to
        End Get
        Set(ByVal value As String)
            m_to = value
        End Set
    End Property    ' AS2To


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Settings")> _
    <Description("Select result file.")> _
    <Connection("FileConnectionType")> _
    Public Property ResultFile() As String
        Get
            ResultFile = m_resultFile
        End Get
        Set(ByVal value As String)
            m_resultFile = value
        End Set
    End Property    ' ResultFile


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Signature")> _
    <Description("Specifies if input file is signed.")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Sign() As Boolean
        Get
            Sign = m_sign
        End Get
        Set(ByVal value As Boolean)
            m_sign = value
        End Set
    End Property    ' Sign


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Signature")> _
    <Description("Specifies if SigningCertificate is variable.")> _
    <RefreshProperties(RefreshProperties.All)> _
    <NonEssential()> _
    Public Property IsSigningCertificateVariable() As Boolean
        Get
            IsSigningCertificateVariable = m_isSignCertVar
        End Get
        Set(ByVal value As Boolean)
            m_isSignCertVar = value
        End Set
    End Property    ' IsSigningCertificateVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Signature")> _
    <Description("Select variable containing signing certificate file path.")> _
    <Variable()> _
    Public Property SigningCertificateVariable() As String
        Get
            SigningCertificateVariable = m_signCert
        End Get
        Set(ByVal value As String)
            m_signCert = value
        End Set
    End Property    ' SigningCertificateVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Signature")> _
    <Description("Select signing certificate file.")> _
    <Connection("FileConnectionType")> _
    Public Property SigningCertificate() As String
        Get
            SigningCertificate = m_signCert
        End Get
        Set(ByVal value As String)
            m_signCert = value
        End Set
    End Property    ' SigningCertificate


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Signature")> _
    <Description("Specify signing certificate password.")> _
    <PasswordPropertyText(True)> _
    Public Property SigningCertificatePassword() As String
        Get
            SigningCertificatePassword = m_signPass
        End Get
        Set(ByVal value As String)
            m_signPass = value
        End Set
    End Property    ' SigningCertificatePassword


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Encryption")> _
    <Description("Specify encryption type.")> _
    <List(New Object() {"None", "3DES", "RC2"})> _
    <DefaultValue(Consts.EncryptionNone)> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Encrypt() As String
        Get
            Encrypt = m_encryption
        End Get
        Set(ByVal value As String)
            m_encryption = value
        End Set
    End Property    ' Encrypt


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Encryption")> _
    <Description("Specifies if RecipientCertificate is variable.")> _
    <RefreshProperties(RefreshProperties.All)> _
    <NonEssential()> _
    Public Property IsRecipientCertificateVariable() As Boolean
        Get
            IsRecipientCertificateVariable = m_isRecipientCertVar
        End Get
        Set(ByVal value As Boolean)
            m_isRecipientCertVar = value
        End Set
    End Property    ' IsRecipientCertificateVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Encryption")> _
    <Description("Select variable containing recipient certificate file path.")> _
    <Variable()> _
    Public Property RecipientCertificateVariable() As String
        Get
            RecipientCertificateVariable = m_recipientCert
        End Get
        Set(ByVal value As String)
            m_recipientCert = value
        End Set
    End Property    ' RecipientCertificateVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Encryption")> _
    <Description("Select recipient certificate file.")> _
    <Connection("FileConnectionType")> _
    Public Property RecipientCertificate() As String
        Get
            RecipientCertificate = m_recipientCert
        End Get
        Set(ByVal value As String)
            m_recipientCert = value
        End Set
    End Property    ' RecipientCertificate
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property HttpConnectionType() As String()
        Get
            HttpConnectionType = New String() {"HTTP"}
        End Get
    End Property    ' HttpConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property FileConnectionType() As String()
        Get
            FileConnectionType = New String() {"FILE"}
        End Get
    End Property    ' FileConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetVariable_(ByVal name As String) As Object
        Dim result As Object
        Dim vars As Variables = Nothing

        Call Dts.VariableDispenser.LockOneForRead(name, vars)
        Try
            result = vars(name).Value
        Finally
            Call vars.Unlock()
        End Try

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetFileName_(ByVal isVar As Boolean, ByVal name As String) As String
        If isVar Then
            GetFileName_ = GetVariable_(name).ToString()
        Else
            GetFileName_ = Dts.Connections(name).AcquireConnection(Nothing).ToString()
        End If
    End Function    ' GetFileName_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function SetupRequest_() As HttpWebRequest
        Dim connection As IDTSHttpClientConnection100 = CType( _
            Dts.Connections(Me.HttpConnection).AcquireConnection(Nothing), _
            IDTSHttpClientConnection100)

        Dim result As HttpWebRequest = CType( _
            WebRequest.Create(connection.ServerURL), _
            HttpWebRequest)
        result.Timeout = connection.Timeout * 1000
        result.Method = "POST"
        result.AllowAutoRedirect = True
        result.KeepAlive = True
        result.PreAuthenticate = False
        result.SendChunked = False
        result.UserAgent = "COZYROC AS2 Send Task"

        If connection.UseServerCredentials Then
            result.Credentials = New NetworkCredential( _
                connection.ServerUserName, _
                connection.GetServerPassword(), _
                connection.ServerDomain)
        End If

        If connection.UseProxy Then
            result.Proxy = New WebProxy(connection.ProxyURL)

            If connection.UseProxyCredentials Then
                result.Proxy.Credentials = New NetworkCredential( _
                    connection.ProxyUserName, _
                    connection.GetProxyPassword(), _
                    connection.ProxyDomain)
            End If
        End If

        ' Common request headers.
        Call result.Headers.Add("Mime-Version", "1.0")
        Call result.Headers.Add("AS2-Version", "1.0")
        Call result.Headers.Add("AS2-From", Me.AS2From)
        Call result.Headers.Add("AS2-To", Me.AS2To)
        Call result.Headers.Add("Message-Id", "<" + DateTime.Now.ToString("hhmmssddd") + "@as2>")

        SetupRequest_ = result
    End Function    ' SetupRequest_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '  Returns a single array of bytes out of all the supplied byte arrays.
    Private Function ConcatBytes_(ByVal ParamArray inputList As Byte()()) As Byte()
        Dim length As Integer = 0

        For Each input As Byte() In inputList
            length += input.Length
        Next

        Dim result() As Byte = New Byte(length) {}
        Dim pos As Integer
        For Each input As Byte() In inputList
            Call input.CopyTo(result, pos)
            pos += input.Length
        Next

        ConcatBytes_ = result
    End Function    ' ConcatBytes_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns a unique MIME style boundary
    Private Function CreateMimeBoundary_() As String
        CreateMimeBoundary_ = "_" + Guid.NewGuid().ToString("N") + "_"
    End Function    ' CreateMimeBoundary_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Creates the a Mime header out of the components listed.
    Private Function CreateMimeHeader_( _
        ByVal contentType As String, _
        ByVal encoding As String, _
        ByVal disposition As String) As String

        Dim result As String = "Content-Type: " + contentType + Environment.NewLine

        If Not String.IsNullOrEmpty(encoding) Then
            result += "Content-Transfer-Encoding: " + encoding + Environment.NewLine
        End If

        If Not String.IsNullOrEmpty(disposition) Then
            result += "Content-Disposition: " + disposition + Environment.NewLine
        End If

        result += Environment.NewLine

        CreateMimeHeader_ = result
    End Function    ' CreateMimeHeader_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Create a MIME Message out of byte arrays.
    Private Function CreateMessage_( _
        ByVal content() As Byte, _
        ByVal contentType As String, _
        ByVal encoding As String) As Byte()

        Dim header() As Byte = ASCIIEncoding.ASCII.GetBytes(CreateMimeHeader_( _
            contentType, _
            encoding, _
            String.Empty))

        CreateMessage_ = ConcatBytes_(header, content)
    End Function    ' CreateMessage_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Signs a message and returns a MIME encoded array of bytes containing the signature.
    Private Function SignMessage_( _
        ByVal message() As Byte, _
        ByVal certFile As String, _
        ByVal certPass As String, _
        ByRef contentType As String) As Byte()

        ' get a MIME boundary
        Dim boundaryStr As String = CreateMimeBoundary_()

        ' Get the Headers for the entire message.
        contentType = "multipart/signed; protocol=""application/pkcs7-signature""; micalg=""sha1""; boundary=""" + boundaryStr + """"

        ' Define the boundary byte array.
        Dim boundary() As Byte = ASCIIEncoding.ASCII.GetBytes(Environment.NewLine + "--" + boundaryStr + Environment.NewLine)

        ' Encode the header for the signature portion.
        Dim signatureHeader() As Byte = ASCIIEncoding.ASCII.GetBytes(CreateMimeHeader_( _
            "application/pkcs7-signature; name=""smime.p7s""", "base64", "attachment; filename=smime.p7s"))

        ' Get the signature.
        Dim signature() As Byte = CreateSignature_(message, certFile, certPass)

        ' Convert to base64
        signature = ASCIIEncoding.ASCII.GetBytes(Convert.ToBase64String(signature) + Environment.NewLine + Environment.NewLine)

        ' Calculate the final footer elements.
        Dim finalFooter() As Byte = ASCIIEncoding.ASCII.GetBytes("--" + boundaryStr + "--" + Environment.NewLine)

        ' Concatenate all the above together to form the message.
        SignMessage_ = ConcatBytes_(boundary, message, boundary, signatureHeader, signature, finalFooter)
    End Function    ' SignMessage_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function CreateSignature_( _
        ByVal content() As Byte, _
        ByVal certFile As String, _
        ByVal certPass As String) As Byte()

        Dim signedCms As New SignedCms(New ContentInfo(content), True)
        Dim cmsSigner As New CmsSigner(New X509Certificate2(certFile, certPass))

        Call signedCms.ComputeSignature(cmsSigner)

        CreateSignature_ = signedCms.Encode()
    End Function    ' CreateSignature_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function Encrypt_( _
        ByVal content() As Byte, _
        ByVal recipientCert As String, _
        ByVal algorithm As String) As Byte()

        Dim envelopedCms As EnvelopedCms = New EnvelopedCms( _
            New ContentInfo(content), _
            New AlgorithmIdentifier(New System.Security.Cryptography.Oid(algorithm)))

        Dim recipient As CmsRecipient = New CmsRecipient( _
            SubjectIdentifierType.IssuerAndSerialNumber, _
            New X509Certificate2(recipientCert))

        Call envelopedCms.Encrypt(recipient)

        Encrypt_ = envelopedCms.Encode()
    End Function    ' Encrypt_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub StoreResult_(ByVal res As HttpWebResponse)
        If String.IsNullOrEmpty(Me.ResultFile) Then
            Return
        End If

        ' Store response in result file.
        Dim resultFile As String = Dts.Connections(Me.ResultFile).AcquireConnection(Nothing).ToString()
        Using resStream As Stream = Res.GetResponseStream()
            Using resultStream As Stream = File.OpenWrite(resultFile)
                Dim buf() As Byte = New Byte(4096) {}
                Dim bytesRead As Integer = 0
                Do
                    bytesRead = resStream.Read(buf, 0, buf.Length)
                    Call resultStream.Write(buf, 0, bytesRead)
                Loop While bytesRead > 0
            End Using
        End Using
    End Sub ' StoreResult_
#End Region ' Internals


#Region "Attributes"
    Private m_connection As String
    Private m_isInputFileVar As Boolean
    Private m_inputFile As String
    Private m_contentType As String
    Private m_from As String
    Private m_to As String
    Private m_resultFile As String
    Private m_sign As Boolean
    Private m_isSignCertVar As Boolean
    Private m_signCert As String
    Private m_signPass As String
    Private m_encryption As String
    Private m_isRecipientCertVar As Boolean
    Private m_recipientCert As String
#End Region ' Attributes

End Class   ' ScriptMain]]></ProjectItem>
  <ProjectItem Name="\scripttask_136a4f89b4964bcdb199923d4eb40ac9.vbproj">
<![CDATA[<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- This section defines project-level properties.

       Configuration - Specifies whether the default configuration is Release or Debug.
       Platform - Specifies what CPU the output of this project can run on.
       OutputType - Must be "Library" for VSTA.
       NoStandardLibraries - Set to "false" for VSTA.
       RootNamespace - In C#, this specifies the namespace given to new files.
                       In Visual Basic, all objects are wrapped in this namespace at runtime.
       AssemblyName - Name of the output assembly.
  -->
  <PropertyGroup>
    <ProjectTypeGuids>{A860303F-1F3F-4691-B57E-529FC101A107};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <OutputType>Library</OutputType>
    <RootNamespace>ScriptTask_136a4f89b4964bcdb199923d4eb40ac9.vbproj</RootNamespace>
    <AssemblyName>ScriptTask_136a4f89b4964bcdb199923d4eb40ac9.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{5A4EF96F-DAD0-4CEC-8F34-703E2E004C51}</ProjectGuid>
  </PropertyGroup>
  <!-- This section defines properties that are set when the "Debug" configuration is
       selected.

       DebugSymbols - If true, create symbols (.pdb). If false, do not create symbols.
       Optimize - If true, optimize the build output. If false, do not optimize.
       OutputPath - Output path of the project relative to the project file.
       EnableUnmanagedDebugging - If true, starting the debugger will attach both managed and unmanaged debuggers.
       DefineConstants - Constants defined for the preprocessor.
       Warning Level - Warning level for the compiler.
  -->
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DefineConstants>
    </DefineConstants>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <DebugSymbols>true</DebugSymbols>
    <Optimize>false</Optimize>
    <OutputPath>bin\</OutputPath>
    <RegisterForComInterop>false</RegisterForComInterop>
    <RemoveIntegerChecks>false</RemoveIntegerChecks>
    <NoWarn>42016,42017,42018,42019,42032</NoWarn>
  </PropertyGroup>
  <!-- This section defines properties that are set when the "Release" configuration is
       selected.

       DebugSymbols - If true, create symbols (.pdb). If false, do not create symbols.
       Optimize - If true, optimize the build output. If false, do not optimize.
       OutputPath - Output path of the project relative to the project file.
       EnableUnmanagedDebugging - If true, starting the debugger will attach both managed and unmanaged debuggers.
       DefineConstants - Constants defined for the preprocessor.
       Warning Level - Warning level for the compiler.
  -->
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DefineConstants>
    </DefineConstants>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <RegisterForComInterop>false</RegisterForComInterop>
    <RemoveIntegerChecks>false</RemoveIntegerChecks>
    <NoWarn>42016,42017,42018,42019,42032</NoWarn>
  </PropertyGroup>
  <!-- This section enables pre- and post-build steps. However,
       it is recommended that MSBuild tasks be used instead of these properties.
  -->
  <PropertyGroup>
    <PreBuildEvent>
    </PreBuildEvent>
    <PostBuildEvent>
    </PostBuildEvent>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.SSISPlus.2008, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=x86" />
    <Reference Include="System" />
    <Reference Include="System.AddIn, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
    <Reference Include="System.Data" />
    <Reference Include="System.Security" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.ScriptTask, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
  </ItemGroup>
  <!-- Visual Basic supports Importing namespaces (equivalent to using statements in C#).-->
  <ItemGroup>
    <Import Include="Microsoft.VisualBasic" />
    <Import Include="System" />
    <Import Include="System.Collections" />
    <Import Include="System.Data" />
    <Import Include="System.Diagnostics" />
    <Import Include="System.Windows.Forms" />
  </ItemGroup>
  <!-- This section defines the user source files that are part of the
       project.

       Compile - Specifies a source file to compile.
       EmbeddedResource - Specifies a .resx file for embedded resources.
       None - Specifies a file that is not to be passed to the compiler (for instance,
              a text file or XML file).
       AppDesigner - Specifies the directory where the application properties files can
                     be found.
  -->
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <Compile Include="My Project\AssemblyInfo.vb">
      <SubType>Code</SubType>
    </Compile>
    <EmbeddedResource Include="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
    </EmbeddedResource>
    <Compile Include="My Project\Resources.Designer.vb">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <None Include="My Project\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.vb</LastGenOutput>
    </None>
    <Compile Include="My Project\Settings.Designer.vb">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <Compile Include="ScriptMain.vb">
      <SubType>Code</SubType>
    </Compile>
    <!-- Include the default configuration information and metadata files for the add-in.
         These files are copied to the build output directory when the project is
         built, and the path to the configuration file is passed to add-in on the command
         line when debugging.
    -->
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{A860303F-1F3F-4691-B57E-529FC101A107}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{C1B21C64-9E6F-4923-A89D-9F958503C1CE}" ApplicationType="usd" Language="vb" TemplatesPath="" DebugInfoExeName="#HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\InstallDir#\devenv.exe" />
        <Host Name="SSIS_ScriptTask" />
        <ProjectClient>
          <HostIdentifier>SSIS_ScriptTask</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>]]></ProjectItem>
  <ProjectItem Name="\my project\settings.settings">
<![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="$safeprojectname" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></ProjectItem>
  <ProjectItem Name="\my project\resources.designer.vb">
<![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On


Namespace My.Resources
    
    '''<summary>
    '''   A strongly-typed resource class, for looking up localized strings, etc.
    '''</summary>
    'This class was auto-generated by the Strongly Typed Resource Builder
    'class via a tool like ResGen or Visual Studio.NET.
    'To add or remove a member, edit your .ResX file then rerun ResGen
    'with the /str option, or rebuild your VS project.
    Class MyResources
        
        Private Shared _resMgr As System.Resources.ResourceManager
        
        Private Shared _resCulture As System.Globalization.CultureInfo
        
        Friend Sub New()
            MyBase.New
        End Sub
        
        '''<summary>
        '''   Returns the cached ResourceManager instance used by this class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared ReadOnly Property ResourceManager() As System.Resources.ResourceManager
            Get
                If (_resMgr Is Nothing) Then
                    Dim temp As System.Resources.ResourceManager = New System.Resources.ResourceManager("My.Resources.MyResources", GetType(MyResources).Assembly)
                    _resMgr = temp
                End If
                Return _resMgr
            End Get
        End Property
        
        '''<summary>
        '''   Overrides the current thread's CurrentUICulture property for all
        '''   resource lookups using this strongly typed resource class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared Property Culture() As System.Globalization.CultureInfo
            Get
                Return _resCulture
            End Get
            Set
                _resCulture = value
            End Set
        End Property
    End Class
End Namespace]]></ProjectItem>
  <ProjectItem Name="\my project\resources.resx">
<![CDATA[<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>]]></ProjectItem>
  <ProjectItem Name="\my project\settings.designer.vb">
<![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On



Partial Friend NotInheritable Class MySettings
    Inherits System.Configuration.ApplicationSettingsBase

    Private Shared m_Value As MySettings

    Private Shared m_SyncObject As Object = New Object

    <System.Diagnostics.DebuggerNonUserCode()> _
    Public Shared ReadOnly Property Value() As MySettings
        Get
            If (MySettings.m_Value Is Nothing) Then
                System.Threading.Monitor.Enter(MySettings.m_SyncObject)
                If (MySettings.m_Value Is Nothing) Then
                    Try
                        MySettings.m_Value = New MySettings
                    Finally
                        System.Threading.Monitor.Exit(MySettings.m_SyncObject)
                    End Try
                End If
            End If
            Return MySettings.m_Value
        End Get
    End Property
End Class]]></ProjectItem>
  <ProjectItem Name="\my project\assemblyinfo.vb">
<![CDATA[Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices

' General Information about an assembly is controlled through the following 
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.

' Review the values of the assembly attributes

<Assembly: AssemblyTitle("ScriptTask_136a4f89b4964bcdb199923d4eb40ac9.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptTask_136a4f89b4964bcdb199923d4eb40ac9.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2013")> 
<Assembly: AssemblyTrademark("")> 
<Assembly: CLSCompliant(True)> 

<Assembly: ComVisible(False)> 

'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("b672cf24-6575-42cd-a16d-074c29850a5d")> 

' Version information for an assembly consists of the following four values:
'
'      Major Version
'      Minor Version 
'      Build Number
'      Revision
'
' You can specify all the values or you can default the Build and Revision Numbers 
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>

<Assembly: AssemblyVersion("1.0.0.0")> 
<Assembly: AssemblyFileVersion("1.0.0.0")> ]]></ProjectItem>
  <BinaryItem Name="\bin\scripttask_136a4f89b4964bcdb199923d4eb40ac9.vbproj.dll">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
4BIAAOQWAAAjU3RyaW5ncwAAAADEKQAAbAgAACNVUwAwMgAAEAAAACNHVUlEAAAAQDIAALwKAAAj
QmxvYgAAAAAAAAACAAABVx2iCQkPAAAA+gEzABYAAAEAAABfAAAACwAAABsAAABLAAAAKwAAAJUA
AAADAAAAcAAAAC8AAAAFAAAAGwAAAC0AAAALAAAAAQAAAAkAAAABAAAABAAAAAMAAAACAAAAAACr
FgEAAAAAAAoAfwFVAQoAswGVAQYAwwG8AQoAGwJVAQYAmQK8AQoAGwPxAgYAUQNAAwYAfgNpAw4A
5QPQAxIAZAQ7BA4A4wfYBw4AzgjYBwYA7Qq8AQ4ALwsZCw4ASAsZCw4AdQtdCwYAnwuMCwoA3gu3
CwoA9gsTAA4AKwwODAYAYAxADAYAfgy8AQYAogy8AQoAuwwTAAYA/wzgDAYAJQ0TDQYATA07DQYA
Xw2MCwYAhg18DQYAjQ28AQ4Alw3YBwYAtw28AQYAyQ18DQoA2w23CwYAIg68AQ4ANg7YBwoATg63
CxIAag47BBIAhA47BAYA+w7oDgoABQ8TAAYAFQ+8ARYAYg9CDxYAbA9CDxYAow9CDxYAvA9CDxYA
2A9CDxoARxAfEAYAYxC8AQ4AehDYBw4AVBHYBw4AZhHYBw4AnRHYBw4AphHYBwYAFxK8AQYAIxK8
AQYAMBK8AQYAVBJIEgYAcBK8AR4AuRKXEh4AwxKXEh4AzRKXEg4ABxPZEh4AMBOXEh4APROXEg4A
ZxNKEx4AaxOXEh4AfxOXEgYApxN8DQYAwRO8ASIA5BPXEyYAKxQJFCYARRQJFCYAYRQJFA4AeRQZ
CyYAjxQJFA4AnRQZCw4AshQZCyYAxBQJFCYA1hQJFCYA6hQJFA4AABUZCw4AGxUZCw4ALRUZCwYA
SxW8AQYAphVADAYAxhVADAYA5BUTDQYAARbgDAYADxYTDQYAKhYTDQYARRYTDQYAXhYTDQYAdxYT
DQYAlBYTDQAAAAABAAAAAAABAAEAAAAAACkANwAFAAEAAQAAAAAAbQA3AAkAAQACAAABEAB4ADcA
DQABAAMABQEAAIIAAAANAAUACAAFAQAAkAAAAA0ABQAPAAAAAACrALcADQAGABEAAAEQAPcAAgEl
AAgAFQABAAAANQECASkACgAYAAIBAABAAQAANQAYAEsAAwAAAE4BAAANABsASwAxAN4BIAAxAAcC
LQAxACkCOgAxAE4CRwAhACoDkAARAGEDnQARAIoDoQARAP0DvwARAAUEwwABAO8IKwEBAPwILgEB
AA0JKwEBABkJKwEBACcJKwEBAC4JKwEBADMJKwEBAEAJLgEBAEcJLgEBAFcJKwEBAGIJKwEBAG0J
KwEBAHoJLgEBAI8JKwEGBvIKPgFWgPoKQQFWgAILQQFWgAoLKwEIIQAAAAAGGI8BEwABABAhAAAA
AAYYjwETAAEAGCEAAAAAERjKARcAAQBEIQAAAAATCNEBGwABAFwhAAAAABMI9wEoAAEAdCEAAAAA
EwggAjUAAQCMIQAAAAATCD4CQgABAKQhAAAAAEYChAJjAAEAwCEAAAAARgKNAmgAAgDUIQAAAACD
AJ4CbAACAOwhAAAAAEYCpgJxAAIAACIAAAAAEQCvAngAAgAcIgAAAAABAM0CgAADADgiAAAAAAYY
jwETAAQAQCIAAAAAAwjhAosABAB0IgAAAAAGGI8BEwAEAIgiAAAAAAMYjwETAAQAkCIAAAAAFgiW
A6UABADMIgAAAAAWCKoDqgAEAOAiAAAAABYItgOvAAQA6CIAAAAAERjKARcABQD8IgAAAAAGGI8B
EwAFAAQjAAAAABYIEgTGAAUAYCMAAAAABhiPARMABQBoIwAAAAAGAIAEEwAFAHAlAAAAAAYAhQTZ
AAUAcCYAAAAABgCZBN8ABgCcJwAAAAAGCKcEcQAGALQnAAAAAAYIugTkAAYAwCcAAAAABgjTBOkA
BwDYJwAAAAAGCOsE7QAHAOQnAAAAAAYIAwVxAAgA/CcAAAAABggZBeQACAAIKAAAAAAGCC8FcQAJ
ACAoAAAAAAYIPQXkAAkALCgAAAAABghLBXEACgBEKAAAAAAGCFsF5AAKAFAoAAAAAAYIawVxAAsA
aCgAAAAABgh3BeQACwB0KAAAAAAGCIMFcQAMAIwoAAAAAAYIjQXkAAwAmCgAAAAABgiXBXEADQCw
KAAAAAAGCKYF5AANALwoAAAAAAYItQXpAA4A1CgAAAAABgi+Be0ADgDgKAAAAAAGCMcF6QAPAPgo
AAAAAAYI6AXtAA8ABCkAAAAABggJBnEAEAAcKQAAAAAGCCgG5AAQACgpAAAAAAYIRwZxABEAQCkA
AAAABgheBuQAEQBMKQAAAAAGCHUGcQASAGQpAAAAAAYIlAbkABIAcCkAAAAABgizBnEAEwCIKQAA
AAAGCL8G5AATAJQpAAAAAAYIywbpABQArCkAAAAABgjuBu0AFAC4KQAAAAAGCBEHcQAVANApAAAA
AAYIMgfkABUA3CkAAAAABghTB3EAFgD0KQAAAAAGCGwH5AAWAAAqAAAAAAEIhQffABcAICoAAAAA
AQicB98AFwBAKgAAAAABALMH8gAXAJgqAAAAAAEAxQf3ABgA2CoAAAAAAQDyB/0AGgBQLAAAAAAB
AAAIAgEaALwsAAAAAAEAFwhxABsA7CwAAAAAAQArCAoBGwBQLQAAAAABAF4IEQEeAJAtAAAAAAEA
dQgaASEAeC4AAAAAAQCcCBEBJQCwLgAAAAABAK0IEQEoAPAuAAAAAAEA3gglASsAnC8AAAAABhiP
ARMALAAAAAEAiwIAAAEAxAIAAAEAxAIAAAEAwgMAAAEAjgQAAAEAzQQAAAEAzQQAAAEAzQQAAAEA
zQQAAAEAzQQAAAEAzQQAAAEAzQQAAAEAzQQAAAEAzQQAAAEAzQQAAAEAzQQAAAEAzQQAAAEAzQQA
AAEAzQQAAAEAzQQAAAEAzQQAAAEAzQQAAAEAwAcAAAEA0gcAAAIAwAcAAAEADQgAAAEAPQgAAAIA
SQgAAAMAUggAAAEAbQgAAAIAPQgAAAMASQgAAAEAgggAAAIAiggAAAMAkwgAAAQAPQgAAAEAbQgA
AAIAiggAAAMAkwgAAAEAbQgAAAIAtggAAAMAxAgAAAEA6wgJAI8BEwBxAI8BWAGBAI8BZwERAI8B
EwCJAI8BEwAkAI8BEwAsAI8BEwA0AI8BEwA8AI8BEwAkAOECiwAsAOECiwA0AOECiwA8AOECiwCR
AI8BEwCZAI8BEwChAI8B5ACpAG8M+wEZAIQCYwAZAI0CaAApAJAMCAIZAKYCcQC5AKwMGAIZAI8B
EwDBAI8BKAJEACoDkABMABIEiwBMANYMpQJMAI8BEwDJAI8B7QApAC4NuAI5AI8BvQJJAI8BEwDZ
AFQN2QLZAFoN2QLhAI8BEwBRAI8BEwBZAKsN4wIBAb4N6AL5AMUNZwEJAc4N7gIRAeUN9AIBAb4N
+wIBAfMNKwFZAFsF5ABZAPkNAgNZAAsOBwPpABwODAMZAS4OEwBZAEIOFAMpAVoOGgNRAHwOIAMx
AZgOJgPxAKYCcQA5AaMOLAMpAa0OFwAxAb8ONQMBAc4OTAPxAI8B5ADxANwOcQBBAY8BEwBBAcUN
WANJAREPXQNBARsPZAMxAX4PfgNhAZQPhANZAawPjQNpARIElANZAbUPEwAxAcgPoANxAawPpgN5
AeoPrQOBAWwQcQCRAYUQsgOBAYwQaABZAJgQNQNZAKQQ5ABZAK8Q7QBZAMUQ7QBZANMQ7QBZAOcQ
7QBZAPcQ5ACBAQUR6QCBAR4RcQCBATERcQCBAUMRcQCZAY8BuQNZAHMRwAOBAYMR6QCBAZARcQCp
AY8B5ABZALARxwOBAboR6QBZANIRzgOBAdwRcQCBAe4RcQCBAf8RcQCxAXMRwAOJAQ8S1AOJAaYC
2gNRARwS7APBASgSCQTBAaYC2gPJATwSFgQBAb4NGgTRAV0SJwTRAWcSLQTZAXgSQATxAY8BVwTp
AY8BXQT5AY8BZwHhAY8BZQTpARgTbATpASkTcwQRAo8B5AAZAo8BgwQBAo8BigT5AY8B5AAJAo8B
lAQBAm4KngQBAikTcwRhAJUTBwMJAbITsATpALwTtwQxAo8B7QA5Ao8B5ABBAo8B5ABJAo8B5ABR
Ao8BLgVZAo8B5ABhAo8BfwZpAo8B5ABxAo8B5AB5Ao8BEwCBAo8B5ACJAo8BEwCRAo8BvwdhAo8B
cgihAo8B7QCpAo8BEwCxAo8BNQO5Ao8BEwDBAo8B5ADJAo8B5ADRAo8B5ADZAo8B5ADhAo8B5ADp
Ao8B5ADxAo8B5AD5Ao8B5AAIAGQARQEIAGgASgEOAGwATwEpAIMA3QEuAJMEdQouAKsEdQouAIsE
VQouAGsE/wkuAIMEsgIuAJsErQouAKMEsgIuAGME9gkuAHMEHgouAHsEKwouAOsAsgIuAOMDCAlA
ACsASgFAABMAXgFDABMAXgFDABsAbQFJAIMAtQFjABMAXgFjABsAbQFpAIMA7gGAACsASgGDAHsA
SgGDABsAbQGDAHMASgGJAIMAyQGgACsASgGjAMMAMAKjABMAXgHAACsASgHDABMAXgHDAOsAsgLJ
ABMA0ALgACsASgHpABMA0AIAASsASgEAARMAXgEJARsBSgEgARMAXgEgASsASgEjAQMENAUjAeMD
sgIjAesDygQjAfMDDQUjAfsDIAUpATMElQkpASME6AYpARsErQlAASsASgFAARMAXgFJASME6AZJ
AUMEXgFJARsExgdJATsESgFgASsASgFgARMAXgFpASME6AZpASsESgFpARsE9waAASsASgGJARsE
WQeJATMEKAeJASME6AagASsASgGpARsEzQapAQsEZgapASME6AapARMEhwbAARMAXgHAASsASgHJ
ARsEygnJASME6AbgASsASgHpARsE4QnpASME6AYAAhMAXgEAAisASgEJAhsEQAcJAiME6AYJAjME
KAcpAiMEsAcpAhsEQAgpAkMEXgFJAjsESgFJAhsEsAhJAkMEXgFJAiMEsAdpAiMEsAdpAhsEcQdp
AisESgGJAhsE4giJAiMEsAeJAjMEKAepAhsEDgmpAlMECAmpAiMEsAfJAksEeAjJAiMEMAjJAkME
XgHJAgsEaAjJAhsEkgjpAkMEXgHpAhsEOQnpAiMEMAjpAjsESgEJAyMEMAgJAxsE7wcJAysESgEp
AzMEKAcpAxsEbQkpAyMEMAhEA1sESgGhAaYBqwGwAQACBAIPAhQCIwIjAqsCxALLAt4COgNRA28D
FAIAAhQCFAIUAhQCFAIUAgACAAIUAhQCFAIUAgACFAIUAncDdwOYAxQC3wP0Aw8EIgQ2BEYEeASl
BL8EBAABAAYABQAHAAYACAAIAAkACQAAALMBTwAAAGwCVAAAABsCWQAAAHgCXgAAADQDmAAAAFED
tQAAAMgDugAAAMIDywAAAJ8JMQEAAK4JNQEAAMIJMQEAANQJMQEAAN4JMQEAAOoJMQEAAPIJMQEA
APgJMQEAAAMKNQEAAAgKNQEAACUKMQEAAEAKMQEAAFMKMQEAAG4KMQEAAHYKNQEAAJUKMQEAALIK
MQEAAMcKOQEAANoKOQECAAQAAwACAAUABQACAAYABwACAAcACQACAA8ACwACABIADQACABMADwAB
ABQADwACABcAEQABAB0AEwACABwAEwABAB8AFQACAB4AFQACACAAFwABACEAFwACACIAGQABACMA
GQABACUAGwACACQAGwACACYAHQABACcAHQABACkAHwACACgAHwABACsAIQACACoAIQACACwAIwAB
AC0AIwACAC4AJQABAC8AJQABADEAJwACADAAJwACADIAKQABADMAKQACADQAKwABADUAKwABADcA
LQACADYALQACADgALwABADkALwACADoAMQABADsAMQABAD0AMwACADwAMwACAD4ANQACAD8ANwB1
AHUAiACFAYwBkwGaAZICmQJsAzMEBIAAAAEAAAAAAAAAAAAAAAAAAgEAAAIAAAAAAAAAAAAAAAEA
CgAAAAAACAAAAAAAAAAAAAAACgATAAAAAAACAAAAAAAAAAAAAAABALwBAAAAAAoAAAAAAAAAAAAA
ANAAHAQAAAAACgAAAAAAAAAAAAAA0AAjDwAAAAAKAAAAAAAAAAAAAADQAPwPAAAAAAIAAAAAAAAA
AAAAAAoAhxIAAAAAAwAFAAAAAAAAAAAAAQDXEwAAAAABAAAAAAAAAAAAAAAEBfMTAAAAAAAAAAAB
AAAAXxUAAAUABAAGAAQACgAJAAsACQAAABAADADCAgAAEAAZAMICAAAAABsAwgItAB4CLQCgAgAA
ADxNb2R1bGU+AG1zY29ybGliAE1pY3Jvc29mdC5WaXN1YWxCYXNpYwBNeUFwcGxpY2F0aW9uAFNj
cmlwdFRhc2tfMTM2YTRmODliNDk2NGJjZGIxOTk5MjNkNGViNDBhYzkudmJwcm9qLk15AE15Q29t
cHV0ZXIATXlQcm9qZWN0AE15V2ViU2VydmljZXMAVGhyZWFkU2FmZU9iamVjdFByb3ZpZGVyYDEA
TXlSZXNvdXJjZXMAU2NyaXB0VGFza18xMzZhNGY4OWI0OTY0YmNkYjE5OTkyM2Q0ZWI0MGFjOS52
YnByb2ouTXkuUmVzb3VyY2VzAE15U2V0dGluZ3MAU2NyaXB0VGFza18xMzZhNGY4OWI0OTY0YmNk
YjE5OTkyM2Q0ZWI0MGFjOS52YnByb2oAU2NyaXB0TWFpbgBTY3JpcHRSZXN1bHRzAENvbnN0cwBN
aWNyb3NvZnQuVmlzdWFsQmFzaWMuQXBwbGljYXRpb25TZXJ2aWNlcwBBcHBsaWNhdGlvbkJhc2UA
LmN0b3IATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkRldmljZXMAQ29tcHV0ZXIAU3lzdGVtAE9iamVj
dAAuY2N0b3IAZ2V0X0NvbXB1dGVyAG1fQ29tcHV0ZXJPYmplY3RQcm92aWRlcgBnZXRfQXBwbGlj
YXRpb24AbV9BcHBPYmplY3RQcm92aWRlcgBVc2VyAGdldF9Vc2VyAG1fVXNlck9iamVjdFByb3Zp
ZGVyAGdldF9XZWJTZXJ2aWNlcwBtX015V2ViU2VydmljZXNPYmplY3RQcm92aWRlcgBBcHBsaWNh
dGlvbgBXZWJTZXJ2aWNlcwBFcXVhbHMAbwBHZXRIYXNoQ29kZQBUeXBlAEdldFR5cGUAVG9TdHJp
bmcAQ3JlYXRlX19JbnN0YW5jZV9fAFQAaW5zdGFuY2UARGlzcG9zZV9fSW5zdGFuY2VfXwBnZXRf
R2V0SW5zdGFuY2UATWljcm9zb2Z0LlZpc3VhbEJhc2ljLk15U2VydmljZXMuSW50ZXJuYWwAQ29u
dGV4dFZhbHVlYDEAbV9Db250ZXh0AEdldEluc3RhbmNlAFN5c3RlbS5SZXNvdXJjZXMAUmVzb3Vy
Y2VNYW5hZ2VyAF9yZXNNZ3IAU3lzdGVtLkdsb2JhbGl6YXRpb24AQ3VsdHVyZUluZm8AX3Jlc0N1
bHR1cmUAZ2V0X1Jlc291cmNlTWFuYWdlcgBnZXRfQ3VsdHVyZQBzZXRfQ3VsdHVyZQBWYWx1ZQBD
dWx0dXJlAFN5c3RlbS5Db25maWd1cmF0aW9uAEFwcGxpY2F0aW9uU2V0dGluZ3NCYXNlAG1fVmFs
dWUAbV9TeW5jT2JqZWN0AGdldF9WYWx1ZQBNaWNyb3NvZnQuU3FsU2VydmVyLlNjcmlwdFRhc2sA
TWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuVGFza3MuU2NyaXB0VGFzawBWU1RBUlRTY3JpcHRPYmpl
Y3RNb2RlbEJhc2UATWFpbgBWYWxpZGF0ZQBlcnJNZXNzYWdlAEdldFByb3BlcnRpZXMAZ2V0X0h0
dHBDb25uZWN0aW9uAHNldF9IdHRwQ29ubmVjdGlvbgB2YWx1ZQBnZXRfSXNJbnB1dEZpbGVWYXJp
YWJsZQBzZXRfSXNJbnB1dEZpbGVWYXJpYWJsZQBnZXRfSW5wdXRGaWxlVmFyaWFibGUAc2V0X0lu
cHV0RmlsZVZhcmlhYmxlAGdldF9JbnB1dEZpbGUAc2V0X0lucHV0RmlsZQBnZXRfQ29udGVudFR5
cGUAc2V0X0NvbnRlbnRUeXBlAGdldF9BUzJGcm9tAHNldF9BUzJGcm9tAGdldF9BUzJUbwBzZXRf
QVMyVG8AZ2V0X1Jlc3VsdEZpbGUAc2V0X1Jlc3VsdEZpbGUAZ2V0X1NpZ24Ac2V0X1NpZ24AZ2V0
X0lzU2lnbmluZ0NlcnRpZmljYXRlVmFyaWFibGUAc2V0X0lzU2lnbmluZ0NlcnRpZmljYXRlVmFy
aWFibGUAZ2V0X1NpZ25pbmdDZXJ0aWZpY2F0ZVZhcmlhYmxlAHNldF9TaWduaW5nQ2VydGlmaWNh
dGVWYXJpYWJsZQBnZXRfU2lnbmluZ0NlcnRpZmljYXRlAHNldF9TaWduaW5nQ2VydGlmaWNhdGUA
Z2V0X1NpZ25pbmdDZXJ0aWZpY2F0ZVBhc3N3b3JkAHNldF9TaWduaW5nQ2VydGlmaWNhdGVQYXNz
d29yZABnZXRfRW5jcnlwdABzZXRfRW5jcnlwdABnZXRfSXNSZWNpcGllbnRDZXJ0aWZpY2F0ZVZh
cmlhYmxlAHNldF9Jc1JlY2lwaWVudENlcnRpZmljYXRlVmFyaWFibGUAZ2V0X1JlY2lwaWVudENl
cnRpZmljYXRlVmFyaWFibGUAc2V0X1JlY2lwaWVudENlcnRpZmljYXRlVmFyaWFibGUAZ2V0X1Jl
Y2lwaWVudENlcnRpZmljYXRlAHNldF9SZWNpcGllbnRDZXJ0aWZpY2F0ZQBnZXRfSHR0cENvbm5l
Y3Rpb25UeXBlAGdldF9GaWxlQ29ubmVjdGlvblR5cGUAR2V0VmFyaWFibGVfAG5hbWUAR2V0Rmls
ZU5hbWVfAGlzVmFyAFN5c3RlbS5OZXQASHR0cFdlYlJlcXVlc3QAU2V0dXBSZXF1ZXN0XwBDb25j
YXRCeXRlc18AaW5wdXRMaXN0AENyZWF0ZU1pbWVCb3VuZGFyeV8AQ3JlYXRlTWltZUhlYWRlcl8A
Y29udGVudFR5cGUAZW5jb2RpbmcAZGlzcG9zaXRpb24AQ3JlYXRlTWVzc2FnZV8AY29udGVudABT
aWduTWVzc2FnZV8AbWVzc2FnZQBjZXJ0RmlsZQBjZXJ0UGFzcwBDcmVhdGVTaWduYXR1cmVfAEVu
Y3J5cHRfAHJlY2lwaWVudENlcnQAYWxnb3JpdGhtAEh0dHBXZWJSZXNwb25zZQBTdG9yZVJlc3Vs
dF8AcmVzAG1fY29ubmVjdGlvbgBtX2lzSW5wdXRGaWxlVmFyAG1faW5wdXRGaWxlAG1fY29udGVu
dFR5cGUAbV9mcm9tAG1fdG8AbV9yZXN1bHRGaWxlAG1fc2lnbgBtX2lzU2lnbkNlcnRWYXIAbV9z
aWduQ2VydABtX3NpZ25QYXNzAG1fZW5jcnlwdGlvbgBtX2lzUmVjaXBpZW50Q2VydFZhcgBtX3Jl
Y2lwaWVudENlcnQASHR0cENvbm5lY3Rpb24ASXNJbnB1dEZpbGVWYXJpYWJsZQBJbnB1dEZpbGVW
YXJpYWJsZQBJbnB1dEZpbGUAQ29udGVudFR5cGUAQVMyRnJvbQBBUzJUbwBSZXN1bHRGaWxlAFNp
Z24ASXNTaWduaW5nQ2VydGlmaWNhdGVWYXJpYWJsZQBTaWduaW5nQ2VydGlmaWNhdGVWYXJpYWJs
ZQBTaWduaW5nQ2VydGlmaWNhdGUAU2lnbmluZ0NlcnRpZmljYXRlUGFzc3dvcmQARW5jcnlwdABJ
c1JlY2lwaWVudENlcnRpZmljYXRlVmFyaWFibGUAUmVjaXBpZW50Q2VydGlmaWNhdGVWYXJpYWJs
ZQBSZWNpcGllbnRDZXJ0aWZpY2F0ZQBIdHRwQ29ubmVjdGlvblR5cGUARmlsZUNvbm5lY3Rpb25U
eXBlAEVudW0AdmFsdWVfXwBTdWNjZXNzAEZhaWx1cmUARW5jcnlwdGlvbk5vbmUAU3lzdGVtLkNv
bXBvbmVudE1vZGVsAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93c2FibGVTdGF0
ZQBTeXN0ZW0uQ29kZURvbS5Db21waWxlcgBHZW5lcmF0ZWRDb2RlQXR0cmlidXRlAFN5c3RlbS5E
aWFnbm9zdGljcwBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0ZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMu
Q29tcGlsZXJTZXJ2aWNlcwBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9kdWxlTmFtZUF0
dHJpYnV0ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduAEhlbHBLZXl3b3JkQXR0cmlidXRl
AFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMAUnVudGltZUhlbHBlcnMAR2V0T2JqZWN0
VmFsdWUAUnVudGltZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAQWN0aXZhdG9yAENyZWF0
ZUluc3RhbmNlAE15R3JvdXBDb2xsZWN0aW9uQXR0cmlidXRlAHNldF9WYWx1ZQBTeXN0ZW0uUnVu
dGltZS5JbnRlcm9wU2VydmljZXMAQ29tVmlzaWJsZUF0dHJpYnV0ZQBTeXN0ZW0uUmVmbGVjdGlv
bgBBc3NlbWJseQBnZXRfQXNzZW1ibHkAU3lzdGVtLlRocmVhZGluZwBNb25pdG9yAEVudGVyAEV4
aXQARGVidWdnZXJOb25Vc2VyQ29kZUF0dHJpYnV0ZQBTeXN0ZW0uSU8AU3RyZWFtAEV4Y2VwdGlv
bgBXZWJIZWFkZXJDb2xsZWN0aW9uAGdldF9IZWFkZXJzAFN0cmluZwBDb25jYXQAQWRkAEZpbGUA
UmVhZEFsbEJ5dGVzAE9wZXJhdG9ycwBDb21wYXJlU3RyaW5nAEVtcHR5AHNldF9Db250ZW50TGVu
Z3RoAEdldFJlcXVlc3RTdHJlYW0AV3JpdGUASURpc3Bvc2FibGUARGlzcG9zZQBXZWJSZXNwb25z
ZQBHZXRSZXNwb25zZQBQcm9qZWN0RGF0YQBTZXRQcm9qZWN0RXJyb3IAU2NyaXB0T2JqZWN0TW9k
ZWwAZ2V0X0R0cwBFdmVudHNPYmplY3RXcmFwcGVyAGdldF9FdmVudHMARmlyZUVycm9yAENsZWFy
UHJvamVjdEVycm9yAHNldF9UYXNrUmVzdWx0AElzTnVsbE9yRW1wdHkAZ2V0X01lc3NhZ2UAU3lz
dGVtLkNvbGxlY3Rpb25zAEFycmF5TGlzdABJbnRlcmFjdGlvbgBJSWYAQXJyYXkAVG9BcnJheQBN
aWNyb3NvZnQuU3FsU2VydmVyLk1hbmFnZWREVFMATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVu
dGltZQBWYXJpYWJsZXMAVmFyaWFibGVEaXNwZW5zZXIAZ2V0X1ZhcmlhYmxlRGlzcGVuc2VyAExv
Y2tPbmVGb3JSZWFkAFZhcmlhYmxlAGdldF9JdGVtAFVubG9jawBDb25uZWN0aW9ucwBnZXRfQ29u
bmVjdGlvbnMAQ29ubmVjdGlvbk1hbmFnZXIAQWNxdWlyZUNvbm5lY3Rpb24ATWljcm9zb2Z0LlNx
bFNlcnZlci5EVFNSdW50aW1lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5SdW50aW1lLldy
YXBwZXIASURUU0h0dHBDbGllbnRDb25uZWN0aW9uMTAwAERhdGVUaW1lAGdldF9TZXJ2ZXJVUkwA
V2ViUmVxdWVzdABDcmVhdGUAZ2V0X1RpbWVvdXQAc2V0X1RpbWVvdXQAc2V0X01ldGhvZABzZXRf
QWxsb3dBdXRvUmVkaXJlY3QAc2V0X0tlZXBBbGl2ZQBzZXRfUHJlQXV0aGVudGljYXRlAHNldF9T
ZW5kQ2h1bmtlZABzZXRfVXNlckFnZW50AGdldF9Vc2VTZXJ2ZXJDcmVkZW50aWFscwBnZXRfU2Vy
dmVyVXNlck5hbWUAR2V0U2VydmVyUGFzc3dvcmQAZ2V0X1NlcnZlckRvbWFpbgBOZXR3b3JrQ3Jl
ZGVudGlhbABJQ3JlZGVudGlhbHMAc2V0X0NyZWRlbnRpYWxzAGdldF9Vc2VQcm94eQBnZXRfUHJv
eHlVUkwAV2ViUHJveHkASVdlYlByb3h5AHNldF9Qcm94eQBnZXRfVXNlUHJveHlDcmVkZW50aWFs
cwBnZXRfUHJveHkAZ2V0X1Byb3h5VXNlck5hbWUAR2V0UHJveHlQYXNzd29yZABnZXRfUHJveHlE
b21haW4AZ2V0X05vdwBCeXRlAENvcHlUbwBHdWlkAE5ld0d1aWQARW52aXJvbm1lbnQAZ2V0X05l
d0xpbmUAU3lzdGVtLlRleHQARW5jb2RpbmcAZ2V0X0FTQ0lJAEdldEJ5dGVzAENvbnZlcnQAVG9C
YXNlNjRTdHJpbmcAU3lzdGVtLlNlY3VyaXR5AFN5c3RlbS5TZWN1cml0eS5DcnlwdG9ncmFwaHku
UGtjcwBDbXNTaWduZXIAU2lnbmVkQ21zAENvbnRlbnRJbmZvAFN5c3RlbS5TZWN1cml0eS5Dcnlw
dG9ncmFwaHkuWDUwOUNlcnRpZmljYXRlcwBYNTA5Q2VydGlmaWNhdGUyAENvbXB1dGVTaWduYXR1
cmUARW5jb2RlAEVudmVsb3BlZENtcwBDbXNSZWNpcGllbnQAU3lzdGVtLlNlY3VyaXR5LkNyeXB0
b2dyYXBoeQBPaWQAQWxnb3JpdGhtSWRlbnRpZmllcgBTdWJqZWN0SWRlbnRpZmllclR5cGUAR2V0
UmVzcG9uc2VTdHJlYW0ARmlsZVN0cmVhbQBPcGVuV3JpdGUAUmVhZABDTFNDb21wbGlhbnRBdHRy
aWJ1dGUAU3lzdGVtLkFkZEluAEFkZEluQXR0cmlidXRlAENvenlSb2MuU1NJU1BsdXMuMjAwOABD
b3p5Um9jLlNxbFNlcnZlci5TU0lTLkF0dHJpYnV0ZXMARmlsdGVyUHJvcGVydGllc0F0dHJpYnV0
ZQBWYWxpZGF0ZVByb3BlcnRpZXNBdHRyaWJ1dGUAU29ydFByb3BlcnRpZXNBdHRyaWJ1dGUARGVm
YXVsdFZhbHVlQXR0cmlidXRlAExpc3RBdHRyaWJ1dGUARGVzY3JpcHRpb25BdHRyaWJ1dGUAQ2F0
ZWdvcnlBdHRyaWJ1dGUAVmFyaWFibGVBdHRyaWJ1dGUAQ29ubmVjdGlvbkF0dHJpYnV0ZQBOb25F
c3NlbnRpYWxBdHRyaWJ1dGUAUmVmcmVzaFByb3BlcnRpZXNBdHRyaWJ1dGUAUmVmcmVzaFByb3Bl
cnRpZXMAUGFzc3dvcmRQcm9wZXJ0eVRleHRBdHRyaWJ1dGUAUGFyYW1BcnJheUF0dHJpYnV0ZQBT
Y3JpcHRUYXNrXzEzNmE0Zjg5YjQ5NjRiY2RiMTk5OTIzZDRlYjQwYWM5LnZicHJvai5SZXNvdXJj
ZXMucmVzb3VyY2VzAENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAUnVudGltZUNvbXBh
dGliaWxpdHlBdHRyaWJ1dGUAQXNzZW1ibHlGaWxlVmVyc2lvbkF0dHJpYnV0ZQBHdWlkQXR0cmli
dXRlAEFzc2VtYmx5VHJhZGVtYXJrQXR0cmlidXRlAEFzc2VtYmx5Q29weXJpZ2h0QXR0cmlidXRl
AEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBc3NlbWJseUNvbXBhbnlBdHRyaWJ1dGUAQXNzZW1i
bHlEZXNjcmlwdGlvbkF0dHJpYnV0ZQBBc3NlbWJseVRpdGxlQXR0cmlidXRlAFNjcmlwdFRhc2tf
MTM2YTRmODliNDk2NGJjZGIxOTk5MjNkNGViNDBhYzkudmJwcm9qLmRsbAAAAAAxTQB5AC4AUgBl
AHMAbwB1AHIAYwBlAHMALgBNAHkAUgBlAHMAbwB1AHIAYwBlAHMAAA9TAHUAYgBqAGUAYwB0AAAd
IAB0AHIAYQBuAHMAbQBpAHMAcwBpAG8AbgAuAAAJTgBvAG4AZQAAM0MAbwBuAHQAZQBuAHQALQBU
AHIAYQBuAHMAZgBlAHIALQBFAG4AYwBvAGQAaQBuAGcAAQ1iAGkAbgBhAHIAeQAAJ0MAbwBuAHQA
ZQBuAHQALQBEAGkAcwBwAG8AcwBpAHQAaQBvAG4AASVpAG4AbABpAG4AZQA7ACAAZgBpAGwAZQBu
AGEAbQBlAD0AIgAAAyIAAB9FAEQASQBJAE4AVAAtAEYAZQBhAHQAdQByAGUAcwABKW0AdQBsAHQA
aQBwAGwAZQAtAGEAdAB0AGEAYwBoAG0AZQBuAHQAcwABgIdhAHAAcABsAGkAYwBhAHQAaQBvAG4A
LwBwAGsAYwBzADcALQBtAGkAbQBlADsAIABzAG0AaQBtAGUALQB0AHkAcABlAD0AZQBuAHYAZQBs
AG8AcABlAGQALQBkAGEAdABhADsAIABuAGEAbQBlAD0AIgBzAG0AaQBtAGUALgBwADcAbQAiAAEb
QQBTADIAIABTAGUAbgBkACAAVABhAHMAawAAL1MAZQBsAGUAYwB0ACAASABUAFQAUAAgAGMAbwBu
AG4AZQBjAHQAaQBvAG4ALgAAJVMAZQBsAGUAYwB0ACAAaQBuAHAAdQB0ACAAZgBpAGwAZQAuAAAj
UwBwAGUAYwBpAGYAeQAgAEEAUwAyACAAZgByAG8AbQAuAAAfUwBwAGUAYwBpAGYAeQAgAEEAUwAy
ACAAdABvAC4AAEFTAGUAbABlAGMAdAAgAHMAaQBnAG4AaQBuAGcAIABjAGUAcgB0AGkAZgBpAGMA
YQB0AGUAIABmAGkAbABlAC4AAEtTAHAAZQBjAGkAZgB5ACAAcwBpAGcAbgBpAG4AZwAgAGMAZQBy
AHQAaQBmAGkAYwBhAHQAZQAgAHAAYQBzAHMAdwBvAHIAZAAuAABFUwBlAGwAZQBjAHQAIAByAGUA
YwBpAHAAaQBlAG4AdAAgAGMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGYAaQBsAGUALgAAHUgAdAB0
AHAAQwBvAG4AbgBlAGMAdABpAG8AbgAAJ0kAcwBJAG4AcAB1AHQARgBpAGwAZQBWAGEAcgBpAGEA
YgBsAGUAACNJAG4AcAB1AHQARgBpAGwAZQBWAGEAcgBpAGEAYgBsAGUAABNJAG4AcAB1AHQARgBp
AGwAZQAAF0MAbwBuAHQAZQBuAHQAVAB5AHAAZQAAD0EAUwAyAEYAcgBvAG0AAAtBAFMAMgBUAG8A
ABVSAGUAcwB1AGwAdABGAGkAbABlAAAJUwBpAGcAbgAAOUkAcwBTAGkAZwBuAGkAbgBnAEMAZQBy
AHQAaQBmAGkAYwBhAHQAZQBWAGEAcgBpAGEAYgBsAGUAADVTAGkAZwBuAGkAbgBnAEMAZQByAHQA
aQBmAGkAYwBhAHQAZQBWAGEAcgBpAGEAYgBsAGUAACVTAGkAZwBuAGkAbgBnAEMAZQByAHQAaQBm
AGkAYwBhAHQAZQAANVMAaQBnAG4AaQBuAGcAQwBlAHIAdABpAGYAaQBjAGEAdABlAFAAYQBzAHMA
dwBvAHIAZAAAD0UAbgBjAHIAeQBwAHQAAD1JAHMAUgBlAGMAaQBwAGkAZQBuAHQAQwBlAHIAdABp
AGYAaQBjAGEAdABlAFYAYQByAGkAYQBiAGwAZQAAOVIAZQBjAGkAcABpAGUAbgB0AEMAZQByAHQA
aQBmAGkAYwBhAHQAZQBWAGEAcgBpAGEAYgBsAGUAAClSAGUAYwBpAHAAaQBlAG4AdABDAGUAcgB0
AGkAZgBpAGMAYQB0AGUAAAlIAFQAVABQAAAJRgBJAEwARQAACVAATwBTAFQAACtDAE8AWgBZAFIA
TwBDACAAQQBTADIAIABTAGUAbgBkACAAVABhAHMAawAAGU0AaQBtAGUALQBWAGUAcgBzAGkAbwBu
AAEHMQAuADAAABdBAFMAMgAtAFYAZQByAHMAaQBvAG4AARFBAFMAMgAtAEYAcgBvAG0AAQ1BAFMA
MgAtAFQAbwABFU0AZQBzAHMAYQBnAGUALQBJAGQAAQM8AAATaABoAG0AbQBzAHMAZABkAGQAAAtA
AGEAcwAyAD4AAANfAAADTgAAHUMAbwBuAHQAZQBuAHQALQBUAHkAcABlADoAIAABN0MAbwBuAHQA
ZQBuAHQALQBUAHIAYQBuAHMAZgBlAHIALQBFAG4AYwBvAGQAaQBuAGcAOgAgAAErQwBvAG4AdABl
AG4AdAAtAEQAaQBzAHAAbwBzAGkAdABpAG8AbgA6ACAAAYCnbQB1AGwAdABpAHAAYQByAHQALwBz
AGkAZwBuAGUAZAA7ACAAcAByAG8AdABvAGMAbwBsAD0AIgBhAHAAcABsAGkAYwBhAHQAaQBvAG4A
LwBwAGsAYwBzADcALQBzAGkAZwBuAGEAdAB1AHIAZQAiADsAIABtAGkAYwBhAGwAZwA9ACIAcwBo
AGEAMQAiADsAIABiAG8AdQBuAGQAYQByAHkAPQAiAAEFLQAtAAFbYQBwAHAAbABpAGMAYQB0AGkA
bwBuAC8AcABrAGMAcwA3AC0AcwBpAGcAbgBhAHQAdQByAGUAOwAgAG4AYQBtAGUAPQAiAHMAbQBp
AG0AZQAuAHAANwBzACIAAQ1iAGEAcwBlADYANAAAPWEAdAB0AGEAYwBoAG0AZQBuAHQAOwAgAGYA
aQBsAGUAbgBhAG0AZQA9AHMAbQBpAG0AZQAuAHAANwBzAAAAFUUqR9ccQEOELC7S07b2twAIt3pc
Vhk04IkIsD9ffxHVCjoDIAABAwAAAQQAABIMBwYVEhgBEgwEAAASCAcGFRIYARIIBAAAEhEHBhUS
GAESEQQAABIUBwYVEhgBEhQECAASDAQIABIIBAgAEhEECAASFAQgAQIcAyAACAQgABIVAyAADgIe
AAcQAQEeAB4ABzABAQEQHgACEwAEIAATAAcGFRIZARMABCgAEwADBhIdAwYSIQQAABIdBAAAEiEF
AAEBEiEECAASHQQIABIhAwYSIAIGHAQAABIgBAgAEiAIiYRdzYCAzJEFIAECEA4EIAAdDgQgAQEO
AyAAAgQgAQECBCABHA4FIAIOAg4EIAASLQcgAR0FHR0FBiADDg4ODgggAx0FHQUODgogBB0FHQUO
DhAOBSABARIxAgYOAgYCAygADgMoAAIEKAAdDgIGCAMGESgEAAAAAAQBAAAACE4AbwBuAGUABSAB
ARE9CAEAAQAAAAAABSACAQ4OFwEACk15VGVtcGxhdGUHOC4wLjAuMAAABhUSGAESDAYVEhgBEggG
FRIYARIRBhUSGAESFAQHARIMBAcBEggEBwESEQQHARIUEwEADk15LkFwcGxpY2F0aW9uAAATAQAO
TXkuV2ViU2VydmljZXMAABABAAtNeS5Db21wdXRlcgAADAEAB015LlVzZXIAAAQAARwcAwcBAgMH
AQgGAAESFRFZBAcBEhUDBwEOBRABAB4ABAoBHgAEBwEeAAcgBAEODg4OYQEANFN5c3RlbS5XZWIu
U2VydmljZXMuUHJvdG9jb2xzLlNvYXBIdHRwQ2xpZW50UHJvdG9jb2wSQ3JlYXRlX19JbnN0YW5j
ZV9fE0Rpc3Bvc2VfX0luc3RhbmNlX18AAAAGFRIYARMABhUSGQETAAQKARMABSABARMABgcCEwAT
AAUBAAAAAAQgABJpBiACAQ4SaQYHAhIdEh0EBwESIQgBAAIAAAAAAAQAAQEcBAcBEiAEIAASfQUA
Ag4ODgUAAR0FDgYAAwgODgIGAAMODg4OBCABAQoEIAASdQcgAwEdBQgIBSAAEoCRBQABARJ5BSAA
EoCZBSAAEoCdCCAFAggODg4IBCABAQgRBwoIHQUODhItEjEODhJ1EnkEAAECDgYHAwICEnkEIAEI
HAYAAxwCHBwHIAESgKkSFQIdDgcHAh0OEoChBgcCHQ4dDgUgABKAsQggAgEOEBKArQYgARKAtRwD
IAAcBwcDHBwSgK0FIAASgLkGIAESgL0cBCABHBwGAAESgMkOBiADAQ4ODgYgAQESgNEGIAEBEoDZ
BSAAEoDZBQAAEYDFBCABDg4MBwQSgMESLRItEYDFByACARKAqQgUBwodBQgIHQUdBR0FCB0dBQgd
HQUFAAARgOEGBwIOEYDhAwAADgcABA4ODg4OBAcCDg4FAAASgOkFIAEdBQ4CHQUJBwMdBR0FHR0F
BQABDh0FEAcHHQUOHQUdBR0FHQUdHQUFIAEBHQUHIAIBEoD5AgYgAQESgP0GIAEBEoDxBCAAHQUK
BwMSgPEdBRKA9QYgAQESgQkJIAIBEoD5EoENCSACARGBERKA/QYgAQESgQUKBwMdBRKBARKBBQYA
ARKBFQ4HIAMIHQUICAoHBQ4SdRJ1HQUIOQEAClNjcmlwdE1haW4DAFQOB1ZlcnNpb24DMS4wVA4J
UHVibGlzaGVyAFQOC0Rlc2NyaXB0aW9uAAgWz0kLuAw06hIBAA1HZXRQcm9wZXJ0aWVzAAANAQAI
VmFsaWRhdGUAAAUgAQEdDoEwAQARAAAADkh0dHBDb25uZWN0aW9uE0lzSW5wdXRGaWxlVmFyaWFi
bGURSW5wdXRGaWxlVmFyaWFibGUJSW5wdXRGaWxlC0NvbnRlbnRUeXBlB0FTMkZyb20FQVMyVG8K
UmVzdWx0RmlsZQRTaWduHElzU2lnbmluZ0NlcnRpZmljYXRlVmFyaWFibGUaU2lnbmluZ0NlcnRp
ZmljYXRlVmFyaWFibGUSU2lnbmluZ0NlcnRpZmljYXRlGlNpZ25pbmdDZXJ0aWZpY2F0ZVBhc3N3
b3JkB0VuY3J5cHQeSXNSZWNpcGllbnRDZXJ0aWZpY2F0ZVZhcmlhYmxlHFJlY2lwaWVudENlcnRp
ZmljYXRlVmFyaWFibGUUUmVjaXBpZW50Q2VydGlmaWNhdGUAABgBABNhcHBsaWNhdGlvbi9FREkt
WDEyAAAHIAMBHRwCAkUBAAMAAAAOD2FwcGxpY2F0aW9uL3htbA4TYXBwbGljYXRpb24vRURJLVgx
Mg4TYXBwbGljYXRpb24vRURJRkFDVAABAAAaAQAVU3BlY2lmeSBjb250ZW50IHR5cGUuAAAOAQAJ
CVNldHRpbmdzAAAwAQArU2VsZWN0IHZhcmlhYmxlIGNvbnRhaW5pbmcgaW5wdXQgZmlsZSBwYXRo
LgAAFwEAEkZpbGVDb25uZWN0aW9uVHlwZQAAGAEAE1NlbGVjdCByZXN1bHQgZmlsZS4AABcBABJT
ZWxlY3QgaW5wdXQgZmlsZS4AAD4BADlTZWxlY3QgdmFyaWFibGUgY29udGFpbmluZyBzaWduaW5n
IGNlcnRpZmljYXRlIGZpbGUgcGF0aC4AAA4BAAlTaWduYXR1cmUAAAYgAQERgU0oAQAjU3BlY2lm
aWVzIGlmIElucHV0RmlsZSBpcyB2YXJpYWJsZS4AAEABADtTZWxlY3QgdmFyaWFibGUgY29udGFp
bmluZyByZWNpcGllbnQgY2VydGlmaWNhdGUgZmlsZSBwYXRoLgAADwEACkVuY3J5cHRpb24AACcB
ACJTcGVjaWZpZXMgaWYgaW5wdXQgZmlsZSBpcyBzaWduZWQuAAAJAQAETm9uZQAABSABAR0cGQEA
AwAAAA4ETm9uZQ4EM0RFUw4DUkMyAAAdAQAYU3BlY2lmeSBlbmNyeXB0aW9uIHR5cGUuAAAxAQAs
U3BlY2lmaWVzIGlmIFNpZ25pbmdDZXJ0aWZpY2F0ZSBpcyB2YXJpYWJsZS4AACUBACBTZWxlY3Qg
c2lnbmluZyBjZXJ0aWZpY2F0ZSBmaWxlLgAABQEAAQAAKgEAJVNwZWNpZnkgc2lnbmluZyBjZXJ0
aWZpY2F0ZSBwYXNzd29yZC4AADMBAC5TcGVjaWZpZXMgaWYgUmVjaXBpZW50Q2VydGlmaWNhdGUg
aXMgdmFyaWFibGUuAAAnAQAiU2VsZWN0IHJlY2lwaWVudCBjZXJ0aWZpY2F0ZSBmaWxlLgAAFwEA
Ekh0dHBDb25uZWN0aW9uVHlwZQAAHAEAF1NlbGVjdCBIVFRQIGNvbm5lY3Rpb24uAAAWAQARU3Bl
Y2lmeSBBUzIgRnJvbS4AABQBAA9TcGVjaWZ5IEFTMiBUby4AAAgBAAgAAAAAAB4BAAEAVAIWV3Jh
cE5vbkV4Y2VwdGlvblRocm93cwEMAQAHMS4wLjAuMAAAKQEAJGI2NzJjZjI0LTY1NzUtNDJjZC1h
MTZkLTA3NGMyOTg1MGE1ZAAAHwEAGkNvcHlyaWdodCBAIE1pY3Jvc29mdCAyMDEzAAA3AQAyU2Ny
aXB0VGFza18xMzZhNGY4OWI0OTY0YmNkYjE5OTkyM2Q0ZWI0MGFjOS52YnByb2oAAA4BAAlNaWNy
b3NvZnQAAMhsAAAAAAAAAAAAAN5sAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQbAAAAAAAAAAA
X0NvckRsbE1haW4AbXNjb3JlZS5kbGwAAAAAAP8lACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwAAACgAAIAOAAAASAAAgBAAAABgAACA
AAAAAAAAAAAAAAAAAAACAAIAAAB4AACAAwAAAJAAAIAAAAAAAAAAAAAAAAAAAAEAAH8AAKgAAIAA
AAAAAAAAAAAAAAAAAAEAAQAAAMAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAANgAAAAAAAAAAAAAAAAA
AAAAAAEAAAAAAOgAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAEAAAAA
AAgBAABghQAA6AIAAAAAAAAAAAAASIgAACgBAAAAAAAAAAAAAHCJAAAiAAAAAAAAAAAAAAAYgQAA
SAQAAAAAAAAAAAAASAQ0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4A
AAEAAAABAAAAAAAAAAEAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEA
cgBGAGkAbABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACw
BKgDAAABAFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAAIQDAAABADAAMAAwADAAMAA0AGIA
MAAAADQACgABAEMAbwBtAHAAYQBuAHkATgBhAG0AZQAAAAAATQBpAGMAcgBvAHMAbwBmAHQAAACQ
ADMAAQBGAGkAbABlAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAAAAAAUwBjAHIAaQBwAHQAVABhAHMA
awBfADEAMwA2AGEANABmADgAOQBiADQAOQA2ADQAYgBjAGQAYgAxADkAOQA5ADIAMwBkADQAZQBi
ADQAMABhAGMAOQAuAHYAYgBwAHIAbwBqAAAAAAAwAAgAAQBGAGkAbABlAFYAZQByAHMAaQBvAG4A
AAAAADEALgAwAC4AMAAuADAAAACQADcAAQBJAG4AdABlAHIAbgBhAGwATgBhAG0AZQAAAFMAYwBy
AGkAcAB0AFQAYQBzAGsAXwAxADMANgBhADQAZgA4ADkAYgA0ADkANgA0AGIAYwBkAGIAMQA5ADkA
OQAyADMAZAA0AGUAYgA0ADAAYQBjADkALgB2AGIAcAByAG8AagAuAGQAbABsAAAAAABcABsAAQBM
AGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAABDAG8AcAB5AHIAaQBnAGgAdAAgAEAAIABNAGkA
YwByAG8AcwBvAGYAdAAgADIAMAAxADMAAAAAAJgANwABAE8AcgBpAGcAaQBuAGEAbABGAGkAbABl
AG4AYQBtAGUAAABTAGMAcgBpAHAAdABUAGEAcwBrAF8AMQAzADYAYQA0AGYAOAA5AGIANAA5ADYA
NABiAGMAZABiADEAOQA5ADkAMgAzAGQANABlAGIANAAwAGEAYwA5AC4AdgBiAHAAcgBvAGoALgBk
AGwAbAAAAAAAiAAzAAEAUAByAG8AZAB1AGMAdABOAGEAbQBlAAAAAABTAGMAcgBpAHAAdABUAGEA
cwBrAF8AMQAzADYAYQA0AGYAOAA5AGIANAA5ADYANABiAGMAZABiADEAOQA5ADkAMgAzAGQANABl
AGIANAAwAGEAYwA5AC4AdgBiAHAAcgBvAGoAAAAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIA
cwBpAG8AbgAAADEALgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBz
AGkAbwBuAAAAMQAuADAALgAwAC4AMAAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/
AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3d3d3d3d3d3d3d3d3d3AERERERERERERERERERERwBP//
///////////////0cAT/////////////////9HAE//////////////////RwBP//////////////
///0cAT/////////////////9HAE//////////////////RwBP/////////////////0cAT/////
////////////9HAE//////////////////RwBP/////////////////0cAT/////////////////
9HAE//////////////////RwBP/////////////////0cAT/////////////////9HAE////////
//////////RwBP/////////////////0cAT/////////////////9HAE//////////////////Rw
BIiIiIiIiIiIiIiIiIiEcARERERERERERERERERERHAETExMTExMTExMTs7OSXRwBMzMzMzMzMzM
zMzMzMzEAABEREREREREREREREREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD/////////////////////wAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAA
AYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAAB
gAAAAYAAAAGAAAADwAAAB////////////////ygAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD/
/wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAHd3d3d3d3d0RERERERERHT///////+EdP///////4
R0////////hHT///////+EdP///////4R0////////hHT///////+EdP///////4R0iIiIiIiIhH
TMzMzMzMzEfEREREREREwAAAAAAAAAAAAAAAAAAAAAD//wAAgAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAP//AAD//wAAAAABAAIAICAQAAEABADoAgAA
AgAQEBAAAQAEACgBAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAGAAAAwAAADwPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAA=</BinaryItem>
</ScriptProject>