<component id="2" name="Join Column" componentClassID="{874F7595-FB5F-40FF-96AF-FBFF8250E3EF}" description="Executes a custom script." localeId="1033" version="7" contactInfo="Executes a custom script.;Microsoft Corporation;Microsoft SqlServer v9; © 2004 Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;0"><properties><property id="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-2012 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.Text
Imports System.Text.RegularExpressions

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


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub ProcessInput( _
        ByVal InputID As Integer, _
        ByVal Buffer As Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer)

        While Buffer.NextRow()
            Dim groupValue As Object = Buffer(m_groupIndex)

            If TypeOf groupValue Is BlobColumn Then
                groupValue = Buffer.GetString(m_joinIndex)
            End If

            If groupValue Is Nothing Then
                ' Ignore NULL groups.
                Continue While
            End If

            Dim joinValue As Object = Buffer(m_joinIndex)

            If joinValue Is Nothing Then
                joinValue = String.Empty
            End If

            If TypeOf joinValue Is BlobColumn Then
                joinValue = Buffer.GetString(m_joinIndex)
            End If

            If m_currentGroup Is Nothing Then
                ' Init current group.
                m_currentGroup = groupValue
            End If

            If Not m_currentGroup.Equals(groupValue) Then
                ' New group. Setup output record for existing data.
                Call InsertJoinOutput_()
                m_currentGroup = groupValue
            End If

            ' Append join value to group.
            If m_sbJoin.Length > 0 Then
                Call m_sbJoin.Append(m_joinSymbol)
            End If

            Call m_sbJoin.Append(joinValue)
        End While

        If Buffer.EndOfRowset Then
            Call InsertJoinOutput_()
            Call MyBase.OutputBuffer.SetEndOfRowset()
        End If
    End Sub ' ProcessInput


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

        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)

        ' Find group column index.
        m_groupIndex = MyBase.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            input.InputColumnCollection(Me.GroupColumn).LineageID)

        ' Find join column index.
        m_joinIndex = MyBase.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            input.InputColumnCollection(Me.JoinColumn).LineageID)

        ' Get join symbol.
        m_joinSymbol = Regex.Unescape(Me.JoinSymbol)

        m_sbJoin = New StringBuilder()
    End Sub ' PreExecute


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

        Try
            Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
            Dim virtInput As IDTSVirtualInput100 = input.GetVirtualInput()

            If virtInput.VirtualInputColumnCollection.Count > 0 AndAlso _
                String.IsNullOrEmpty(Me.GroupColumn) Then

                Throw New Exception("Select group column.")
            End If

            If virtInput.VirtualInputColumnCollection.Count > 0 AndAlso _
                String.IsNullOrEmpty(Me.JoinColumn) Then

                Throw New Exception("Select join column.")
            End If

            If String.IsNullOrEmpty(Me.JoinSymbol) Then
                Throw New Exception("Specify join symbol.")
            End If

            Dim managedComponent As CManagedComponentWrapper = Me.ComponentMetaData.Instantiate()
            Call input.InputColumnCollection.RemoveAll()

            ' Setup selected group column.
            Dim groupColumn As IDTSInputColumn100 = managedComponent.SetUsageType( _
                input.ID, _
                virtInput, _
                virtInput.VirtualInputColumnCollection(Me.GroupColumn).LineageID, _
                DTSUsageType.UT_READONLY)

            ' Setup selected join column.
            Dim joinColumn As IDTSInputColumn100 = managedComponent.SetUsageType( _
                input.ID, _
                virtInput, _
                virtInput.VirtualInputColumnCollection(Me.JoinColumn).LineageID, _
                DTSUsageType.UT_READONLY)

            ' Setup output columns for group and join column.
            Dim output As IDTSOutput100 = MyBase.ComponentMetaData.OutputCollection(0)
            Dim outColumn As IDTSOutputColumn100

            If output.OutputColumnCollection.Count = 0 Then
                ' Setup group output column.
                outColumn = output.OutputColumnCollection.[New]()
                outColumn.Name = groupColumn.Name

                ' Setup join output column.
                outColumn = output.OutputColumnCollection.[New]()
                outColumn.Name = joinColumn.Name
                Call outColumn.SetDataTypeProperties(DataType.DT_NTEXT, 0, 0, 0, 0)
            End If

            ' Update group output column.
            outColumn = output.OutputColumnCollection(0)
            outColumn.Name = groupColumn.Name
            Call outColumn.SetDataTypeProperties( _
                groupColumn.DataType, _
                groupColumn.Length, _
                groupColumn.Precision, _
                groupColumn.Scale, _
                groupColumn.CodePage)

            ' Update group output column name.
            outColumn = output.OutputColumnCollection(1)
            outColumn.Name = joinColumn.Name
        Catch ex As Exception
            result = False
            errMessage = ex.Message
        End Try

        Validate = result
    End Function    'Validate


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select group column.")> _
    <InputVirtualColumn()> _
    Public Property GroupColumn() As String
        Get
            GroupColumn = m_groupColumn
        End Get
        Set(ByVal value As String)
            m_groupColumn = value
        End Set
    End Property    ' GroupColumn


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select column to join.")> _
    <InputVirtualColumn()> _
    Public Property JoinColumn() As String
        Get
            JoinColumn = m_joinColumn
        End Get
        Set(ByVal value As String)
            m_joinColumn = value
        End Set
    End Property    ' JoinColumn


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specify join symbol.")> _
    Public Property JoinSymbol() As String
        Get
            JoinSymbol = m_joinSymbolRE
        End Get
        Set(ByVal value As String)
            m_joinSymbolRE = value
        End Set
    End Property    ' JoinSymbol
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub InsertJoinOutput_()
        With Me.OutputBuffer
            Call .AddRow()
            .Buffer(0) = m_currentGroup
            .Buffer(1) = m_sbJoin.ToString()
        End With

        m_sbJoin.Length = 0
    End Sub ' InsertJoinOutput_
