<component id="2" name="Conversion" componentClassID="Microsoft.ManagedComponentHost" description="Executes a custom script." localeId="1033" version="9" 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="3" name="SourceCode" state="cdata" dataType="System.String" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="15"><arrayElement dataType="System.String"><![CDATA[ScriptMain.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' COZYROC SQL Server Integration Services user script component
'
' 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.

Imports System
Imports System.ComponentModel
Imports System.Collections
Imports System.Globalization

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


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<SortProperties(New String() {"Columns", "Type", "Length", "Precision", "Scale", "CodePage"})> _
<ValidateProperties("Validate")> _
<FilterProperties("GetProperties")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    Private Const ColumnSeparator As String = "," + vbLf


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Dim colsCount As Integer = m_inputIdx.Length

        Call Me.OutputBuffer.AddRow()

        For colIndex As Integer = 0 To colsCount - 1
            Dim inIndex As Integer = m_inputIdx(colIndex)
            Dim outIndex As Integer = m_outputIdx(colIndex)

            If Row.Buffer.IsNull(inIndex) Then
                Continue For
            End If

            ' Get input value.
            Dim inValue As Object = Row.Buffer(inIndex)
            If TypeOf inValue Is BlobColumn Then
                ' Translate into more useful object.
                Dim blob As BlobColumn = CType(inValue, BlobColumn)
                Select Case blob.ColumnInfo.DataType
                    Case DataType.DT_TEXT, DataType.DT_NTEXT
                        inValue = Row.Buffer.GetString(inIndex)
                    Case Else
                        inValue = blob.GetBlobData(0, CInt(blob.Length))
                End Select
            End If

            ' Set output value.
            Dim outValue As Object = inValue
            Select Case m_outputType(colIndex)
                Case DataType.DT_DATE, DataType.DT_FILETIME, DataType.DT_DBDATE, DataType.DT_DBTIMESTAMP
                    outValue = Convert.ToDateTime(outValue)

                Case DataType.DT_GUID
                    outValue = New Guid(outValue.ToString())

                Case DataType.DT_STR, DataType.DT_WSTR, DataType.DT_TEXT, DataType.DT_NTEXT
                    If TypeOf outValue Is Byte() Then
                        ' Encode as base64 value.
                        outValue = Convert.ToBase64String(CType(outValue, Byte()))
                    Else
                        outValue = outValue.ToString()
                    End If

                Case DataType.DT_IMAGE
                    If TypeOf outValue Is String Then
                        ' Assume input is base64 value.
                        outValue = Convert.FromBase64String(CStr(outValue))
                    End If
            End Select

            Me.OutputBuffer.Buffer(outIndex) = outValue
        Next
    End Sub ' Input_ProcessInputRow


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub PreExecute()
        Call MyBase.PreExecute()

        Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)

        ' Setup dynamic input columns indexes.
        Dim colsCount As Integer = input.InputColumnCollection.Count
        m_inputIdx = New Integer(colsCount - 1) {}
        m_outputIdx = New Integer(colsCount - 1) {}
        m_outputType = New DataType(colsCount - 1) {}
        For colIndex As Integer = 0 To colsCount - 1
            Dim inColumn As IDTSInputColumn100 = input.InputColumnCollection(colIndex)

            m_inputIdx(colIndex) = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                input.Buffer, _
                inColumn.LineageID)

            Dim outColumn As IDTSOutputColumn100 = output.OutputColumnCollection(inColumn.Name)

            Try
                m_outputIdx(colIndex) = -1
                m_outputIdx(colIndex) = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                    output.Buffer, _
                    outColumn.LineageID)
            Catch ex As Exception
                ' Under SQL 2008 if column is not used in the pipeline,
                ' it doesn't exist in the buffer.
            End Try

            m_outputType(colIndex) = outColumn.DataType
        Next
    End Sub ' PreExecute


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Function Validate(ByRef errMessage As String) As Boolean
        Dim result As Boolean

        Try
            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)

            If input.InputColumnCollection.Count = 0 OrElse Me.Columns <> m_prevCols Then
                Dim selectedCols() As String = CStr(Me.Columns).Split( _
                    New String() {ColumnSeparator}, _
                    StringSplitOptions.RemoveEmptyEntries)

                ' Remove output columns, which are no longer in use.
                Dim colsCount As Integer = output.OutputColumnCollection.Count
                For colIndex As Integer = colsCount - 1 To 0 Step -1
                    Dim outColumn As IDTSOutputColumn100 = output.OutputColumnCollection(colIndex)
                    If Not IsFound_(selectedCols, outColumn.Name) Then
                        Call output.OutputColumnCollection.RemoveObjectByID(outColumn.ID)
                    End If
                Next

                ' Setup input columns based on selection.
                Call input.InputColumnCollection.RemoveAll()

                Dim virtInput As IDTSVirtualInput100 = input.GetVirtualInput()

                For Each col As String In selectedCols
                    Dim virtColumn As IDTSVirtualInputColumn100 = virtInput.VirtualInputColumnCollection(col)
                    Call virtInput.SetUsageType(virtColumn.LineageID, DTSUsageType.UT_READONLY)

                    Dim outColumn As IDTSOutputColumn100
                    Try
                        outColumn = output.OutputColumnCollection(col)
                    Catch ex As Exception
                        ' New column.
                        outColumn = output.OutputColumnCollection.[New]()
                        outColumn.Name = col
                    End Try
                Next
            End If

            Dim codePage As Integer = 0
            If m_culture <> 0 Then
                Dim ci As CultureInfo = New CultureInfo(m_culture)
                codePage = ci.TextInfo.ANSICodePage
            End If

            ' Update output columns with specified type.
            For Each outColumn As IDTSOutputColumn100 In output.OutputColumnCollection
                Call outColumn.SetDataTypeProperties( _
                    Me.Type, _
                    Me.Length, _
                    Me.Precision, _
                    Me.Scale, _
                    codePage)
            Next

            result = True
        Catch ex As Exception
            result = False
            errMessage = ex.ToString()
        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

        ' Setup static.
        Call result.Add("Columns")
        Call result.Add("Type")

        ' Setup dynamic.
        Select Case Me.Type
            Case DataType.DT_DECIMAL
                Call result.Add("Scale")

            Case DataType.DT_STR
                Call result.Add("Length")
                Call result.Add("CodePage")

            Case DataType.DT_WSTR
                Call result.Add("Length")

            Case DataType.DT_NUMERIC
                Call result.Add("Precision")
                Call result.Add("Scale")

            Case DataType.DT_TEXT
                Call result.Add("CodePage")
        End Select

        Return CType(result.ToArray(GetType(String)), String())
    End Function    ' GetProperties


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Function GetCultures() As Object()
        Dim result As New ArrayList()
        Dim cultures() As CultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures)

        For Each ci As CultureInfo In cultures
            Call result.Add(ci.DisplayName)
        Next

        GetCultures = result.ToArray()
    End Function    ' GetCultures


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Input")> _
    <Description("Select input columns you want to process.")> _
    <InputVirtualColumn("", False)> _
    Public Property Columns() As String
        Get
            Columns = m_inputCols
        End Get
        Set(ByVal value As String)
            Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
            If input.IsAttached Then
                If String.IsNullOrEmpty(value) Then
                    ' Setup based on input columns collection.
                    value = GetInputCols_()
                End If
            Else
                ' Reset when no input is attached.
                value = String.Empty
            End If

            If String.IsNullOrEmpty(m_prevCols) Then
                m_prevCols = value
            End If

            m_inputCols = value
        End Set
    End Property    ' Columns


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Convert To")> _
    <Description("Select type to convert to.")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Type() As DataType
        Get
            Type = m_type
        End Get
        Set(ByVal value As DataType)
            If m_type <> value Then
                m_type = value

                m_length = 0
                m_precision = 0
                m_scale = 0
                m_culture = 0
            End If
        End Set
    End Property    ' Type


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Convert To")> _
    <Description("Specify string length.")> _
    Public Property Length() As Integer
        Get
            Length = m_length
        End Get
        Set(ByVal value As Integer)
            m_length = value
        End Set
    End Property    ' Length


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Convert To")> _
    <Description("Specify number precision.")> _
    Public Property Precision() As Integer
        Get
            Precision = m_precision
        End Get
        Set(ByVal value As Integer)
            m_precision = value
        End Set
    End Property    ' Precision


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Convert To")> _
    <Description("Specify number scale.")> _
    Public Property Scale() As Integer
        Get
            Scale = m_scale
        End Get
        Set(ByVal value As Integer)
            m_scale = value
        End Set
    End Property    ' Scale


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Convert To")> _
    <Description("Specify string code page.")> _
    <List("GetCultures")> _
    Public Property CodePage() As String
        Get
            Dim result As String = String.Empty

            If m_culture <> 0 Then
                result = New CultureInfo(m_culture).DisplayName
            End If

            CodePage = result
        End Get
        Set(ByVal value As String)
            m_culture = FindCultureByDisplay_(value)
        End Set
    End Property    ' CodePage
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetInputCols_() As String
        Dim result As String = String.Empty

        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
        For Each column As IDTSInputColumn100 In input.InputColumnCollection
            If Not String.IsNullOrEmpty(result) Then
                result += ColumnSeparator
            End If

            result += column.Name
        Next

        GetInputCols_ = result
    End Function    ' GetInputCols_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function IsFound_(ByVal list() As String, ByVal search As String) As Boolean
        Dim result As Boolean = False

        For Each item As String In list
            If item.Equals(search, StringComparison.OrdinalIgnoreCase) Then
                ' Found.
                result = True
                Exit For
            End If
        Next

        IsFound_ = result
    End Function    ' IsFound_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function FindCultureByDisplay_(ByVal display As String) As Integer
        Dim result As Integer = 0
        Dim cultures() As CultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures)

        For Each ci As CultureInfo In cultures
            If ci.DisplayName = display Then
                ' Found.
                result = ci.LCID
                Exit For
            End If
        Next

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


