<component id="2" name="Oracle Destination" 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="30"><arrayElement dataType="System.String"><![CDATA[My Project\Settings.Designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On



Partial Friend NotInheritable Class MySettings
    Inherits System.Configuration.ApplicationSettingsBase

    Private Shared m_Value As MySettings

    Private Shared m_SyncObject As Object = New Object

    <System.Diagnostics.DebuggerNonUserCode()> _
    Public Shared ReadOnly Property Value() As MySettings
        Get
            If (MySettings.m_Value Is Nothing) Then
                System.Threading.Monitor.Enter(MySettings.m_SyncObject)
                If (MySettings.m_Value Is Nothing) Then
                    Try
                        MySettings.m_Value = New MySettings
                    Finally
                        System.Threading.Monitor.Exit(MySettings.m_SyncObject)
                    End Try
                End If
            End If
            Return MySettings.m_Value
        End Get
    End Property
End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\AssemblyInfo.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices

' General Information about an assembly is controlled through the following 
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.

' Review the values of the assembly attributes

<Assembly: AssemblyTitle("ScriptComponent_e8c6f2cbccf645ae862b6dbf4ea8a3d9.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_e8c6f2cbccf645ae862b6dbf4ea8a3d9.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2013")> 
<Assembly: AssemblyTrademark("")> 
<Assembly: CLSCompliant(True)> 

<Assembly: ComVisible(False)> 

'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("eb0f77bf-f704-4eab-9f47-fa00eeb72583")> 

' Version information for an assembly consists of the following four values:
'
'      Major Version
'      Minor Version 
'      Build Number
'      Revision
'
' You can specify all the values or you can default the Build and Revision Numbers 
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>

<Assembly: AssemblyVersion("1.0.0.0")> 
<Assembly: AssemblyFileVersion("1.0.0.0")> 
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ComponentWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public 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

    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

    Public ReadOnly Property Oracle() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("Oracle").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[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
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[scriptcomponent_e8c6f2cbccf645ae862b6dbf4ea8a3d9.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-16"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- This section defines project-level properties.

       Configuration - Specifies whether the default configuration is Release or Debug.
       Platform - Specifies what CPU the output of this project can run on.
       OutputType - Must be "Library" for VSTA.
       NoStandardLibraries - Set to "false" for VSTA.
       RootNamespace - In C#, this specifies the namespace given to new files.
                       In Visual Basic, all objects are wrapped in this namespace at runtime.
       AssemblyName - Name of the output assembly.
  -->
  <PropertyGroup>
    <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <OutputType>Library</OutputType>
    <RootNamespace>ScriptComponent_e8c6f2cbccf645ae862b6dbf4ea8a3d9.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_e8c6f2cbccf645ae862b6dbf4ea8a3d9.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{49FAD560-564D-4C21-8DED-1C321661CCFD}</ProjectGuid>
  </PropertyGroup>
  <!-- This section defines properties that are set when the "Debug" configuration is
       selected.

       DebugSymbols - If true, create symbols (.pdb). If false, do not create symbols.
       Optimize - If true, optimize the build output. If false, do not optimize.
       OutputPath - Output path of the project relative to the project file.
       EnableUnmanagedDebugging - If true, starting the debugger will attach both managed and unmanaged debuggers.
       DefineConstants - Constants defined for the preprocessor.
       Warning Level - Warning level for the compiler.
  -->
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DefineConstants>
    </DefineConstants>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <DebugSymbols>true</DebugSymbols>
    <Optimize>false</Optimize>
    <OutputPath>bin\</OutputPath>
    <RegisterForComInterop>false</RegisterForComInterop>
    <RemoveIntegerChecks>false</RemoveIntegerChecks>
    <NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
  </PropertyGroup>
  <!-- This section defines properties that are set when the "Release" configuration is
       selected.

       DebugSymbols - If true, create symbols (.pdb). If false, do not create symbols.
       Optimize - If true, optimize the build output. If false, do not optimize.
       OutputPath - Output path of the project relative to the project file.
       EnableUnmanagedDebugging - If true, starting the debugger will attach both managed and unmanaged debuggers.
       DefineConstants - Constants defined for the preprocessor.
       Warning Level - Warning level for the compiler.
  -->
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DefineConstants>
    </DefineConstants>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <RegisterForComInterop>false</RegisterForComInterop>
    <RemoveIntegerChecks>false</RemoveIntegerChecks>
    <NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
  </PropertyGroup>
  <!-- This section enables pre- and post-build steps. However,
       it is recommended that MSBuild tasks be used instead of these properties.
  -->
  <PropertyGroup>
    <PreBuildEvent>
    </PreBuildEvent>
    <PostBuildEvent>
    </PostBuildEvent>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="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="Microsoft.SqlServer.ManagedDTS, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.ManagedDTS\v4.0_11.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.ManagedDTS.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
  </ItemGroup>
  <!-- Visual Basic supports Importing namespaces (equivalent to using statements in C#).-->
  <ItemGroup>
    <Import Include="Microsoft.VisualBasic" />
    <Import Include="System" />
    <Import Include="System.Collections" />
    <Import Include="System.Data" />
    <Import Include="System.Diagnostics" />
    <Import Include="System.Windows.Forms" />
  </ItemGroup>
  <!-- This section defines the user source files that are part of the
       project.

       Compile - Specifies a source file to compile.
       EmbeddedResource - Specifies a .resx file for embedded resources.
       None - Specifies a file that is not to be passed to the compiler (for instance,
              a text file or XML file).
       AppDesigner - Specifies the directory where the application properties files can
                     be found.
  -->
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
    <Compile Include="main.vb" />
    <Compile Include="My Project\AssemblyInfo.vb">
      <SubType>Code</SubType>
    </Compile>
    <EmbeddedResource Include="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
    </EmbeddedResource>
    <Compile Include="My Project\Resources.Designer.vb">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <None Include="My Project\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.vb</LastGenOutput>
    </None>
    <Compile Include="My Project\Settings.Designer.vb">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <!-- Include the default configuration information and metadata files for the add-in.
         These files are copied to the build output directory when the project is
         built, and the path to the configuration file is passed to add-in on the command
         line when debugging.
    -->
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{30D016F9-3734-4E33-A861-5E7D899E18F3}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{B3A685AA-7EAF-4BC6-9940-57959FA5AC07}" ApplicationType="usd" Language="vb" TemplatesPath="" DebugInfoExeName="devenv.exe" DebugInfoCommandLine="/vstaHostDebugUri:&quot;vstadebug1b9398ba-56b8-4e07-86db-4d658facb53c/23de5321-29f9-449e-9087-4d6e4c01e4e8&quot;" />
        <Host Name="SSIS_ScriptComponent" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC110</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <PropertyGroup>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
  </PropertyGroup>
  <PropertyGroup>
    <TargetFrameworkProfile>
    </TargetFrameworkProfile>
  </PropertyGroup>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[main.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' CozyRoc SQL Server Integration Services user script component
'
' Copyright (c) 2006-2013 CozyRoc LLC
' 
' Permission is hereby granted, free of charge, to any person
' obtaining a copy of this software and associated documentation
' files (the "Software"), to deal in the Software without
' restriction, including without limitation the rights to use,
' copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following
' conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' OTHER DEALINGS IN THE SOFTWARE.

' The following resources were used as a reference:
' http://blog.jun.bz/2008/07/super-fast-ssis-oracle-loader.html

Imports System
Imports System.ComponentModel
Imports System.Collections
Imports System.Data
Imports System.Data.Common
Imports System.Reflection
Imports System.IO

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


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<ColumnMappings()> _
<SortProperties(New String() { _
    "Connection", "BatchSize", "Timeout", _
    "IsTableVariable", "Table", "TableVariable"})> _
<FilterProperties("GetProperties")> _
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    Private Const OracleTypeProperty As String = "OracleType"


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Dim colsCount As Integer = m_inputIndexes.Length
        For colIndex As Integer = 0 To colsCount - 1
            Dim bufIndex As Integer = m_inputIndexes(colIndex)
            Dim param As DbParameter = m_command.Parameters.Item(colIndex)
            Dim value As Object = Nothing

            If Not Row.Buffer.IsNull(bufIndex) Then
                value = Row.Buffer(bufIndex)

                Select Case param.DbType
                    Case DbType.Object
                        ' Blob columns need special handling.
                        value = GetOracleBlob_(CType(value, BlobColumn))
                End Select
            End If

            Dim buffer() As Object = CType(param.Value, Object())
            buffer(m_currentRow) = value
        Next

        m_currentRow += 1

        If m_currentRow = Me.BatchSize Then
            ' Time to send current batch of data.
            Try
                Call m_command.ExecuteNonQuery()
            Catch ex As Exception
                Call FireError_(ex.Message)
            End Try

            m_currentRow = 0
        End If
    End Sub ' Input_ProcessInputRow


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

        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
        Dim colsCount As Integer = input.InputColumnCollection.Count

        ' Setup dynamic input columns indexes.
        m_inputIndexes = New Integer(colsCount - 1) {}
        For colIndex As Integer = 0 To colsCount - 1
            m_inputIndexes(colIndex) = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                input.Buffer, _
                input.InputColumnCollection(colIndex).LineageID)
        Next

        ' Setup Oracle command.
        Call m_command.GetType().InvokeMember( _
            "BindByName", _
            BindingFlags.SetProperty Or BindingFlags.Public Or BindingFlags.Instance, _
            Nothing, _
            m_command, _
            New Object() {True})
        Call m_command.GetType().InvokeMember( _
            "ArrayBindCount", _
            BindingFlags.SetProperty Or BindingFlags.Public Or BindingFlags.Instance, _
            Nothing, _
            m_command, _
            New Object() {Me.BatchSize})
        m_command.CommandTimeout = Me.Timeout
        m_command.CommandType = CommandType.Text

        ' Setup command parameters.
        Dim colsList As String = String.Empty
        Dim paramsList As String = String.Empty
        For colIndex As Integer = 0 To colsCount - 1
            Dim extCol As IDTSExternalMetadataColumn100 = input.ExternalMetadataColumnCollection.GetObjectByID( _
                input.InputColumnCollection(colIndex).ExternalMetadataColumnID)

            If Not String.IsNullOrEmpty(colsList) Then
                colsList += ", "
                paramsList += ", "
            End If

            colsList += String.Format("""{0}""", extCol.Name)
            paramsList += String.Format(":{0}", extCol.Name)

            Dim parameter As DbParameter = m_command.CreateParameter()
            parameter.ParameterName = extCol.Name

            Dim paramType As Type = parameter.GetType()
            Call paramType.InvokeMember( _
                "OracleDbType", _
                BindingFlags.SetProperty Or BindingFlags.Public Or BindingFlags.Instance, _
                Nothing, _
                parameter, _
                New Object() {System.Enum.Parse( _
                    paramType.GetProperty("OracleDbType").PropertyType, _
                    extCol.CustomPropertyCollection(OracleTypeProperty).Value.ToString())})

            parameter.Value = New Object(Me.BatchSize) {}
            parameter.Direction = ParameterDirection.Input

            Call m_command.Parameters.Add(parameter)
        Next

        Dim destTable As String = Me.Table
        If Me.IsTableVariable Then
            ' Destination table is contained in variable.
            destTable = CStr(GetVariable_(Me.TableVariable))
        End If

        If String.IsNullOrEmpty(destTable) Then
            Throw New Exception("Destination table not specified. Check package protection level.")
        End If

        ' Setup command statement.
        m_command.CommandText = String.Format( _
            "INSERT INTO {0} ( {1} ) VALUES ( {2} )", _
            destTable, _
            colsList, _
            paramsList)

        m_currentRow = 0

        ' Setup OracleClob constructor.
        Dim clobType As Type = Type.GetType( _
            "Oracle.DataAccess.Types.OracleClob, " + _
            m_command.Connection.GetType().Assembly.FullName)
        m_clobCI = clobType.GetConstructor(New Type() {m_command.Connection.GetType()})

        ' Setup OracleBlob constructor.
        Dim blobType As Type = Type.GetType( _
            "Oracle.DataAccess.Types.OracleBlob, " + _
            m_command.Connection.GetType().Assembly.FullName)
        m_blobCI = blobType.GetConstructor(New Type() {Connection.GetType()})
    End Sub ' PreExecute


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

        If m_currentRow > 0 Then
            Call m_command.GetType().InvokeMember( _
                "ArrayBindCount", _
                BindingFlags.SetProperty Or BindingFlags.Public Or BindingFlags.Instance, _
                Nothing, _
                m_command, _
                New Object() {m_currentRow})
            Call m_command.ExecuteNonQuery()
            m_currentRow = 0
        End If
    End Sub ' PostExecute


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub AcquireConnections(ByVal Transaction As Object)
        Call MyBase.AcquireConnections(Transaction)

        ' Setup command.
        Dim conn As DbConnection = CType( _
            Me.Connections.Oracle.AcquireConnection(Transaction), _
            DbConnection)
        m_command = conn.CreateCommand()
    End Sub ' AcquireConnections


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

        If Not m_command Is Nothing Then
            ' Dispose command and connection.
            Dim conn As DbConnection = m_command.Connection
            Call m_command.Dispose()
            Call conn.Dispose()
            m_command = Nothing
        End If
    End Sub ' ReleaseConnections


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

        Call result.Add("Connection")
        Call result.Add("IsTableVariable")
        Call result.Add(IIf(Me.IsTableVariable, "TableVariable", "Table"))
        Call result.Add("BatchSize")
        Call result.Add("Timeout")

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


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

        Try
            If String.IsNullOrEmpty(Me.Connection) Then
                Throw New Exception("Select connection.")
            End If

            If String.IsNullOrEmpty(Me.Table) Then
                Throw New Exception("Select destination table.")
            End If

            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            If input.IsAttached AndAlso input.InputColumnCollection.Count = 0 Then
                Throw New Exception("Map input columns.")
            End If

            Me.ComponentMetaData.RuntimeConnectionCollection("Oracle").ConnectionManagerID = Me.Connection
        Catch ex As Exception
            result = False
            errMessage = ex.Message
        End Try

        Validate = result
    End Function    'Validate


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

        If MyBase.ComponentMetaData.InputCollection.Count = 0 Then
            ' At least one input must exist.
            Throw New Exception("No inputs.")
        End If

        If String.IsNullOrEmpty(Me.Connection) Then
            Throw New Exception("Connection not selected.")
        End If

        If String.IsNullOrEmpty(Me.Table) Then
            Throw New Exception("Destination table not selected.")
        End If

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

        ' Get table schema.
        Dim tableSchema As DataTable
        Using connection As DbConnection = CType( _
            Me.DesignConnections(Me.Connection).AcquireConnection(Nothing), _
            DbConnection), _
            command As DbCommand = connection.CreateCommand()

            command.CommandType = CommandType.TableDirect

            ' Setup destination table.
            If Me.IsTableVariable Then
                command.CommandText = CStr(GetVariable_(Me.TableVariable))
            Else
                command.CommandText = Me.Table
            End If

            tableSchema = command.ExecuteReader(CommandBehavior.SchemaOnly).GetSchemaTable()
        End Using

        ' Cleanup.
        input.ExternalMetadataColumnCollection.IsUsed = True
        Call input.InputColumnCollection.RemoveAll()
        Call input.ExternalMetadataColumnCollection.RemoveAll()

        ' Setup column metadata.
        Dim colsCount As Integer = tableSchema.Rows.Count
        For colIndex As Integer = 0 To colsCount - 1
            Dim columnRow As DataRow = tableSchema.Rows(colIndex)

            Dim column As IDTSExternalMetadataColumn100 = input.ExternalMetadataColumnCollection.NewAt( _
                colIndex)
            column.Name = CStr(columnRow("ColumnName"))

            ' Get type.
            Dim rawType As Type = CType(columnRow("DataType"), Type)
            Dim columnType As DataType = DataRecordTypeToBufferType_(rawType)
            If CBool(columnRow("IsLong")) Then
                ' This is extended type. Have to modify the column type a bit.
                Select Case columnType
                    Case DataType.DT_WSTR
                        columnType = DataType.DT_NTEXT

                    Case DataType.DT_STR
                        columnType = DataType.DT_TEXT

                    Case DataType.DT_BYTES
                        columnType = DataType.DT_IMAGE
                End Select
            End If

            ' Get length.
            Dim length As Integer = 0
            Select Case columnType
                Case DataType.DT_WSTR, DataType.DT_STR, DataType.DT_BYTES, DataType.DT_IMAGE, DataType.DT_NTEXT, DataType.DT_TEXT
                    length = CInt(columnRow("ColumnSize"))
            End Select

            ' Get code page.
            Dim codepage As Integer = 0
            If columnType = DataType.DT_STR Then
                codepage = -1
            End If

            ' Get precision and scale.
            Dim precision As Integer = 0
            Dim scale As Integer = 0
            If columnType = DataType.DT_NUMERIC OrElse columnType = DataType.DT_BYREF_DECIMAL Then
                If columnRow.IsNull("NumericPrecision") Then
                    precision = 29
                Else
                    precision = CInt(columnRow("NumericPrecision"))
                End If

                If columnRow.IsNull("NumericScale") Then
                    scale = 0
                Else
                    scale = CInt(columnRow("NumericScale"))
                End If

                If scale = 255 Then
                    scale = 0
                End If
            End If

            column.DataType = columnType
            column.Length = length
            column.Precision = precision
            column.Scale = scale
            column.CodePage = codepage

            ' Include Oracle type as property.
            Dim propType As IDTSCustomProperty100 = column.CustomPropertyCollection.[New]()
            propType.Name = OracleTypeProperty
            propType.Value = columnRow("ProviderType")
        Next
    End Sub ' ReinitializeMetaData


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of tables in the currently selected Oracle connection.
    Public Function GetTables() As String()
        Dim result As ArrayList = New ArrayList()

        Dim connection As DbConnection = CType( _
            Me.DesignConnections(Me.Connection).AcquireConnection(Nothing), _
            DbConnection)

        Try
            Dim tables As DataTable = connection.GetSchema("Tables")
            For Each table As DataRow In tables.Rows
                Dim tableType As String = table(2).ToString().ToUpper()
                If tableType <> "USER" Then
                    ' Include only user tables.
                End If

                Dim tableName As String = String.Format( _
                    """{0}"".""{1}""", _
                    table(0), _
                    table(1))

                Call result.Add(tableName)
            Next
        Finally
            Call connection.Dispose()
        End Try

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


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select connection to Oracle Data Provider for .NET")> _
    <Category("Connection")> _
    <Connection("AdoNetConnectionType")> _
    Public Property Connection() As String
        Get
            Connection = m_connection
        End Get
        Set(ByVal value As String)
            m_connection = value
        End Set
    End Property    ' Connection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies the number of rows to be sent as a batch to the database.")> _
    <Category("Connection")> _
    <DefaultValue(10000)> _
    Public Property BatchSize() As Integer
        Get
            BatchSize = m_batchSize
        End Get
        Set(ByVal value As Integer)
            m_batchSize = value
        End Set
    End Property    ' BatchSize


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies the number of seconds allowed for the bulk copy operation to complete before it is aborted.")> _
    <Category("Connection")> _
    <DefaultValue(30)> _
    Public Property Timeout() As Integer
        Get
            Timeout = m_timeout
        End Get
        Set(ByVal value As Integer)
            m_timeout = value
        End Set
    End Property    ' Timeout


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Indicates whether the destination table is stored in a variable.")> _
    <Category("Destination")> _
    <RefreshProperties(RefreshProperties.All)> _
    <DefaultValue(False)> _
    Public Property IsTableVariable() As Boolean
        Get
            IsTableVariable = m_isTableVariable
        End Get
        Set(ByVal value As Boolean)
            If m_isTableVariable <> value Then
                m_isTableVariable = value
                Me.Table = String.Empty
            End If
        End Set
    End Property    ' IsTableVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Destination table to load in bulk.")> _
    <Category("Destination")> _
    <List("GetTables")> _
    Public Property Table() As String
        Get
            Table = m_table
        End Get
        Set(ByVal value As String)
            If m_table <> value Then
                If Not String.IsNullOrEmpty(m_table) Then
                    ' Force external columns to be reloaded.
                    If Me.ComponentMetaData.InputCollection.Count > 0 Then
                        Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
                        Call input.ExternalMetadataColumnCollection.RemoveAll()
                    End If
                End If

                m_table = value
            End If
        End Set
    End Property    ' Table


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies the variable that contains the destination table.")> _
    <Category("Destination")> _
    <Variable()> _
    Public Property TableVariable() As String
        Get
            TableVariable = Me.Table
        End Get
        Set(ByVal value As String)
            Me.Table = value
        End Set
    End Property    ' TableVariable
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property AdoNetConnectionType() As String()
        Get
            AdoNetConnectionType = New String() {"ADO.NET"}
        End Get
    End Property    ' AdoNetConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns SSIS data type from .NET type. Uses private PipelineComponent method.
    Private Function DataRecordTypeToBufferType_(ByVal type As Type) As DataType
        DataRecordTypeToBufferType_ = CType( _
            GetType(PipelineComponent).InvokeMember( _
                "DataRecordTypeToBufferType", _
                BindingFlags.InvokeMethod Or BindingFlags.NonPublic Or BindingFlags.Static, _
                Nothing, _
                Nothing, _
                New Object() {type}), _
            DataType)
    End Function    ' DataRecordTypeToBufferType_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetVariable_(ByVal varName As String) As Object
        Dim result As Object

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

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Creates Oracle specific BLOB out of SSIS BLOB.
    Private Function GetOracleBlob_(ByVal blob As BlobColumn) As Stream
        Dim result As Stream

        If blob.ColumnInfo.DataType = DataType.DT_STR OrElse _
            blob.ColumnInfo.DataType = DataType.DT_WSTR Then

            result = CType(m_clobCI.Invoke(New Object() {m_command.Connection}), Stream)
        Else
            result = CType(m_blobCI.Invoke(New Object() {m_command.Connection}), Stream)
        End If

        Dim data() As Byte = blob.GetBlobData(0, CInt(blob.Length))
        Call result.Write(data, 0, data.Length)
        Call result.Flush()

        GetOracleBlob_ = result
    End Function    ' GetOracleBlob_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean = False
        Call MyBase.ComponentMetaData.FireError( _
            0, _
            "Oracle Destination", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_
#End Region ' Internals


#Region "Attributes"
    Private m_connection As String
    Private m_batchSize As Integer
    Private m_timeout As Integer
    Private m_isTableVariable As Boolean
    Private m_table As String

    Private m_command As DbCommand
    Private m_inputIndexes() As Integer
    Private m_currentRow As Integer
    Private m_clobCI As ConstructorInfo
    Private m_blobCI As ConstructorInfo
#End Region ' Attributes

End Class   ' ScriptMain
]]></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>{DBF8DB12-35AB-4BEE-B9CC-0E98BDFC9288}</msb:ProjectId>
		<msb:DisplayName>scriptcomponent_e8c6f2cbccf645ae862b6dbf4ea8a3d9</msb:DisplayName>
		<msb:CodeName>scriptcomponent_e8c6f2cbccf645ae862b6dbf4ea8a3d9</msb:CodeName>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="main.vb"/>
		<msb:File Include="My Project\AssemblyInfo.vb"/>
		<msb:File Include="My Project\Resources.Designer.vb"/>
		<msb:File Include="My Project\Settings.Designer.vb"/>
		<msb:File Include="My Project\Resources.resx"/>
		<msb:File Include="My Project\Settings.settings"/>
		<msb:Project Include="scriptcomponent_e8c6f2cbccf645ae862b6dbf4ea8a3d9.vbproj"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Settings.settings]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Resources.resx]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Resources.Designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On


Namespace My.Resources
    
    '''<summary>
    '''   A strongly-typed resource class, for looking up localized strings, etc.
    '''</summary>
    'This class was auto-generated by the Strongly Typed Resource Builder
    'class via a tool like ResGen or Visual Studio.NET.
    'To add or remove a member, edit your .ResX file then rerun ResGen
    'with the /str option, or rebuild your VS project.
    Class MyResources
        
        Private Shared _resMgr As System.Resources.ResourceManager
        
        Private Shared _resCulture As System.Globalization.CultureInfo
        
        Friend Sub New()
            MyBase.New
        End Sub
        
        '''<summary>
        '''   Returns the cached ResourceManager instance used by this class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared ReadOnly Property ResourceManager() As System.Resources.ResourceManager
            Get
                If (_resMgr Is Nothing) Then
                    Dim temp As System.Resources.ResourceManager = New System.Resources.ResourceManager("My.Resources.MyResources", GetType(MyResources).Assembly)
                    _resMgr = temp
                End If
                Return _resMgr
            End Get
        End Property
        
        '''<summary>
        '''   Overrides the current thread's CurrentUICulture property for all
        '''   resource lookups using this strongly typed resource class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared Property Culture() As System.Globalization.CultureInfo
            Get
                Return _resCulture
            End Get
            Set
                _resCulture = value
            End Set
        End Property
    End Class
End Namespace
]]></arrayElement></arrayElements></property><property id="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_e8c6f2cbccf645ae862b6dbf4ea8a3d9.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
EQpvfwAAChEHEQtvgAAAChEHEQ5vgQAAChEHEQVvggAAChEHb04AAApvgwAAChMMEQxyhQAAcG+E
AAAKEQwRCHISBABwb3kAAAooEQAACm+FAAAKEQYX1hMGEQYRDz4o/v//KgEcAAACAJEAR9gACgAA
AAECAIkAW+QADAAAAAEbMAQA3wAAABkAABFzZAAACgwCb2wAAAoCbycAAAZvbQAAChRvbgAACnQ/
AAABCgZyLAQAcG+GAAAKDQlvdQAACm+HAAAKEwcrYREHb4gAAAp0RgAAARMEEQQYb4kAAApvFQAA
Cm+KAAAKEwYRBnI6BABwFiiLAAAKFi4AckQEAHARBBZviQAACigRAAAKEQQXb4kAAAooEQAACiiM
AAAKEwUIEQVvZQAACiYRB2+NAAAKLZbeHxEHdUsAAAEsDBEHdUsAAAFvcQAACtzeBwZvYwAACtwI
0CEAAAEoFAAACm9nAAAKdAsAABsqAAEcAAACAC8Ae6oAFgAAAAECACMAn8IABwAAAAETMAEACQAA
ABoAABECewsAAAQKBioAAAAiAgN9CwAABCoAAAATMAEACQAAABsAABECewwAAAQKBioAAAAiAgN9
DAAABCoAAAATMAEACQAAABwAABECew0AAAQKBioAAAAiAgN9DQAABCoAAAATMAEACQAAAB0AABEC
ew4AAAQKBioAAAByAnsOAAAEAy4SAgN9DgAABAJ+QgAACm8wAAAGKgAAABMwAQAJAAAAHgAAEQJ7
DwAABAoGKgAAABMwAwBaAAAAHwAAEQJ7DwAABAMWKIsAAAoWLkkCew8AAAQoRgAACi01Am8jAAAK
byQAAApvawAAChYxIgJvIwAACm8kAAAKFowvAAABbyUAAAoKBm9DAAAKb3QAAAoCA30PAAAEKgAA
EzABAAkAAAAgAAARAm8vAAAGCgYqAAAAIgIDbzAAAAYqAAAAEzADABMAAAAhAAARF40hAAABCwcW
clwEAHCiBwoGKgATMAgALwAAACIAABHQMQAAASgUAAAKcmwEAHAgKAEAABQUF40DAAABCwcWA6IH
bz8AAAoofAAACgoGKgAbMAMANAAAACMAABEUDAIojgAACgMSAm+PAAAKCANvkAAACm+RAAAKKBEA
AAoL3gcIb5IAAArcBygRAAAKCgYqARAAAAIAEAAUJAAHAAAAARMwBAClAAAAJAAAEQNvkwAACg0S
A3uUAAAKIIEAAAAuFgNvkwAAChMEEgR7lAAACiCCAAAAMywCexMAAAQXjQMAAAETBREFFgJ7EAAA
BG9ZAAAKohEFb5UAAAp0DgAAAQwrKgJ7FAAABBeNAwAAARMFEQUWAnsQAAAEb1kAAAqiEQVvlQAA
CnQOAAABDAMWA2+WAAAKhG+XAAAKCggGFgaOt2+YAAAKCG+ZAAAKCAsHKgAAABMwBwAdAAAAJQAA
ERYKAigjAAAKFnKiBABwA35CAAAKFhIAb5oAAAoqAAAAHgIoFwAACioTMAIALQAAACYAABF+FQAA
BC0gcsgEAHDQDAAAAigUAAAKb1oAAApzqAAACgsHgBUAAAR+FQAABCoAAAATMAEABgAAACcAABF+
FgAABCoAAB4CgBYAAAQqQnMXAAAKKBEAAAqAGAAABCoAAAAeAiipAAAKKhswAQA/AAAAKAAAEX4X
AAAELTJ+GAAABCgRAAAKKKoAAAp+FwAABC0ccz0AAAaAFwAABN4QfhgAAAQoEQAACiirAAAK3H4X
AAAEKgABEAAAAgAdAAwpABAAAAABtAAAAM7K774BAAAAkQAAAGxTeXN0ZW0uUmVzb3VyY2VzLlJl
c291cmNlUmVhZGVyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWws
IFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkjU3lzdGVtLlJlc291cmNlcy5SdW50aW1l
UmVzb3VyY2VTZXQCAAAAAAAAAAAAAABQQURQQURQtAAAAEJTSkIBAAEAAAAAAAwAAAB2NC4wLjMw
MzE5AAAAAAUAbAAAACgRAAAjfgAAlBEAANwWAAAjU3RyaW5ncwAAAABwKAAA/AQAACNVUwBsLQAA
EAAAACNHVUlEAAAAfC0AABwJAAAjQmxvYgAAAAAAAAACAAABVx2iCQkPAAAA+iUzABYAAAEAAABs
AAAADQAAABgAAAA+AAAAHgAAALcAAAABAAAAUQAAACgAAAAHAAAAEgAAABkAAAALAAAAAQAAAAoA
AAABAAAAAgAAAAMAAAACAAAAAACfFgEAAAAAAAoAqQF/AQoA3QG/AQYA7QHmAQoARQJ/AQYAwwLm
AQoARQMbAw4AlwOAAxIA5gPFAxYAFwTFAxIAJgTFAw4AygSAAxoAhQVdBRoAHgddBQYAZwddBxYA
bgfFAx4A/AfpBwYAPggsCAYAxwi2CAYA9AjfCCIAWwlGCSIAqAmSCSIAwQmSCSIA7gnWCQYAGAoF
CgoAVwowCgoAbwoTACIApAqHCgYA2Qq5CgYA9wrmAQYAGwvmAQoANAsTAAYAeAtZCwYAjAvmARIA
kwvFAwYAoAvmASYAAwzaCyYAMgzaCyYAXQzaCyYAegzaCyYAvQzaCx4A7AzpBwYA+AzmAR4AAg3d
Bx4ACQ3pBwoAWw0wCiYAlQ3aCwYAsw3mASYAuQ3aCxYA+g3FAyYAHg7aCyYARQ7aCwYAfA7mAQYA
hA4sCAYAkQ4sCB4AuA7dByYA2g7aCwYAmQ8sCCYAww/aCyYAABDaCwYAFhDmAR4AIRDdBwoARhAw
Ch4AYhDpBwYAbxAsCCIANASSCQYA3BDJEAoA5hATAAYA9hDmAR4AKxHdBx4ANRHdByoAAgFcESoA
khFcER4ApBHpBx4AsRHdBwYA3hHmAR4A/xHdBwYAfhLJEAoAthIwChoA1xJdBRoA6BJdBRoAJhNd
BRYAPRPFAxIAjRPFAw4A1hO0Ew4A8hO0Ew4ADBS0Ew4AJBS0Ew4APBS0EyIAUBSSCSIAYhSSCSIA
dxSSCQ4AjRS0EyIAmxSSCSIAthSSCQ4AyBS0EwYA6xTaFAYA/hQFCgYAZxW5CgYAhxW5CgYAvxWl
FQYA2BUsCAYA9RVZCwYAAxYsCAYAHhYsCAYAORYsCAYAUhYsCAYAaxYsCAYAiBYsCAAAAAABAAAA
AAABAAEAAAAAACkANwAFAAEAAQAAAAAAcgA3AAkAAQACAAABEAB9ADcADQABAAMABQEAAIcAAAAN
AAUACAAFAQAAlQAAAA0ABQAPAAEAAACwALwAHQAGABEAAQAAAPQAvAAtAAYAFgABAAAAAgG8AA0A
CAAaAAEAAAAOAbwADQAJABwAAQAAABgBvAAgAAoAHQAAAAAAIwEvAQ0AFQA4AAABEAB0AbwAUQAX
ADwAMQAIAiAAMQAxAi0AMQBTAjoAMQB4AkcAIQBUA5AABgACAckABgAOAc0AAQAqBeEAAQAqBeEA
UYCwBfUAAQCgB/UAAQCtBzoBAQC5BzoBAQDDBz0BAQDVB/UAAQAGCEABAQAQCEQBAQAfCDoBAQBO
CEgBAQBXCEgBEQDXCFgBEQAACVwBEQBzCXoBEQB7CX4BUCAAAAAABhi5ARMAAQBYIAAAAAAGGLkB
EwABAGAgAAAAABEY9AEXAAEAjCAAAAAAEwj7ARsAAQCkIAAAAAATCCECKAABALwgAAAAABMISgI1
AAEA1CAAAAAAEwhoAkIAAQDsIAAAAABGAq4CYwABAAghAAAAAEYCtwJoAAIAHCEAAAAAgwDIAmwA
AgA0IQAAAABGAtACcQACAEghAAAAABEA2QJ4AAIAZCEAAAAAAQD3AoAAAwCAIQAAAAAGGLkBEwAE
AIghAAAAAAMICwOLAAQAvCEAAAAABhi5ARMABADQIQAAAAAGGLkBrwAEAOAhAAAAAEYKYAS7AAkA
9CEAAAAARgp3BLsACQAIIgAAAACGAI8EwAAJACAiAAAAAIYAlwTAAAkAOCIAAAAABhi5ARMACQBY
IgAAAABGAt4E0QAJAIgiAAAAAEYD/QTbAA0AnCIAAAAARgMQBdsADgCgIgAAAAAGGLkB5QAPALAi
AAAAAAYIngXrABAA3CIAAAAABhi5AeUAEADsIgAAAAAGGLkBEwARAPQiAAAAAEYCEAXbABEA+CMA
AAAARgLDBRMAEgBoJwAAAABGAs4FEwASANAnAAAAAEYC2gUNARIAFCgAAAAARgL5BRMAEwBUKAAA
AAAGAAwGuwATANAoAAAAAAYAGgYSARMAlCkAAAAARgIuBhMAFADALAAAAAAGAEMGuwAUAMgtAAAA
AAYITQZxABQA4C0AAAAABghcBhgBFADsLQAAAAAGCHEGaAAVAAQuAAAAAAYIfwYdARUAEC4AAAAA
BgiNBmgAFgAoLgAAAAAGCJkGHQEWADQuAAAAAAYIpQbAABcATC4AAAAABgi5BiIBFwBsLgAAAAAG
CM0GcQAYAIQuAAAAAAYI1wYYARgA7C4AAAAABgjhBnEAGQAELwAAAAAGCPMGGAEZABAvAAAAAAEI
BQe7ABoAMC8AAAAAAQAnBycBGgBsLwAAAAABAEgHLgEbALwvAAAAAAEAeQczARwAcDAAAAAAAQCN
BxgBHQCcMAAAAAADGLkBEwAeAKQwAAAAABYIDAlgAR4A4DAAAAAAFgggCWUBHgD0MAAAAAAWCCwJ
agEeAPwwAAAAABEY9AEXAB8AEDEAAAAABhi5ARMAHwAYMQAAAAAWCIgJgQEfAAAAAQC1AgAAAQDu
AgAAAQDuAgAAAQA0BAAAAgA+BAAAAwBHBAAABABPBAAABQBWBAAAAQDrBAAAAgDzBAAAAwBPBAAA
BABWBAAAAQBPBAAAAQAmBQAAAQA0BAAAAQA0BAAAAQAmBQAAAQDtBQAAAQAjBgAAAQBrBgAAAQBr
BgAAAQBrBgAAAQBrBgAAAQBrBgAAAQBrBgAAAQBDBwAAAQBVBwAAAQCIBwAAAQCYBwAAAQA4CQkA
uQETAKkAuQGLAbkAuQGaAREAuQETAMEAuQETACQAuQETACwAuQETADQAuQETADwAuQETACQACwOL
ACwACwOLADQACwOLADwACwOLAMkAuQETANEAuQETANkAuQEYAeEA6Ao0AhkArgJjABkAtwJoACkA
CQtBAhkA0AJxAPEAJQtRAhkAuQETAPkAuQFhAkQAVAOQAEwAiAmLAEwATwveAkwAuQETAAEBuQEi
ATkAuQGvABEBjwTAABEBlwTAABkBuQEiAVkAuQETAEEAHAz4AiEBSQz+AikBagwEAzEBcwxoACEB
nQwLAzkBagwRA0EB1gzrAIEAHw0dA2EBagwjAzkALg0qA0kAOQ0vA0kAagw0A0kBQA05A0kBiAk/
A4EASw1oAGkBZw1GA1EBdw1xAGkBgw0XAEEAwwUTADEB1g1gA4EB8A1oAFkADA5mA4kBMw5sAzEB
Lg1oAIEBagxyA5kBWA5oAJEBZg55AxkAyAJsACkAmA5/A4EApQ4dAYEAxA6NAwkB1A71ADEBAg+U
A5kBJw9oAMEBRA+aAwkBUg+hAwkBYA+mA3EBZw9xAAkBcA+sA4EAdw+yA0kBhw8YASkApg+4A8kB
sg9sAHEB4w+/A9EBagzFA9kBiAk/A+EBGxDMA0kBTwsNAUkBNBDTA2EBQhDaA/EB0ALfA1EBuQEY
AQkBcA/kA4EAUhAYAYEATQbsAykAeBDyAwEChRBxACkAyAL4AykAkhD+A0EAzgUTAEEA2gUNAWEA
oRAqBPkBsxAvBEEA+QUTAAkCwRATABECuQETABECQhDaAxkC8hA6BBEC/BBBBDEBBBHAAEEBExEY
AVkALgYTACkB8A1oAFkAfBFfBDkCagxlBEECoRAqBIEAwRFsBEkCzxF1BFkCwRATAMEB6hEiAYEB
9RETAMEB9RETACkCERJ7BGEC8A1oAGECagyBBMEBGhKaAzECagwuAXEBIBIYAfEBKRKIBPEBMxKN
BDECOQ2SBHEBPRKXBHEBShIdAXEBVRIdAXEBYxIdAXEBbRIdAdEBehKdBNkBIBIYAdkBTwsNAfkB
ihLJBGEClBLQBGkCohI/AzECagw0AwkBrhJxAHECwBLWBAkBcA/dBGkCzhLAAEEAARMOBYECFxMU
BXkCagwdBYkCiAk/A3kCNhMTAHkAShMsBZECHgcyBYkAWRM2BXkAYBM8BXkAaxNABXEAdxNHBXEA
fRMTACEBgxNgBZkCuQETAKECuQEYAakCuQEYAbECuQGMBbkCuQETAMECuQEYAckCuQEYAdECuQEY
AdkCuQEdAeECuQEYAdkCuQEiAekCuQFMB/kCuQETAJEAuQHaB6EAuQETAAED8xT3BwED+RT3BwkD
uQETABEDuQEdARkDuQETACEDuQEYASkDuQEYATEDuQEYATkDuQEYAUEDuQEYAUkDuQEYAVEDuQEY
AVkDuQEYAWEDuQEYAQ4AKAD4ACkAgwAWAi4AowXOCC4AuwXOCC4AmwWuCC4AcwUKCC4AewUpCC4A
kwXtAi4AswXtAi4AawUBCC4AqwULCS4AgwVxCC4AiwV+CC4A6wDtAi4ACwGoCEAAKwC5AUAAEwCR
AUMAEwCRAUMAGwCgAUkAgwDuAWMAEwCRAWMAGwCgAWkAgwAnAoAAKwC5AYMAewC5AYMAcwC5AYMA
GwCgAYkAgwACAqAAKwC5AaMAwwBpAqMAEwCRAcAAKwC5AcMAEwCRAcMA6wDtAuAAKwC5AeMACwHt
AgABEwCRAQABKwC5AQMBCwHtAiABEwCRASABKwC5ASkBEwUGBikBAwXcBSkBCwX2BUABEwCRAUAB
KwC5AUkBGwWyBkkBCwX2BUkBEwW7BmABKwC5AWABEwCRAWMBCwHtAmMB6wR5BWMB8wSSBWMB+wS5
AWMB2wS5AWMB4wRrBWkBEwVHBmkBCwX2BWkBGwU+BoABKwC5AYkBEwVTB4kBKwXtAokBMwWRAYkB
CwUTB6ABKwC5AakBEwUkB6kBCwUTB6kBIwUEB8ABKwC5AcABEwCRAckBCwUTB8kBOwW5AckBEwWZ
B+ABKwC5AQACEwCRAQACKwC5AQkCEwDuBykCEwDuB0kCYwW5AUADCwHtAoADCwHtAtoB3wHkAekB
OQI9AkgCTQJcAlwC5ALzAvMCOQI5AhgDTQMGBCUENAQ0BEwEVASjBOQETQI9Aj0COQJNAvoETQIA
BQcFJAVPBTkC4gfpB/wHBAABAAYABQAHAAYACQAIAAsACQAMABAADQASAAAA3QFPAAAAlgJUAAAA
RQJZAAAAogJeAAAAXgOYAAAAowTEAAAAtgTEAAAAqQXwAAAAYAhMAQAAawhQAQAAdQhQAQAAfQhU
AQAAjQhMAQAAkwhMAQAAoQjEAAAAxwhwAQAAPgl1AQAAOAmGAQIABAADAAIABQAFAAIABgAHAAIA
BwAJAAIADwALAAIAEgANAAIAEwAPAAIAGwARAAIAJwATAAEAKAATAAIAKQAVAAEAKgAVAAIAKwAX
AAEALAAXAAEALgAZAAIALQAZAAIALwAbAAEAMAAbAAIAMQAdAAEAMgAdAAIAMwAfAAIAOQAhAAIA
OgAjAAEAOwAjAAIAPgAlAHUAdQCIAL4BxQHMAdMBywLSAkMDSQQEgAAAAQAAAAAAAAAAAAAAAAC8
AAAABAAAAAAAAAAAAAAAAQAKAAAAAAAKAAAAAAAAAAAAAAAKABMAAAAAAAEAAAAAAAAAAAAAAJ0A
agMAAAAACwAAAAAAAAAAAAAApgCoAwAAAAALAAAAAAAAAAAAAACmAPYDAAAAAAsAAAAAAAAAAAAA
AKYAOgUAAAAABAAAAAAAAAAAAAAAAQDdBwAAAAAEAAAAAAAAAAAAAAABAOYBAAAAAAsAAAAAAAAA
AAAAAKYAtgsAAAAACwAAAAAAAAAAAAAApgA9EQAAAAAAAAAAAQAAABsVAAAFAAQABgAEAAAAEAAM
AOwCAAAQABkA7AIAAAAAGwDsAi0AVwItANkCAAAAAAA8TW9kdWxlPgBtc2NvcmxpYgBNaWNyb3Nv
ZnQuVmlzdWFsQmFzaWMATXlBcHBsaWNhdGlvbgBTY3JpcHRDb21wb25lbnRfZThjNmYyY2JjY2Y2
NDVhZTg2MmI2ZGJmNGVhOGEzZDkudmJwcm9qLk15AE15Q29tcHV0ZXIATXlQcm9qZWN0AE15V2Vi
U2VydmljZXMAVGhyZWFkU2FmZU9iamVjdFByb3ZpZGVyYDEASW5wdXRCdWZmZXIAU2NyaXB0Q29t
cG9uZW50X2U4YzZmMmNiY2NmNjQ1YWU4NjJiNmRiZjRlYThhM2Q5LnZicHJvagBVc2VyQ29tcG9u
ZW50AENvbm5lY3Rpb25zAFZhcmlhYmxlcwBTY3JpcHRNYWluAE15UmVzb3VyY2VzAFNjcmlwdENv
bXBvbmVudF9lOGM2ZjJjYmNjZjY0NWFlODYyYjZkYmY0ZWE4YTNkOS52YnByb2ouTXkuUmVzb3Vy
Y2VzAE15U2V0dGluZ3MATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkFwcGxpY2F0aW9uU2VydmljZXMA
QXBwbGljYXRpb25CYXNlAC5jdG9yAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5EZXZpY2VzAENvbXB1
dGVyAFN5c3RlbQBPYmplY3QALmNjdG9yAGdldF9Db21wdXRlcgBtX0NvbXB1dGVyT2JqZWN0UHJv
dmlkZXIAZ2V0X0FwcGxpY2F0aW9uAG1fQXBwT2JqZWN0UHJvdmlkZXIAVXNlcgBnZXRfVXNlcgBt
X1VzZXJPYmplY3RQcm92aWRlcgBnZXRfV2ViU2VydmljZXMAbV9NeVdlYlNlcnZpY2VzT2JqZWN0
UHJvdmlkZXIAQXBwbGljYXRpb24AV2ViU2VydmljZXMARXF1YWxzAG8AR2V0SGFzaENvZGUAVHlw
ZQBHZXRUeXBlAFRvU3RyaW5nAENyZWF0ZV9fSW5zdGFuY2VfXwBUAGluc3RhbmNlAERpc3Bvc2Vf
X0luc3RhbmNlX18AZ2V0X0dldEluc3RhbmNlAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5NeVNlcnZp
Y2VzLkludGVybmFsAENvbnRleHRWYWx1ZWAxAG1fQ29udGV4dABHZXRJbnN0YW5jZQBDb3p5Um9j
LlNTSVNQbHVzLjIwMTIAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJUwBTY3JpcHRCdWZmZXJQbHVzAE1p
Y3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3JpcHQATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxp
bmUAU2NyaXB0Q29tcG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuUGlwZWxpbmVIb3N0AFBpcGVs
aW5lQnVmZmVyAE91dHB1dE5hbWVNYXAAQ29tcG9uZW50AE9iamVjdElEAElzSW5wdXQAQnVmZmVy
AE91dHB1dE1hcABnZXRfU3RhdGljSW5wdXRDb2x1bW5zAGdldF9TdGF0aWNPdXRwdXRDb2x1bW5z
AE5leHRSb3cARW5kT2ZSb3dzZXQAU3RhdGljSW5wdXRDb2x1bW5zAFN0YXRpY091dHB1dENvbHVt
bnMAU2NyaXB0Q29tcG9uZW50UGx1cwBQcm9jZXNzSW5wdXQASW5wdXRJRABJbnB1dE5hbWUASW5w
dXRfUHJvY2Vzc0lucHV0AElucHV0X1Byb2Nlc3NJbnB1dFJvdwBSb3cAUGFyZW50Q29tcG9uZW50
AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRFRTUnVudGltZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5E
dHMuUnVudGltZS5XcmFwcGVyAElEVFNDb25uZWN0aW9uTWFuYWdlcjEwMABnZXRfT3JhY2xlAE9y
YWNsZQBPcmFjbGVUeXBlUHJvcGVydHkAUHJlRXhlY3V0ZQBQb3N0RXhlY3V0ZQBBY3F1aXJlQ29u
bmVjdGlvbnMAVHJhbnNhY3Rpb24AUmVsZWFzZUNvbm5lY3Rpb25zAEdldFByb3BlcnRpZXMAVmFs
aWRhdGUAZXJyTWVzc2FnZQBSZWluaXRpYWxpemVNZXRhRGF0YQBHZXRUYWJsZXMAZ2V0X0Nvbm5l
Y3Rpb24Ac2V0X0Nvbm5lY3Rpb24AdmFsdWUAZ2V0X0JhdGNoU2l6ZQBzZXRfQmF0Y2hTaXplAGdl
dF9UaW1lb3V0AHNldF9UaW1lb3V0AGdldF9Jc1RhYmxlVmFyaWFibGUAc2V0X0lzVGFibGVWYXJp
YWJsZQBnZXRfVGFibGUAc2V0X1RhYmxlAGdldF9UYWJsZVZhcmlhYmxlAHNldF9UYWJsZVZhcmlh
YmxlAGdldF9BZG9OZXRDb25uZWN0aW9uVHlwZQBEYXRhVHlwZQBEYXRhUmVjb3JkVHlwZVRvQnVm
ZmVyVHlwZV8AdHlwZQBHZXRWYXJpYWJsZV8AdmFyTmFtZQBTeXN0ZW0uSU8AU3RyZWFtAEJsb2JD
b2x1bW4AR2V0T3JhY2xlQmxvYl8AYmxvYgBGaXJlRXJyb3JfAG1lc3NhZ2UAbV9jb25uZWN0aW9u
AG1fYmF0Y2hTaXplAG1fdGltZW91dABtX2lzVGFibGVWYXJpYWJsZQBtX3RhYmxlAFN5c3RlbS5E
YXRhAFN5c3RlbS5EYXRhLkNvbW1vbgBEYkNvbW1hbmQAbV9jb21tYW5kAG1faW5wdXRJbmRleGVz
AG1fY3VycmVudFJvdwBTeXN0ZW0uUmVmbGVjdGlvbgBDb25zdHJ1Y3RvckluZm8AbV9jbG9iQ0kA
bV9ibG9iQ0kAQ29ubmVjdGlvbgBCYXRjaFNpemUAVGltZW91dABJc1RhYmxlVmFyaWFibGUAVGFi
bGUAVGFibGVWYXJpYWJsZQBBZG9OZXRDb25uZWN0aW9uVHlwZQBTeXN0ZW0uUmVzb3VyY2VzAFJl
c291cmNlTWFuYWdlcgBfcmVzTWdyAFN5c3RlbS5HbG9iYWxpemF0aW9uAEN1bHR1cmVJbmZvAF9y
ZXNDdWx0dXJlAGdldF9SZXNvdXJjZU1hbmFnZXIAZ2V0X0N1bHR1cmUAc2V0X0N1bHR1cmUAVmFs
dWUAQ3VsdHVyZQBTeXN0ZW0uQ29uZmlndXJhdGlvbgBBcHBsaWNhdGlvblNldHRpbmdzQmFzZQBt
X1ZhbHVlAG1fU3luY09iamVjdABnZXRfVmFsdWUAU3lzdGVtLkNvbXBvbmVudE1vZGVsAEVkaXRv
ckJyb3dzYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93c2FibGVTdGF0ZQBTeXN0ZW0uQ29kZURvbS5D
b21waWxlcgBHZW5lcmF0ZWRDb2RlQXR0cmlidXRlAFN5c3RlbS5EaWFnbm9zdGljcwBEZWJ1Z2dl
ckhpZGRlbkF0dHJpYnV0ZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQ29tcGlsZXJTZXJ2aWNlcwBT
dGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9kdWxlTmFtZUF0dHJpYnV0ZQBTeXN0ZW0uQ29t
cG9uZW50TW9kZWwuRGVzaWduAEhlbHBLZXl3b3JkQXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLkNv
bXBpbGVyU2VydmljZXMAUnVudGltZUhlbHBlcnMAR2V0T2JqZWN0VmFsdWUAUnVudGltZVR5cGVI
YW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAQWN0aXZhdG9yAENyZWF0ZUluc3RhbmNlAE15R3JvdXBD
b2xsZWN0aW9uQXR0cmlidXRlAHNldF9WYWx1ZQBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2Vydmlj
ZXMAQ29tVmlzaWJsZUF0dHJpYnV0ZQBTdHJpbmcAU2NyaXB0QnVmZmVyAENMU0NvbXBsaWFudEF0
dHJpYnV0ZQBNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1BpcGVsaW5lV3JhcABNaWNyb3NvZnQuU3Fs
U2VydmVyLkR0cy5QaXBlbGluZS5XcmFwcGVyAElEVFNDb21wb25lbnRNZXRhRGF0YTEwMABnZXRf
Q29tcG9uZW50TWV0YURhdGEASURUU0lucHV0Q29sbGVjdGlvbjEwMABnZXRfSW5wdXRDb2xsZWN0
aW9uAElEVFNJbnB1dDEwMABnZXRfSXRlbQBnZXRfSUQASURUU1J1bnRpbWVDb25uZWN0aW9uQ29s
bGVjdGlvbjEwMABnZXRfUnVudGltZUNvbm5lY3Rpb25Db2xsZWN0aW9uAElEVFNSdW50aW1lQ29u
bmVjdGlvbjEwMABnZXRfQ29ubmVjdGlvbk1hbmFnZXIARGJQYXJhbWV0ZXIARXhjZXB0aW9uAERi
VHlwZQBEYlBhcmFtZXRlckNvbGxlY3Rpb24AZ2V0X1BhcmFtZXRlcnMAZ2V0X0J1ZmZlcgBJc051
bGwAZ2V0X0RiVHlwZQBFeGVjdXRlTm9uUXVlcnkAUHJvamVjdERhdGEAU2V0UHJvamVjdEVycm9y
AGdldF9NZXNzYWdlAENsZWFyUHJvamVjdEVycm9yAElEVFNFeHRlcm5hbE1ldGFkYXRhQ29sdW1u
MTAwAEludDMyAElEVFNJbnB1dENvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29sdW1uQ29s
bGVjdGlvbgBnZXRfQ291bnQAUGlwZWxpbmVDb21wb25lbnQAZ2V0X0hvc3RDb21wb25lbnQASURU
U0J1ZmZlck1hbmFnZXIxMDAAZ2V0X0J1ZmZlck1hbmFnZXIASURUU0lucHV0Q29sdW1uMTAwAGdl
dF9MaW5lYWdlSUQARmluZENvbHVtbkJ5TGluZWFnZUlEAEJvb2xlYW4AQmluZGluZ0ZsYWdzAEJp
bmRlcgBJbnZva2VNZW1iZXIAc2V0X0NvbW1hbmRUaW1lb3V0AENvbW1hbmRUeXBlAHNldF9Db21t
YW5kVHlwZQBFbXB0eQBJRFRTRXh0ZXJuYWxNZXRhZGF0YUNvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0
X0V4dGVybmFsTWV0YWRhdGFDb2x1bW5Db2xsZWN0aW9uAGdldF9FeHRlcm5hbE1ldGFkYXRhQ29s
dW1uSUQAR2V0T2JqZWN0QnlJRABJc051bGxPckVtcHR5AENvbmNhdABnZXRfTmFtZQBGb3JtYXQA
Q3JlYXRlUGFyYW1ldGVyAHNldF9QYXJhbWV0ZXJOYW1lAFByb3BlcnR5SW5mbwBHZXRQcm9wZXJ0
eQBnZXRfUHJvcGVydHlUeXBlAElEVFNDdXN0b21Qcm9wZXJ0eUNvbGxlY3Rpb24xMDAAZ2V0X0N1
c3RvbVByb3BlcnR5Q29sbGVjdGlvbgBJRFRTQ3VzdG9tUHJvcGVydHkxMDAARW51bQBQYXJzZQBQ
YXJhbWV0ZXJEaXJlY3Rpb24Ac2V0X0RpcmVjdGlvbgBBZGQAQ29udmVyc2lvbnMAc2V0X0NvbW1h
bmRUZXh0AERiQ29ubmVjdGlvbgBBc3NlbWJseQBnZXRfQXNzZW1ibHkAZ2V0X0Z1bGxOYW1lAEdl
dENvbnN0cnVjdG9yAEFjcXVpcmVDb25uZWN0aW9uAENyZWF0ZUNvbW1hbmQARGlzcG9zZQBTeXN0
ZW0uQ29sbGVjdGlvbnMAQXJyYXlMaXN0AEludGVyYWN0aW9uAElJZgBBcnJheQBUb0FycmF5AGdl
dF9Jc0F0dGFjaGVkAHNldF9Db25uZWN0aW9uTWFuYWdlcklEAERhdGFUYWJsZQBEYXRhUm93AE1p
Y3Jvc29mdC5TcWxTZXJ2ZXIuTWFuYWdlZERUUwBNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5SdW50
aW1lAGdldF9EZXNpZ25Db25uZWN0aW9ucwBDb25uZWN0aW9uTWFuYWdlcgBEYkRhdGFSZWFkZXIA
Q29tbWFuZEJlaGF2aW9yAEV4ZWN1dGVSZWFkZXIAR2V0U2NoZW1hVGFibGUASURpc3Bvc2FibGUA
c2V0X0lzVXNlZABSZW1vdmVBbGwARGF0YVJvd0NvbGxlY3Rpb24AZ2V0X1Jvd3MATmV3QXQAc2V0
X05hbWUAVG9Cb29sZWFuAFRvSW50ZWdlcgBzZXRfRGF0YVR5cGUAc2V0X0xlbmd0aABzZXRfUHJl
Y2lzaW9uAHNldF9TY2FsZQBzZXRfQ29kZVBhZ2UATmV3AElFbnVtZXJhdG9yAEdldFNjaGVtYQBH
ZXRFbnVtZXJhdG9yAGdldF9DdXJyZW50AFRvVXBwZXIAT3BlcmF0b3JzAENvbXBhcmVTdHJpbmcA
TW92ZU5leHQASURUU1ZhcmlhYmxlczEwMABJRFRTVmFyaWFibGVEaXNwZW5zZXIxMDAAZ2V0X1Zh
cmlhYmxlRGlzcGVuc2VyAExvY2tPbmVGb3JSZWFkAElEVFNWYXJpYWJsZTEwMABVbmxvY2sAQnVm
ZmVyQ29sdW1uAGdldF9Db2x1bW5JbmZvAEludm9rZQBnZXRfTGVuZ3RoAEdldEJsb2JEYXRhAFdy
aXRlAEZsdXNoAEZpcmVFcnJvcgBTU0lTU2NyaXB0Q29tcG9uZW50RW50cnlQb2ludEF0dHJpYnV0
ZQBDb3p5Um9jLlNxbFNlcnZlci5TU0lTLkF0dHJpYnV0ZXMAVmFsaWRhdGVQcm9wZXJ0aWVzQXR0
cmlidXRlAEZpbHRlclByb3BlcnRpZXNBdHRyaWJ1dGUAU29ydFByb3BlcnRpZXNBdHRyaWJ1dGUA
Q29sdW1uTWFwcGluZ3NBdHRyaWJ1dGUAQ29ubmVjdGlvbkF0dHJpYnV0ZQBDYXRlZ29yeUF0dHJp
YnV0ZQBEZXNjcmlwdGlvbkF0dHJpYnV0ZQBEZWZhdWx0VmFsdWVBdHRyaWJ1dGUATGlzdEF0dHJp
YnV0ZQBSZWZyZXNoUHJvcGVydGllc0F0dHJpYnV0ZQBSZWZyZXNoUHJvcGVydGllcwBWYXJpYWJs
ZUF0dHJpYnV0ZQBTeXN0ZW0uVGhyZWFkaW5nAE1vbml0b3IARW50ZXIARXhpdABEZWJ1Z2dlck5v
blVzZXJDb2RlQXR0cmlidXRlAFNjcmlwdENvbXBvbmVudF9lOGM2ZjJjYmNjZjY0NWFlODYyYjZk
YmY0ZWE4YTNkOS52YnByb2ouUmVzb3VyY2VzLnJlc291cmNlcwBDb21waWxhdGlvblJlbGF4YXRp
b25zQXR0cmlidXRlAFJ1bnRpbWVDb21wYXRpYmlsaXR5QXR0cmlidXRlAFN5c3RlbS5SdW50aW1l
LlZlcnNpb25pbmcAVGFyZ2V0RnJhbWV3b3JrQXR0cmlidXRlAEFzc2VtYmx5RmlsZVZlcnNpb25B
dHRyaWJ1dGUAR3VpZEF0dHJpYnV0ZQBBc3NlbWJseVRyYWRlbWFya0F0dHJpYnV0ZQBBc3NlbWJs
eUNvcHlyaWdodEF0dHJpYnV0ZQBBc3NlbWJseVByb2R1Y3RBdHRyaWJ1dGUAQXNzZW1ibHlDb21w
YW55QXR0cmlidXRlAEFzc2VtYmx5RGVzY3JpcHRpb25BdHRyaWJ1dGUAQXNzZW1ibHlUaXRsZUF0
dHJpYnV0ZQBTY3JpcHRDb21wb25lbnRfZThjNmYyY2JjY2Y2NDVhZTg2MmI2ZGJmNGVhOGEzZDku
dmJwcm9qLmRsbAAAAAtJAG4AcAB1AHQAAA1PAHIAYQBjAGwAZQAAFUIAaQBuAGQAQgB5AE4AYQBt
AGUAAB1BAHIAcgBhAHkAQgBpAG4AZABDAG8AdQBuAHQAAAUsACAAAAsiAHsAMAB9ACIAAAk6AHsA
MAB9AAAZTwByAGEAYwBsAGUARABiAFQAeQBwAGUAABVPAHIAYQBjAGwAZQBUAHkAcABlAACAgUQA
ZQBzAHQAaQBuAGEAdABpAG8AbgAgAHQAYQBiAGwAZQAgAG4AbwB0ACAAcwBwAGUAYwBpAGYAaQBl
AGQALgAgAEMAaABlAGMAawAgAHAAYQBjAGsAYQBnAGUAIABwAHIAbwB0AGUAYwB0AGkAbwBuACAA
bABlAHYAZQBsAC4AAE1JAE4AUwBFAFIAVAAgAEkATgBUAE8AIAB7ADAAfQAgACgAIAB7ADEAfQAg
ACkAIABWAEEATABVAEUAUwAgACgAIAB7ADIAfQAgACkAAElPAHIAYQBjAGwAZQAuAEQAYQB0AGEA
QQBjAGMAZQBzAHMALgBUAHkAcABlAHMALgBPAHIAYQBjAGwAZQBDAGwAbwBiACwAIAAASU8AcgBh
AGMAbABlAC4ARABhAHQAYQBBAGMAYwBlAHMAcwAuAFQAeQBwAGUAcwAuAE8AcgBhAGMAbABlAEIA
bABvAGIALAAgAAAVQwBvAG4AbgBlAGMAdABpAG8AbgAAH0kAcwBUAGEAYgBsAGUAVgBhAHIAaQBh
AGIAbABlAAAbVABhAGIAbABlAFYAYQByAGkAYQBiAGwAZQAAC1QAYQBiAGwAZQAAE0IAYQB0AGMA
aABTAGkAegBlAAAPVABpAG0AZQBvAHUAdAAAJVMAZQBsAGUAYwB0ACAAYwBvAG4AbgBlAGMAdABp
AG8AbgAuAAAzUwBlAGwAZQBjAHQAIABkAGUAcwB0AGkAbgBhAHQAaQBvAG4AIAB0AGEAYgBsAGUA
LgAAJU0AYQBwACAAaQBuAHAAdQB0ACAAYwBvAGwAdQBtAG4AcwAuAAAVTgBvACAAaQBuAHAAdQB0
AHMALgAAMUMAbwBuAG4AZQBjAHQAaQBvAG4AIABuAG8AdAAgAHMAZQBsAGUAYwB0AGUAZAAuAAA/
RABlAHMAdABpAG4AYQB0AGkAbwBuACAAdABhAGIAbABlACAAbgBvAHQAIABzAGUAbABlAGMAdABl
AGQALgAAFUMAbwBsAHUAbQBuAE4AYQBtAGUAABFEAGEAdABhAFQAeQBwAGUAAA1JAHMATABvAG4A
ZwAAFUMAbwBsAHUAbQBuAFMAaQB6AGUAACFOAHUAbQBlAHIAaQBjAFAAcgBlAGMAaQBzAGkAbwBu
AAAZTgB1AG0AZQByAGkAYwBTAGMAYQBsAGUAABlQAHIAbwB2AGkAZABlAHIAVAB5AHAAZQAADVQA
YQBiAGwAZQBzAAAJVQBTAEUAUgAAFyIAewAwAH0AIgAuACIAewAxAH0AIgAAD0EARABPAC4ATgBF
AFQAADVEAGEAdABhAFIAZQBjAG8AcgBkAFQAeQBwAGUAVABvAEIAdQBmAGYAZQByAFQAeQBwAGUA
ACVPAHIAYQBjAGwAZQAgAEQAZQBzAHQAaQBuAGEAdABpAG8AbgAAMU0AeQAuAFIAZQBzAG8AdQBy
AGMAZQBzAC4ATQB5AFIAZQBzAG8AdQByAGMAZQBzAAAAAHLKfAy0vlJNgwYoe2NnO/AACLd6XFYZ
NOCJCLA/X38R1Qo6AyAAAQMAAAEEAAASDAcGFRIYARIMBAAAEggHBhUSGAESCAQAABIRBwYVEhgB
EhEEAAASFAcGFRIYARIUBAgAEgwECAASCAQIABIRBAgAEhQEIAECHAMgAAgEIAASFQMgAA4CHgAH
EAEBHgAeAAcwAQEBEB4AAhMABCAAEwAHBhUSGQETAAQoABMACBbPSQu4DDTqCImEXc2AgMyRCyAF
ARIhCAISJRIpBCAAHQ4DIAACBCgAHQ4DBhIkAwYSKAkgBAEIDhIlEikFIAEBEhwDBhIhBSABARIh
BCAAEjEEKAASMQIGDhRPAHIAYQBjAGwAZQBUAHkAcABlAAQgAQEcBSABAhAOBCABAQ4EIAEBCAQg
AQECBiABETUSFQQgARwOBiABEjkSPQIGCAIGAgMGEkEDBh0IAwYSRQMoAA4DKAAIAygAAgMGEkkD
BhJNBAAAEkkEAAASTQUAAQESTQQIABJJBAgAEk0DBhI0AgYcBAAAEjQECAASNAUgAQERWQgBAAEA
AAAAAAUgAgEODhgBAApNeVRlbXBsYXRlCDEwLjAuMC4wAAAEAQAAAAYVEhgBEgwGFRIYARIIBhUS
GAESEQYVEhgBEhQEBwESDAQHARIIBAcBEhEEBwESFBMBAA5NeS5BcHBsaWNhdGlvbgAAEwEADk15
LldlYlNlcnZpY2VzAAAQAQALTXkuQ29tcHV0ZXIAAAwBAAdNeS5Vc2VyAAAEAAEcHAMHAQIDBwEI
BgABEhURdQQHARIVAwcBDgUQAQAeAAQKAR4ABAcBHgAHIAQBDg4ODmEBADRTeXN0ZW0uV2ViLlNl
cnZpY2VzLlByb3RvY29scy5Tb2FwSHR0cENsaWVudFByb3RvY29sEkNyZWF0ZV9fSW5zdGFuY2Vf
XxNEaXNwb3NlX19JbnN0YW5jZV9fAAAABhUSGAETAAYVEhkBEwAECgETAAUgAQETAAgHAxMAEwAT
AAUBAAAAAAQHAR0OBSAAEoCRBSAAEoCVBiABEoCZHAUgABKAnQYgARKAoRwEBwESMQUgABKAsQYg
ARKApQgEIAASJQQgAQIIBCABHAgFIAARgK0DIAAcAh0cBgABARKAqRIHCQgdHAgIEoClHBKAqQgR
gK0FIAASgMEFIAASgMUFIAASgMkGIAESgM0cBSACCAgIDSAFHA4RgNUSgNkcHRwGIAEBEYDdBSAA
EoDhBiABEoC5CAQAAQIOBQACDg4OBQACDg4cBSAAEoClBiABEoDlDgUgABKA6QYgARKA7RwGAAIc
EhUOBiABARGA9QQgAQgcBAABDhwHAAQODhwcHAUgABKA/QUgABKBAQUAARIVDgcgARJFHRIVHgcQ
EhUSFQgODhKAmQ4ICBKAuRKApRIVCB0cCB0SFQQHAR0cBCABHBwEIAASQQUHARKA/QYAAxwCHBwH
IAESgRESFQIdDgcHAh0OEoEJCgcEAgISgJkSgKkFIAASgR0GIAESgSEcCCABEoElEYEpBSAAEoEV
BSAAEoExBiABEoEZCAQAAQIcBAABCBwEIAECDgUgAQERNQUgABKA7SUHEggSgJkSgRUSQRKA/QgI
EoC5EoEZETUICBKA7RIVCAgRNRE1BiABEoEVDgUgABKBNQYAAwgODgIGAAMODhwcFQcIEoD9HQ4S
gQkSgRUSgRkODhKBNQUHARKAmQYHAh0OHQ4GBwIRNR0cBSAAEoFBCCACAQ4QEoE9BiABEoFFHAcH
AxwcEoE9BSAAEYFJAwYRNQUgARwdHAMgAAkGIAIdBQgIByADAR0FCAgQBwYdBRI5EjkRgUkRgUkd
HAogBgEIDg4OCBACDQEACFZhbGlkYXRlAAASAQANR2V0UHJvcGVydGllcwAABSABAR0OSQEABgAA
AApDb25uZWN0aW9uCUJhdGNoU2l6ZQdUaW1lb3V0D0lzVGFibGVWYXJpYWJsZQVUYWJsZQ1UYWJs
ZVZhcmlhYmxlAAAZAQAUQWRvTmV0Q29ubmVjdGlvblR5cGUAAA8BAApDb25uZWN0aW9uAAA3AQAy
U2VsZWN0IGNvbm5lY3Rpb24gdG8gT3JhY2xlIERhdGEgUHJvdmlkZXIgZm9yIC5ORVQAAAgBAB4A
AAAAAGoBAGVTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzZWNvbmRzIGFsbG93ZWQgZm9yIHRoZSBi
dWxrIGNvcHkgb3BlcmF0aW9uIHRvIGNvbXBsZXRlIGJlZm9yZSBpdCBpcyBhYm9ydGVkLgAACAEA
ECcAAAAASAEAQ1NwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJvd3MgdG8gYmUgc2VudCBhcyBhIGJh
dGNoIHRvIHRoZSBkYXRhYmFzZS4AAA4BAAlHZXRUYWJsZXMAABABAAtEZXN0aW5hdGlvbgAAJwEA
IkRlc3RpbmF0aW9uIHRhYmxlIHRvIGxvYWQgaW4gYnVsay4AAAYgAQERgXlFAQBASW5kaWNhdGVz
IHdoZXRoZXIgdGhlIGRlc3RpbmF0aW9uIHRhYmxlIGlzIHN0b3JlZCBpbiBhIHZhcmlhYmxlLgAA
QAEAO1NwZWNpZmllcyB0aGUgdmFyaWFibGUgdGhhdCBjb250YWlucyB0aGUgZGVzdGluYXRpb24g
dGFibGUuAAAHIAIBDhKBAQYHAhJJEkkEBwESTQgBAAIAAAAAAAQAAQEcBAcBEjQIAQAIAAAAAAAe
AQABAFQCFldyYXBOb25FeGNlcHRpb25UaHJvd3MBRwEAGi5ORVRGcmFtZXdvcmssVmVyc2lvbj12
NC4wAQBUDhRGcmFtZXdvcmtEaXNwbGF5TmFtZRAuTkVUIEZyYW1ld29yayA0DAEABzEuMC4wLjAA
ACkBACRlYjBmNzdiZi1mNzA0LTRlYWItOWY0Ny1mYTAwZWViNzI1ODMAAAUBAAEAAB8BABpDb3B5
cmlnaHQgQCBNaWNyb3NvZnQgMjAxMwAAPAEAN1NjcmlwdENvbXBvbmVudF9lOGM2ZjJjYmNjZjY0
NWFlODYyYjZkYmY0ZWE4YTNkOS52YnByb2oAAA4BAAlNaWNyb3NvZnQAAAAA7GgAAAAAAAAAAAAA
DmkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpAAAAAAAAAAAAAAAAAAAAAAAAAABfQ29yRGxs
TWFpbgBtc2NvcmVlLmRsbAAAAAAA/yUAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAAAGAAAgAAAAAAAAAAAAAAAAAAA
AQABAAAAMAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAASAAAAFiAAABoBAAAAAAAAAAAAABoBDQAAABW
AFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYATwAAAAAAvQTv/gAAAQAAAAEAAAAAAAAAAQAAAAAA
PwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAEQAAAABAFYAYQByAEYAaQBsAGUASQBuAGYAbwAA
AAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAAALAEyAMAAAEAUwB0AHIAaQBuAGcA
RgBpAGwAZQBJAG4AZgBvAAAApAMAAAEAMAAwADAAMAAwADQAYgAwAAAANAAKAAEAQwBvAG0AcABh
AG4AeQBOAGEAbQBlAAAAAABNAGkAYwByAG8AcwBvAGYAdAAAAJgAOAABAEYAaQBsAGUARABlAHMA
YwByAGkAcAB0AGkAbwBuAAAAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfAGUAOABj
ADYAZgAyAGMAYgBjAGMAZgA2ADQANQBhAGUAOAA2ADIAYgA2AGQAYgBmADQAZQBhADgAYQAzAGQA
OQAuAHYAYgBwAHIAbwBqAAAAMAAIAAEARgBpAGwAZQBWAGUAcgBzAGkAbwBuAAAAAAAxAC4AMAAu
ADAALgAwAAAAmAA8AAEASQBuAHQAZQByAG4AYQBsAE4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8A
bQBwAG8AbgBlAG4AdABfAGUAOABjADYAZgAyAGMAYgBjAGMAZgA2ADQANQBhAGUAOAA2ADIAYgA2
AGQAYgBmADQAZQBhADgAYQAzAGQAOQAuAHYAYgBwAHIAbwBqAC4AZABsAGwAAABcABsAAQBMAGUA
ZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAABDAG8AcAB5AHIAaQBnAGgAdAAgAEAAIABNAGkAYwBy
AG8AcwBvAGYAdAAgADIAMAAxADMAAAAAAKAAPAABAE8AcgBpAGcAaQBuAGEAbABGAGkAbABlAG4A
YQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfAGUAOABjADYAZgAyAGMAYgBj
AGMAZgA2ADQANQBhAGUAOAA2ADIAYgA2AGQAYgBmADQAZQBhADgAYQAzAGQAOQAuAHYAYgBwAHIA
bwBqAC4AZABsAGwAAACQADgAAQBQAHIAbwBkAHUAYwB0AE4AYQBtAGUAAAAAAFMAYwByAGkAcAB0
AEMAbwBtAHAAbwBuAGUAbgB0AF8AZQA4AGMANgBmADIAYwBiAGMAYwBmADYANAA1AGEAZQA4ADYA
MgBiADYAZABiAGYANABlAGEAOABhADMAZAA5AC4AdgBiAHAAcgBvAGoAAAA0AAgAAQBQAHIAbwBk
AHUAYwB0AFYAZQByAHMAaQBvAG4AAAAxAC4AMAAuADAALgAwAAAAOAAIAAEAQQBzAHMAZQBtAGIA
bAB5ACAAVgBlAHIAcwBpAG8AbgAAADEALgAwAC4AMAAuADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABgAAAMAAAAIDkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAA]]></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_e8c6f2cbccf645ae862b6dbf4ea8a3d9</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><connections><connection id="14" name="Oracle" connectionManagerID="{4E53B04B-75FD-4E0E-A61F-86DD25518E3A}" /></connections><inputs><input id="15" name="Input" hasSideEffects="true"><externalMetadataColumns isUsed="True" /></input></inputs></component>