#End Region ' Internals


#Region "Attributes"
    Private m_groupColumn As String
    Private m_joinColumn As String
    Private m_joinSymbolRE As String

    Private m_groupIndex As Integer
    Private m_joinIndex As Integer
    Private m_joinSymbol As String
    Private m_currentGroup As Object
    Private m_sbJoin As StringBuilder
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class InputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Function NextRow() As Boolean
        NextRow = MyBase.NextRow()
    End Function

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class

<CLSCompliant(False)> _
Public Class 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_253e3764fea64551abc411476fc6e3d8.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>{F6336864-156B-464B-AB64-1002B9C8F17A}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_844bc124bab34b198ac335e4b25a29b7</RootNamespace>
    <AssemblyName>ScriptComponent_844bc124bab34b198ac335e4b25a29b7</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </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.2012, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\110\SDK\Assemblies\CozyRoc.SSISPlus.2012.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="System" />
    <Reference Include="System.Data" />
  </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="" DebugInfoExeName="devenv.exe" DebugInfoCommandLine="/vstaHostDebugUri:&quot;vstadebugd399ad05-0a69-4bec-8dc9-4c2f6cf59111/48fabb51-8e60-4891-9d30-2510b43f1637&quot;" />
        <Host Name="SSIS_SC110" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC110</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>
  <PropertyGroup>
    <OptionCompare>Binary</OptionCompare>
  </PropertyGroup>
  <PropertyGroup>
    <OptionExplicit>On</OptionExplicit>
  </PropertyGroup>
  <PropertyGroup>
    <OptionStrict>On</OptionStrict>
  </PropertyGroup>
</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

    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:NoContent>Reference;Import;Folder</msb:NoContent>
		<msb:ProjectId>{F4E1AFE1-70FD-476C-9D50-3E5C9EB9060D}</msb:ProjectId>
		<msb:DisplayName>ScriptComponent_253e3764fea64551abc411476fc6e3d8</msb:DisplayName>
		<msb:CodeName>ScriptComponent_253e3764fea64551abc411476fc6e3d8</msb:CodeName>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Folder Include="My Project\"/>
		<msb:File Include="ScriptMain.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:Project Include="ScriptComponent_253e3764fea64551abc411476fc6e3d8.vbproj"/>
	</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_844bc124bab34b198ac335e4b25a29b7.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