#Region "Attributes"
    Private m_inputCols As String = String.Empty
    Private m_prevCols As String = String.Empty
    Private m_type As DataType = DataType.DT_BYREF_I4
    Private m_length As Integer = 50
    Private m_precision As Integer
    Private m_scale As Integer
    Private m_culture As Integer
    Private m_inputIdx() As Integer
    Private m_outputIdx() As Integer
    Private m_outputType() As DataType
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ScriptComponent_15af3c8df42f4b1f99e630053b223fe4.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">
  <PropertyGroup>
    <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{E54A3F34-1045-4B4C-B678-D37E38888C41}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_15af3c8df42f4b1f99e630053b223fe4</RootNamespace>
    <AssemblyName>ScriptComponent_15af3c8df42f4b1f99e630053b223fe4</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <OptionCompare>Binary</OptionCompare>
    <OptionExplicit>On</OptionExplicit>
    <OptionStrict>On</OptionStrict>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Debug\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>.\bin\Release\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.SSISPlus.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\CozyRoc.SSISPlus.2014.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=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="System">
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Data">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.SqlServer.ManagedDTS">
      <Private>False</Private>
    </Reference>
  </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>
  <ItemGroup>
    <AppDesigner Include="My Project\" />
  </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="" />
        <Host Name="SSIS_SC120" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC120</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <ItemGroup>
    <Compile Include="ScriptMain.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="My Project\" />
  </ItemGroup>
