<component id="2" name="Profiler Trace Source" 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-2009 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.Data
Imports System.Reflection
Imports System.Diagnostics
Imports System.Collections

Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports Microsoft.SqlServer.Management.Common
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Trace
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<SortProperties(New String() {"Source", "File", "Server", "Database", "Table", "Profile"})> _
<FilterProperties("GetProperties")> _
<ValidateProperties("ValidateUI")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    Public Enum TraceTypes
        File
        Table
        Server
    End Enum    ' TraceTypes


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub CreateNewOutputRows()
        Dim colsCount As Integer = m_bufIdx.Length

        Do While m_traceReader.Read()
            Call Me.OutputBuffer.AddRow()

            For colIndex As Integer = 0 To colsCount - 1
                Dim bufIndex As Integer = m_bufIdx(colIndex)
                Dim value As Object = m_traceReader(m_readerIdx(colIndex))

                If value Is Nothing Then
                    Call Me.OutputBuffer.Buffer.SetNull(bufIndex)
                Else
                    Me.OutputBuffer.Buffer(bufIndex) = value
                End If
            Next
        Loop

        Call Me.OutputBuffer.SetEndOfRowset()
    End Sub ' CreateNewOutputRows


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

        m_traceReader = GetTraceReader_()

        ' Initialize column indexes.
        Dim schemaTable As DataTable = m_traceReader.GetSchemaTable()
        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
        Dim colsCount As Integer = output.OutputColumnCollection.Count
        m_bufIdx = New Integer(colsCount - 1) {}
        m_readerIdx = New Integer(colsCount - 1) {}
        For colIndex As Integer = 0 To colsCount - 1
            Dim column As IDTSOutputColumn100 = output.OutputColumnCollection(colIndex)

            ' Setup buffer index.
            m_bufIdx(colIndex) = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                output.Buffer, _
                column.LineageID)

            ' Setup reader index.
            Dim columnIndex As Integer = FindColumn_(schemaTable.Rows, column.Name)
            m_readerIdx(colIndex) = columnIndex
        Next

        Call schemaTable.Dispose()
    End Sub ' PreExecute


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

        If Not m_traceReader Is Nothing Then
            Call m_traceReader.Close()
            m_traceReader = Nothing
        End If
    End Sub ' PostExecute


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

        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
        Call output.OutputColumnCollection.RemoveAll()

        ' Load columns from schema.
        Dim traceReader As IDataReader = GetTraceReader_()
        Try
            Dim schemaTable As DataTable = traceReader.GetSchemaTable()
            Dim colsCount As Integer = schemaTable.Rows.Count
            For colIndex As Integer = 0 To colsCount - 1
                Dim columnRow As DataRow = schemaTable.Rows(colIndex)

                Dim columnName As String = CStr(columnRow("ColumnName"))

                ' Get column info.
                Dim dtsType As Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType = _
                    Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_EMPTY
                Dim length As Integer
                Dim precision As Integer
                Dim scale As Integer
                Dim codePage As Integer
                GetTypeFromDataRow_( _
                    columnRow, _
                    dtsType, _
                    length, _
                    precision, _
                    scale, _
                    codePage)

                ' Setup output column.
                Dim column As IDTSOutputColumn100 = output.OutputColumnCollection.New()
                column.Name = columnName
                Call column.SetDataTypeProperties(dtsType, length, precision, scale, codePage)
            Next

            Call schemaTable.Dispose()
        Finally
            If Not traceReader Is Nothing Then
                Call traceReader.Close()
            End If
        End Try
    End Sub ' ReinitializeMetaData


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of current properties based on current state.
    Public Function GetProperties() As String()
        Dim result As New ArrayList

        ' Base properties.
        Call result.Add("Source")

        Select Case Me.Source
            Case TraceTypes.File
                Call result.Add("File")

            Case TraceTypes.Table
                Call result.Add("Server")
                Call result.Add("Database")
                Call result.Add("Table")

            Case TraceTypes.Server
                Call result.Add("Server")
                Call result.Add("Profile")
        End Select

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



    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Function Validate() As DTSValidationStatus
        Dim result As DTSValidationStatus = MyBase.Validate()

        If result = DTSValidationStatus.VS_ISVALID Then
            Dim errMessage As String = String.Empty
            If Not ValidateUI(errMessage) Then
                Dim cancel As Boolean
                Call Me.ComponentMetaData.FireError(0, "Profile Trace", errMessage, String.Empty, 0, cancel)
            ElseIf Me.ComponentMetaData.OutputCollection(0).OutputColumnCollection.Count = 0 Then
                ' Have to load new metadata.
                result = DTSValidationStatus.VS_NEEDSNEWMETADATA
            End If
        End If

        Validate = result
    End Function    ' Validate


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

        Try
            ' Store connection information in the runtime connection collection, too.
            ' Cannot directly use RuntimeConnectionCollection in the property get/set
            ' because of issues with multi-threading.

            Select Case Me.Source
                Case TraceTypes.File
                    If String.IsNullOrEmpty(Me.File) Then
                        Throw New ApplicationException("Specify trace file connection.")
                    End If

                    Me.ComponentMetaData.RuntimeConnectionCollection("TraceSource").ConnectionManagerID = Me.File
                    ' This is not used. Just set it to avoid validation issues.
                    Me.ComponentMetaData.RuntimeConnectionCollection("TraceProfile").ConnectionManagerID = Me.File

                Case TraceTypes.Table
                    If String.IsNullOrEmpty(Me.Server) Then
                        Throw New ApplicationException("Select SQL Server connection.")
                    ElseIf String.IsNullOrEmpty(Me.Table) Then
                        Throw New ApplicationException("Select trace table.")
                    End If

                    Me.ComponentMetaData.RuntimeConnectionCollection("TraceSource").ConnectionManagerID = Me.Server
                    ' This is not used. Just set it to avoid validation issues.
                    Me.ComponentMetaData.RuntimeConnectionCollection("TraceProfile").ConnectionManagerID = Me.Server

                Case TraceTypes.Server
                    If String.IsNullOrEmpty(Me.Server) Then
                        Throw New ApplicationException("Select SQL Server connection.")
                    ElseIf String.IsNullOrEmpty(Me.Profile) Then
                        Throw New ApplicationException("Select trace profile file connection.")
                    End If

                    Me.ComponentMetaData.RuntimeConnectionCollection("TraceSource").ConnectionManagerID = Me.Server
                    Me.ComponentMetaData.RuntimeConnectionCollection("TraceProfile").ConnectionManagerID = Me.Profile
            End Select

            result = True
        Catch ex As Exception
            result = False
            errMessage = ex.Message
        End Try

        ValidateUI = result
    End Function    'ValidateUI


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get list of databases for selected SQL server.
    Public Function GetDatabases() As String()
        Dim result As ArrayList = New ArrayList()

        Dim server As Server = CType( _
            Me.DesignConnections(Me.Server).AcquireConnection(Nothing), _
            Server)
        Dim dbCount As Integer = server.Databases.Count
        For dbIndex As Integer = 0 To dbCount - 1
            Call result.Add(server.Databases(dbIndex).Name)
        Next

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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get list of tables for selected database.
    Public Function GetTables() As String()
        Dim result As ArrayList = New ArrayList()

        Dim server As Server = CType( _
            Me.DesignConnections(Me.Server).AcquireConnection(Nothing), _
            Server)
        Dim database As Database = server.Databases(Me.Database)
        Dim tblCount As Integer = database.Tables.Count
        For tblIndex As Integer = 0 To tblCount - 1
            Call result.Add(database.Tables(tblIndex).ToString())
        Next

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


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Trace")> _
    <Description("Select trace type.")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Source() As TraceTypes
        Get
            Source = m_traceType
        End Get
        Set(ByVal value As TraceTypes)
            If m_traceType <> value Then
                m_traceType = value

                m_traceSource = String.Empty
                m_traceParam1 = String.Empty
                m_traceParam2 = String.Empty
            End If
        End Set
    End Property    ' Source


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select file connection to SQL Server Profile trace (.trc).")> _
    <Connection("FileConnectionType")> _
    Public Property File() As String
        Get
            File = m_traceSource
        End Get
        Set(ByVal value As String)
            m_traceSource = value
        End Set
    End Property    ' File


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select connection to SQL Server.")> _
    <Connection("SMOConnectionType")> _
    Public Property Server() As String
        Get
            Server = m_traceSource
        End Get
        Set(ByVal value As String)
            m_traceSource = value
        End Set
    End Property    ' Server


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select database.")> _
    <List("GetDatabases")> _
    Public Property Database() As String
        Get
            Database = m_traceParam1
        End Get
        Set(ByVal value As String)
            m_traceParam1 = value
        End Set
    End Property    ' Database


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select table.")> _
    <List("GetTables")> _
    Public Property Table() As String
        Get
            Table = m_traceParam2
        End Get
        Set(ByVal value As String)
            m_traceParam2 = value
        End Set
    End Property    ' Table


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select file connection to SQL Server Profiler trace profile (.tdf).")> _
    <Connection("FileConnectionType")> _
    Public Property Profile() As String
        Get
            Profile = m_traceParam1
        End Get
        Set(ByVal value As String)
            m_traceParam1 = value
        End Set
    End Property    ' Profile
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property SMOConnectionType() As String()
        Get
            SMOConnectionType = New String() {"SMOServer"}
        End Get
    End Property    ' SMOConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property FileConnectionType() As String()
        Get
            FileConnectionType = New String() {"FILE"}
        End Get
    End Property    ' FileConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get SSIS type from specified DataRow.
    Private Sub GetTypeFromDataRow_( _
        ByVal dataRow As DataRow, _
        ByRef dtsType As Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType, _
        ByRef length As Integer, _
        ByRef precision As Integer, _
        ByRef scale As Integer, _
        ByRef codePage As Integer)

        ' Get type.
        Dim type As Type = CType(dataRow("DataType"), Type)
        dtsType = CType( _
            GetType(PipelineComponent).InvokeMember( _
                "DataRecordTypeToBufferType", _
                BindingFlags.InvokeMethod Or BindingFlags.NonPublic Or BindingFlags.Static, _
                Nothing, _
                Nothing, _
                New Object() {type}), _
                Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType)
        If Not TypeOf dataRow("IsLong") Is DBNull Then
            Select Case dtsType
                Case Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_WSTR
                    dtsType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_NTEXT

                Case Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_STR
                    dtsType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_TEXT

                Case Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_BYTES
                    dtsType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_IMAGE
            End Select
        End If

        ' Get length.
        length = 0
        Select Case dtsType
            Case Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_WSTR, _
                Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_STR, _
                Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_BYTES, _
                Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_IMAGE, _
                Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_NTEXT, _
                Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_TEXT

                length = CInt(dataRow.Item("ColumnSize"))
                If length > 4000 Then
                    ' Length is more than the maximum in SSIS. Limit to 4000.
                    length = 4000
                End If

        End Select

        ' Get precision and scale.
        If dtsType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_BYREF_DECIMAL OrElse _
           dtsType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_NUMERIC Then

            If dataRow.IsNull("NumericPrecision") Then
                precision = &H1D
            Else
                precision = Convert.ToInt16(dataRow("NumericPrecision"))
            End If

            If dataRow.IsNull("NumericScale") Then
                scale = 0
            Else
                scale = Convert.ToInt16(dataRow("NumericScale"))
            End If

            If scale = &HFF Then
                scale = 0
            End If
        End If

        ' Get code page.
        codePage = 0
        If dtsType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_STR Then
            codePage = -1
        End If
    End Sub ' GetTypeFromDataRow_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Find column index in DataRowCollection
    Private Function FindColumn_( _
        ByVal rows As DataRowCollection, _
        ByVal columnName As String) As Integer

        Dim result As Integer = -1

        Dim rowsCount As Integer = rows.Count
        For rowIndex As Integer = 0 To rowsCount - 1
            If columnName = CStr(rows(rowIndex)("ColumnName")) Then
                ' Found column.
                result = rowIndex
                Exit For
            End If
        Next

        Call Debug.Assert(result <> -1)

        FindColumn_ = result
    End Function    ' FindColumn_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get IDataReader based on selected trace type.
    Private Function GetTraceReader_() As IDataReader
        Dim result As IDataReader = Nothing

        Dim errMessage As String = String.Empty
        If Not ValidateUI(errMessage) Then
            ' Task doesn't validate.
            Return Nothing
        End If

        Select Case Me.Source
            Case TraceTypes.File
                Dim traceFile As TraceFile = New TraceFile()
                Dim traceFilename As String = CStr(Me.Connections.TraceSource.AcquireConnection(Nothing))
                traceFile.InitializeAsReader(traceFilename)
                result = traceFile

            Case TraceTypes.Table
                ' Get SQL connection info.
                Dim server As Server = CType( _
                    Me.Connections.TraceSource.AcquireConnection(Nothing), _
                    Server)
                Dim sci As SqlConnectionInfo = New SqlConnectionInfo( _
                    server.ConnectionContext, _
                    ConnectionType.Sql)
                sci.DatabaseName = Me.Database

                ' Get trace table and owner separate.
                Dim owner As String = String.Empty
                Dim table As String = String.Empty
                Call GetOwnerTable_(Me.Table, owner, table)

                ' Setup trace table.
                Dim traceTable As TraceTable = New TraceTable()
                traceTable.InitializeAsReader(sci, table, owner)
                result = traceTable

            Case TraceTypes.Server
                ' Get SQL connection info.
                Dim server As Server = CType( _
                    Me.Connections.TraceSource.AcquireConnection(Nothing), _
                    Server)
                Dim sci As SqlConnectionInfo = New SqlConnectionInfo( _
                    server.ConnectionContext, _
                    ConnectionType.Sql)

                ' Get trace profile name.
                Dim traceProfile As String = CStr(Me.Connections.TraceProfile.AcquireConnection(Nothing))

                ' Setup trace server.
                Dim traceServer As TraceServer = New TraceServer()
                Call traceServer.InitializeAsReader(sci, traceProfile)
                result = traceServer
        End Select

        GetTraceReader_ = result
    End Function    ' GetTraceReader_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get owner and table in separate fields.
    Private Sub GetOwnerTable_( _
        ByVal tableCombo As String, _
        ByRef owner As String, _
        ByRef table As String)

        Dim combo As String() = tableCombo.Split( _
            New String() {"].["}, _
            2, _
            StringSplitOptions.None)
        owner = combo(0).Substring(1)
        table = combo(1).Substring(0, combo(1).Length - 1)
    End Sub ' GetOwnerTable_