RAAAADwbAABUBAAAI0Jsb2IAAAAAAAAAAgAAAVcVogkJDgAAAPolMwAWAAABAAAAOQAAAAwAAAAT
AAAAMAAAAB8AAABhAAAANAAAABoAAAAFAAAADAAAAA8AAAAJAAAAAQAAAAgAAAACAAAAAwAAAAIA
AAAAAGAOAQAAAAAACgBMASIBCgCAAWIBBgCQAYkBCgDoASIBBgBmAokBCgDoAr4CDgA6AyMDEgCJ
A2gDFgC6A2gDEgDJA2gDDgCDBCMDBgBcBlAGGgCrBpUGGgDEBpUGGgDxBtkGBgAbBwgHCgBaBzMH
CgByBxMAGgCnB4oHBgDcB7wHBgD6B4kBBgAeCIkBCgA3CBMABgCFCGYIBgCZCIkBEgCgCGgDBgCt
CIkBHgAQCecIHgA/CecIHgBqCecIFgCjCWgDBgDQCYkBFgDWCWgDHgD6CecIHgAsCucIHgBjCucI
GgC5CpoKHgDICucIHgDhCucIHgD1CucIHgADC+cIBgAXC4kBHgAxC+cIHgCkC+cIHgC+C+cIHgDZ
C+cIHgDzC+cIHgAgDOcIIgC6DJIMCgALDTMHEgBZDWgDDgCiDYANDgC+DYANGgDaDZUGBgDvDbwH
BgAPDrwHBgBHDi0OAAAAAAEAAAAAAAEAAQAAAAAAKQA3AAUAAQABAAAAAABrADcACQABAAIAAAEQ
AHYANwANAAEAAwAFAQAAgAAAAA0ABQAIAAUBAACOAAAADQAFAA8AAQAAAKkAtQAdAAYAEQABAAAA
5gC1AB0ABgAWAAEAAADzALUALQAGABwAAQAAAAEBtQANAAoAJAABAAAADQG1AA0ACwAlAAEAAAAX
AbUAJAAMACYAMQCrASAAMQDUAS0AMQD2AToAMQAbAkcAIQD3ApAABgABAckABgANAc0ABgDmANEA
AQCXBNUAAQBOBfQAAQBOBfQAAQDxBRABAQD/BRABAQAMBhABAQAbBtUAAQAoBtUAAQA0BhABAQBB
BhMBAQBqBhYBUCAAAAAABhhcARMAAQBYIAAAAAAGGFwBEwABAGAgAAAAABEYlwEXAAEAjCAAAAAA
EwieARsAAQCkIAAAAAATCMQBKAABALwgAAAAABMI7QE1AAEA1CAAAAAAEwgLAkIAAQDsIAAAAABG
AlECYwABAAghAAAAAEYCWgJoAAIAHCEAAAAAgwBrAmwAAgA0IQAAAABGAnMCcQACAEghAAAAABEA
fAJ4AAIAZCEAAAAAAQCaAoAAAwCAIQAAAAAGGFwBEwAEAIghAAAAAAMIrgKLAAQAvCEAAAAABhhc
ARMABADQIQAAAAAGGFwBrwAEAOAhAAAAAEYKAwS7AAkA9CEAAAAARgoaBLsACQAIIgAAAACGADIE
wAAJACAiAAAAAIYAOgTAAAkAOCIAAAAABhhcAa8ACQBIIgAAAABGCgMEuwAOAFwiAAAAAEYKGgS7
AA4AcCIAAAAAhgBtBBMADgB4IgAAAACGAHQEEwAOAIAiAAAAAIYAOgTAAA4AmCIAAAAABhhcARMA
DgDAIgAAAABGAqYE2AAOACgjAAAAAEYDxQQTABIALCMAAAAAAQDTBBMAEgBIIwAAAABGAucE4gAS
AJQjAAAAAEYDDQUTABYAmCMAAAAARgMhBe4AFgCsIwAAAABGAzQF7gAXALAjAAAAAAYYXAH4ABgA
wCMAAAAABhhcAfgAGQDQIwAAAAAGGFwBEwAaANgjAAAAAEYCpgT+ABoA2CQAAAAARgJeBRMAHACE
JQAAAAAGAGkFBQEcAJQnAAAAAAYIfQVxAB0ArCcAAAAABgiNBQsBHQC4JwAAAAAGCKMFcQAeANAn
AAAAAAYIsgULAR4A3CcAAAAABgjBBXEAHwD0JwAAAAAGCNAFCwEfAAAoAAAAAAEA3wUTACAAAAAB
AFgCAAABAJECAAABAJECAAABANcDAAACAOEDAAADAOoDAAAEAPIDAAAFAPkDAAABANcDAAACAOED
AAADAOoDAAAEAPIDAAAFAPkDAAABALMEAAACALsEAAADAPIDAAAEAPkDAAABAPMEAAACAPsEAAAD
AAUFAAAEAPkDAAABAPIDAAABAEoFAAABANcDAAABANcDAAABALMEAAACAPIDAAABAHIFAAABAJ0F
AAABAJ0FAAABAJ0FCQBcARMAaQBcAR4BeQBcAS0BEQBcARMAgQBcARMAJABcARMALABcARMANABc
ARMAPABcARMAJACuAosALACuAosANACuAosAPACuAosAiQBcARMAkQBcARMAmQBcAQsBoQDrB8cB
GQBRAmMAGQBaAmgAKQAMCNQBGQBzAnEAsQAoCOQBGQBcARMAuQBcAfQBRAD3ApAATABSCIsATABc
CHECTABcARMAwQBcAYACOQBcAa8A0QAyBMAA0QA6BMAA2QBcAYAC0QBtBBMA0QB0BBMAWQBcARMA
QQApCZAC4QBWCZUC6QB3CZoC8QCACWgASQCHCcAAQQCXCaACSQB3CawCSQCuCbECyQC4CRABYQC+
CWgAYQDJCbYCYQDJCbwCSQAyBMAAQQBeBRMAWQDoCccCCQEPCs0C8QAhCmgA8QBJCtMCGQF3CdkC
IQF2CmgAEQGECuACKQG/CuYCYQBcARMA8QAhC/ACSQFVC/YCWQF2C2gAyQCAC/wCUQFcAQsB4QCO
CwEDGQGaCxMAWQF3CQcDYQF2CmgAaQHmCw4D4QALDBwDeQF3CSIDQQE+DCkDgQF2C2gAgQFZDC8D
IQFdDHEAOQFmDAsBOQHDDDUDgQF3CUADIQHZDEcDIQG+CWgAIQHmDGgAIQH0DGgAIQH+DGgAkQEX
DU0DUQEnDXEAkQEzDRcAOQAhCnADSQBFDXUDYQBzAnEAYQBODXsDmQFcARMAoQFcAQsBqQFcARMA
sQFcAQsBuQFcAXsDwQFcARMAyQFcAQsBKQCDAJUBLgALAwsELgD7AuMDLgADA+wDQAArAEwBQAAT
ACQBQwATACQBQwAbADMBSQCDAIEBYwATACQBYwAbADMBaQCDAKYBgAArAEwBgwBzAEwBgwAbADMB
gwB7AEwBiQCDALMBoAArAEwBowDDAPwBowATACQBwAArAEwBwwATACQBwwDrAIUC4AArAEwB4wAL
AYUCAAETACQBAAErAEwBAwELAYUCIAErAEwBIAETACQBIwELAYUCQAETACQBQAErAEwBSQHrAkwB
SQHzApMDYAErAEwBYAETACQBaQHzAq0DaQHrAkwBgAErAEwBgwHjAoUDgwHbAkwBgwELAYUCiQHz
AskDoAErAEwBwAETACQBwAErAEwB4AErAEwBAAIrAEwBAAITACQBgAQLAYUCoAQLAYUCbQFyAXcB
fAHMAdAB2wHgAe8B7wF3AosCiwLMAcwBiwKLAswBpwLCAusCVAPgAeAB4AGAAwQAAQAGAAUABwAG
AAgACAAMAAoAAACAAU8AAAA5AlQAAADoAVkAAABFAl4AAAABA5gAAABGBMQAAABZBMQAAABGBMQA
AABZBMQAAABzBhoBAAB/BhoBAACKBhoBAgAEAAMAAgAFAAUAAgAGAAcAAgAHAAkAAgAPAAsAAgAS
AA0AAgATAA8AAgAXABEAAgAYABMAAgAqABUAAQArABUAAgAsABcAAQAtABcAAgAuABkAAQAvABkA
dQB1AIgAUQFYAV8BZgFeAmUCBIAAAAAAAAAAAAAAAAAAAAAAtQAAAAQAAAAAAAAAAAAAAAEACgAA
AAAACgAAAAAAAAAAAAAACgATAAAAAAABAAAAAAAAAAAAAACdAA0DAAAAAAsAAAAAAAAAAAAAAKYA
SwMAAAAACwAAAAAAAAAAAAAApgCZAwAAAAAEAAAAAAAAAAAAAAABAIkBAAAAAAsAAAAAAAAAAAAA
AKYAwwgAAAAACwAAAAAAAAAAAAAApgBvDAAAAAAFAAQABgAEAAAAEAAMAI8CAAAQABkAjwIAAAAA
GwCPAi0A6gEtAGwCAAAAAAA8TW9kdWxlPgBtc2NvcmxpYgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMA
TXlBcHBsaWNhdGlvbgBTY3JpcHRDb21wb25lbnRfODQ0YmMxMjRiYWIzNGIxOThhYzMzNWU0YjI1
YTI5YjcuTXkATXlDb21wdXRlcgBNeVByb2plY3QATXlXZWJTZXJ2aWNlcwBUaHJlYWRTYWZlT2Jq
ZWN0UHJvdmlkZXJgMQBJbnB1dEJ1ZmZlcgBTY3JpcHRDb21wb25lbnRfODQ0YmMxMjRiYWIzNGIx
OThhYzMzNWU0YjI1YTI5YjcAT3V0cHV0QnVmZmVyAFVzZXJDb21wb25lbnQAQ29ubmVjdGlvbnMA
VmFyaWFibGVzAFNjcmlwdE1haW4ATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkFwcGxpY2F0aW9uU2Vy
dmljZXMAQXBwbGljYXRpb25CYXNlAC5jdG9yAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5EZXZpY2Vz
AENvbXB1dGVyAFN5c3RlbQBPYmplY3QALmNjdG9yAGdldF9Db21wdXRlcgBtX0NvbXB1dGVyT2Jq
ZWN0UHJvdmlkZXIAZ2V0X0FwcGxpY2F0aW9uAG1fQXBwT2JqZWN0UHJvdmlkZXIAVXNlcgBnZXRf
VXNlcgBtX1VzZXJPYmplY3RQcm92aWRlcgBnZXRfV2ViU2VydmljZXMAbV9NeVdlYlNlcnZpY2Vz
T2JqZWN0UHJvdmlkZXIAQXBwbGljYXRpb24AV2ViU2VydmljZXMARXF1YWxzAG8AR2V0SGFzaENv
ZGUAVHlwZQBHZXRUeXBlAFRvU3RyaW5nAENyZWF0ZV9fSW5zdGFuY2VfXwBUAGluc3RhbmNlAERp
c3Bvc2VfX0luc3RhbmNlX18AZ2V0X0dldEluc3RhbmNlAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5N
eVNlcnZpY2VzLkludGVybmFsAENvbnRleHRWYWx1ZWAxAG1fQ29udGV4dABHZXRJbnN0YW5jZQBD
b3p5Um9jLlNTSVNQbHVzLjIwMTIAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJUwBTY3JpcHRCdWZmZXJQ
bHVzAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3JpcHQATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMu
UGlwZWxpbmUAU2NyaXB0Q29tcG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuUGlwZWxpbmVIb3N0
AFBpcGVsaW5lQnVmZmVyAE91dHB1dE5hbWVNYXAAQ29tcG9uZW50AE9iamVjdElEAElzSW5wdXQA
QnVmZmVyAE91dHB1dE1hcABnZXRfU3RhdGljSW5wdXRDb2x1bW5zAGdldF9TdGF0aWNPdXRwdXRD
b2x1bW5zAE5leHRSb3cARW5kT2ZSb3dzZXQAU3RhdGljSW5wdXRDb2x1bW5zAFN0YXRpY091dHB1
dENvbHVtbnMAQWRkUm93AFNldEVuZE9mUm93c2V0AFNjcmlwdENvbXBvbmVudFBsdXMASW5wdXRz
RmluaXNoZWQAUHJvY2Vzc0lucHV0AElucHV0SUQASW5wdXROYW1lAEZpbmlzaE91dHB1dHMATWFy
a091dHB1dHNGaW5pc2hlZABQcmltZU91dHB1dABPdXRwdXRzAE91dHB1dElEcwBCdWZmZXJzAENy
ZWF0ZU5ld091dHB1dFJvd3MASW5wdXRfUHJvY2Vzc0lucHV0AElucHV0X1Byb2Nlc3NJbnB1dFJv
dwBSb3cAUGFyZW50Q29tcG9uZW50AFByZUV4ZWN1dGUAVmFsaWRhdGUAZXJyTWVzc2FnZQBnZXRf
R3JvdXBDb2x1bW4Ac2V0X0dyb3VwQ29sdW1uAHZhbHVlAGdldF9Kb2luQ29sdW1uAHNldF9Kb2lu
Q29sdW1uAGdldF9Kb2luU3ltYm9sAHNldF9Kb2luU3ltYm9sAEluc2VydEpvaW5PdXRwdXRfAG1f
Z3JvdXBDb2x1bW4AbV9qb2luQ29sdW1uAG1fam9pblN5bWJvbFJFAG1fZ3JvdXBJbmRleABtX2pv
aW5JbmRleABtX2pvaW5TeW1ib2wAbV9jdXJyZW50R3JvdXAAU3lzdGVtLlRleHQAU3RyaW5nQnVp
bGRlcgBtX3NiSm9pbgBHcm91cENvbHVtbgBKb2luQ29sdW1uAEpvaW5TeW1ib2wAU3lzdGVtLkNv
bXBvbmVudE1vZGVsAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93c2FibGVTdGF0
ZQBTeXN0ZW0uQ29kZURvbS5Db21waWxlcgBHZW5lcmF0ZWRDb2RlQXR0cmlidXRlAFN5c3RlbS5E
aWFnbm9zdGljcwBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0ZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMu
Q29tcGlsZXJTZXJ2aWNlcwBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9kdWxlTmFtZUF0
dHJpYnV0ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduAEhlbHBLZXl3b3JkQXR0cmlidXRl
AFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMAUnVudGltZUhlbHBlcnMAR2V0T2JqZWN0
VmFsdWUAUnVudGltZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAQWN0aXZhdG9yAENyZWF0
ZUluc3RhbmNlAE15R3JvdXBDb2xsZWN0aW9uQXR0cmlidXRlAGdldF9WYWx1ZQBzZXRfVmFsdWUA
U3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzAENvbVZpc2libGVBdHRyaWJ1dGUAU3RyaW5n
AFNjcmlwdEJ1ZmZlcgBDTFNDb21wbGlhbnRBdHRyaWJ1dGUATWljcm9zb2Z0LlNxbFNlcnZlci5E
VFNQaXBlbGluZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUuV3JhcHBlcgBJ
RFRTQ29tcG9uZW50TWV0YURhdGExMDAAZ2V0X0NvbXBvbmVudE1ldGFEYXRhAElEVFNJbnB1dENv
bGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29sbGVjdGlvbgBJRFRTSW5wdXQxMDAAZ2V0X0l0ZW0AZ2V0
X0lEAGdldF9FbmRPZlJvd3NldABHZXRPdXRwdXRJRABCbG9iQ29sdW1uAEdldFN0cmluZwBFbXB0
eQBnZXRfTGVuZ3RoAEFwcGVuZABJbnQzMgBQaXBlbGluZUNvbXBvbmVudABnZXRfSG9zdENvbXBv
bmVudABJRFRTQnVmZmVyTWFuYWdlcjEwMABnZXRfQnVmZmVyTWFuYWdlcgBnZXRfQnVmZmVyAElE
VFNJbnB1dENvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29sdW1uQ29sbGVjdGlvbgBJRFRT
SW5wdXRDb2x1bW4xMDAAZ2V0X0xpbmVhZ2VJRABGaW5kQ29sdW1uQnlMaW5lYWdlSUQAU3lzdGVt
LlRleHQuUmVndWxhckV4cHJlc3Npb25zAFJlZ2V4AFVuZXNjYXBlAENNYW5hZ2VkQ29tcG9uZW50
V3JhcHBlcgBJRFRTT3V0cHV0Q29sdW1uMTAwAElEVFNPdXRwdXQxMDAASURUU1ZpcnR1YWxJbnB1
dDEwMABFeGNlcHRpb24AR2V0VmlydHVhbElucHV0AElEVFNWaXJ0dWFsSW5wdXRDb2x1bW5Db2xs
ZWN0aW9uMTAwAGdldF9WaXJ0dWFsSW5wdXRDb2x1bW5Db2xsZWN0aW9uAGdldF9Db3VudABJc051
bGxPckVtcHR5AEluc3RhbnRpYXRlAFJlbW92ZUFsbABJRFRTVmlydHVhbElucHV0Q29sdW1uMTAw
AElEVFNEZXNpZ250aW1lQ29tcG9uZW50MTAwAERUU1VzYWdlVHlwZQBTZXRVc2FnZVR5cGUASURU
U091dHB1dENvbGxlY3Rpb24xMDAAZ2V0X091dHB1dENvbGxlY3Rpb24ASURUU091dHB1dENvbHVt
bkNvbGxlY3Rpb24xMDAAZ2V0X091dHB1dENvbHVtbkNvbGxlY3Rpb24ATmV3AGdldF9OYW1lAHNl
dF9OYW1lAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRFRTUnVudGltZVdyYXAATWljcm9zb2Z0LlNxbFNl
cnZlci5EdHMuUnVudGltZS5XcmFwcGVyAERhdGFUeXBlAFNldERhdGFUeXBlUHJvcGVydGllcwBn
ZXRfRGF0YVR5cGUAZ2V0X1ByZWNpc2lvbgBnZXRfU2NhbGUAZ2V0X0NvZGVQYWdlAFByb2plY3RE
YXRhAFNldFByb2plY3RFcnJvcgBnZXRfTWVzc2FnZQBDbGVhclByb2plY3RFcnJvcgBzZXRfSXRl
bQBzZXRfTGVuZ3RoAFNTSVNTY3JpcHRDb21wb25lbnRFbnRyeVBvaW50QXR0cmlidXRlAENvenlS
b2MuU3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBWYWxpZGF0ZVByb3BlcnRpZXNBdHRyaWJ1dGUA
SW5wdXRWaXJ0dWFsQ29sdW1uQXR0cmlidXRlAERlc2NyaXB0aW9uQXR0cmlidXRlAENvbXBpbGF0
aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAU3lz
dGVtLlJ1bnRpbWUuVmVyc2lvbmluZwBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUAU2NyaXB0Q29t
cG9uZW50Xzg0NGJjMTI0YmFiMzRiMTk4YWMzMzVlNGIyNWEyOWI3LmRsbAAAAAAAC0kAbgBwAHUA
dAAADU8AdQB0AHAAdQB0AAApUwBlAGwAZQBjAHQAIABnAHIAbwB1AHAAIABjAG8AbAB1AG0AbgAu
AAAnUwBlAGwAZQBjAHQAIABqAG8AaQBuACAAYwBvAGwAdQBtAG4ALgAAKVMAcABlAGMAaQBmAHkA
IABqAG8AaQBuACAAcwB5AG0AYgBvAGwALgAAAFQenX1olBxNuFUy0H+tZNoACLd6XFYZNOCJCLA/
X38R1Qo6AyAAAQMAAAEEAAASDAcGFRIYARIMBAAAEggHBhUSGAESCAQAABIRBwYVEhgBEhEEAAAS
FAcGFRIYARIUBAgAEgwECAASCAQIABIRBAgAEhQEIAECHAMgAAgEIAASFQMgAA4CHgAHEAEBHgAe
AAcwAQEBEB4AAhMABCAAEwAHBhUSGQETAAQoABMACBbPSQu4DDTqCImEXc2AgMyRCyAFARIhCAIS
JRIpBCAAHQ4DIAACBCgAHQ4DBhIoAwYSLAMGEiACBggJIAQBCA4SJRIpCyAEAQgdCB0SJRIpBSAB
ARIcAwYSIQUgAQESIQYgAgEIEiUFIAECEA4EIAEBDgIGDgIGHAMGEjEDKAAOBSABARE5CAEAAQAA
AAAABSACAQ4OGAEACk15VGVtcGxhdGUIMTAuMC4wLjAAAAQBAAAABhUSGAESDAYVEhgBEggGFRIY
ARIRBhUSGAESFAQHARIMBAcBEggEBwESEQQHARIUEwEADk15LkFwcGxpY2F0aW9uAAAQAQALTXku
Q29tcHV0ZXIAAAwBAAdNeS5Vc2VyAAATAQAOTXkuV2ViU2VydmljZXMAAAQAARwcAwcBAgMHAQgG
AAESFRFVBAcBEhUDBwEOBRABAB4ABAoBHgAEBwEeAAcgBAEODg4OYQEANFN5c3RlbS5XZWIuU2Vy
dmljZXMuUHJvdG9jb2xzLlNvYXBIdHRwQ2xpZW50UHJvdG9jb2wSQ3JlYXRlX19JbnN0YW5jZV9f
E0Rpc3Bvc2VfX0luc3RhbmNlX18AAAAGFRIYARMABhUSGQETAAQKARMABSABARMACAcDEwATABMA
BCABAQIFAQAAAAAEBwEdDgQgABJxBCAAEnUFIAESeRwGAAIIEikOBAcCCAgEIAEcCAQgAQ4IBSAB
EjEOBSABEjEcBAcCHBwFIAASgIUFIAASgIkFIAASgI0GIAESgJEcBSACCAgIBAABDg4EBwESeQUg
ABKApQUgABKArQQAAQIOBSAAEoCZBiABEoCxHA0gBBKAkQgSgKUIEYC5BSAAEoC9BiABEoChHAUg
ABKAwQUgABKAnQogBQERgMUICAgIBiABEoCdHAUgABGAxQYAAQESgKkbBwoCAhKAkRJ5EoCREoCZ
EoCdEoChEoClEoCpBCAAEiUFIAIBCBwEIAEBCAQHARIgDQEACFZhbGlkYXRlAAAZAQAUU2VsZWN0
IGdyb3VwIGNvbHVtbi4AABsBABZTZWxlY3QgY29sdW1uIHRvIGpvaW4uAAAZAQAUU3BlY2lmeSBq
b2luIHN5bWJvbC4AAAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlvblRocm93cwFHAQAa
Lk5FVEZyYW1ld29yayxWZXJzaW9uPXY0LjABAFQOFEZyYW1ld29ya0Rpc3BsYXlOYW1lEC5ORVQg
RnJhbWV3b3JrIDQAEEgAAAAAAAAAAAAALkgAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBIAAAA
AAAAAAAAAAAAAAAAAF9Db3JEbGxNYWluAG1zY29yZWUuZGxsAAAAAAD/JQAgQAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgA
AIAAAAAAAAAAAAAAAAAAAAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYYAAA7AIA
AAAAAAAAAAAA7AI0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEA
AAAAAAAAAAAAAAAAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBG
AGkAbABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBEwC
AAABAFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAACgCAAABADAAMAAwADAAMAA0AGIAMAAA
ACwAAgABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAAAgAAAAMAAIAAEARgBpAGwA
ZQBWAGUAcgBzAGkAbwBuAAAAAAAwAC4AMAAuADAALgAwAAAAjAA1AAEASQBuAHQAZQByAG4AYQBs
AE4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADgANAA0AGIAYwAxADIA
NABiAGEAYgAzADQAYgAxADkAOABhAGMAMwAzADUAZQA0AGIAMgA1AGEAMgA5AGIANwAuAGQAbABs
AAAAAAAoAAIAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAAAgAAAAlAA1AAEATwByAGkA
ZwBpAG4AYQBsAEYAaQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0
AF8AOAA0ADQAYgBjADEAMgA0AGIAYQBiADMANABiADEAOQA4AGEAYwAzADMANQBlADQAYgAyADUA
YQAyADkAYgA3AC4AZABsAGwAAAAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAA
ADAALgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAA
MAAuADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAABAOAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=]]></arrayElement></arrayElements></property><property id="9" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2012, 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_253e3764fea64551abc411476fc6e3d8</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=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property></properties><inputs><input id="14" name="Input" hasSideEffects="true"><externalMetadataColumns /></input></inputs><outputs><output id="17" name="Output" hasSideEffects="true"><externalMetadataColumns /></output></outputs></component>