<component id="11" name="Error Description" componentClassID="{874F7595-FB5F-40FF-96AF-FBFF8250E3EF}" description="Executes a custom script" localeId="1033" version="7" contactInfo="Executes a custom script.;Microsoft Corporation;Microsoft SqlServer v9; © 2004 Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;0"><properties><property id="16" name="SourceCode" state="cdata" dataType="System.String" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="30"><arrayElement dataType="System.String"><![CDATA[My Project\AssemblyInfo.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![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("ScriptComponent_3e36dc03710e4ab7a7e685e62c677d65.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_3e36dc03710e4ab7a7e685e62c677d65.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2015")> 
<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("67cf4972-00bb-4e13-98d2-1cc708e337d1")> 

' 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")> 
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ComponentWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public OutputBuffer As OutputBuffer

    Dim InputsFinished As Integer = 0

    Public Overrides Sub ProcessInput(ByVal InputID As Integer, ByVal InputName As String, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        If InputID = MyBase.ComponentMetaData.InputCollection("Input").ID Then
            Input_ProcessInput(New InputBuffer(Me, InputID, True, Buffer, OutputMap))
        End If

        If InputID = MyBase.ComponentMetaData.InputCollection("Input 1").ID Then
            Input1_ProcessInput(New Input1Buffer(Me, InputID, True, Buffer, OutputMap))
        End If

        If Buffer.EndOfRowset Then
            InputsFinished = InputsFinished + 1
            If InputsFinished = 1 Then
                FinishOutputs()
                MarkOutputsFinished()
            End If
        End If

    End Sub

    Public Overridable Sub FinishOutputs()
    End Sub

    Private Sub MarkOutputsFinished()

        If OutputBuffer IsNot Nothing Then
            OutputBuffer.SetEndOfRowset
            OutputBuffer = Nothing
        End If

    End Sub

    Public Overrides Sub PrimeOutput(ByVal Outputs As Integer, ByVal OutputIDs() As Integer, ByVal Buffers() As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        For I As Integer = 0 To Outputs - 1
            If OutputIDs(I) = GetOutputID(OutputMap, "Output") Then
                OutputBuffer = New OutputBuffer(Me, OutputIDs(I), False, Buffers(I), OutputMap)
            End If
        Next

        CreateNewOutputRows()

    End Sub

    Public Overridable Sub CreateNewOutputRows()
    End Sub

    Public Overridable Sub Input_ProcessInput(ByVal Buffer As InputBuffer)

        While Buffer.NextRow()
            Input_ProcessInputRow(Buffer)
        End While

    End Sub

    Public Overridable Sub Input_ProcessInputRow(ByVal Row As InputBuffer)

    End Sub

    Public Overridable Sub Input1_ProcessInput(ByVal Buffer As Input1Buffer)

        While Buffer.NextRow()
            Input1_ProcessInputRow(Buffer)
        End While

    End Sub

    Public Overridable Sub Input1_ProcessInputRow(ByVal Row As Input1Buffer)

    End Sub

End Class

Public Class Connections

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class

Public Class Variables

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[main.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' CozyRoc SQL Server Integration Services user script component
'
' Created by Antoon Vansina (http://antoon.blog.com/)
' 
' 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.

Imports System
Imports System.Math

Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS.Attributes


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Constants
    Friend Class Consts
        Public Const PackageId_Default As String = "System::PackageID"
        Public Const ExecutionId_Default As String = "System::ExecutionInstanceGUID"
        Public Const StandardDestinationColumnLength_Default As Integer = 250
    End Class   ' Consts


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Will hold name and position of the input columns
    Private Structure ColumnInfo
        Public BufferIndex As Integer
        Public Name As String
        Public Id As Integer
        Public LineageId As Integer
        Public Component As String
    End Structure   ' ColumnInfo


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Structure InputInfo
        Public Id As Integer
        Public Name As String
        Public ColumnInfos As ColumnInfo()
        Public EndOfRowset As Boolean
    End Structure   ' InputInfo


#Region "Design time methods"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overloads Overrides Sub OnInputPathAttached(ByVal inputID As Integer)
        ' Add all virtual input columns.
        Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection.GetObjectByID(inputID)
        Dim virtInput As IDTSVirtualInput100 = input.GetVirtualInput

        For Each column As IDTSVirtualInputColumn100 In virtInput.VirtualInputColumnCollection
            Call MyBase.HostComponent.SetUsageType( _
                inputID, _
                virtInput, _
                column.LineageID, _
                DTSUsageType.UT_READONLY)
        Next

        'Prepare next input.
        Dim nextinput As IDTSInput100 = Me.ComponentMetaData.InputCollection.New()
        nextinput.Name = "Input " & Me.ComponentMetaData.InputCollection.Count - 1
        nextinput.HasSideEffects = True
    End Sub ' OnInputPathAttached


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overloads Overrides Sub OnInputPathDetached(ByVal inputID As Integer)
        Call MyBase.OnInputPathDetached(inputID)

        ' Remove the input.
        Call Me.ComponentMetaData.InputCollection.RemoveObjectByID(inputID)
    End Sub ' OnInputPathDetached


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overloads Overrides Sub ReinitializeMetaData()
        ' Remove all columns on all the input and re-attach the virttual input columns.
        Dim virtInput As IDTSVirtualInput100
        For Each input As IDTSInput100 In Me.ComponentMetaData.InputCollection
            Call input.InputColumnCollection.RemoveAll()

            virtInput = input.GetVirtualInput()
            For Each column As IDTSVirtualInputColumn100 In virtInput.VirtualInputColumnCollection
                Call MyBase.HostComponent.SetUsageType( _
                    input.ID, _
                    virtInput, _
                    column.LineageID, _
                    DTSUsageType.UT_READONLY)
            Next
        Next
    End Sub ' ReinitializeMetaData
#End Region ' Design time methods


#Region "Execution time methods"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overloads Overrides Sub PreExecute()
        ' Get the values of the custom properties.
        m_packageId = GetVariable_(Me.PackageId).ToString().Trim()
        m_executionId = GetVariable_(Me.ExecutionId).ToString().Trim()

        ' Read the name of the task that causes the error.
        m_stepName = GetVariable_("System::TaskName").ToString().Trim()

        ' Read inputs columns info.
        Dim inputs As IDTSInputCollection100 = Me.ComponentMetaData.InputCollection
        Dim inputsCount As Integer = inputs.Count
        m_inputInfos = New InputInfo(inputsCount - 2) {}
        For inputIndex As Integer = 0 To inputsCount - 2        ' last input is always empty
            Dim input As IDTSInput100 = inputs(inputIndex)

            With m_inputInfos(inputIndex)
                .Id = input.ID
                .Name = input.Name
                .ColumnInfos = GetColumnInfos_(input)
            End With
        Next
    End Sub ' PreExecute


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overloads Overrides Sub ProcessInput( _
        ByVal inputID As Integer, _
        ByVal buffer As PipelineBuffer)

        If buffer Is Nothing Then
            Throw New ArgumentNullException("buffer")
        End If

        ' Get input index.
        Dim inputIndex As Integer = -1
        inputIndex = GetInputInfoIndex_(inputID)
        Dim colsCount As Integer = m_inputInfos(inputIndex).ColumnInfos.Length

        ' Find the ErrorColumnValue, ErrorDescription and KeyColumnValue.
        If buffer.EndOfRowset Then
            m_inputInfos(inputIndex).EndOfRowset = True
        Else
            ' for all rows in the buffer
            While buffer.NextRow()
                Dim errorDescription As String = "Unknown"
                Dim errorValue As String = "Unknown"
                Dim errorColumnName As String = String.Empty
                Dim errorColumnId As Integer = -1
                Dim keyColumnValue As String = "Unknown"
                Dim stepNamePlus As String = ""
                Dim errorComponent As String = ""
                Dim colIndex As Integer

                For colIndex = 0 To colsCount - 1
                    Dim ci As ColumnInfo = m_inputInfos(inputIndex).ColumnInfos(colIndex)
                    If Not buffer.IsNull(ci.BufferIndex) Then
                        Select Case ci.Name
                            Case "ErrorCode"
                                errorDescription = Me.ComponentMetaData.GetErrorDescription( _
                                    CInt(buffer(ci.BufferIndex))).Trim()
                                errorComponent = ci.Component
                                stepNamePlus = m_stepName & " - " & errorComponent

                            Case "ErrorColumn"
                                ' Save the id of the error column.
                                errorColumnId = CInt(buffer(ci.BufferIndex))

                            Case Me.RowIdentifierName
                                ' Save the value of the key column.
                                keyColumnValue = buffer(ci.BufferIndex).ToString().Trim()
                        End Select
                    End If
                Next

                ' Search error column name in input based on id.
                colIndex = GetColumnInfoById_( _
                    m_inputInfos(inputIndex).ColumnInfos, _
                    errorColumnId)
                If colIndex <> -1 Then
                    errorColumnName = m_inputInfos(inputIndex).ColumnInfos(colIndex).Name
                End If

                Dim inputFound As Integer = inputIndex

                If String.IsNullOrEmpty(errorColumnName) Then
                    ' Search error column name in all inputs on the assumption ID = LineageId.
                    For inputFound = 0 To m_inputInfos.Length - 1
                        colsCount = m_inputInfos(inputFound).ColumnInfos.Length
                        For colIndex = 0 To colsCount - 1
                            Dim ci As ColumnInfo = m_inputInfos(inputFound).ColumnInfos(colIndex)

                            If ci.LineageId = errorColumnId Then
                                ' This is possibly the error column.
                                If ci.Component = errorComponent Then
                                    errorColumnName = ci.Name
                                Else
                                    errorColumnName = "Maybe: " & ci.Name
                                End If
                            End If
                        Next

                        If Not String.IsNullOrEmpty(errorColumnName) Then
                            Exit For
                        End If
                    Next
                End If

                ' Search error column value based on name.
                If String.IsNullOrEmpty(errorColumnName) Then
                    ' At least keep the error column id.
                    errorColumnName = "Id = " & errorColumnId
                Else
                    ' The name of error column is known.
                    colIndex = GetColumnInfoByName_( _
                        m_inputInfos(inputFound).ColumnInfos, _
                        errorColumnName)
                    If colIndex <> -1 Then
                        Dim ci As ColumnInfo = m_inputInfos(inputIndex).ColumnInfos(colIndex)
                        If Not buffer.IsNull(ci.BufferIndex) Then
                            errorValue = buffer(ci.BufferIndex).ToString()
                        End If
                    End If
                End If

                ' Write info to the output.
                Call Me.OutputBuffer.AddRow()

                Me.OutputBuffer.PackageId = GetPipelineString_(m_packageId)
                Me.OutputBuffer.ExecutionId = GetPipelineString_(m_executionId)
                Me.OutputBuffer.StepName = GetPipelineString_(stepNamePlus)
                Me.OutputBuffer.RowIdentifierName = GetPipelineString_(Me.RowIdentifierName)
                Me.OutputBuffer.RowIdentifierId = GetPipelineString_(keyColumnValue)
                Me.OutputBuffer.ErrorColumnName = GetPipelineString_(errorColumnName)
                Me.OutputBuffer.ErrorColumnValue = GetPipelineString_(errorValue)
                Me.OutputBuffer.ErrorMessage = GetPipelineString_(errorDescription)
            End While
        End If

        If IsEndReached_() Then
            ' End is reached. Set output buffer end.
            Call Me.OutputBuffer.SetEndOfRowset()
        End If
    End Sub ' ProcessInput
#End Region ' Execution time methods


#Region "User interface"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <ComponentModel.Description("Select variable that contains the unique identifier of this package.F.e. System::PackageID.")> _
    <ComponentModel.Category("General")> _
    <Variable()> _
    <ComponentModel.DefaultValue(Consts.PackageId_Default)> _
    Public Property PackageId() As String
        Get
            PackageId = m_packageIdVariable
        End Get
        Set(ByVal value As String)
            m_packageIdVariable = value
        End Set
    End Property    ' PackageId


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <ComponentModel.Description("Select variable that contains the unique identifier of this execution/instance of the package.F.e. System::ExecutionInstanceGUID.")> _
    <ComponentModel.Category("General")> _
    <Variable()> _
    <ComponentModel.DefaultValue(Consts.ExecutionId_Default)> _
    Public Property ExecutionId() As String
        Get
            ExecutionId = m_executionIdVariable
        End Get
        Set(ByVal value As String)
            m_executionIdVariable = value
        End Set
    End Property    ' ExecutionId


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <ComponentModel.Description("Select the length of the NVarchar output columns")> _
    <ComponentModel.Category("General")> _
    <ComponentModel.DefaultValue(Consts.StandardDestinationColumnLength_Default)> _
    Public Property StandardDestinationColumnLength() As Integer
        Get
            StandardDestinationColumnLength = m_standardDestinationColumnLength
        End Get
        Set(ByVal value As Integer)
            m_standardDestinationColumnLength = value
            Call ResetOutputColumnTypes_()
        End Set
    End Property    ' StandardDestinationColumnLength


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <ComponentModel.Description("Select the input flow that contains the column that uniquely defines every row in this flow.")> _
    <ComponentModel.Category("Specific for this dataflow")> _
    <Input()> _
    Public Property InputForRowIdentifierName() As String
        Get
            InputForRowIdentifierName = m_InputForRowIdentifierName
        End Get
        Set(ByVal value As String)
            m_InputForRowIdentifierName = value
        End Set
    End Property    ' InputForRowIdentifierName


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <ComponentModel.Description("Select the column that uniquely defines every row in this flow.")> _
    <ComponentModel.Category("Specific for this dataflow")> _
    <InputVirtualColumn("InputForRowIdentifierName", True)> _
    Public Property RowIdentifierName() As String
        Get
            RowIdentifierName = m_rowIdentifierName
        End Get
        Set(ByVal value As String)
            m_rowIdentifierName = value
        End Set
    End Property    ' RowIdentifierName
#End Region ' User interface


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub ResetOutputColumnTypes_()
        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
        Dim outputCols As IDTSOutputColumnCollection100 = output.OutputColumnCollection
        For i As Integer = 0 To outputCols.Count - 1
            Call outputCols(i).SetDataTypeProperties( _
                DataType.DT_WSTR, _
                Me.StandardDestinationColumnLength, _
                0, _
                0, _
                0)
        Next
    End Sub ' ResetOutputColumnTypes_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Add column to specified output.
    Private Sub AddStringColumn_( _
        ByVal output As IDTSOutput100, _
        ByVal columnName As String)

        Dim outColumn As IDTSOutputColumn100
        outColumn = output.OutputColumnCollection.New()
        outColumn.Name = columnName
        Call outColumn.SetDataTypeProperties( _
            DataType.DT_WSTR, _
            Me.StandardDestinationColumnLength, _
            0, _
            0, _
            0)
    End Sub ' AddStringColumn_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Gets package variable.
    Private Function GetVariable_(ByVal varName As String) As Object
        Dim result As Object

        Dim vars As IDTSVariables100 = Nothing
        Call Me.VariableDispenser.LockOneForRead(varName, vars)
        Try
            result = vars(varName).Value
        Finally
            Call vars.Unlock()
        End Try

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetOutputColumnIndex_( _
        ByVal output As IDTSOutput100, _
        ByVal columnName As String) As Integer

        GetOutputColumnIndex_ = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            output.Buffer, _
            output.OutputColumnCollection(columnName).LineageID)
    End Function    ' GetOutputColumnIndex_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get input columns information.
    Private Function GetColumnInfos_(ByVal input As IDTSInput100) As ColumnInfo()
        Dim colsCount As Integer = input.InputColumnCollection.Count
        Dim result() As ColumnInfo = New ColumnInfo(colsCount - 1) {}

        For colIndex As Integer = 0 To colsCount - 1
            Dim inputCol As IDTSInputColumn100 = input.InputColumnCollection(colIndex)

            Dim colInfo As ColumnInfo = New ColumnInfo
            With colInfo
                .Id = inputCol.ID
                .BufferIndex = MyBase.HostComponent.BufferManager.FindColumnByLineageID( _
                    input.Buffer, _
                    inputCol.LineageID)
                .Name = inputCol.Name
                .Component = inputCol.UpstreamComponentName
                .LineageId = inputCol.LineageID
            End With

            result(colIndex) = colInfo
        Next

        GetColumnInfos_ = result
    End Function    ' GetColumnInfos_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get input info index.
    Private Function GetInputInfoIndex_(ByVal inputID As Integer) As Integer
        Dim result As Integer = -1

        Dim infosCount As Integer = m_inputInfos.Length
        For infoIndex As Integer = 0 To infosCount - 1
            If m_inputInfos(infoIndex).Id = inputID Then
                result = infoIndex
                Exit For
            End If
        Next

        GetInputInfoIndex_ = result
    End Function    ' GetInputInfoIndex_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function IsEndReached_() As Boolean
        Dim result As Boolean = True

        For Each inputInfo As InputInfo In m_inputInfos
            If Not inputInfo.EndOfRowset Then
                ' The end is not yet reached.
                result = False
                Exit For
            End If
        Next

        IsEndReached_ = result
    End Function    ' IsEndReached_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get properly sized pipeline string.
    Private Function GetPipelineString_(ByVal str As String) As String
        Dim result As String = String.Empty

        If Not String.IsNullOrEmpty(str) Then
            result = str.Substring( _
                0, _
                Min(str.Length, Me.StandardDestinationColumnLength - 1))
        End If

        GetPipelineString_ = result
    End Function    ' GetPipelineString_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetColumnInfoByName_( _
        ByVal colsInfo() As ColumnInfo, _
        ByVal name As String) As Integer

        Dim result As Integer = -1

        Dim colsCount As Integer = colsInfo.Length
        For colIndex As Integer = 0 To colsCount - 1
            If colsInfo(colIndex).Name = name Then
                result = colIndex
                Exit For
            End If
        Next

        GetColumnInfoByName_ = result
    End Function    ' GetColumnInfoByName_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetColumnInfoById_( _
        ByVal colsInfo() As ColumnInfo, _
        ByVal id As Integer) As Integer

        Dim result As Integer = -1

        Dim colsCount As Integer = colsInfo.Length
        For colIndex As Integer = 0 To colsCount - 1
            If colsInfo(colIndex).Id = id Then
                result = colIndex
                Exit For
            End If
        Next

        GetColumnInfoById_ = result
    End Function    ' GetColumnInfoById_
#End Region ' Internals


#Region "Attributes"
    Private m_packageIdVariable As String
    Private m_executionIdVariable As String
    Private m_standardDestinationColumnLength As Integer
    Private m_inputForRowIdentifierName As String
    Private m_rowIdentifierName As String

    Private m_executionId As String
    Private m_packageId As String
    Private m_stepName As String

    Private m_inputInfos() As InputInfo ' the column info of all the input
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class InputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Function NextRow() As Boolean
        NextRow = MyBase.NextRow()
    End Function

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class

<CLSCompliant(False)> _
Public Class Input1Buffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Function NextRow() As Boolean
        NextRow = MyBase.NextRow()
    End Function

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class

<CLSCompliant(False)> _
Public Class OutputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public WriteOnly Property [PackageId]() As String
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [PackageId_IsNull] As Boolean
        Set
            If (value)
                SetNull(0)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [ExecutionId]() As String
        Set
            Me(1) = Value
        End Set
    End Property
    Public WriteOnly Property [ExecutionId_IsNull] As Boolean
        Set
            If (value)
                SetNull(1)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [StepName]() As String
        Set
            Me(2) = Value
        End Set
    End Property
    Public WriteOnly Property [StepName_IsNull] As Boolean
        Set
            If (value)
                SetNull(2)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [RowIdentifierName]() As String
        Set
            Me(3) = Value
        End Set
    End Property
    Public WriteOnly Property [RowIdentifierName_IsNull] As Boolean
        Set
            If (value)
                SetNull(3)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [RowIdentifierId]() As String
        Set
            Me(4) = Value
        End Set
    End Property
    Public WriteOnly Property [RowIdentifierId_IsNull] As Boolean
        Set
            If (value)
                SetNull(4)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [ErrorColumnName]() As String
        Set
            Me(5) = Value
        End Set
    End Property
    Public WriteOnly Property [ErrorColumnName_IsNull] As Boolean
        Set
            If (value)
                SetNull(5)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [ErrorColumnValue]() As String
        Set
            Me(6) = Value
        End Set
    End Property
    Public WriteOnly Property [ErrorColumnValue_IsNull] As Boolean
        Set
            If (value)
                SetNull(6)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [ErrorMessage]() As String
        Set
            Me(7) = Value
        End Set
    End Property
    Public WriteOnly Property [ErrorMessage_IsNull] As Boolean
        Set
            If (value)
                SetNull(7)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {"PackageId", "ExecutionId", "StepName", "RowIdentifierName", "RowIdentifierId", "ErrorColumnName", "ErrorColumnValue", "ErrorMessage"}
        End Get
    End Property

    Public Overloads Sub AddRow()
        MyBase.AddRow()
    End Sub

    Public Overloads Sub SetEndOfRowset()
        MyBase.SetEndOfRowset()
    End Sub

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Settings.settings]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Settings.Designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![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
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Project]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="4.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:Language>msBuild</msb:Language>
		<msb:NoContent>Reference;Import;Folder</msb:NoContent>
		<msb:ProjectId>{C9F7159D-4F93-4C05-9123-8605F3ADB5F6}</msb:ProjectId>
		<msb:DisplayName>scriptcomponent_3e36dc03710e4ab7a7e685e62c677d65</msb:DisplayName>
		<msb:CodeName>scriptcomponent_3e36dc03710e4ab7a7e685e62c677d65</msb:CodeName>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="main.vb"/>
		<msb:File Include="My Project\AssemblyInfo.vb"/>
		<msb:File Include="My Project\Resources.Designer.vb"/>
		<msb:File Include="My Project\Settings.Designer.vb"/>
		<msb:File Include="My Project\Resources.resx"/>
		<msb:File Include="My Project\Settings.settings"/>
		<msb:Project Include="scriptcomponent_3e36dc03710e4ab7a7e685e62c677d65.vbproj"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Resources.resx]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![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>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[scriptcomponent_3e36dc03710e4ab7a7e685e62c677d65.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-16"?>
<Project ToolsVersion="4.0" 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>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <OutputType>Library</OutputType>
    <RootNamespace>ScriptComponent_3e36dc03710e4ab7a7e685e62c677d65.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_3e36dc03710e4ab7a7e685e62c677d65.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{F0289F73-0262-4758-B33A-0997EA2B249A}</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,42353,42354,42355</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,42353,42354,42355</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="Microsoft.SqlServer.ManagedDTS, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.ManagedDTS\v4.0_11.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.ManagedDTS.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="CozyRoc.SSISPlus.2012, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=16cf490bb80c34ea" />
  </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="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
    <Compile Include="main.vb" />
    <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>
    <!-- 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="{30D016F9-3734-4E33-A861-5E7D899E18F3}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{B3A685AA-7EAF-4BC6-9940-57959FA5AC07}" ApplicationType="usd" Language="vb" TemplatesPath="" DebugInfoExeName="devenv.exe" DebugInfoCommandLine="/vstaHostDebugUri:&quot;vstadebug420ed491-c7c0-4ec9-bcdd-d90b816af8d1/89c74728-d312-445a-bc85-05356f336318&quot;" />
        <Host Name="SSIS_ScriptComponent" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC110</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <PropertyGroup>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
  </PropertyGroup>
  <PropertyGroup>
    <TargetFrameworkProfile>
    </TargetFrameworkProfile>
  </PropertyGroup>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Resources.Designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![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
]]></arrayElement></arrayElements></property><property id="17" name="BinaryCode" state="cdata" dataType="System.String" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[ScriptComponent_3e36dc03710e4ab7a7e685e62c677d65.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
FQwDjrcKFgYX2hMEDSseAwmPDwAAAnsZAAAEBBYoSAAAChYzBAkMKwkJF9YNCREEMd0ICwcqAAAT
MAMALwAAACoAABEVDAOOtwoWBhfaEwQNKxcDCY8PAAACexoAAAQEMwQJDCsJCRfWDQkRBDHkCAsH
KgAeAigXAAAKKh4CKBcAAAoqEzACAC0AAAArAAARfiEAAAQtIHJGAgBw0BEAAAIoFAAACm9yAAAK
c3MAAAoLB4AhAAAEfiEAAAQqAAAAEzABAAYAAAAsAAARfiIAAAQqAAAeAoAiAAAEKkJzFwAACigR
AAAKgCQAAAQqAAAAHgIodAAACiobMAEAPwAAAC0AABF+IwAABC0yfiQAAAQoEQAACih1AAAKfiMA
AAQtHHNdAAAGgCMAAATeEH4kAAAEKBEAAAoodgAACtx+IwAABCoAARAAAAIAHQAMKQAQAAAAALQA
AADOyu++AQAAAJEAAABsU3lzdGVtLlJlc291cmNlcy5SZXNvdXJjZVJlYWRlciwgbXNjb3JsaWIs
IFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1
NjE5MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMuUnVudGltZVJlc291cmNlU2V0AgAAAAAAAAAAAAAA
UEFEUEFEULQAAABCU0pCAQABAAAAAAAMAAAAdjQuMC4zMDMxOQAAAAAFAGwAAAAcEwAAI34AAIgT
AAAUFwAAI1N0cmluZ3MAAAAAnCoAAHgCAAAjVVMAFC0AABAAAAAjR1VJRAAAACQtAACUCAAAI0Js
b2IAAAAAAAAAAgAAAVcdogkJDwAAAPolMwAWAAABAAAATgAAABIAAAAkAAAAXgAAAEYAAACCAAAA
AwAAAE0AAAAtAAAACAAAACMAAAApAAAACQAAAAEAAAAIAAAAAQAAAAUAAAADAAAAAgAAAAAA1xYB
AAAAAAAKAN8BtQEKABMC9QEGACMCHAIKAHsCtQEGAPkCHAIKAHsDUQMOAM0DtgMSABwE+wMWAE0E
+wMSAFwE+wMOAIgHtgMaAAgK3wkaAGQK3wkGAC4MHAIGAHMMYgwGAKAMiwweAAEN7AweAE4NOA0e
AGcNOA0eAJQNfA0GAL4Nqw0KAP0N1g0KABUOEwAeAEoOLQ4GAH8OXw4GAJ0OHAIGAMEOHAIKANoO
EwAGAB4P/w4GADIPHAISADkP+wMGAEYPHAIGAG0PHAIaAIcP3wkaALYP3wkaAA0Q3wkaACEQ3wkG
AE4QOxAaAHgQ3wkWANcQ+wMaAAkR3wkaABwR3wkGAD8RHAIKAGER1g0aAKER3wkGAOcRHAIGAPYR
HAIKABkS1g0aAF0S3wkaAHsS3wkaAMMS3wkiACIT+hIiAEET+hIiAFIT+hIiAJAT+hIaAKcT3wkG
ABQUHAISACcU+wMeAE4UOA0eAGQUOA0eAHYUOA0OAK0UixQOALwUixQOAM4UixQGAPwU6hQGACMV
EhUGADYVqw0GAJ8VXw4GAL8VXw4GAPcV3RUGABAW6hQGAC0W/w4GADsW6hQGAFYW6hQGAHEW6hQG
AIoW6hQGAKMW6hQGAMAW6hQAAAAAAQAAAAAAAQABAAAAAAApADcABQABAAEAAAAAAHIANwAJAAEA
AgAAARAAfQA3AA0AAQADAAUBAACHAAAADQAFAAgABQEAAJUAAAANAAUADwABAAAAsAC8AB0ABgAR
AAEAAAD0ALwAHQAGABYAAQAAAAEBvAAdAAYAGwABAAAADgG8AC0ABgAxAAEAAAAcAbwADQAKADsA
AQAAACgBvAANAAsAPAABAAAAMgG8ACgADAA9AAUAAAA9AQAADQAVAFcACwEAAEQBAAA5ABgAWAAL
AQAATwEAADkAHQBYAAAAAABZAWUBDQAhAFgAAAEQAKoBvABFACMAXAAxAD4CIAAxAGcCLQAxAIkC
OgAxAK4CRwAhAIoDkAAGABwB2wAGACgB3wAGAAEB4wABAJwH5wABAH4IDAEBAH4IDAEBAPgKVwEB
AAwLVwEBACIL5wABAEQLVwEBAGALVwEBAHQLVwEBAIILVwEBAI4LVwEBAJkLWgFWgOALVwFWgPIL
VwFWgAYM5wAGADgM5wAGAEQMVwEGAEkM5wAGAEwM5wAGAGoEVwEGAEkM5wAGAEQMVwEGAFYMxgEG
AM0EywERAIMMzgERAKwM0gERABkN8AERACEN9AFQIAAAAAAGGO8BEwABAFggAAAAAAYY7wETAAEA
YCAAAAAAERgqAhcAAQCMIAAAAAATCDECGwABAKQgAAAAABMIVwIoAAEAvCAAAAAAEwiAAjUAAQDU
IAAAAAATCJ4CQgABAOwgAAAAAEYC5AJjAAEACCEAAAAARgLtAmgAAgAcIQAAAACDAP4CbAACADQh
AAAAAEYCBgNxAAIASCEAAAAAEQAPA3gAAgBkIQAAAAABAC0DgAADAIAhAAAAAAYY7wETAAQAiCEA
AAAAAwhBA4sABAC8IQAAAAAGGO8BEwAEANAhAAAAAAYY7wGvAAQA4CEAAAAARgqWBLsACQD0IQAA
AABGCq0EuwAJAAgiAAAAAIYAxQTAAAkAICIAAAAAhgDNBMAACQA4IgAAAAAGGO8BrwAJAEgiAAAA
AEYKlgS7AA4AXCIAAAAARgqtBLsADgBwIgAAAACGAMUEwAAOAIgiAAAAAIYAzQTAAA4AoCIAAAAA
BhjvAa8ADgCwIgAAAABGCpYEuwATAMQiAAAAAAYIAAXJABMA0CIAAAAABggUBc4AFADsIgAAAAAG
CCkFyQAVAPgiAAAAAAYIOQXOABYAFCMAAAAABghQBckAFwAgIwAAAAAGCF0FzgAYADwjAAAAAAYI
cQXJABkASCMAAAAABgiHBc4AGgBkIwAAAAAGCKQFyQAbAHAjAAAAAAYIuAXOABwAjCMAAAAABgjT
BckAHQCYIwAAAAAGCOcFzgAeALQjAAAAAAYIAgbJAB8AwCMAAAAABggXBs4AIADcIwAAAAAGCDMG
yQAhAOgjAAAAAAYIRAbOACIABCQAAAAARgqtBLsAIwBcJAAAAACGAFwGEwAjAGQkAAAAAIYAYwYT
ACMAbCQAAAAAhgDNBMAAIwCEJAAAAAAGGO8BEwAjAKwkAAAAAEYCqwfqACMAQCUAAAAARgPKBxMA
JwBEJQAAAAABANgHEwAnAGAlAAAAAEYC7Af0ACcArCUAAAAARgMSCBMAKwCwJQAAAABGAyYIAAEr
AMQlAAAAAEYDOQgAASwAyCUAAAAARgNTCAYBLQDcJQAAAABGA2cIBgEuAOAlAAAAAAYY7wEQAS8A
8CUAAAAABhjvARABMAAAJgAAAAAGGO8BEwAxAAgmAAAAAMYCjggWATEA0CYAAAAAxgKqCBYBMgDs
JgAAAADGAr4IEwAzALwnAAAAAMYC0wgTADMAqCgAAAAAxgKrBxsBMwBkLAAAAAAGCOUIcQA1AHws
AAAAAAYIAAXJADUAiCwAAAAABgj5CHEANgCgLAAAAAAGCCkFyQA2AKwsAAAAAAYICQloADcAxCwA
AAAABggtCRYBNwDULAAAAAAGCFEJcQA4AOwsAAAAAAYIbwnJADgA+CwAAAAABgiNCXEAOQAQLQAA
AAAGCHEFyQA5ABwtAAAAAAEAowkTADoAfC0AAAAAAQAWCiIBOgCwLQAAAAABADkKKQE8AAAuAAAA
AAEATgouAT0AOC4AAAAAAQBxCjUBPwD8LgAAAAABAIcKPQFAAEQvAAAAAAEAmgrAAEEAiC8AAAAA
AQCoCkIBQQDELwAAAAABAL8KRwFCAAgwAAAAAAEA4gpPAUQARDAAAAAABhjvARMARgBMMAAAAAAD
GO8BEwBGAFQwAAAAABYIuAzWAUYAkDAAAAAAFgjMDNsBRgCkMAAAAAAWCNgM4AFGAKwwAAAAABEY
KgIXAEcAwDAAAAAABhjvARMARwDIMAAAAAAWCC4N9wFHAAAAAQDrAgAAAQAkAwAAAQAkAwAAAQBq
BAAAAgB0BAAAAwB9BAAABACFBAAABQCMBAAAAQBqBAAAAgB0BAAAAwB9BAAABACFBAAABQCMBAAA
AQBqBAAAAgB0BAAAAwB9BAAABACFBAAABQCMBAAAAQAOBQAAAQAOBQAAAQAOBQAAAQAOBQAAAQAO
BQAAAQAOBQAAAQAOBQAAAQAOBQAAAQAOBQAAAQAOBQAAAQAOBQAAAQAOBQAAAQAOBQAAAQAOBQAA
AQAOBQAAAQAOBQAAAQC4BwAAAgDABwAAAwCFBAAABACMBAAAAQD4BwAAAgAACAAAAwAKCAAABACM
BAAAAQCFBAAAAQBPCAAAAQCFBAAAAQBPCAAAAQBqBAAAAQBqBAAAAQCiCAAAAQCiCAAAAQCiCAAA
AgDeCAAAAQDzCAAAAQDzCAAAAQDzCAAAAQDzCAAAAQDzCAAAAQAnCgAAAgAuCgAAAQBGCgAAAQAn
CgAAAgAuCgAAAQCBCgAAAQCiCAAAAQC7CgAAAQDUCgAAAgDdCgAAAQDUCgAAAgD1CgAAAQAOBQkA
7wETAJEA7wEBAqEA7wEQAhEA7wETAKkA7wETACQA7wETACwA7wETADQA7wETADwA7wETACQAQQOL
ACwAQQOLADQAQQOLADwAQQOLALEA7wETALkA7wETAMEA7wHJAMkAjg6qAhkA5AJjABkA7QJoACkA
rw63AhkABgNxANkAyw7HAhkA7wETAOEA7wHXAkQAigOQAEwALg2LAEwA9Q5UA0wA7wETAOkA7wHO
ADkA7wGvAPkAxQTAAPkAzQTAAAEB7wHOADkAXA9uAzkAZQ8WAQkB7wHJAPkAXAYTAPkAYwYTAFkA
7wETAEEAoA97AxEBzQ+BAxkB4Q+HA2kA6g9oAEkA8Q/AAEEAARCNAxkBWhCZA2kAaBCfAyEBnBCl
AzkBvRCrAzEByxCxA1kA6RC1AykB+xBoAEEBKRG7AzEBNhHAAFkBSxETABkBUxHJAxkBVxFoAGEB
BgPOA/EAbRHTA2kAdBHJAGkAfRHOAFkAqggWARkBkBEWARkBvRCrA2kAvhHpA2kB2BETAPEA4hFx
AGkA7RFxAHkB7wHJAPEADBJXAUkAEhIPBIEBIxIUBEkA4Q8bBGEBMRIgBBEBOxIlBPEAbREqBPEA
TxIxBEkAxQTAABEBkxJOBJEB4Q9UBGEAqBJaBIkBVxFoAIkB4Q9gBJkBKxNnBIkBUxF8BJkBdBHJ
AEEAaxOIBLEBgROOBKkB4Q+XBLkBLg2xA6kBoBMTAEEBvBOmBGEAzhNoAJkB+xBoAMEB2ROsBGkB
VxFoAGkB4Q+yBEkB6g9oAGkAzhNoAEkB+xBoAEkB7RFxAEkB7xNxAPEACRRoAMkBGRTdBPEAHRTj
BNEB7wETANkB7wEWAeEB7wHJAOkB7wHJAPEB7wETANkB7wHJAPkB7wETAAEC7wHgBikABRVLB3kA
7wFRB4kA7wETABECKxVuBxECMRVuBxkC7wETACEC7wEWASkC7wETADEC7wHJADkC7wHJAEEC7wHJ
AEkC7wHJAFEC7wHJAFkC7wHJAGEC7wHJAGkC7wHJAHEC7wHJAA4AVABjAQ4AWACGAQgAXADBASkA
gwBkAi4A+wNFCC4AEwRFCC4A8wMlCC4AywOBBy4A0wOgBy4A6wNjAy4ACwRjAy4AwwN4By4AAwSC
CC4A2wPoBy4A4wP1By4A6wBjAy4ACwEfCEAAKwAvAkAAEwAHAkMAEwAHAkMAGwAWAkkAgwB1AmMA
GwAWAmMAEwAHAmkAgwCJAoAAKwAvAoMAcwAvAoMAGwAWAoMAewAvAokAgwCWAqAAKwAvAqMAEwAH
AqMAwwDfAsAAKwAvAsMAEwAHAsMA6wBjA+AAKwAvAuMACwFjAwABEwAHAgABKwAvAgMBCwFjAyAB
KwAvAiABEwAHAiMBCwFjA0ABKwAvAkABEwAHAkMBCwFjA2ABKwAvAmABEwAHAoABKwAvAqABKwAv
AqMBCwFjA6MBUwMvAsABEwAHAsABKwAvAuABKwAvAgACEwAHAgACKwAvAokDgwMvAokDYwP3BIkD
ewO8BYkDawPTBakDewM0BqkDgwMvAqkDawNXBqkDYwP3BMkDawMEBckDWwPuBMkDYwP3BOkDYwM6
BekDawNaBekDcwMvAgkEiwPmBgkEawMGBwkEYwM6BSkEEwBlB0kEEwBlB2kEuwMvAmAHCwFjA4AH
CwFjA1ACVQJaAl8CrwKzAr4CwwLSAtICWgNpA2kDrwKvAmkDaQOvAq8CaQN0A68ClAPZA+8DAAQ2
BMMCwwKzAsMCwwJyBIIEngSzArkEygTSBOkEygTKBFkHYAdzBwQAAQAGAAUABwAGAAgACAAJAAoA
DQAcABEAIQASACMAAAATAk8AAADMAlQAAAB7AlkAAADYAl4AAACUA5gAAADZBMQAAADsBMQAAADZ
BMQAAADsBMQAAADZBMQAAAByBtMAAAB8BtcAAACNBtMAAACZBtcAAACsBtMAAAC1BtcAAADFBtMA
AADXBtcAAADwBtMAAAAAB9cAAAAXB9MAAAAnB9cAAAA+B9MAAABPB9cAAABnB9MAAAB0B9cAAADs
BMQAAAByBtMAAACNBtMAAACmC18BAADGC9MAAADFBtMAAABzDOYBAADkDOsBAAAOBfwBAgAEAAMA
AgAFAAUAAgAGAAcAAgAHAAkAAgAPAAsAAgASAA0AAgATAA8AAgAXABEAAgAYABMAAgAcABUAAQAd
ABcAAQAeABkAAQAfABsAAQAgAB0AAQAhAB8AAQAiACEAAQAjACMAAQAkACUAAQAlACcAAQAmACkA
AQAnACsAAQAoAC0AAQApAC8AAQAqADEAAQArADMAAQAsADUAAgAtADcAAgBDADkAAQBEADkAAQBG
ADsAAgBFADsAAQBIAD0AAgBHAD0AAgBJAD8AAQBKAD8AAgBLAEEAAQBMAEEAAgBZAEMAAgBaAEUA
AQBbAEUAAgBeAEcAdQB1AIgANAI7AkICSQJBA0gDBIAAAAEAAAAAAAAAAAAAAAAAvAAAAAQAAAAA
AAAAAAAAAAEACgAAAAAACgAAAAAAAAAAAAAACgATAAAAAAABAAAAAAAAAAAAAACdAKADAAAAAAsA
AAAAAAAAAAAAAKYA3gMAAAAACwAAAAAAAAAAAAAApgAsBAAAAAALAAAAAAAAAAAAAACmALsJAAAA
AAQAAAAAAAAAAAAAAAEAHAIAAAAACwAAAAAAAAAAAAAApgDXEgAAAAAAAAAAAQAAAFMVAAAFAAQA
BgAEAA4ADQAPAA0AEAANAAAAEAAMACIDAAAQABkAIgMAAAAAGwAiAy0AzQItAE8DAAAAAAA8TW9k
dWxlPgBtc2NvcmxpYgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMATXlBcHBsaWNhdGlvbgBTY3JpcHRD
b21wb25lbnRfM2UzNmRjMDM3MTBlNGFiN2E3ZTY4NWU2MmM2NzdkNjUudmJwcm9qLk15AE15Q29t
cHV0ZXIATXlQcm9qZWN0AE15V2ViU2VydmljZXMAVGhyZWFkU2FmZU9iamVjdFByb3ZpZGVyYDEA
SW5wdXRCdWZmZXIAU2NyaXB0Q29tcG9uZW50XzNlMzZkYzAzNzEwZTRhYjdhN2U2ODVlNjJjNjc3
ZDY1LnZicHJvagBJbnB1dDFCdWZmZXIAT3V0cHV0QnVmZmVyAFVzZXJDb21wb25lbnQAQ29ubmVj
dGlvbnMAVmFyaWFibGVzAFNjcmlwdE1haW4AQ29uc3RzAENvbHVtbkluZm8ASW5wdXRJbmZvAE15
UmVzb3VyY2VzAFNjcmlwdENvbXBvbmVudF8zZTM2ZGMwMzcxMGU0YWI3YTdlNjg1ZTYyYzY3N2Q2
NS52YnByb2ouTXkuUmVzb3VyY2VzAE15U2V0dGluZ3MATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkFw
cGxpY2F0aW9uU2VydmljZXMAQXBwbGljYXRpb25CYXNlAC5jdG9yAE1pY3Jvc29mdC5WaXN1YWxC
YXNpYy5EZXZpY2VzAENvbXB1dGVyAFN5c3RlbQBPYmplY3QALmNjdG9yAGdldF9Db21wdXRlcgBt
X0NvbXB1dGVyT2JqZWN0UHJvdmlkZXIAZ2V0X0FwcGxpY2F0aW9uAG1fQXBwT2JqZWN0UHJvdmlk
ZXIAVXNlcgBnZXRfVXNlcgBtX1VzZXJPYmplY3RQcm92aWRlcgBnZXRfV2ViU2VydmljZXMAbV9N
eVdlYlNlcnZpY2VzT2JqZWN0UHJvdmlkZXIAQXBwbGljYXRpb24AV2ViU2VydmljZXMARXF1YWxz
AG8AR2V0SGFzaENvZGUAVHlwZQBHZXRUeXBlAFRvU3RyaW5nAENyZWF0ZV9fSW5zdGFuY2VfXwBU
AGluc3RhbmNlAERpc3Bvc2VfX0luc3RhbmNlX18AZ2V0X0dldEluc3RhbmNlAE1pY3Jvc29mdC5W
aXN1YWxCYXNpYy5NeVNlcnZpY2VzLkludGVybmFsAENvbnRleHRWYWx1ZWAxAG1fQ29udGV4dABH
ZXRJbnN0YW5jZQBDb3p5Um9jLlNTSVNQbHVzLjIwMTIAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJUwBT
Y3JpcHRCdWZmZXJQbHVzAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3JpcHQATWljcm9zb2Z0LlNx
bFNlcnZlci5EdHMuUGlwZWxpbmUAU2NyaXB0Q29tcG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIu
UGlwZWxpbmVIb3N0AFBpcGVsaW5lQnVmZmVyAE91dHB1dE5hbWVNYXAAQ29tcG9uZW50AE9iamVj
dElEAElzSW5wdXQAQnVmZmVyAE91dHB1dE1hcABnZXRfU3RhdGljSW5wdXRDb2x1bW5zAGdldF9T
dGF0aWNPdXRwdXRDb2x1bW5zAE5leHRSb3cARW5kT2ZSb3dzZXQAU3RhdGljSW5wdXRDb2x1bW5z
AFN0YXRpY091dHB1dENvbHVtbnMAc2V0X1BhY2thZ2VJZABWYWx1ZQBzZXRfUGFja2FnZUlkX0lz
TnVsbABzZXRfRXhlY3V0aW9uSWQAc2V0X0V4ZWN1dGlvbklkX0lzTnVsbABzZXRfU3RlcE5hbWUA
c2V0X1N0ZXBOYW1lX0lzTnVsbABzZXRfUm93SWRlbnRpZmllck5hbWUAc2V0X1Jvd0lkZW50aWZp
ZXJOYW1lX0lzTnVsbABzZXRfUm93SWRlbnRpZmllcklkAHNldF9Sb3dJZGVudGlmaWVySWRfSXNO
dWxsAHNldF9FcnJvckNvbHVtbk5hbWUAc2V0X0Vycm9yQ29sdW1uTmFtZV9Jc051bGwAc2V0X0Vy
cm9yQ29sdW1uVmFsdWUAc2V0X0Vycm9yQ29sdW1uVmFsdWVfSXNOdWxsAHNldF9FcnJvck1lc3Nh
Z2UAc2V0X0Vycm9yTWVzc2FnZV9Jc051bGwAQWRkUm93AFNldEVuZE9mUm93c2V0AFBhY2thZ2VJ
ZABQYWNrYWdlSWRfSXNOdWxsAEV4ZWN1dGlvbklkAEV4ZWN1dGlvbklkX0lzTnVsbABTdGVwTmFt
ZQBTdGVwTmFtZV9Jc051bGwAUm93SWRlbnRpZmllck5hbWUAUm93SWRlbnRpZmllck5hbWVfSXNO
dWxsAFJvd0lkZW50aWZpZXJJZABSb3dJZGVudGlmaWVySWRfSXNOdWxsAEVycm9yQ29sdW1uTmFt
ZQBFcnJvckNvbHVtbk5hbWVfSXNOdWxsAEVycm9yQ29sdW1uVmFsdWUARXJyb3JDb2x1bW5WYWx1
ZV9Jc051bGwARXJyb3JNZXNzYWdlAEVycm9yTWVzc2FnZV9Jc051bGwAU2NyaXB0Q29tcG9uZW50
UGx1cwBJbnB1dHNGaW5pc2hlZABQcm9jZXNzSW5wdXQASW5wdXRJRABJbnB1dE5hbWUARmluaXNo
T3V0cHV0cwBNYXJrT3V0cHV0c0ZpbmlzaGVkAFByaW1lT3V0cHV0AE91dHB1dHMAT3V0cHV0SURz
AEJ1ZmZlcnMAQ3JlYXRlTmV3T3V0cHV0Um93cwBJbnB1dF9Qcm9jZXNzSW5wdXQASW5wdXRfUHJv
Y2Vzc0lucHV0Um93AFJvdwBJbnB1dDFfUHJvY2Vzc0lucHV0AElucHV0MV9Qcm9jZXNzSW5wdXRS
b3cAUGFyZW50Q29tcG9uZW50AE9uSW5wdXRQYXRoQXR0YWNoZWQAaW5wdXRJRABPbklucHV0UGF0
aERldGFjaGVkAFJlaW5pdGlhbGl6ZU1ldGFEYXRhAFByZUV4ZWN1dGUAYnVmZmVyAGdldF9QYWNr
YWdlSWQAdmFsdWUAZ2V0X0V4ZWN1dGlvbklkAGdldF9TdGFuZGFyZERlc3RpbmF0aW9uQ29sdW1u
TGVuZ3RoAHNldF9TdGFuZGFyZERlc3RpbmF0aW9uQ29sdW1uTGVuZ3RoAGdldF9JbnB1dEZvclJv
d0lkZW50aWZpZXJOYW1lAHNldF9JbnB1dEZvclJvd0lkZW50aWZpZXJOYW1lAGdldF9Sb3dJZGVu
dGlmaWVyTmFtZQBSZXNldE91dHB1dENvbHVtblR5cGVzXwBNaWNyb3NvZnQuU3FsU2VydmVyLkRU
U1BpcGVsaW5lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZS5XcmFwcGVyAElE
VFNPdXRwdXQxMDAAQWRkU3RyaW5nQ29sdW1uXwBvdXRwdXQAY29sdW1uTmFtZQBHZXRWYXJpYWJs
ZV8AdmFyTmFtZQBHZXRPdXRwdXRDb2x1bW5JbmRleF8ASURUU0lucHV0MTAwAEdldENvbHVtbklu
Zm9zXwBpbnB1dABHZXRJbnB1dEluZm9JbmRleF8ASXNFbmRSZWFjaGVkXwBHZXRQaXBlbGluZVN0
cmluZ18Ac3RyAEdldENvbHVtbkluZm9CeU5hbWVfAGNvbHNJbmZvAG5hbWUAR2V0Q29sdW1uSW5m
b0J5SWRfAGlkAG1fcGFja2FnZUlkVmFyaWFibGUAbV9leGVjdXRpb25JZFZhcmlhYmxlAG1fc3Rh
bmRhcmREZXN0aW5hdGlvbkNvbHVtbkxlbmd0aABtX2lucHV0Rm9yUm93SWRlbnRpZmllck5hbWUA
bV9yb3dJZGVudGlmaWVyTmFtZQBtX2V4ZWN1dGlvbklkAG1fcGFja2FnZUlkAG1fc3RlcE5hbWUA
bV9pbnB1dEluZm9zAFN0YW5kYXJkRGVzdGluYXRpb25Db2x1bW5MZW5ndGgASW5wdXRGb3JSb3dJ
ZGVudGlmaWVyTmFtZQBQYWNrYWdlSWRfRGVmYXVsdABFeGVjdXRpb25JZF9EZWZhdWx0AFN0YW5k
YXJkRGVzdGluYXRpb25Db2x1bW5MZW5ndGhfRGVmYXVsdABWYWx1ZVR5cGUAQnVmZmVySW5kZXgA
TmFtZQBJZABMaW5lYWdlSWQAQ29sdW1uSW5mb3MAU3lzdGVtLlJlc291cmNlcwBSZXNvdXJjZU1h
bmFnZXIAX3Jlc01ncgBTeXN0ZW0uR2xvYmFsaXphdGlvbgBDdWx0dXJlSW5mbwBfcmVzQ3VsdHVy
ZQBnZXRfUmVzb3VyY2VNYW5hZ2VyAGdldF9DdWx0dXJlAHNldF9DdWx0dXJlAEN1bHR1cmUAU3lz
dGVtLkNvbmZpZ3VyYXRpb24AQXBwbGljYXRpb25TZXR0aW5nc0Jhc2UAbV9WYWx1ZQBtX1N5bmNP
YmplY3QAZ2V0X1ZhbHVlAFN5c3RlbS5Db21wb25lbnRNb2RlbABFZGl0b3JCcm93c2FibGVBdHRy
aWJ1dGUARWRpdG9yQnJvd3NhYmxlU3RhdGUAU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIAR2VuZXJh
dGVkQ29kZUF0dHJpYnV0ZQBTeXN0ZW0uRGlhZ25vc3RpY3MARGVidWdnZXJIaWRkZW5BdHRyaWJ1
dGUATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkNvbXBpbGVyU2VydmljZXMAU3RhbmRhcmRNb2R1bGVB
dHRyaWJ1dGUASGlkZU1vZHVsZU5hbWVBdHRyaWJ1dGUAU3lzdGVtLkNvbXBvbmVudE1vZGVsLkRl
c2lnbgBIZWxwS2V5d29yZEF0dHJpYnV0ZQBTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2Vz
AFJ1bnRpbWVIZWxwZXJzAEdldE9iamVjdFZhbHVlAFJ1bnRpbWVUeXBlSGFuZGxlAEdldFR5cGVG
cm9tSGFuZGxlAEFjdGl2YXRvcgBDcmVhdGVJbnN0YW5jZQBNeUdyb3VwQ29sbGVjdGlvbkF0dHJp
YnV0ZQBzZXRfVmFsdWUAU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzAENvbVZpc2libGVB
dHRyaWJ1dGUAU3RyaW5nAFNjcmlwdEJ1ZmZlcgBDTFNDb21wbGlhbnRBdHRyaWJ1dGUAc2V0X0l0
ZW0AU2V0TnVsbABJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uAElEVFNDb21wb25lbnRNZXRhRGF0
YTEwMABnZXRfQ29tcG9uZW50TWV0YURhdGEASURUU0lucHV0Q29sbGVjdGlvbjEwMABnZXRfSW5w
dXRDb2xsZWN0aW9uAGdldF9JdGVtAGdldF9JRABnZXRfRW5kT2ZSb3dzZXQAR2V0T3V0cHV0SUQA
SURUU1ZpcnR1YWxJbnB1dDEwMABJRFRTVmlydHVhbElucHV0Q29sdW1uMTAwAFN5c3RlbS5Db2xs
ZWN0aW9ucwBJRW51bWVyYXRvcgBHZXRPYmplY3RCeUlEAEdldFZpcnR1YWxJbnB1dABJRFRTVmly
dHVhbElucHV0Q29sdW1uQ29sbGVjdGlvbjEwMABnZXRfVmlydHVhbElucHV0Q29sdW1uQ29sbGVj
dGlvbgBHZXRFbnVtZXJhdG9yAGdldF9DdXJyZW50AFBpcGVsaW5lQ29tcG9uZW50AGdldF9Ib3N0
Q29tcG9uZW50AGdldF9MaW5lYWdlSUQASURUU0lucHV0Q29sdW1uMTAwAERUU1VzYWdlVHlwZQBT
ZXRVc2FnZVR5cGUATW92ZU5leHQASURpc3Bvc2FibGUARGlzcG9zZQBOZXcAZ2V0X0NvdW50AENv
bnZlcnNpb25zAENvbmNhdABzZXRfTmFtZQBzZXRfSGFzU2lkZUVmZmVjdHMAUmVtb3ZlT2JqZWN0
QnlJRABJRFRTSW5wdXRDb2x1bW5Db2xsZWN0aW9uMTAwAGdldF9JbnB1dENvbHVtbkNvbGxlY3Rp
b24AUmVtb3ZlQWxsAFRyaW0ASW50MzIAZ2V0X05hbWUAQXJndW1lbnROdWxsRXhjZXB0aW9uAEVt
cHR5AElzTnVsbABPcGVyYXRvcnMAQ29tcGFyZVN0cmluZwBUb0ludGVnZXIAR2V0RXJyb3JEZXNj
cmlwdGlvbgBJc051bGxPckVtcHR5AElEVFNPdXRwdXRDb2x1bW5Db2xsZWN0aW9uMTAwAElEVFNP
dXRwdXRDb2xsZWN0aW9uMTAwAGdldF9PdXRwdXRDb2xsZWN0aW9uAGdldF9PdXRwdXRDb2x1bW5D
b2xsZWN0aW9uAElEVFNPdXRwdXRDb2x1bW4xMDAATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNSdW50
aW1lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5SdW50aW1lLldyYXBwZXIARGF0YVR5cGUA
U2V0RGF0YVR5cGVQcm9wZXJ0aWVzAElEVFNWYXJpYWJsZXMxMDAASURUU1ZhcmlhYmxlRGlzcGVu
c2VyMTAwAGdldF9WYXJpYWJsZURpc3BlbnNlcgBMb2NrT25lRm9yUmVhZABJRFRTVmFyaWFibGUx
MDAAVW5sb2NrAElEVFNCdWZmZXJNYW5hZ2VyMTAwAGdldF9CdWZmZXJNYW5hZ2VyAGdldF9CdWZm
ZXIARmluZENvbHVtbkJ5TGluZWFnZUlEAGdldF9VcHN0cmVhbUNvbXBvbmVudE5hbWUAZ2V0X0xl
bmd0aABNYXRoAE1pbgBTdWJzdHJpbmcAU1NJU1NjcmlwdENvbXBvbmVudEVudHJ5UG9pbnRBdHRy
aWJ1dGUARGVmYXVsdFZhbHVlQXR0cmlidXRlAENhdGVnb3J5QXR0cmlidXRlAERlc2NyaXB0aW9u
QXR0cmlidXRlAENvenlSb2MuU3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBJbnB1dEF0dHJpYnV0
ZQBWYXJpYWJsZUF0dHJpYnV0ZQBJbnB1dFZpcnR1YWxDb2x1bW5BdHRyaWJ1dGUAU3lzdGVtLlJl
ZmxlY3Rpb24AQXNzZW1ibHkAZ2V0X0Fzc2VtYmx5AFN5c3RlbS5UaHJlYWRpbmcATW9uaXRvcgBF
bnRlcgBFeGl0AERlYnVnZ2VyTm9uVXNlckNvZGVBdHRyaWJ1dGUAU2NyaXB0Q29tcG9uZW50XzNl
MzZkYzAzNzEwZTRhYjdhN2U2ODVlNjJjNjc3ZDY1LnZicHJvai5SZXNvdXJjZXMucmVzb3VyY2Vz
AENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRy
aWJ1dGUAU3lzdGVtLlJ1bnRpbWUuVmVyc2lvbmluZwBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUA
QXNzZW1ibHlGaWxlVmVyc2lvbkF0dHJpYnV0ZQBHdWlkQXR0cmlidXRlAEFzc2VtYmx5VHJhZGVt
YXJrQXR0cmlidXRlAEFzc2VtYmx5Q29weXJpZ2h0QXR0cmlidXRlAEFzc2VtYmx5UHJvZHVjdEF0
dHJpYnV0ZQBBc3NlbWJseUNvbXBhbnlBdHRyaWJ1dGUAQXNzZW1ibHlEZXNjcmlwdGlvbkF0dHJp
YnV0ZQBBc3NlbWJseVRpdGxlQXR0cmlidXRlAFNjcmlwdENvbXBvbmVudF8zZTM2ZGMwMzcxMGU0
YWI3YTdlNjg1ZTYyYzY3N2Q2NS52YnByb2ouZGxsAAAAgJtJAHMATgB1AGwAbAAgAHAAcgBvAHAA
ZQByAHQAeQAgAGMAYQBuAG4AbwB0ACAAYgBlACAAcwBlAHQAIAB0AG8AIABGAGEAbABzAGUALgAg
AEEAcwBzAGkAZwBuACAAYQAgAHYAYQBsAHUAZQAgAHQAbwAgAHQAaABlACAAYwBvAGwAdQBtAG4A
IABpAG4AcwB0AGUAYQBkAC4AABNQAGEAYwBrAGEAZwBlAEkAZAAAF0UAeABlAGMAdQB0AGkAbwBu
AEkAZAAAEVMAdABlAHAATgBhAG0AZQAAI1IAbwB3AEkAZABlAG4AdABpAGYAaQBlAHIATgBhAG0A
ZQAAH1IAbwB3AEkAZABlAG4AdABpAGYAaQBlAHIASQBkAAAfRQByAHIAbwByAEMAbwBsAHUAbQBu
AE4AYQBtAGUAACFFAHIAcgBvAHIAQwBvAGwAdQBtAG4AVgBhAGwAdQBlAAAZRQByAHIAbwByAE0A
ZQBzAHMAYQBnAGUAAAtJAG4AcAB1AHQAAA9JAG4AcAB1AHQAIAAxAAANTwB1AHQAcAB1AHQAAA1J
AG4AcAB1AHQAIAAAIVMAeQBzAHQAZQBtADoAOgBUAGEAcwBrAE4AYQBtAGUAAA1iAHUAZgBmAGUA
cgAAD1UAbgBrAG4AbwB3AG4AAAEAE0UAcgByAG8AcgBDAG8AZABlAAAHIAAtACAAARdFAHIAcgBv
AHIAQwBvAGwAdQBtAG4AAA9NAGEAeQBiAGUAOgAgAAALSQBkACAAPQAgAAAxTQB5AC4AUgBlAHMA
bwB1AHIAYwBlAHMALgBNAHkAUgBlAHMAbwB1AHIAYwBlAHMAAGygPFSU8A1EqhHcQaK6oRMACLd6
XFYZNOCJCLA/X38R1Qo6AyAAAQMAAAEEAAASDAcGFRIYARIMBAAAEggHBhUSGAESCAQAABIRBwYV
EhgBEhEEAAASFAcGFRIYARIUBAgAEgwECAASCAQIABIRBAgAEhQEIAECHAMgAAgEIAASFQMgAA4C
HgAHEAEBHgAeAAcwAQEBEB4AAhMABCAAEwAHBhUSGQETAAQoABMACBbPSQu4DDTqCImEXc2AgMyR
CyAFARIhCAISJRIpBCAAHQ4DIAACBCgAHQ4EIAEBDgQgAQECAygADgMoAAIDBhIsAwYSMAMGEiQC
BggJIAQBCA4SJRIpCyAEAQgdCB0SJRIpBSABARIcBSABARIgAwYSIQUgAQESIQQgAQEIBiACAQgS
JQYgAgESMQ4EIAEcDgYgAggSMQ4HIAEdETwSNQQgAQgIBCABDg4HIAIIHRE8DgcgAggdETwIAgYO
BAYdEUADKAAIIlMAeQBzAHQAZQBtADoAOgBQAGEAYwBrAGEAZwBlAEkARAA6UwB5AHMAdABlAG0A
OgA6AEUAeABlAGMAdQB0AGkAbwBuAEkAbgBzAHQAYQBuAGMAZQBHAFUASQBEAAT6AAAABAYdETwC
BgIDBhI9AwYSQQQAABI9BAAAEkEFAAEBEkEECAASPQQIABJBAwYSSAIGHAQAABJIBAgAEkgFIAEB
EU0IAQABAAAAAAAFIAIBDg4YAQAKTXlUZW1wbGF0ZQgxMC4wLjAuMAAABAEAAAAGFRIYARIMBhUS
GAESCAYVEhgBEhEGFRIYARIUBAcBEgwEBwESCAQHARIRBAcBEhQQAQALTXkuQ29tcHV0ZXIAABMB
AA5NeS5BcHBsaWNhdGlvbgAADAEAB015LlVzZXIAABMBAA5NeS5XZWJTZXJ2aWNlcwAABAABHBwD
BwECAwcBCAYAARIVEWkEBwESFQMHAQ4FEAEAHgAECgEeAAQHAR4AByAEAQ4ODg5hAQA0U3lzdGVt
LldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMuU29hcEh0dHBDbGllbnRQcm90b2NvbBJDcmVhdGVfX0lu
c3RhbmNlX18TRGlzcG9zZV9fSW5zdGFuY2VfXwAAAAYVEhgBEwAGFRIZARMABAoBEwAFIAEBEwAI
BwMTABMAEwAFAQAAAAAEBwEdDgUgAgEIHAYHAh0OHQ4FIAASgIkFIAASgI0FIAESNRwGAAIIEikO
BAcCCAgFIAESNQgFIAASgJEFIAASgJ0FIAASgJkDIAAcBSAAEoChDSAEEoClCBKAkQgRgKkEIAAS
NQQAAQ4IBQACDg4ODwcFEjUSNRKAkRKAlRKAmQUgABKAtRAHBRKAkRI1EoCVEoCZEoCZDgcHEoCN
CBI1CAgdEUAIBCABAggGAAMIDg4CBCABHAgEAAEIHAQgAQ4IBgADDg4ODgQAAQIOFwcSCAgICA4O
Dg4IDg4RPBE8ETwIDggIBSAAEoDJBSABEjEcBSAAEoDFBiABEoDNHAogBQERgNEICAgICQcEEjES
gMUICAUgABKAzQUHARKAzQUgABKA2QggAgEOEBKA1QYgARKA3RwHBwMcHBKA1QUgABKA4QUgAggI
CAYgARKApRwQBwcIHRE8HRE8CBE8EoClCAcHBQgICAgICgcFAgIRQAgdEUAFAAIICAgFIAIOCAgE
BwIODggBAPoAAAAAAAwBAAdHZW5lcmFsAAA1AQAwU2VsZWN0IHRoZSBsZW5ndGggb2YgdGhlIE5W
YXJjaGFyIG91dHB1dCBjb2x1bW5zAAAfAQAaU3BlY2lmaWMgZm9yIHRoaXMgZGF0YWZsb3cAAGEB
AFxTZWxlY3QgdGhlIGlucHV0IGZsb3cgdGhhdCBjb250YWlucyB0aGUgY29sdW1uIHRoYXQgdW5p
cXVlbHkgZGVmaW5lcyBldmVyeSByb3cgaW4gdGhpcyBmbG93LgAAFgEAEVN5c3RlbTo6UGFja2Fn
ZUlEAABgAQBbU2VsZWN0IHZhcmlhYmxlIHRoYXQgY29udGFpbnMgdGhlIHVuaXF1ZSBpZGVudGlm
aWVyIG9mIHRoaXMgcGFja2FnZS5GLmUuIFN5c3RlbTo6UGFja2FnZUlELgAAIgEAHVN5c3RlbTo6
RXhlY3V0aW9uSW5zdGFuY2VHVUlEAACAhwEAgIFTZWxlY3QgdmFyaWFibGUgdGhhdCBjb250YWlu
cyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhpcyBleGVjdXRpb24vaW5zdGFuY2Ugb2YgdGhl
IHBhY2thZ2UuRi5lLiBTeXN0ZW06OkV4ZWN1dGlvbkluc3RhbmNlR1VJRC4AAAUgAgEOAh8BABlJ
bnB1dEZvclJvd0lkZW50aWZpZXJOYW1lAQAARAEAP1NlbGVjdCB0aGUgY29sdW1uIHRoYXQgdW5p
cXVlbHkgZGVmaW5lcyBldmVyeSByb3cgaW4gdGhpcyBmbG93LgAABSAAEoEFByACAQ4SgQUGBwIS
PRI9BAcBEkEIAQACAAAAAAAEAAEBHAQHARJICAEACAAAAAAAHgEAAQBUAhZXcmFwTm9uRXhjZXB0
aW9uVGhyb3dzAUcBABouTkVURnJhbWV3b3JrLFZlcnNpb249djQuMAEAVA4URnJhbWV3b3JrRGlz
cGxheU5hbWUQLk5FVCBGcmFtZXdvcmsgNAwBAAcxLjAuMC4wAAApAQAkNjdjZjQ5NzItMDBiYi00
ZTEzLTk4ZDItMWNjNzA4ZTMzN2QxAAAFAQABAAAfAQAaQ29weXJpZ2h0IEAgTWljcm9zb2Z0IDIw
MTUAADwBADdTY3JpcHRDb21wb25lbnRfM2UzNmRjMDM3MTBlNGFiN2E3ZTY4NWU2MmM2NzdkNjUu
dmJwcm9qAAAOAQAJTWljcm9zb2Z0AAAAAAC8ZwAAAAAAAAAAAADeZwAAACAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAA0GcAAAAAAAAAAAAAAAAAAAAAAAAAAF9Db3JEbGxNYWluAG1zY29yZWUuZGxsAAAA
AAD/JQAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgAAIAAAAAAAAAAAAAAAAAA
AAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYgAAAaAQAAAAAAAAAAAAAaAQ0AAAA
VgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEAAAABAAAAAAAAAAEAAAAA
AD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBGAGkAbABlAEkAbgBmAG8A
AAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBMgDAAABAFMAdAByAGkAbgBn
AEYAaQBsAGUASQBuAGYAbwAAAKQDAAABADAAMAAwADAAMAA0AGIAMAAAADQACgABAEMAbwBtAHAA
YQBuAHkATgBhAG0AZQAAAAAATQBpAGMAcgBvAHMAbwBmAHQAAACYADgAAQBGAGkAbABlAEQAZQBz
AGMAcgBpAHAAdABpAG8AbgAAAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwAzAGUA
MwA2AGQAYwAwADMANwAxADAAZQA0AGEAYgA3AGEANwBlADYAOAA1AGUANgAyAGMANgA3ADcAZAA2
ADUALgB2AGIAcAByAG8AagAAADAACAABAEYAaQBsAGUAVgBlAHIAcwBpAG8AbgAAAAAAMQAuADAA
LgAwAC4AMAAAAJgAPAABAEkAbgB0AGUAcgBuAGEAbABOAGEAbQBlAAAAUwBjAHIAaQBwAHQAQwBv
AG0AcABvAG4AZQBuAHQAXwAzAGUAMwA2AGQAYwAwADMANwAxADAAZQA0AGEAYgA3AGEANwBlADYA
OAA1AGUANgAyAGMANgA3ADcAZAA2ADUALgB2AGIAcAByAG8AagAuAGQAbABsAAAAXAAbAAEATABl
AGcAYQBsAEMAbwBwAHkAcgBpAGcAaAB0AAAAQwBvAHAAeQByAGkAZwBoAHQAIABAACAATQBpAGMA
cgBvAHMAbwBmAHQAIAAyADAAMQA1AAAAAACgADwAAQBPAHIAaQBnAGkAbgBhAGwARgBpAGwAZQBu
AGEAbQBlAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwAzAGUAMwA2AGQAYwAwADMA
NwAxADAAZQA0AGEAYgA3AGEANwBlADYAOAA1AGUANgAyAGMANgA3ADcAZAA2ADUALgB2AGIAcABy
AG8AagAuAGQAbABsAAAAkAA4AAEAUAByAG8AZAB1AGMAdABOAGEAbQBlAAAAAABTAGMAcgBpAHAA
dABDAG8AbQBwAG8AbgBlAG4AdABfADMAZQAzADYAZABjADAAMwA3ADEAMABlADQAYQBiADcAYQA3
AGUANgA4ADUAZQA2ADIAYwA2ADcANwBkADYANQAuAHYAYgBwAHIAbwBqAAAANAAIAAEAUAByAG8A
ZAB1AGMAdABWAGUAcgBzAGkAbwBuAAAAMQAuADAALgAwAC4AMAAAADgACAABAEEAcwBzAGUAbQBi
AGwAeQAgAFYAZQByAHMAaQBvAG4AAAAxAC4AMAAuADAALgAwAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAYAAADAAAAPA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAA==]]></arrayElement></arrayElements></property><property id="18" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2012, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property><property id="20" name="VSTAProjectName" dataType="System.String" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE">ScriptComponent_3e36dc03710e4ab7a7e685e62c677d65</property><property id="21" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property></properties><inputs><input id="23" name="Input" hasSideEffects="true"><externalMetadataColumns /></input><input id="29" name="Input 1" hasSideEffects="true"><externalMetadataColumns /></input></inputs><outputs><output id="30" name="Output" hasSideEffects="true"><outputColumns><outputColumn id="31" name="PackageId" lineageId="31" length="255" dataType="wstr" /><outputColumn id="32" name="ExecutionId" lineageId="32" length="255" dataType="wstr" /><outputColumn id="33" name="StepName" lineageId="33" length="255" dataType="wstr" /><outputColumn id="34" name="RowIdentifierName" lineageId="34" length="255" dataType="wstr" /><outputColumn id="35" name="RowIdentifierId" lineageId="35" length="255" dataType="wstr" /><outputColumn id="36" name="ErrorColumnName" lineageId="36" length="255" dataType="wstr" /><outputColumn id="37" name="ErrorColumnValue" lineageId="37" length="255" dataType="wstr" /><outputColumn id="38" name="ErrorMessage" lineageId="38" length="255" dataType="wstr" /></outputColumns><externalMetadataColumns /></output></outputs></component>