#End Region ' Internals


#Region "Attributes"
    Private m_traceType As TraceTypes = TraceTypes.File
    Private m_traceSource As String
    Private m_traceParam1 As String
    Private m_traceParam2 As String

    Private m_traceReader As IDataReader
    Private m_bufIdx As Integer()
    Private m_readerIdx As Integer()
#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 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 Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        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[ScriptComponent_bd09eb48a8dc4dc18010cf2a314b1aad.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>{FCE7DEB0-BD42-4853-BB71-E80A52A8A950}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_bd09eb48a8dc4dc18010cf2a314b1aad</RootNamespace>
    <AssemblyName>ScriptComponent_bd09eb48a8dc4dc18010cf2a314b1aad</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="Microsoft.SqlServer.ConnectionInfoExtended, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.ConnectionInfoExtended.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.SqlServer.Management.Sdk.Sfc, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.Management.Sdk.Sfc.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.ConnectionInfo">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.SqlServer.Smo">
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Xml">
      <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[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

    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()

        FinishOutputs()
        MarkOutputsFinished()

    End Sub

    Public Overridable Sub CreateNewOutputRows()
    End Sub

End Class

Public Class Connections

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

    Public ReadOnly Property TraceSource() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("TraceSource").ConnectionManager
        End Get
    End Property

    Public ReadOnly Property TraceProfile() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("TraceProfile").ConnectionManager
        End Get
    End Property

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:CodeName>ScriptComponent_bd09eb48a8dc4dc18010cf2a314b1aad</msb:CodeName>
		<msb:Language>msBuild</msb:Language>
		<msb:DisplayName>ScriptComponent_bd09eb48a8dc4dc18010cf2a314b1aad</msb:DisplayName>
		<msb:ProjectId>{184DDC77-4B94-464A-8728-57DB155D2239}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="ScriptComponent_bd09eb48a8dc4dc18010cf2a314b1aad.vbproj"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="ScriptMain.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:Folder Include="My Project\"/>
	</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_bd09eb48a8dc4dc18010cf2a314b1aad.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
BEoggQAAADMEDgYVVCoAABMwAwBDAAAAIwAAERULA29BAAAKDBYIF9oTBA0rKAQDCW9CAAAKckEA
AHBvQwAACihEAAAKFihjAAAKFjMECQsrCQkX1g0JEQQx0wcKBioAEzAEACABAAAkAAARFAx+TAAA
CgoCEgBvJwAABi0CFCoCbyoAAAZFAwAAAAUAAAAyAAAAnQAAADjsAAAAc2QAAAoNAnsGAAAEbx0A
AAYUb2UAAAooRAAAChMECREEb2YAAAoJDDi/AAAAAnsGAAAEbx0AAAYUb2UAAAp0NQAAARMHEQdv
ZwAAChZzaAAAChMGEQYCbzAAAAZvaQAACn5MAAAKEwV+TAAAChMIAgJvMgAABhIFEghvOwAABnNq
AAAKEwkRCREGEQgRBW9rAAAKEQkMK1QCewYAAARvHQAABhRvZQAACnQ1AAABEwsRC29nAAAKFnNo
AAAKEwoCewYAAARvHgAABhRvZQAACihEAAAKEwxzbAAAChMNEQ0RChEMb20AAAoRDQwICwcqEzAF
ADoAAAAlAAARAxeNHwAAAQsHFnJ7AgBwogcYFm9uAAAKCgQGFpoXb28AAApRBQYXmhYGF5pvcAAA
Chfab3EAAApRKgAAQlNKQgEAAQAAAAAADAAAAHY0LjAuMzAzMTkAAAAABQBsAAAA1A4AACN+AABA
DwAAvBIAACNTdHJpbmdzAAAAAPwhAACEAgAAI1VTAIAkAAAQAAAAI0dVSUQAAACQJAAA8AYAACNC
bG9iAAAAAAAAAAIAAAFXHaIJCQ4AAAD6JTMAFgAAAQAAAFgAAAAMAAAAFQAAADsAAAAgAAAAfQAA
AAMAAABCAAAAJQAAAAUAAAARAAAAFwAAAAoAAAABAAAADQAAAAMAAAADAAAAAgAAAAAAhxIBAAAA
AAAKAEsBIQEKAH8BYQEGAI8BiAEKAOcBIQEGAGUCiAEKAOcCvQIOADkDIgMSAIgDZwMWALkDZwMS
AMgDZwMOAHoEIgMaAEUFHQUeAB8G9gUiACwHIAcaADQHHQUiAIEHIAciAK8HIAcGAJkIiAEmALwI
pggmANUIpggmAAIJ6ggGACwJGQkKAGsJRAkKAIMJEwAmALgJmwkGAO0JzQkGAAsKiAEGAC8KiAEK
AEgKEwAGAJYKdwoGAKoKiAESALEKZwMGAL4KiAEeAOAK9gUeAA8L9gUeAFIL9gUiAIoLIAceALcL
9gUiAMULIAceAM8L9gUeAPIL9gUGAB8MiAEeACUM9gUWAGgMZwMeAIwM9gUmAOkMpggKABkNRAkG
AFsNSA0GAGkNiAEGAIcNiAEGAJ8NiAEKAMwNRAkqAFYIHg4uAPUAYA4uAJYOYA4qALoOHg4qANsO
Hg4qAF0IHg4qAO0OHg4qAGYIHg4qAAgPHg4GACcPFQ8GADQPFQ8GAFIPiAEGAGAPiAEKAHAPRAky
ANgPsw82ACsQBRAyAD0Qsw8yAEgQsw82AGcQBRA2AI4QBRA2AJ0QBRA2AMgQBRAGANsQiAESAAkR
ZwMOAFIRMBEOAG4RMBEOAIgRMBEOAKARMBEmAK4RpggmAMMRpggOANURMBEmAOkRpggmAAQSpggG
ABYSzQkGADYSzQkGAG4SVBIAAAAAAQAAAAAAAQABAAAAAAApADcABQABAAEAAAAAAGsANwAJAAEA
AgAAARAAdgA3AA0AAQADAAUBAACAAAAADQAFAAgABQEAAI4AAAANAAUADwABAAAAqQC2AB0ABgAR
AAEAAADnALYALQAGABcAAQAAAPUAtgANAAkAHAABAAAAAQG2AA0ACgAfAAEAAAALAbYAIAALACAA
AgEAABYBAABJABIAPAAxAKoBIAAxANMBLQAxAPUBOgAxABoCRwAhAPYCkAAGAPUAyQAGAAEBzQAG
AKkA0QABAOoE4QABAOoE4QABAPEHNgEBAP0HOgEBAAsIOgEBABkIOgEBACcIPQEBADUIQQEBAD4I
QQEGBp4ITgFWgFEINgFWgGYINgFWgFYINgFQIAAAAAAGGFsBEwABAFggAAAAAAYYWwETAAEAYCAA
AAAAERiWARcAAQCMIAAAAAATCJ0BGwABAKQgAAAAABMIwwEoAAEAvCAAAAAAEwjsATUAAQDUIAAA
AAATCAoCQgABAOwgAAAAAEYCUAJjAAEACCEAAAAARgJZAmgAAgAcIQAAAACDAGoCbAACADQhAAAA
AEYCcgJxAAIASCEAAAAAEQB7AngAAgBkIQAAAAABAJkCgAADAIAhAAAAAAYYWwETAAQAiCEAAAAA
AwitAosABAC8IQAAAAAGGFsBEwAEANAhAAAAAAYYWwGvAAQA4CEAAAAARgoCBLsACQD0IQAAAABG
ChkEuwAJAAgiAAAAAIYAMQQTAAkAECIAAAAAhgA4BBMACQAYIgAAAACGAEcEwAAJADAiAAAAAAYY
WwETAAkAUCIAAAAARgOOBBMACQBUIgAAAAABAJwEEwAJAHAiAAAAAEYCsATVAAkAyCIAAAAARgPW
BBMADQDMIgAAAAAGGFsB5QANANwiAAAAAAYIXgXrAA4ACCMAAAAABghuBesADgA0IwAAAAAGGFsB
5QAOAEQjAAAAAAYYWwETAA8AVCMAAAAARgLWBBMADwDwIwAAAABGApgFEwAPANAkAAAAAEYCowUT
AA8A9CQAAAAARgKvBRMADwDcJQAAAAAGAMQFuwAPAHgmAAAAAEYCMwb1AA8A5CYAAAAABgA8BvoA
DwCIKAAAAAAGAFIGuwAQAAgpAAAAAAYAXwa7ABAAnCkAAAAABghpBgABEAC0KQAAAAAGCHQGBQEQ
AOgpAAAAAAYIhQZxABEAACoAAAAABgiOBgsBEQAMKgAAAAAGCJcGcQASACQqAAAAAAYIogYLARIA
MCoAAAAABgitBnEAEwBIKgAAAAAGCLoGCwETAFQqAAAAAAYIxwZxABQAbCoAAAAABgjRBgsBFAB4
KgAAAAAGCNsGcQAVAJAqAAAAAAYI5wYLARUAnCoAAAAAAQjzBrsAFgC8KgAAAAABCAkHuwAWANwq
AAAAAAEAPQcQARYAUCwAAAAAAQCTByEBHACgLAAAAAABALsHKAEeAMwtAAAAAAEAywctAR4AAAAB
AFcCAAABAJACAAABAJACAAABANYDAAACAOADAAADAOkDAAAEAPEDAAAFAPgDAAABALwEAAACAMQE
AAADAM4EAAAEAPgDAAABANYDAAABANYDAAABAEcGAAABAH8GAAABAH8GAAABAH8GAAABAH8GAAAB
AH8GAAABAH8GAAABAFEHAAACAFkHAAADAGEHAAAEAGgHAAAFAHIHAAAGAHgHAAABAJ8HAAACAKQH
AAABANoHAAACAOUHAAADAOsHCQBbARMAmQBbAWABqQBbAW8BEQBbARMAsQBbARMAJABbARMALABb
ARMANABbARMAPABbARMAJACtAosALACtAosANACtAosAPACtAosAuQBbARMAwQBbARMAyQBbAQsB
0QD8CQQCGQBQAmMAGQBZAmgAKQAdChECGQByAnEA4QA5CiECGQBbARMA6QBbATECRAD2ApAATABj
CosATABtCq4CTABbARMA8QBbAb0COQBbAa8AAQExBBMAAQE4BBMAAQFHBMAACQFbAb0CWQBbARMA
QQDUCs0CQQD5CtkCEQEyC98CGQFrC+UCIQF0C+sAKQFrC/ECOQCWC/YCSQChC/sCSQCpCwADiQCy
C8AAQQCYBRMAiQDjCw4DEQEKDBQDSQFrCxoDMQFDDCEDWQFeDGgAWQFrCycDWQB6DC4DYQGhDDQD
MQGWC2gAQQGzDGgAaQHBDDoDOQHXDEADQQHgDHEAcQEBDRMAQQCjBRMAiQAJDRMAWQCvBRMAWQEP
DRMAgQBeDGgAgQBrC1UDcQBrC1sDeQFyAmADWQElDWUDQQEpDQsBQQEyDWsDgQFbARMAgQFlDY8D
gQFvDZQDWQAzBvUA+QB3DToBEQF9DakD+QCRDb0DmQFbAQsBIQG0DQsBoQHYDcIDkQHoDXEAoQH0
DRcAWQCADtMDsQFrC9kDuQGoDuADqQHNDuUDyQFeDGgAwQFrC+sD0QHgDHEAwQFrCwAE0QH9DgcE
2QFrCw0E6QFyAnEAKQA7DzEEeQFIDz8EcQBZD0QECQJoD0kEEQJ6D1kEGQJbARMAYQCoDuADGQJU
EAsBqQF4EGgEIQJbAW4ESQK3EAsBKQJbARMAKQJUEHgEMQJbARMAMQJUEIEE+QDuEKwE+QD0ELcE
+QD+EGgA+QD0ELwEYQJbARMAaQJbAQsBcQJbAQsBeQJbAeUEgQJbAQsBiQJbAQsBkQJbAQsBmQJb
AQsBoQJbAeMFsQJbAfsCuQJbARMAwQJbAQsBCABMAFEBCABQAFYBCABUAFsBKQCDANIBLgDrA6cG
LgDjA4gGLgDbA38GQAATAGYBQAArAFYBQwAbAHUBQwATAGYBSQCDAPABYwATAGYBYwAbAHUBaQCD
AOMBgAArAFYBgwBzAFYBgwAbAHUBgwB7AFYBiQCDAL4BoAArAFYBowDDADkCowATAGYBwAArAFYB
wwATAGYBwwDrAMIC4AArAFYB4wATAcICAAETAGYBAAErAFYBAwETAcICIAETAGYBIAErAFYBQAET
AGYBQAErAFYBSQHTA2YBSQG7A+oFSQHDAwIGYAErAFYBYAETAGYBYwGjA9IEYwGbA8IEYwETAcIC
YwGTA1YBYwGrA+sEaQHLA04FaQG7A2YFaQHDA0AFgAErAFYBiQHLA6YFiQHDA0AFiQG7A70FoAEr
AFYBqQGzAw4GqQHDA0AFqQG7AyAGwAETAGYBwAErAFYByQHDA0AFyQGzAx4FyQG7Ay0F4AErAFYB
6QHDA0AF6QHLA04F6QG7AzYGAAIrAFYBAAITAGYBgAMTAcIC4AMTAcICqgGvAbQBuQEJAg0CGAId
AiwCLAK0AsgCyAIJAtQC7ALsAgYDRQN1A58DtAPJA/IDFAQlBB0CHQIdAh0CHQIqBCoETgRgBIkE
KgQEAAEABgAFAAcABgAJAAgACwAKAAAAfwFPAAAAOAJUAAAA5wFZAAAARAJeAAAAAAOYAAAAUwTE
AAAAZgTEAAAAfwXwAAAAiwXwAAAASghFAQAAUQhKAQAAVghKAQAAXQhKAQAAZghKAQAAbAhKAQAA
dAjEAAAAhgjEAAIABAADAAIABQAFAAIABgAHAAIABwAJAAIADwALAAIAEgANAAIAEwAPAAIAHQAR
AAIAHgATAAIAKgAVAAEAKwAVAAIALAAXAAEALQAXAAEALwAZAAIALgAZAAIAMAAbAAEAMQAbAAIA
MgAdAAEAMwAdAAEANQAfAAIANAAfAAIANgAhAAIANwAjAHUAdQCIAI4BlQGcAaMBmwKiApwDBIAA
AAAAAAAAAAAAAAAAAAAAtgAAAAQAAAAAAAAAAAAAAAEACgAAAAAACgAAAAAAAAAAAAAACgATAAAA
AAABAAAAAAAAAAAAAACdAAwDAAAAAAwAAAAAAAAAAAAAAKYASgMAAAAADAAAAAAAAAAAAAAApgCY
AwAAAAAMAAAAAAAAAAAAAACmAPoEAAAAAAwAAAAAAAAAAAAAAKYA0gUAAAAABAAAAAAAAAAAAAAA
AQAgBwAAAAAEAAAAAAAAAAAAAAABAIgBAAAAAAwAAAAAAAAAAAAAAKYABg4AAAAADAAAAAAAAAAA
AAAApgBBDgAAAAAMAAAAAAAAAAAAAACmAIgPAAAAAAwAAAAAAAAAAAAAAKYA4g8AAAAABQAEAAYA
BAAMAAsAAAAQAAwAjgIAABAAGQCOAgAAAAAbAI4CLQAnAi0AqQIAAAA8TW9kdWxlPgBtc2Nvcmxp
YgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMATXlBcHBsaWNhdGlvbgBTY3JpcHRDb21wb25lbnRfYmQw
OWViNDhhOGRjNGRjMTgwMTBjZjJhMzE0YjFhYWQuTXkATXlDb21wdXRlcgBNeVByb2plY3QATXlX
ZWJTZXJ2aWNlcwBUaHJlYWRTYWZlT2JqZWN0UHJvdmlkZXJgMQBPdXRwdXRCdWZmZXIAU2NyaXB0
Q29tcG9uZW50X2JkMDllYjQ4YThkYzRkYzE4MDEwY2YyYTMxNGIxYWFkAFVzZXJDb21wb25lbnQA
Q29ubmVjdGlvbnMAVmFyaWFibGVzAFNjcmlwdE1haW4AVHJhY2VUeXBlcwBNaWNyb3NvZnQuVmlz
dWFsQmFzaWMuQXBwbGljYXRpb25TZXJ2aWNlcwBBcHBsaWNhdGlvbkJhc2UALmN0b3IATWljcm9z
b2Z0LlZpc3VhbEJhc2ljLkRldmljZXMAQ29tcHV0ZXIAU3lzdGVtAE9iamVjdAAuY2N0b3IAZ2V0
X0NvbXB1dGVyAG1fQ29tcHV0ZXJPYmplY3RQcm92aWRlcgBnZXRfQXBwbGljYXRpb24AbV9BcHBP
YmplY3RQcm92aWRlcgBVc2VyAGdldF9Vc2VyAG1fVXNlck9iamVjdFByb3ZpZGVyAGdldF9XZWJT
ZXJ2aWNlcwBtX015V2ViU2VydmljZXNPYmplY3RQcm92aWRlcgBBcHBsaWNhdGlvbgBXZWJTZXJ2
aWNlcwBFcXVhbHMAbwBHZXRIYXNoQ29kZQBUeXBlAEdldFR5cGUAVG9TdHJpbmcAQ3JlYXRlX19J
bnN0YW5jZV9fAFQAaW5zdGFuY2UARGlzcG9zZV9fSW5zdGFuY2VfXwBnZXRfR2V0SW5zdGFuY2UA
TWljcm9zb2Z0LlZpc3VhbEJhc2ljLk15U2VydmljZXMuSW50ZXJuYWwAQ29udGV4dFZhbHVlYDEA
bV9Db250ZXh0AEdldEluc3RhbmNlAENvenlSb2MuU1NJU1BsdXMuMjAxNABDb3p5Um9jLlNxbFNl
cnZlci5TU0lTAFNjcmlwdEJ1ZmZlclBsdXMATWljcm9zb2Z0LlNxbFNlcnZlci5UeFNjcmlwdABN
aWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZQBTY3JpcHRDb21wb25lbnQATWljcm9zb2Z0
LlNxbFNlcnZlci5QaXBlbGluZUhvc3QAUGlwZWxpbmVCdWZmZXIAT3V0cHV0TmFtZU1hcABDb21w
b25lbnQAT2JqZWN0SUQASXNJbnB1dABCdWZmZXIAT3V0cHV0TWFwAGdldF9TdGF0aWNJbnB1dENv
bHVtbnMAZ2V0X1N0YXRpY091dHB1dENvbHVtbnMAQWRkUm93AFNldEVuZE9mUm93c2V0AEVuZE9m
Um93c2V0AFN0YXRpY0lucHV0Q29sdW1ucwBTdGF0aWNPdXRwdXRDb2x1bW5zAFNjcmlwdENvbXBv
bmVudFBsdXMARmluaXNoT3V0cHV0cwBNYXJrT3V0cHV0c0ZpbmlzaGVkAFByaW1lT3V0cHV0AE91
dHB1dHMAT3V0cHV0SURzAEJ1ZmZlcnMAQ3JlYXRlTmV3T3V0cHV0Um93cwBQYXJlbnRDb21wb25l
bnQATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNSdW50aW1lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVy
LkR0cy5SdW50aW1lLldyYXBwZXIASURUU0Nvbm5lY3Rpb25NYW5hZ2VyMTAwAGdldF9UcmFjZVNv
dXJjZQBnZXRfVHJhY2VQcm9maWxlAFRyYWNlU291cmNlAFRyYWNlUHJvZmlsZQBQcmVFeGVjdXRl
AFBvc3RFeGVjdXRlAFJlaW5pdGlhbGl6ZU1ldGFEYXRhAEdldFByb3BlcnRpZXMATWljcm9zb2Z0
LlNxbFNlcnZlci5EVFNQaXBlbGluZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxp
bmUuV3JhcHBlcgBEVFNWYWxpZGF0aW9uU3RhdHVzAFZhbGlkYXRlAFZhbGlkYXRlVUkAZXJyTWVz
c2FnZQBHZXREYXRhYmFzZXMAR2V0VGFibGVzAGdldF9Tb3VyY2UAc2V0X1NvdXJjZQB2YWx1ZQBn
ZXRfRmlsZQBzZXRfRmlsZQBnZXRfU2VydmVyAHNldF9TZXJ2ZXIAZ2V0X0RhdGFiYXNlAHNldF9E
YXRhYmFzZQBnZXRfVGFibGUAc2V0X1RhYmxlAGdldF9Qcm9maWxlAHNldF9Qcm9maWxlAGdldF9T
TU9Db25uZWN0aW9uVHlwZQBnZXRfRmlsZUNvbm5lY3Rpb25UeXBlAFN5c3RlbS5EYXRhAERhdGFS
b3cARGF0YVR5cGUAR2V0VHlwZUZyb21EYXRhUm93XwBkYXRhUm93AGR0c1R5cGUAbGVuZ3RoAHBy
ZWNpc2lvbgBzY2FsZQBjb2RlUGFnZQBEYXRhUm93Q29sbGVjdGlvbgBGaW5kQ29sdW1uXwByb3dz
AGNvbHVtbk5hbWUASURhdGFSZWFkZXIAR2V0VHJhY2VSZWFkZXJfAEdldE93bmVyVGFibGVfAHRh
YmxlQ29tYm8Ab3duZXIAdGFibGUAbV90cmFjZVR5cGUAbV90cmFjZVNvdXJjZQBtX3RyYWNlUGFy
YW0xAG1fdHJhY2VQYXJhbTIAbV90cmFjZVJlYWRlcgBtX2J1ZklkeABtX3JlYWRlcklkeABTb3Vy
Y2UARmlsZQBTZXJ2ZXIARGF0YWJhc2UAVGFibGUAUHJvZmlsZQBTTU9Db25uZWN0aW9uVHlwZQBG
aWxlQ29ubmVjdGlvblR5cGUARW51bQB2YWx1ZV9fAFN5c3RlbS5Db21wb25lbnRNb2RlbABFZGl0
b3JCcm93c2FibGVBdHRyaWJ1dGUARWRpdG9yQnJvd3NhYmxlU3RhdGUAU3lzdGVtLkNvZGVEb20u
Q29tcGlsZXIAR2VuZXJhdGVkQ29kZUF0dHJpYnV0ZQBTeXN0ZW0uRGlhZ25vc3RpY3MARGVidWdn
ZXJIaWRkZW5BdHRyaWJ1dGUATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkNvbXBpbGVyU2VydmljZXMA
U3RhbmRhcmRNb2R1bGVBdHRyaWJ1dGUASGlkZU1vZHVsZU5hbWVBdHRyaWJ1dGUAU3lzdGVtLkNv
bXBvbmVudE1vZGVsLkRlc2lnbgBIZWxwS2V5d29yZEF0dHJpYnV0ZQBTeXN0ZW0uUnVudGltZS5D
b21waWxlclNlcnZpY2VzAFJ1bnRpbWVIZWxwZXJzAEdldE9iamVjdFZhbHVlAFJ1bnRpbWVUeXBl
SGFuZGxlAEdldFR5cGVGcm9tSGFuZGxlAEFjdGl2YXRvcgBDcmVhdGVJbnN0YW5jZQBNeUdyb3Vw
Q29sbGVjdGlvbkF0dHJpYnV0ZQBnZXRfVmFsdWUAc2V0X1ZhbHVlAFN5c3RlbS5SdW50aW1lLklu
dGVyb3BTZXJ2aWNlcwBDb21WaXNpYmxlQXR0cmlidXRlAFN0cmluZwBTY3JpcHRCdWZmZXIAQ0xT
Q29tcGxpYW50QXR0cmlidXRlAEdldE91dHB1dElEAElEVFNDb21wb25lbnRNZXRhRGF0YTEwMABn
ZXRfQ29tcG9uZW50TWV0YURhdGEASURUU1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbjEwMABn
ZXRfUnVudGltZUNvbm5lY3Rpb25Db2xsZWN0aW9uAElEVFNSdW50aW1lQ29ubmVjdGlvbjEwMABn
ZXRfSXRlbQBnZXRfQ29ubmVjdGlvbk1hbmFnZXIASURhdGFSZWNvcmQAZ2V0X0J1ZmZlcgBTZXRO
dWxsAHNldF9JdGVtAFJlYWQASURUU091dHB1dDEwMABEYXRhVGFibGUASURUU091dHB1dENvbHVt
bjEwMABHZXRTY2hlbWFUYWJsZQBJRFRTT3V0cHV0Q29sbGVjdGlvbjEwMABnZXRfT3V0cHV0Q29s
bGVjdGlvbgBJbnQzMgBJRFRTT3V0cHV0Q29sdW1uQ29sbGVjdGlvbjEwMABnZXRfT3V0cHV0Q29s
dW1uQ29sbGVjdGlvbgBnZXRfQ291bnQAUGlwZWxpbmVDb21wb25lbnQAZ2V0X0hvc3RDb21wb25l
bnQASURUU0J1ZmZlck1hbmFnZXIxMDAAZ2V0X0J1ZmZlck1hbmFnZXIAZ2V0X0xpbmVhZ2VJRABG
aW5kQ29sdW1uQnlMaW5lYWdlSUQAZ2V0X1Jvd3MAZ2V0X05hbWUATWFyc2hhbEJ5VmFsdWVDb21w
b25lbnQARGlzcG9zZQBDbG9zZQBSZW1vdmVBbGwAQ29udmVyc2lvbnMATmV3AHNldF9OYW1lAFNl
dERhdGFUeXBlUHJvcGVydGllcwBTeXN0ZW0uQ29sbGVjdGlvbnMAQXJyYXlMaXN0AEFkZABBcnJh
eQBUb0FycmF5AEVtcHR5AEZpcmVFcnJvcgBFeGNlcHRpb24ASXNOdWxsT3JFbXB0eQBBcHBsaWNh
dGlvbkV4Y2VwdGlvbgBzZXRfQ29ubmVjdGlvbk1hbmFnZXJJRABQcm9qZWN0RGF0YQBTZXRQcm9q
ZWN0RXJyb3IAZ2V0X01lc3NhZ2UAQ2xlYXJQcm9qZWN0RXJyb3IATWljcm9zb2Z0LlNxbFNlcnZl
ci5TbW8ATWljcm9zb2Z0LlNxbFNlcnZlci5NYW5hZ2VtZW50LlNtbwBNaWNyb3NvZnQuU3FsU2Vy
dmVyLk1hbmFnZWREVFMATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVudGltZQBnZXRfRGVzaWdu
Q29ubmVjdGlvbnMAQ29ubmVjdGlvbk1hbmFnZXIAQWNxdWlyZUNvbm5lY3Rpb24ARGF0YWJhc2VD
b2xsZWN0aW9uAGdldF9EYXRhYmFzZXMAU21vQ29sbGVjdGlvbkJhc2UAVGFibGVDb2xsZWN0aW9u
AGdldF9UYWJsZXMAU3FsU21vT2JqZWN0AFN5c3RlbS5SZWZsZWN0aW9uAEJpbmRpbmdGbGFncwBC
aW5kZXIASW52b2tlTWVtYmVyAFRvSW50ZWdlcgBEQk51bGwASXNOdWxsAENvbnZlcnQAVG9JbnQx
NgBPcGVyYXRvcnMAQ29tcGFyZVN0cmluZwBNaWNyb3NvZnQuU3FsU2VydmVyLkNvbm5lY3Rpb25J
bmZvRXh0ZW5kZWQATWljcm9zb2Z0LlNxbFNlcnZlci5NYW5hZ2VtZW50LlRyYWNlAFRyYWNlRmls
ZQBNaWNyb3NvZnQuU3FsU2VydmVyLkNvbm5lY3Rpb25JbmZvAE1pY3Jvc29mdC5TcWxTZXJ2ZXIu
TWFuYWdlbWVudC5Db21tb24AU3FsQ29ubmVjdGlvbkluZm8AVHJhY2VUYWJsZQBUcmFjZVNlcnZl
cgBJbml0aWFsaXplQXNSZWFkZXIAU2VydmVyQ29ubmVjdGlvbgBnZXRfQ29ubmVjdGlvbkNvbnRl
eHQAQ29ubmVjdGlvblR5cGUAU3FsT2xhcENvbm5lY3Rpb25JbmZvQmFzZQBzZXRfRGF0YWJhc2VO
YW1lAENvbm5lY3Rpb25JbmZvQmFzZQBTdHJpbmdTcGxpdE9wdGlvbnMAU3BsaXQAU3Vic3RyaW5n
AGdldF9MZW5ndGgAU1NJU1NjcmlwdENvbXBvbmVudEVudHJ5UG9pbnRBdHRyaWJ1dGUAQ296eVJv
Yy5TcWxTZXJ2ZXIuU1NJUy5BdHRyaWJ1dGVzAFZhbGlkYXRlUHJvcGVydGllc0F0dHJpYnV0ZQBG
aWx0ZXJQcm9wZXJ0aWVzQXR0cmlidXRlAFNvcnRQcm9wZXJ0aWVzQXR0cmlidXRlAExpc3RBdHRy
aWJ1dGUARGVzY3JpcHRpb25BdHRyaWJ1dGUAQ2F0ZWdvcnlBdHRyaWJ1dGUAQ29ubmVjdGlvbkF0
dHJpYnV0ZQBSZWZyZXNoUHJvcGVydGllc0F0dHJpYnV0ZQBSZWZyZXNoUHJvcGVydGllcwBDb21w
aWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAFJ1bnRpbWVDb21wYXRpYmlsaXR5QXR0cmlidXRl
AFN5c3RlbS5SdW50aW1lLlZlcnNpb25pbmcAVGFyZ2V0RnJhbWV3b3JrQXR0cmlidXRlAFNjcmlw
dENvbXBvbmVudF9iZDA5ZWI0OGE4ZGM0ZGMxODAxMGNmMmEzMTRiMWFhZC5kbGwAAA1PAHUAdABw
AHUAdAAAF1QAcgBhAGMAZQBTAG8AdQByAGMAZQAAGVQAcgBhAGMAZQBQAHIAbwBmAGkAbABlAAAV
QwBvAGwAdQBtAG4ATgBhAG0AZQAADVMAbwB1AHIAYwBlAAAJRgBpAGwAZQAADVMAZQByAHYAZQBy
AAARRABhAHQAYQBiAGEAcwBlAAALVABhAGIAbABlAAAPUAByAG8AZgBpAGwAZQAAG1AAcgBvAGYA
aQBsAGUAIABUAHIAYQBjAGUAAD1TAHAAZQBjAGkAZgB5ACAAdAByAGEAYwBlACAAZgBpAGwAZQAg
AGMAbwBuAG4AZQBjAHQAaQBvAG4ALgAAO1MAZQBsAGUAYwB0ACAAUwBRAEwAIABTAGUAcgB2AGUA
cgAgAGMAbwBuAG4AZQBjAHQAaQBvAG4ALgAAJ1MAZQBsAGUAYwB0ACAAdAByAGEAYwBlACAAdABh
AGIAbABlAC4AAEtTAGUAbABlAGMAdAAgAHQAcgBhAGMAZQAgAHAAcgBvAGYAaQBsAGUAIABmAGkA
bABlACAAYwBvAG4AbgBlAGMAdABpAG8AbgAuAAATUwBNAE8AUwBlAHIAdgBlAHIAAAlGAEkATABF
AAARRABhAHQAYQBUAHkAcABlAAA1RABhAHQAYQBSAGUAYwBvAHIAZABUAHkAcABlAFQAbwBCAHUA
ZgBmAGUAcgBUAHkAcABlAAANSQBzAEwAbwBuAGcAABVDAG8AbAB1AG0AbgBTAGkAegBlAAAhTgB1
AG0AZQByAGkAYwBQAHIAZQBjAGkAcwBpAG8AbgAAGU4AdQBtAGUAcgBpAGMAUwBjAGEAbABlAAAH
XQAuAFsAAADGyIEg72ssR7DuitC/oox9AAi3elxWGTTgiQiwP19/EdUKOgMgAAEDAAABBAAAEgwH
BhUSGAESDAQAABIIBwYVEhgBEggEAAASEQcGFRIYARIRBAAAEhQHBhUSGAESFAQIABIMBAgAEggE
CAASEQQIABIUBCABAhwDIAAIBCAAEhUDIAAOAh4ABxABAR4AHgAHMAEBARAeAAITAAQgABMABwYV
EhkBEwAEKAATAAgWz0kLuAw06giJhF3NgIDMkQsgBQESIQgCEiUSKQQgAB0OAyAAAgQoAB0OAwYS
JAMGEigDBhIcCyAEAQgdCB0SJRIpAwYSIQUgAQESIQQgABIxBCgAEjEEIAARNQUgAQIQDgQgABEw
BSABAREwBCABAQ4QIAYBEjkQET0QCBAIEAgQCAYgAggSQQ4EIAASRQggAwEOEA4QDgMGETACBg4D
BhJFAwYdCAQoABEwAygADgIGCAQAAAAABAEAAAAEAgAAAAUgAQERUQgBAAEAAAAAAAUgAgEODhgB
AApNeVRlbXBsYXRlCDEwLjAuMC4wAAAGFRIYARIMBhUSGAESCAYVEhgBEhEGFRIYARIUBAcBEgwE
BwESCAQHARIRBAcBEhQTAQAOTXkuV2ViU2VydmljZXMAABABAAtNeS5Db21wdXRlcgAADAEAB015
LlVzZXIAABMBAA5NeS5BcHBsaWNhdGlvbgAABAABHBwDBwECAwcBCAYAARIVEW0EBwESFQMHAQ4F
EAEAHgAECgEeAAQHAR4AByAEAQ4ODg5hAQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMu
U29hcEh0dHBDbGllbnRQcm90b2NvbBJDcmVhdGVfX0luc3RhbmNlX18TRGlzcG9zZV9fSW5zdGFu
Y2VfXwAAAAYVEhgBEwAGFRIZARMABAoBEwAFIAEBEwAIBwMTABMAEwAEIAEBAgUBAAAAAAQHAR0O
BgACCBIpDgQHAggIBSAAEoCJBSAAEoCNBiABEoCRHAQHARIxBCABHAgEIAASJQQgAQEIBSACAQgc
BwcFCAgIHAgFIAASgJ0FIAASgKUGIAESgJkcBSAAEoCtBiABEoChHAUgABKAsQUgABKAtQUgAggI
CAQgABJBDwcHCBKAmRKAnQgSgKEICAUgARI5CAQgARwOBAABDhwFIAASgKEJIAUBET0ICAgIGQcO
EoCZEkUIEoCdCAgSgKEOEjkRPQgICAgEIAEIHAcgARKAxRIVAh0OCQcDHQ4SgMERMAogBgEIDg4O
CBACCAcEETURNQ4CBAABAg4GAAEBEoDJCQcEAgISgMkRMAUgABKA2QYgARKA3RwEIAEcHAUgABKA
4QYgARKA6QgNBwYIHQ4SgMESgNUICAYgARKA6Q4FIAASgO0GIAESgPEIEAcHEoDpHQ4SgMESgNUI
CAgEBwERMAYHAh0OHQ4NIAUcDhGA+RKA/RwdHAQAAQgcBCABAg4EAAEGHAoHBBIVHRwRPRE9BgAD
CA4OAgcHBQgICAgIBSAAEoEdCSACARKBHRGBIQggAwESgSkODgcgAgESgSkOIgcPDhJFEkUSgQ0O
DhKBERKA1Q4SgRUSgRESgNUOEoEZETAKIAMdDh0OCBGBLQQgAQ4IBSACDggIDwEAClZhbGlkYXRl
VUkAABIBAA1HZXRQcm9wZXJ0aWVzAAAFIAEBHQ4yAQAGAAAABlNvdXJjZQRGaWxlBlNlcnZlcghE
YXRhYmFzZQVUYWJsZQdQcm9maWxlAAAOAQAJR2V0VGFibGVzAAASAQANU2VsZWN0IHRhYmxlLgAA
DQEACFNldHRpbmdzAAAXAQASRmlsZUNvbm5lY3Rpb25UeXBlAAA/AQA6U2VsZWN0IGZpbGUgY29u
bmVjdGlvbiB0byBTUUwgU2VydmVyIFByb2ZpbGUgdHJhY2UgKC50cmMpLgAAFgEAEVNNT0Nvbm5l
Y3Rpb25UeXBlAAAlAQAgU2VsZWN0IGNvbm5lY3Rpb24gdG8gU1FMIFNlcnZlci4AAAYgAQERgVUX
AQASU2VsZWN0IHRyYWNlIHR5cGUuAAALAQAGCVRyYWNlAAARAQAMR2V0RGF0YWJhc2VzAAAVAQAQ
U2VsZWN0IGRhdGFiYXNlLgAASAEAQ1NlbGVjdCBmaWxlIGNvbm5lY3Rpb24gdG8gU1FMIFNlcnZl
ciBQcm9maWxlciB0cmFjZSBwcm9maWxlICgudGRmKS4AAAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5v
bkV4Y2VwdGlvblRocm93cwFHAQAaLk5FVEZyYW1ld29yayxWZXJzaW9uPXY0LjABAFQOFEZyYW1l
d29ya0Rpc3BsYXlOYW1lEC5ORVQgRnJhbWV3b3JrIDQAvFkAAAAAAAAAAAAA3lkAAAAgAAAAAAAA
AAAAAAAAAAAAAAAAAAAAANBZAAAAAAAAAAAAAAAAAAAAAAAAAABfQ29yRGxsTWFpbgBtc2NvcmVl
LmRsbAAAAAAA/yUAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAYAACAAAAAAAAA
AAAAAAAAAAABAAEAAAAwAACAAAAAAAAAAAAAAAAAAAABAAAAAABIAAAAWGAAAOwCAAAAAAAAAAAA
AOwCNAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAAAAC9BO/+AAABAAAAAAAAAAAA
AAAAAAAAAAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAAAAAARAAAAAEAVgBhAHIARgBpAGwAZQBJ
AG4AZgBvAAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4AAAAAAAAAsARMAgAAAQBTAHQA
cgBpAG4AZwBGAGkAbABlAEkAbgBmAG8AAAAoAgAAAQAwADAAMAAwADAANABiADAAAAAsAAIAAQBG
AGkAbABlAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAAAAAAIAAAADAACAABAEYAaQBsAGUAVgBlAHIA
cwBpAG8AbgAAAAAAMAAuADAALgAwAC4AMAAAAIwANQABAEkAbgB0AGUAcgBuAGEAbABOAGEAbQBl
AAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwBiAGQAMAA5AGUAYgA0ADgAYQA4AGQA
YwA0AGQAYwAxADgAMAAxADAAYwBmADIAYQAzADEANABiADEAYQBhAGQALgBkAGwAbAAAAAAAKAAC
AAEATABlAGcAYQBsAEMAbwBwAHkAcgBpAGcAaAB0AAAAIAAAAJQANQABAE8AcgBpAGcAaQBuAGEA
bABGAGkAbABlAG4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfAGIAZAAw
ADkAZQBiADQAOABhADgAZABjADQAZABjADEAOAAwADEAMABjAGYAMgBhADMAMQA0AGIAMQBhAGEA
ZAAuAGQAbABsAAAAAAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAwAC4AMAAu
ADAALgAwAAAAOAAIAAEAQQBzAHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAAADAALgAwAC4A
MAAuADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAMAAAA8DkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA]]></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_bd09eb48a8dc4dc18010cf2a314b1aad</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><connections><connection id="14" name="TraceSource" connectionManagerID="{E48D60AB-F15A-4D0C-A216-DD462EC7021B}" /><connection id="15" name="TraceProfile" connectionManagerID="{E48D60AB-F15A-4D0C-A216-DD462EC7021B}" /></connections><outputs><output id="16" name="Output" hasSideEffects="true"><externalMetadataColumns><externalMetadataColumn id="31" name="EventClass" dataType="nText" /><externalMetadataColumn id="32" name="TextData" dataType="nText" /><externalMetadataColumn id="33" name="ApplicationName" dataType="nText" /><externalMetadataColumn id="34" name="NTUserName" dataType="nText" /><externalMetadataColumn id="35" name="LoginName" dataType="nText" /><externalMetadataColumn id="36" name="CPU" dataType="i4" /><externalMetadataColumn id="37" name="Reads" dataType="i8" /><externalMetadataColumn id="38" name="Writes" dataType="i8" /><externalMetadataColumn id="39" name="Duration" dataType="i8" /><externalMetadataColumn id="40" name="ClientProcessID" dataType="i4" /><externalMetadataColumn id="41" name="SPID" dataType="i4" /><externalMetadataColumn id="42" name="StartTime" dataType="dbTimeStamp" /><externalMetadataColumn id="43" name="EndTime" dataType="dbTimeStamp" /><externalMetadataColumn id="44" name="BinaryData" dataType="bytes" /></externalMetadataColumns></output></outputs></component>