</Project>]]></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 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 [b]() As String
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [b_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 [c]() As String
        Set
            Me(1) = Value
        End Set
    End Property
    Public WriteOnly Property [c_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 Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {"b", "c"}
        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[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 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

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[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:CodeName>ScriptComponent_15af3c8df42f4b1f99e630053b223fe4</msb:CodeName>
		<msb:DisplayName>ScriptComponent_15af3c8df42f4b1f99e630053b223fe4</msb:DisplayName>
		<msb:ProjectId>{E0B17F4F-1BF7-4BE9-A21B-64BF94AA2E99}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="ScriptComponent_15af3c8df42f4b1f99e630053b223fe4.vbproj"/>
		<msb:Folder Include="My Project\"/>
		<msb:File Include="ScriptMain.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement></arrayElements></property><property id="4" 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_15af3c8df42f4b1f99e630053b223fe4.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
CgwCKCgAAApvKQAAChaMKgAAAW8qAAAKCwdvQAAACm9vAAAKEwQrLhEEb2IAAAp0JwAAAQ0IKG4A
AAotDAhywAAAcChwAAAKDAgJb0kAAAoocAAACgwRBG9kAAAKLcneFhEEdToAAAEsDBEEdToAAAFv
ZQAACtwICgYqAAEQAAACAB0ASGUAFgAAAAATMAMAKwAAACEAABEWCwMTBBYNKxcRBAmaDAgEG29x
AAAKLAQXCysLCRfWDQkRBI63MuIHCgYqABMwAwBCAAAAIgAAERYMHShqAAAKCgYTBRYTBCslEQUR
BJoNCW9rAAAKAxYoUAAAChYzCQlvcgAACgwrDhEEF9YTBBEEEQWOtzLTCAsHKgAAQlNKQgEAAQAA
AAAADAAAAHY0LjAuMzAzMTkAAAAABQBsAAAAgA4AACN+AADsDgAA+BAAACNTdHJpbmdzAAAAAOQf
AAAgAQAAI1VTAAQhAAAQAAAAI0dVSUQAAAAUIQAAaAYAACNCbG9iAAAAAAAAAAIAAAFXHaIJCQ4A
AAD6JTMAFgAAAQAAAEsAAAAMAAAAFgAAAD4AAAAoAAAAfgAAAAEAAABAAAAAIgAAAAUAAAATAAAA
GQAAAAsAAAABAAAACAAAAAIAAAADAAAAAgAAAAAAwBABAAAAAAAKAEwBIgEKAIABYgEGAJABiQEK
AOgBIgEGAGYCiQEKAOgCvgIOADoDIwMSAIkDaAMWALoDaAMSAMkDaAMOAMUEIwMaAFIGKgYeALUH
nwceAM4HnwceAPsH4wcGACUIEggKAGQIPQgKAHwIEwAeALEIlAgGAOYIxggGAAQJiQEGACgJiQEK
AEEJEwAGAI8JcAkGAKMJiQESAKoJaAMGALcJiQEGAN4JiQEiAEUKHAoiAHQKHAoiAJ8KHAoWAN4K
aAMWAOkKaAMGAPYKiQEGADILiQEGADoLiQEKAF0LPQgiAHoLHAoiAIgLHAoiAJsLHAoGAK8LiQEG
ALkLiQEiAL8LHAoiAOwLHAoWAC0MaAMiAFEMHAoiAJwMHAoKAN4MPQgiABkNHAoiAC0NHAoGAFwN
Rw0GAHsNaA0KAIcNPQgGAJ8NiQEiAOMNHAoiACgOHAoGAE8ORw0GAK8OiQEGAMMOaA0GANEOiQEG
AN8ORw0GACAPiQESADoPaAMOAIMPYQ8OAJ0PYQ8OALkPYQ8eANEPnwceAOYPnwceAPgPnwceABMQ
nwcOACUQYQ8OAEEQYQ8GAE8QxggGAG8QxggGAKcQjRAAAAAAAQAAAAAAAQABAAAAAAApADcABQAB
AAEAAAAAAGsANwAJAAEAAgAAARAAdgA3AA0AAQADAAUBAACAAAAADQAFAAgABQEAAI4AAAANAAUA
DwABAAAAqQC1AB0ABgARAAEAAADmALUAHQAGABYAAQAAAPMAtQAtAAYAIAABAAAAAQG1AA0ACgAo
AAEAAAANAbUADQALACkAAQAAABcBtQAkAAwAKgAxAKsBIAAxANQBLQAxAPYBOgAxABsCRwAhAPcC
kAAGAAEB2wAGAA0B3wAGAOYA4wABANkE5wABAJAFBgEBAJAFBgFRgKAFEAEBAA4HEAEBABoHEAEB
ACUHPwEBACwH5wABADUH5wABAEEH5wABAEkH5wABAFMHQwEBAF4HQwEBAGoHRwFQIAAAAAAGGFwB
EwABAFggAAAAAAYYXAETAAEAYCAAAAAAERiXARcAAQCMIAAAAAATCJ4BGwABAKQgAAAAABMIxAEo
AAEAvCAAAAAAEwjtATUAAQDUIAAAAAATCAsCQgABAOwgAAAAAEYCUQJjAAEACCEAAAAARgJaAmgA
AgAcIQAAAACDAGsCbAACADQhAAAAAEYCcwJxAAIASCEAAAAAEQB8AngAAgBkIQAAAAABAJoCgAAD
AIAhAAAAAAYYXAETAAQAiCEAAAAAAwiuAosABAC8IQAAAAAGGFwBEwAEANAhAAAAAAYYXAGvAAQA
4CEAAAAARgoDBLsACQD0IQAAAABGChoEuwAJAAgiAAAAAIYAMgTAAAkAICIAAAAAhgA6BMAACQA4
IgAAAAAGGFwBrwAJAEgiAAAAAEYKAwS7AA4AXCIAAAAABghtBMkADgBoIgAAAAAGCHkEzgAPAIQi
AAAAAAYIhgTJABAAkCIAAAAABgiMBM4AEQCsIgAAAABGChoEuwASANQiAAAAAIYAmQQTABIA3CIA
AAAAhgCgBBMAEgDkIgAAAACGADoEwAASAPwiAAAAAAYYXAETABIAJCMAAAAARgLoBOoAEgCMIwAA
AABGAwcFEwAWAJAjAAAAAAEAFQUTABYArCMAAAAARgIpBfQAFgD4IwAAAABGA08FEwAaAPwjAAAA
AEYDYwUAARoAECQAAAAARgN2BQABGwAUJAAAAAAGGFwBCgEcACQkAAAAAAYYXAEKAR0ANCQAAAAA
BhhcARMAHgBoJAAAAABGAnYFAAEeABgmAAAAAEYCsAUTAB8AWCcAAAAABgC7BRgBHwCwKQAAAAAG
AM8FuwAgAHgqAAAAAAYA3QUeASAAxCoAAAAABgjpBXEAIADcKgAAAAAGCPUFyQAgADwrAAAAAAYI
WwYjASEAVCsAAAAABghkBigBIQCEKwAAAAAGCG0GaAAiAJwrAAAAAAYIeAYuASIAqCsAAAAABgiD
BmgAIwDAKwAAAAAGCJEGLgEjAMwrAAAAAAYInwZoACQA5CsAAAAABgipBi4BJADwKwAAAAAGCLMG
cQAlACAsAAAAAAYIwAbJACUAMCwAAAAAAQDNBnEAJgDMLAAAAAABANsGMwEmAAQtAAAAAAEA8AY6
ASgAAAABAFgCAAABAJECAAABAJECAAABANcDAAACAOEDAAADAOoDAAAEAPIDAAAFAPkDAAABANcD
AAACAOEDAAADAOoDAAAEAPIDAAAFAPkDAAABAHMEAAABAHMEAAABAHMEAAABAHMEAAABAPUEAAAC
AP0EAAADAPIDAAAEAPkDAAABADUFAAACAD0FAAADAEcFAAAEAPkDAAABAPIDAAABAIwFAAABANcD
AAABANcDAAABAIwFAAABAMQFAAABAAEGAAABAAEGAAABAAEGAAABAAEGAAABAAEGAAABAAEGAAAB
AOQGAAACAOkGAAABAAYHCQBcARMAaQBcAVUBeQBcAWQBEQBcARMAgQBcARMAJABcARMALABcARMA
NABcARMAPABcARMAJACuAosALACuAosANACuAosAPACuAosAiQBcARMAkQBcARMAmQBcAckAoQD1
CP4BGQBRAmMAGQBaAmgAKQAWCQsCGQBzAnEAsQAyCRsCGQBcARMAuQBcASsCRAD3ApAATABcCYsA
TABmCagCTABcARMAwQBcAc4AOQBcAa8A0QAyBMAA0QA6BMAA2QBcAc4AOQDNCcICOQDWCS4B4QBc
AckA0QCZBBMA0QCgBBMAWQBcARMAQQBeCs8C6QCLCtQC8QCsCtkC+QC1CmgASQC8CsAAQQDMCt8C
yQDYChABOQD7CusCSQAGC/ACSQCsCvUCAQENC/oCCQFSBj8BSQAcCwADAQFtBgUDAQEmCwkDGQFD
CxADEQFcAckAGQFOCxoDKQFzAiADGQFpCyUDSQDNCcICQQCwBRMA6QDXC0IDWQGsCkgD+QAJDE8D
YQEjDGgAYQGsClUDWQA/DFwDaQFmDGID+QD7CmgAOQF4DGgAcQGGDGgDMQG6DG4DOQHVDHEAeQGs
CnQDMQH7CmgAQQF4DGgAgQHqDHsDgQH6DBcAQQEMDSMBqQGRDZYDyQCyDZ0DeQEjDGgAQQHVDHEA
QQG1CmgAeQG4DS4BYQHJDRMA+QDTDacDiQEHDq0DuQGsCrMDkQF4DGgAiQE1DroDeQFCDsIDQQFG
DskAmQFcAS4BmQFYDsgDyQFlDmgAeQF2Ds4DoQGEDtQDQQGQDtgDoQGmDsAA0QG7DhMASQFzAnEA
2QFcARMA2QHNDhIE2QHXDhcEmQHdBSwEmQHsDnEA2QHXDh4B+QD8DsAAyQALD0oEYQF2Ds4DyQAZ
D14EyQBRAnEEmQExD2gA+QFcARMAAQJcAckACQJcAckAEQJcAbQEGQJcAckAIQJcAckAKQJcAR8F
OQJcAWEFQQJcAckASQJcAS4BUQJcARMAWQJcAckADgAwABMBKQCDALgBLgDjA/UFLgDrA/4FLgDz
Ax0GQAArAIMBQAATAFsBQwAbAGoBQwATAFsBSQCDANYBYwAbAGoBYwATAFsBaQCDAMkBgAArAIMB
gwAbAGoBgwBzAIMBgwB7AIMBiQCDAOoBoAArAIMBowDDADMCowATAFsBwAArAIMBwwDrALcCwwAT
AFsB4AArAIMB4wALAbcCAAETAFsBAAErAIMBAwELAbcCIAETAFsBIAErAIMBIwELAbcCQAETAFsB
QAErAIMBYAETAFsBYAErAIMBgAErAIMBgwGbA4MBgwGzA7oEgwGrA6YEgwELAbcCgwGjA5MEoAEr
AIMBwAErAIMBwAETAFsByQHTA2cFyQG7A24FyQHDA50F4AErAIMB6QHDAw8F6QHLA1sB6QG7AyYF
AAIrAIMBAAITAFsBCQK7A9kFCQLDAw8FKQK7A/AEKQLDAw8FSQK7A0YFSQLDAw8FaQLbA6kFaQK7
A7oFaQLDAw8FAAULAbcCIAULAbcCpAGpAa4BswEDAgcCEgIXAiYCJgKuAr0CvQIDAgMCvQLIAgMC
5gIrA4ID4gMiBDYEFwJPBFQEBwIHAgcCWQRkBHkEggQEAAEABgAFAAcABgAIAAgADAAOAAAAgAFP
AAAAOQJUAAAA6AFZAAAARQJeAAAAAQOYAAAARgTEAAAAWQTEAAAARgTEAAAArwTTAAAAsQTXAAAA
ugTTAAAAvATXAAAAWQTEAAAAdwfTAAAAZgJMAQAAfwdRAQAAhgdRAQAAkAdRAQAAlgfTAAIABAAD
AAIABQAFAAIABgAHAAIABwAJAAIADwALAAIAEgANAAIAEwAPAAIAFwARAAEAGAATAAEAGQAVAAEA
GgAXAAEAGwAZAAIAHAAbAAIAMAAdAAEAMQAdAAIAMgAfAAEAMwAfAAEANQAhAAIANAAhAAIANgAj
AAEANwAjAAIAOAAlAAEAOQAlAAIAOgAnAAEAOwAnAHUAdQCIAIgBjwGWAZ0BlQKcAhcDHwQEgAAA
AAAAAAAAAAAAAAAAAAC1AAAABAAAAAAAAAAAAAAAAQAKAAAAAAAKAAAAAAAAAAAAAAAKABMAAAAA
AAEAAAAAAAAAAAAAAJ0ADQMAAAAADAAAAAAAAAAAAAAApgBLAwAAAAAMAAAAAAAAAAAAAACmAJkD
AAAAAAwAAAAAAAAAAAAAAKYABwYAAAAABAAAAAAAAAAAAAAAAQCJAQAAAAAMAAAAAAAAAAAAAACm
APgJAAAAAAUABAAGAAQAAAAQAAwAjwIAABAAGQCPAgAAAAAbAI8CLQAhAi0AowIAAAA8TW9kdWxl
PgBtc2NvcmxpYgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMATXlBcHBsaWNhdGlvbgBTY3JpcHRDb21w
b25lbnRfMTVhZjNjOGRmNDJmNGIxZjk5ZTYzMDA1M2IyMjNmZTQuTXkATXlDb21wdXRlcgBNeVBy
b2plY3QATXlXZWJTZXJ2aWNlcwBUaHJlYWRTYWZlT2JqZWN0UHJvdmlkZXJgMQBJbnB1dEJ1ZmZl
cgBTY3JpcHRDb21wb25lbnRfMTVhZjNjOGRmNDJmNGIxZjk5ZTYzMDA1M2IyMjNmZTQAT3V0cHV0
QnVmZmVyAFVzZXJDb21wb25lbnQAQ29ubmVjdGlvbnMAVmFyaWFibGVzAFNjcmlwdE1haW4ATWlj
cm9zb2Z0LlZpc3VhbEJhc2ljLkFwcGxpY2F0aW9uU2VydmljZXMAQXBwbGljYXRpb25CYXNlAC5j
dG9yAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5EZXZpY2VzAENvbXB1dGVyAFN5c3RlbQBPYmplY3QA
LmNjdG9yAGdldF9Db21wdXRlcgBtX0NvbXB1dGVyT2JqZWN0UHJvdmlkZXIAZ2V0X0FwcGxpY2F0
aW9uAG1fQXBwT2JqZWN0UHJvdmlkZXIAVXNlcgBnZXRfVXNlcgBtX1VzZXJPYmplY3RQcm92aWRl
cgBnZXRfV2ViU2VydmljZXMAbV9NeVdlYlNlcnZpY2VzT2JqZWN0UHJvdmlkZXIAQXBwbGljYXRp
b24AV2ViU2VydmljZXMARXF1YWxzAG8AR2V0SGFzaENvZGUAVHlwZQBHZXRUeXBlAFRvU3RyaW5n
AENyZWF0ZV9fSW5zdGFuY2VfXwBUAGluc3RhbmNlAERpc3Bvc2VfX0luc3RhbmNlX18AZ2V0X0dl
dEluc3RhbmNlAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5NeVNlcnZpY2VzLkludGVybmFsAENvbnRl
eHRWYWx1ZWAxAG1fQ29udGV4dABHZXRJbnN0YW5jZQBDb3p5Um9jLlNTSVNQbHVzLjIwMTQAQ296
eVJvYy5TcWxTZXJ2ZXIuU1NJUwBTY3JpcHRCdWZmZXJQbHVzAE1pY3Jvc29mdC5TcWxTZXJ2ZXIu
VHhTY3JpcHQATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUAU2NyaXB0Q29tcG9uZW50
AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuUGlwZWxpbmVIb3N0AFBpcGVsaW5lQnVmZmVyAE91dHB1dE5h
bWVNYXAAQ29tcG9uZW50AE9iamVjdElEAElzSW5wdXQAQnVmZmVyAE91dHB1dE1hcABnZXRfU3Rh
dGljSW5wdXRDb2x1bW5zAGdldF9TdGF0aWNPdXRwdXRDb2x1bW5zAE5leHRSb3cARW5kT2ZSb3dz
ZXQAU3RhdGljSW5wdXRDb2x1bW5zAFN0YXRpY091dHB1dENvbHVtbnMAc2V0X2IAVmFsdWUAc2V0
X2JfSXNOdWxsAHNldF9jAHNldF9jX0lzTnVsbABBZGRSb3cAU2V0RW5kT2ZSb3dzZXQAYgBiX0lz
TnVsbABjAGNfSXNOdWxsAFNjcmlwdENvbXBvbmVudFBsdXMASW5wdXRzRmluaXNoZWQAUHJvY2Vz
c0lucHV0AElucHV0SUQASW5wdXROYW1lAEZpbmlzaE91dHB1dHMATWFya091dHB1dHNGaW5pc2hl
ZABQcmltZU91dHB1dABPdXRwdXRzAE91dHB1dElEcwBCdWZmZXJzAENyZWF0ZU5ld091dHB1dFJv
d3MASW5wdXRfUHJvY2Vzc0lucHV0AElucHV0X1Byb2Nlc3NJbnB1dFJvdwBSb3cAUGFyZW50Q29t
cG9uZW50AENvbHVtblNlcGFyYXRvcgBQcmVFeGVjdXRlAFZhbGlkYXRlAGVyck1lc3NhZ2UAR2V0
UHJvcGVydGllcwBHZXRDdWx0dXJlcwBnZXRfQ29sdW1ucwBzZXRfQ29sdW1ucwB2YWx1ZQBNaWNy
b3NvZnQuU3FsU2VydmVyLkRUU1J1bnRpbWVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlJ1
bnRpbWUuV3JhcHBlcgBEYXRhVHlwZQBnZXRfVHlwZQBzZXRfVHlwZQBnZXRfTGVuZ3RoAHNldF9M
ZW5ndGgAZ2V0X1ByZWNpc2lvbgBzZXRfUHJlY2lzaW9uAGdldF9TY2FsZQBzZXRfU2NhbGUAZ2V0
X0NvZGVQYWdlAHNldF9Db2RlUGFnZQBHZXRJbnB1dENvbHNfAElzRm91bmRfAGxpc3QAc2VhcmNo
AEZpbmRDdWx0dXJlQnlEaXNwbGF5XwBkaXNwbGF5AG1faW5wdXRDb2xzAG1fcHJldkNvbHMAbV90
eXBlAG1fbGVuZ3RoAG1fcHJlY2lzaW9uAG1fc2NhbGUAbV9jdWx0dXJlAG1faW5wdXRJZHgAbV9v
dXRwdXRJZHgAbV9vdXRwdXRUeXBlAENvbHVtbnMATGVuZ3RoAFByZWNpc2lvbgBTY2FsZQBDb2Rl
UGFnZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwARWRpdG9yQnJvd3NhYmxlQXR0cmlidXRlAEVkaXRv
ckJyb3dzYWJsZVN0YXRlAFN5c3RlbS5Db2RlRG9tLkNvbXBpbGVyAEdlbmVyYXRlZENvZGVBdHRy
aWJ1dGUAU3lzdGVtLkRpYWdub3N0aWNzAERlYnVnZ2VySGlkZGVuQXR0cmlidXRlAE1pY3Jvc29m
dC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN0YW5kYXJkTW9kdWxlQXR0cmlidXRlAEhp
ZGVNb2R1bGVOYW1lQXR0cmlidXRlAFN5c3RlbS5Db21wb25lbnRNb2RlbC5EZXNpZ24ASGVscEtl
eXdvcmRBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcwBSdW50aW1lSGVs
cGVycwBHZXRPYmplY3RWYWx1ZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRUeXBlRnJvbUhhbmRsZQBB
Y3RpdmF0b3IAQ3JlYXRlSW5zdGFuY2UATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1dGUAZ2V0X1Zh
bHVlAHNldF9WYWx1ZQBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMAQ29tVmlzaWJsZUF0
dHJpYnV0ZQBTdHJpbmcAU2NyaXB0QnVmZmVyAENMU0NvbXBsaWFudEF0dHJpYnV0ZQBzZXRfSXRl
bQBTZXROdWxsAEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24ATWljcm9zb2Z0LlNxbFNlcnZlci5E
VFNQaXBlbGluZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUuV3JhcHBlcgBJ
RFRTQ29tcG9uZW50TWV0YURhdGExMDAAZ2V0X0NvbXBvbmVudE1ldGFEYXRhAElEVFNJbnB1dENv
bGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29sbGVjdGlvbgBJRFRTSW5wdXQxMDAAZ2V0X0l0ZW0AZ2V0
X0lEAGdldF9FbmRPZlJvd3NldABHZXRPdXRwdXRJRABFbXB0eQBCbG9iQ29sdW1uAEJ1ZmZlckNv
bHVtbgBHdWlkAGdldF9CdWZmZXIASXNOdWxsAGdldF9Db2x1bW5JbmZvAEdldFN0cmluZwBHZXRC
bG9iRGF0YQBDb252ZXJ0AERhdGVUaW1lAFRvRGF0ZVRpbWUAVG9CYXNlNjRTdHJpbmcAQ29udmVy
c2lvbnMARnJvbUJhc2U2NFN0cmluZwBJRFRTT3V0cHV0MTAwAElEVFNJbnB1dENvbHVtbjEwMABJ
RFRTT3V0cHV0Q29sdW1uMTAwAEV4Y2VwdGlvbgBJbnQzMgBJRFRTT3V0cHV0Q29sbGVjdGlvbjEw
MABnZXRfT3V0cHV0Q29sbGVjdGlvbgBJRFRTSW5wdXRDb2x1bW5Db2xsZWN0aW9uMTAwAGdldF9J
bnB1dENvbHVtbkNvbGxlY3Rpb24AZ2V0X0NvdW50AFBpcGVsaW5lQ29tcG9uZW50AGdldF9Ib3N0
Q29tcG9uZW50AElEVFNCdWZmZXJNYW5hZ2VyMTAwAGdldF9CdWZmZXJNYW5hZ2VyAGdldF9MaW5l
YWdlSUQARmluZENvbHVtbkJ5TGluZWFnZUlEAElEVFNPdXRwdXRDb2x1bW5Db2xsZWN0aW9uMTAw
AGdldF9PdXRwdXRDb2x1bW5Db2xsZWN0aW9uAGdldF9OYW1lAFByb2plY3REYXRhAFNldFByb2pl
Y3RFcnJvcgBDbGVhclByb2plY3RFcnJvcgBnZXRfRGF0YVR5cGUASURUU1ZpcnR1YWxJbnB1dDEw
MABJRFRTVmlydHVhbElucHV0Q29sdW1uMTAwAFN5c3RlbS5HbG9iYWxpemF0aW9uAEN1bHR1cmVJ
bmZvAFN5c3RlbS5Db2xsZWN0aW9ucwBJRW51bWVyYXRvcgBPcGVyYXRvcnMAQ29tcGFyZVN0cmlu
ZwBTdHJpbmdTcGxpdE9wdGlvbnMAU3BsaXQAUmVtb3ZlT2JqZWN0QnlJRABSZW1vdmVBbGwAR2V0
VmlydHVhbElucHV0AElEVFNWaXJ0dWFsSW5wdXRDb2x1bW5Db2xsZWN0aW9uMTAwAGdldF9WaXJ0
dWFsSW5wdXRDb2x1bW5Db2xsZWN0aW9uAERUU1VzYWdlVHlwZQBTZXRVc2FnZVR5cGUATmV3AHNl
dF9OYW1lAFRleHRJbmZvAGdldF9UZXh0SW5mbwBnZXRfQU5TSUNvZGVQYWdlAEdldEVudW1lcmF0
b3IAZ2V0X0N1cnJlbnQAU2V0RGF0YVR5cGVQcm9wZXJ0aWVzAE1vdmVOZXh0AElEaXNwb3NhYmxl
AERpc3Bvc2UAQXJyYXlMaXN0AEFkZABBcnJheQBUb0FycmF5AEN1bHR1cmVUeXBlcwBnZXRfRGlz
cGxheU5hbWUAZ2V0X0lzQXR0YWNoZWQASXNOdWxsT3JFbXB0eQBDb25jYXQAU3RyaW5nQ29tcGFy
aXNvbgBnZXRfTENJRABTU0lTU2NyaXB0Q29tcG9uZW50RW50cnlQb2ludEF0dHJpYnV0ZQBDb3p5
Um9jLlNxbFNlcnZlci5TU0lTLkF0dHJpYnV0ZXMARmlsdGVyUHJvcGVydGllc0F0dHJpYnV0ZQBW
YWxpZGF0ZVByb3BlcnRpZXNBdHRyaWJ1dGUAU29ydFByb3BlcnRpZXNBdHRyaWJ1dGUARGVzY3Jp
cHRpb25BdHRyaWJ1dGUAQ2F0ZWdvcnlBdHRyaWJ1dGUAUmVmcmVzaFByb3BlcnRpZXNBdHRyaWJ1
dGUAUmVmcmVzaFByb3BlcnRpZXMASW5wdXRWaXJ0dWFsQ29sdW1uQXR0cmlidXRlAExpc3RBdHRy
aWJ1dGUAQ29tcGlsYXRpb25SZWxheGF0aW9uc0F0dHJpYnV0ZQBSdW50aW1lQ29tcGF0aWJpbGl0
eUF0dHJpYnV0ZQBTeXN0ZW0uUnVudGltZS5WZXJzaW9uaW5nAFRhcmdldEZyYW1ld29ya0F0dHJp
YnV0ZQBTY3JpcHRDb21wb25lbnRfMTVhZjNjOGRmNDJmNGIxZjk5ZTYzMDA1M2IyMjNmZTQuZGxs
AAAAAACAm0kAcwBOAHUAbABsACAAcAByAG8AcABlAHIAdAB5ACAAYwBhAG4AbgBvAHQAIABiAGUA
IABzAGUAdAAgAHQAbwAgAEYAYQBsAHMAZQAuACAAQQBzAHMAaQBnAG4AIABhACAAdgBhAGwAdQBl
ACAAdABvACAAdABoAGUAIABjAG8AbAB1AG0AbgAgAGkAbgBzAHQAZQBhAGQALgAAA2IAAANjAAAL
SQBuAHAAdQB0AAANTwB1AHQAcAB1AHQAAAUsAAoAAA9DAG8AbAB1AG0AbgBzAAAJVAB5AHAAZQAA
C1MAYwBhAGwAZQAADUwAZQBuAGcAdABoAAARQwBvAGQAZQBQAGEAZwBlAAATUAByAGUAYwBpAHMA
aQBvAG4AANHZkpO8nBxKvTWyT5F4AO8ACLd6XFYZNOCJCLA/X38R1Qo6AyAAAQMAAAEEAAASDAcG
FRIYARIMBAAAEggHBhUSGAESCAQAABIRBwYVEhgBEhEEAAASFAcGFRIYARIUBAgAEgwECAASCAQI
ABIRBAgAEhQEIAECHAMgAAgEIAASFQMgAA4CHgAHEAEBHgAeAAcwAQEBEB4AAhMABCAAEwAHBhUS
GQETAAQoABMACBbPSQu4DDTqCImEXc2AgMyRCyAFARIhCAISJRIpBCAAHQ4DIAACBCgAHQ4EIAEB
DgQgAQECAygADgMoAAIDBhIoAwYSLAMGEiACBggJIAQBCA4SJRIpCyAEAQgdCB0SJRIpBSABARIc
AwYSIQUgAQESIQIGDgQsAAoABSABAhAOBCAAHRwEIAARMQUgAQERMQQgAQEIBiACAh0ODgQgAQgO
AwYRMQMGHQgEBh0RMQQoABExAygACAUgAQEROQgBAAEAAAAAAAUgAgEODhgBAApNeVRlbXBsYXRl
CDEwLjAuMC4wAAAEAQAAAAYVEhgBEgwGFRIYARIIBhUSGAESEQYVEhgBEhQEBwESDAQHARIIBAcB
EhEEBwESFBABAAtNeS5Db21wdXRlcgAADAEAB015LlVzZXIAABMBAA5NeS5BcHBsaWNhdGlvbgAA
EwEADk15LldlYlNlcnZpY2VzAAAEAAEcHAMHAQIDBwEIBgABEhURVQQHARIVAwcBDgUQAQAeAAQK
AR4ABAcBHgAHIAQBDg4ODmEBADRTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scy5Tb2FwSHR0
cENsaWVudFByb3RvY29sEkNyZWF0ZV9fSW5zdGFuY2VfXxNEaXNwb3NlX19JbnN0YW5jZV9fAAAA
BhUSGAETAAYVEhkBEwAECgETAAUgAQETAAgHAxMAEwATAAUBAAAAAAQHAR0OBSACAQgcBgcCHQ4d
DgQgABJ1BCAAEnkFIAESfRwGAAIIEikOBAcCCAgEIAASJQQgAQIIBCABHAgFIAARgIUEIAEOCAMg
AAkGIAIdBQgIBgABEYCRHAIdBQUAAQ4dBQQAAQ4cBQABHQUOFgcMCAgIHAgcEoCBCBGAhRExETER
gIkFIAASgK0GIAESgJkcBSAAEoCxBiABEoCdHAUgABKAtQUgABKAuQUgAggICAUgABKAvQYgARKA
oRwGAAEBEoClEwcICBJ9EoCZCBKAnRKAoRKApQgGAAMIDg4CCSACHQ4dDhGA2QUgABKAxQUgABKA
3QYgARKAyRwHIAIICBGA4QUgABKAoQUgABKA5QUgABKA0QMgABwJIAUBETEICAgILwcVAgIIEn0S
gJkIHQ4SgMUIEoChDhKAoRKAyRKApRKAzRKAoRKApR0OCB0OEoDRBCABCBwHIAESgPESFQIdDgkH
Ax0OEoDtETEJAAEdEoDNEYD1EwcGHRKAzR0cEoDtEoDNCB0SgM0EAAECDgQHARJ9BAcBETEEBwIO
DgUAAg4ODgwHBQ4SfQ4SgJ0SgNEHIAICDhGA+QgHBQICDggdDhAHBh0SgM0ICBKAzQgdEoDNEgEA
DUdldFByb3BlcnRpZXMAAA0BAAhWYWxpZGF0ZQAABSABAR0ONQEABgAAAAdDb2x1bW5zBFR5cGUG
TGVuZ3RoCVByZWNpc2lvbgVTY2FsZQhDb2RlUGFnZQAAHgEAGVNwZWNpZnkgbnVtYmVyIHByZWNp
c2lvbi4AAA8BAApDb252ZXJ0IFRvAAAGIAEBEYEZHwEAGlNlbGVjdCB0eXBlIHRvIGNvbnZlcnQg
dG8uAAAaAQAVU3BlY2lmeSBudW1iZXIgc2NhbGUuAAAFIAIBDgIGAQAAAAAALgEAKVNlbGVjdCBp
bnB1dCBjb2x1bW5zIHlvdSB3YW50IHRvIHByb2Nlc3MuAAALAQAGCUlucHV0AAAQAQALR2V0Q3Vs
dHVyZXMAAB4BABlTcGVjaWZ5IHN0cmluZyBjb2RlIHBhZ2UuAAAbAQAWU3BlY2lmeSBzdHJpbmcg
bGVuZ3RoLgAACAEACAAAAAAAHgEAAQBUAhZXcmFwTm9uRXhjZXB0aW9uVGhyb3dzAUcBABouTkVU
RnJhbWV3b3JrLFZlcnNpb249djQuMAEAVA4URnJhbWV3b3JrRGlzcGxheU5hbWUQLk5FVCBGcmFt
ZXdvcmsgNAAAAPhUAAAAAAAAAAAAAA5VAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAA
AAAAX0NvckRsbE1haW4AbXNjb3JlZS5kbGwAAAAAAP8lACAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgAAIAAAAAA
AAAAAAAAAAAAAAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYYAAA7AIAAAAAAAAA
AAAA7AI0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEAAAAAAAAA
AAAAAAAAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBGAGkAbABl
AEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBEwCAAABAFMA
dAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAACgCAAABADAAMAAwADAAMAA0AGIAMAAAACwAAgAB
AEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAAAgAAAAMAAIAAEARgBpAGwAZQBWAGUA
cgBzAGkAbwBuAAAAAAAwAC4AMAAuADAALgAwAAAAjAA1AAEASQBuAHQAZQByAG4AYQBsAE4AYQBt
AGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADEANQBhAGYAMwBjADgAZABmADQA
MgBmADQAYgAxAGYAOQA5AGUANgAzADAAMAA1ADMAYgAyADIAMwBmAGUANAAuAGQAbABsAAAAAAAo
AAIAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAAAgAAAAlAA1AAEATwByAGkAZwBpAG4A
YQBsAEYAaQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AMQA1
AGEAZgAzAGMAOABkAGYANAAyAGYANABiADEAZgA5ADkAZQA2ADMAMAAwADUAMwBiADIAMgAzAGYA
ZQA0AC4AZABsAGwAAAAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADAALgAw
AC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMAAuADAA
LgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAwAAAAgNQAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=]]></arrayElement></arrayElements></property><property id="9" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property><property id="11" 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_15af3c8df42f4b1f99e630053b223fe4</property><property id="12" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property></properties><inputs><input id="14" name="Input" hasSideEffects="true"></input></inputs><outputs><output id="17" name="Output" hasSideEffects="true"><outputColumns><outputColumn id="18" name="b" lineageId="18" dataType="i4" /><outputColumn id="19" name="c" lineageId="19" dataType="i4" /></outputColumns><externalMetadataColumns /></output></outputs></component>