<component id="1" name="Dynamics CRM Convert" componentClassID="{2E42D45B-F83C-400F-8D77-61DDE6A7DF29}" description="Executes a custom script." localeId="1033" usesDispositions="false" validateExternalMetadata="True" version="4" pipelineVersion="0" 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="5" name="SourceCode" dataType="System.String" state="cdata" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None"><arrayElements arrayElementCount="18"><arrayElement dataType="System.String"><![CDATA[\my project\settings.designer.vb]]></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[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_27066129643e4440b6ab85fdba8b2066.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_27066129643e4440b6ab85fdba8b2066.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2016")> 
<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("60659a1d-54db-4fd7-a27b-852f1a8578fd")> 

' 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[\my project\settings.settings]]></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[\bufferwrapper.vb]]></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)
        MyBase.New(Component, ObjectID, IsInput, Buffer)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public WriteOnly Property [OutputId]() As Guid
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [OutputId_IsNull] As Boolean
        Set
            If (value)
                SetNull(0)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {"OutputId"}
        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[\my project\resources.designer.vb]]></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><arrayElement dataType="System.String"><![CDATA[\componentwrapper.vb]]></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 Buffer As PipelineBuffer)

        If InputID = MyBase.ComponentMetaData.InputCollection("Input").ID Then
            Input_ProcessInput(New InputBuffer(Me, InputID, True, Buffer))
        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 CrmConnection() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("CrmConnection").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[\my project\resources.resx]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\scriptcomponent_27066129643e4440b6ab85fdba8b2066.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<Project ToolsVersion="3.5" 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>{A860303F-1F3F-4691-B57E-529FC101A107};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <OutputType>Library</OutputType>
    <RootNamespace>ScriptComponent_27066129643e4440b6ab85fdba8b2066.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_27066129643e4440b6ab85fdba8b2066.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{66A99D5B-481E-4C76-B20B-560F558C751D}</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</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</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.Dynamics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL" />
    <Reference Include="CozyRoc.SSISPlus.2008, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" />
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Web.Services" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=10.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="{A860303F-1F3F-4691-B57E-529FC101A107}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{C1B21C64-9E6F-4923-A89D-9F958503C1CE}" ApplicationType="usd" Language="vb" TemplatesPath="" />
        <Host Name="SSIS_ScriptComponent" />
        <ProjectClient>
          <HostIdentifier>SSIS_ScriptComponent</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\main.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' COZYROC SQL Server Integration Services user script component
'
' Copyright (c) 2006-2016 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.Web.Services.Protocols

Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes
Imports CozyRoc.Dynamics.Crm
Imports CozyRoc.Dynamics.Crm2011.OrganizationService


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Try
            Dim req As New OrganizationRequest

            Dim type As String = Convert.ToString(GetBufferValue_(Row.Buffer, m_typeIndex))
            Select Case type.ToLower()
                Case "opportunity"
                    ' https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.generatequotefromopportunityrequest.aspx?f=255&MSPPError=-2147217396
                    req.RequestName = "GenerateQuoteFromOpportunity"
                    req("OpportunityId") = New Guid(Convert.ToString(Row.Buffer(m_idIndex)))

                Case "salesorder"
                    ' https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.convertsalesordertoinvoicerequest.aspx
                    req.RequestName = "ConvertSalesOrderToInvoice"
                    req("SalesOrderId") = New Guid(Convert.ToString(Row.Buffer(m_idIndex)))

                Case "team"
                    ' https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.convertownerteamtoaccessteamrequest.aspx
                    req.RequestName = "ConvertOwnerTeamToAccessTeam"
                    req("TeamId") = New Guid(Convert.ToString(Row.Buffer(m_idIndex)))

                Case Else
                    Throw New Exception(String.Format("Unhandled convert type: {0}", type))
            End Select

            ' Execute action.
            Dim res As OrganizationResponse = m_service.Execute(req)
            Dim entity As Entity = CType(res("Entity"), Entity)
            If Not entity Is Nothing Then
                Row.OutputId = entity.Id
            End If
        Catch ex As SoapException
            Call FireError_(ex.Detail.InnerXml)
        Catch ex As Exception
            Call FireError_(ex.Message)
        End Try
    End Sub ' Input_ProcessInputRow


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

        ' Setup CRM service.
        m_connection = CType( _
            Me.Connections.CrmConnection.AcquireConnection(Nothing), _
            IConnection)
        Call m_connection.Connect()

        m_service = CType(m_connection.GetService(0), OrganizationServiceClient)   ' 0 - CRM Service

        ' Get input column indexes.
        m_typeIndex = GetColumnIndex_("Type")
        m_idIndex = GetColumnIndex_("InputId")
    End Sub ' PreExecute


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

        Call m_connection.Close()
        m_typeIndex = -1
        m_idIndex = -1
    End Sub ' PostExecute


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

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

            Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
            If input.IsAttached Then
                Dim inputCol As IDTSInputColumn100 = Nothing

                inputCol = GetInputColumn_("Type")
                If inputCol Is Nothing Then
                    Throw New Exception("Type column is not mapped.")
                End If

                inputCol = GetInputColumn_("InputId")
                If inputCol Is Nothing Then
                    Throw New Exception("InputId column is not mapped.")
                End If
            End If

            ' Store connection information in the runtime connection collection, too.
            ' Cannot directly use RuntimeConnectionCollection in the property get/set
            ' because of issues with multi-threading.
            Me.ComponentMetaData.RuntimeConnectionCollection("CrmConnection").ConnectionManagerID = Me.CrmConnection

            result = True
        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

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

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

        Dim column As IDTSExternalMetadataColumn100

        ' Setup Type column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "Type"
        column.DataType = DataType.DT_WSTR
        column.Length = 10

        ' Setup InputId column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "InputId"
        column.DataType = DataType.DT_GUID
    End Sub ' ReinitializeMetaData


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select Dynamics CRM Connection Manager.")> _
    <Connection("CrmConnectionType")> _
    Public Property CrmConnection() As String
        Get
            CrmConnection = m_crmConnection
        End Get
        Set(ByVal value As String)
            m_crmConnection = value
        End Set
    End Property    ' CrmConnection
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property CrmConnectionType() As String()
        Get
            CrmConnectionType = New String() {"DYNAMICS-CRM"}
        End Get
    End Property    ' CrmConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean = False
        Call MyBase.ComponentMetaData.FireError( _
            0, _
            "Dynamics CRM Convert", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetInputColumn_(ByVal externalName As String) As IDTSInputColumn100
        Dim result As IDTSInputColumn100 = Nothing
        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
        Dim extColumn As IDTSExternalMetadataColumn100 = input.ExternalMetadataColumnCollection(externalName)

        ' Find input column for specified external column.
        For Each inputCol As IDTSInputColumn100 In input.InputColumnCollection
            If inputCol.ExternalMetadataColumnID = extColumn.ID Then
                ' Found input column.
                result = inputCol
                Exit For
            End If
        Next

        GetInputColumn_ = result
    End Function    ' GetInputColumn_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetColumnIndex_(ByVal externalName As String) As Integer
        Dim result As Integer = -1

        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
        Dim inputCol As IDTSInputColumn100 = GetInputColumn_(externalName)
        If Not inputCol Is Nothing Then
            result = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                input.Buffer, _
                inputCol.LineageID)
        End If

        GetColumnIndex_ = result
    End Function    ' GetColumnIndex_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetBufferValue_( _
        ByVal buffer As Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer, _
        ByVal index As Integer) As Object

        Dim result As Object = Nothing

        If index <> -1 AndAlso Not buffer.IsNull(index) Then
            result = buffer(index)
        End If

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


#Region "Attributes"
    Private m_crmConnection As String

    Private m_connection As IConnection
    Private m_service As OrganizationServiceClient
    Private m_idIndex As Integer
    Private m_typeIndex As Integer
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement></arrayElements></property>
<property id="6" name="BinaryCode" dataType="System.String" state="cdata" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[\bin\scriptcomponent_27066129643e4440b6ab85fdba8b2066.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABQRQAATAEDALQGYFgAAAAAAAAAAOAAAiELAQgAADQAAAAMAAAAAAAADlMA
AAAgAAAAYAAAAABAAAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAACgAAAAAgAAAAAAAAIAQIUAABAA
ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAMBSAABLAAAAAGAAALgJAAAAAAAAAAAAAAAAAAAA
AAAAAIAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAAFDMAAAAgAAAANAAAAAIA
AAAAAAAAAAAAAAAAACAAAGAucnNyYwAAALgJAAAAYAAAAAoAAAA2AAAAAAAAAAAAAAAAAABAAABA
LnJlbG9jAAAMAAAAAIAAAAACAAAAQAAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAADw
UgAAAAAAAEgAAAACAAUARCoAAHwoAAABAAAAAAAAAFAgAAC4AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAADOyu++AQAAAJEAAABsU3lzdGVtLlJlc291cmNlcy5S
ZXNvdXJjZVJlYWRlciwgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMuUnVudGlt
ZVJlc291cmNlU2V0AgAAAAAAAAAAAAAAUEFEUEFEULQAAAAeAigBAAAKKh4CKAQAAAoqpnMGAAAK
gAEAAARzBwAACoACAAAEcwgAAAqAAwAABHMJAAAKgAQAAAQqAAATMAEACwAAAAEAABF+AQAABG8K
AAAKKgATMAEACwAAAAIAABF+AgAABG8LAAAKKgATMAEACwAAAAMAABF+AwAABG8MAAAKKgATMAEA
CwAAAAQAABF+BAAABG8NAAAKKgATMAIADQAAAAUAABECAygRAAAKKBIAAAoqAAAAEzABAAcAAAAG
AAARAigTAAAKKgATMAEACwAAAAcAABHQBQAAAigUAAAKKgATMAEABwAAAAgAABECKBUAAAoqABMw
AQAQAAAACQAAEQKMAQAAGy0GKAEAACsqAioTMAIAEAAAAAoAABEDEgD+FQIAABsGgQIAABsqHgIo
FwAACioTMAIAKAAAAAsAABECexkAAApvGgAACgsHjAMAABstEigCAAArCwJ7GQAACgdvGwAACgcq
SgIoFwAACgJzHAAACn0ZAAAKKgAyAgMEBQ4EKB4AAAoqAAAAEzABAAcAAAAMAAARFo0fAAABKgA6
AhYDjAoAAAFvHwAACioAYgMsCQIWbyAAAAorC3IBAABwcyEAAAp6KgAAABMwAwARAAAADQAAEReN
HwAAAQsHFnKeAABwogcqAAAAEzABAAkAAAAOAAARAigiAAAKCgYqAAAAEzABAAkAAAAPAAARAigj
AAAKCgYqAAAAfgIoJQAACgICcxwAAAZ9BgAABAICcx4AAAZ9BwAABCq2AwIoJgAACm8nAAAKcrAA
AHBvKAAACm8pAAAKMw8CAgMXBHMRAAAGbxoAAAYqAABKKwcCA28bAAAGA28WAAAGLfEqAAYqAAA6
AigXAAAKAgN9CAAABCoAEzACACAAAAAQAAARAnsIAAAEbyYAAApvKgAACnK8AABwbysAAApvLAAA
Cio6AigXAAAKAgN9CQAABCoAHgIoGAAABiobMAUAnwEAABEAABFzLQAACgsCA28uAAAKAnsOAAAE
bysAAAYoEQAACigvAAAKDQlvMAAAChMGEQZy2AAAcBYoMQAAChYzRAdy8AAAcG8yAAAKB3IqAQBw
EgcDby4AAAoCew0AAARvMwAACigRAAAKKC8AAAooNAAAChEHjAoAAAFvNQAACjizAAAAEQZyRgEA
cBYoMQAAChYzQQdyXAEAcG8yAAAKB3KSAQBwEgcDby4AAAoCew0AAARvMwAACigRAAAKKC8AAAoo
NAAAChEHjAoAAAFvNQAACitiEQZyrAEAcBYoMQAAChYzQQdytgEAcG8yAAAKB3LwAQBwEgcDby4A
AAoCew0AAARvMwAACigRAAAKKC8AAAooNAAAChEHjAoAAAFvNQAACisRcv4BAHAJKDYAAApzNwAA
CnoCewwAAAQHbzgAAAoMCHI2AgBwbzkAAAp0KAAAAQoGLAwDBm86AAAKbxMAAAbePSUoOwAAChME
AhEEbzwAAApvPQAACm8oAAAGKD4AAAreHCUoOwAAChMFAhEFbz8AAApvKAAABig+AAAK3gAqAEEw
AAAAAAAAAAAAAGEBAABhAQAAIQAAACsAAAEAAAAAAAAAAGEBAACCAQAAHAAAACwAAAETMAMAZwAA
AAAAAAACKEAAAAoCAnsGAAAEbx0AAAYUb0EAAAp0DgAAAX0LAAAEAnsLAAAEb0IAAAoCAnsLAAAE
Fm9DAAAKdA8AAAF9DAAABAICckQCAHBvKgAABn0OAAAEAgJyTgIAcG8qAAAGfQ0AAAQqAIICKEQA
AAoCewsAAARvRQAACgIVfQ4AAAQCFX0NAAAEKgAAABswAgCvAAAAEgAAEQJvJQAABihGAAAKLAty
XgIAcHM3AAAKegIoJgAACm8nAAAKFowxAAABbygAAAoMCG9HAAAKLDYUDQJyRAIAcG8pAAAGDQkt
C3KeAgBwczcAAAp6AnJOAgBwbykAAAYNCS0LctQCAHBzNwAACnoCbyYAAApvKgAACnK8AABwbysA
AAoCbyUAAAZvSAAAChcK3holKDsAAAoTBBYKAxEEbz8AAApRKD4AAAreAAYLByoAAQwAAAAAAACR
kQAaLAAAARMwAgCnAAAAEwAAEQIoSQAACgIoJgAACm8nAAAKb0oAAAoWMwtyEAMAcHM3AAAKegIo
JgAACm8nAAAKFowxAAABbygAAAoLB29LAAAKF29MAAAKB29NAAAKb04AAAoHb0sAAApvTwAACgdv
SwAACm9QAAAKCgZyRAIAcG9RAAAKBiCCAAAAb1IAAAoGHwpvUwAACgdvSwAACm9QAAAKCgZyTgIA
cG9RAAAKBh9Ib1IAAAoqABMwAQAJAAAAFAAAEQJ7CgAABAoGKgAAACICA30KAAAEKgAAABMwAwAT
AAAAFQAAEReNHwAAAQsHFnImAwBwogcKBioAEzAHAB0AAAAWAAARFgoCKCYAAAoWckADAHADflQA
AAoWEgBvVQAACioAAAAbMAIAfAAAABcAABEUDQIoJgAACm8nAAAKFowxAAABbygAAAoMCG9LAAAK
A29WAAAKCghvTQAACm9XAAAKEwUrIhEFb1gAAAp0DQAAARMEEQRvWQAACgZvWgAACjMFEQQN3iER
BW9bAAAKLdXeFhEFdTcAAAEsDBEFdTcAAAFvXAAACtwJCwcqAQwAAAIAJgA8YgAWAAAAARMwAwBF
AAAAGAAAERUNAigmAAAKbycAAAoWjDEAAAFvKAAACgsCA28pAAAGDAgsHQJvXQAACm9eAAAKB29f
AAAKCG9gAAAKb2EAAAoNCQoGKgAAABMwAgAlAAAAGQAAERQLBBUuFgMEb2IAAAotDQMEbzMAAAoo
EQAACgsHKBEAAAoKBioAAAAeAigXAAAKKhMwAgAtAAAAGgAAEX4PAAAELSByagMAcNAMAAACKBQA
AApvaAAACnNpAAAKCweADwAABH4PAAAEKgAAABMwAQAGAAAAGwAAEX4QAAAEKgAAHgKAEAAABCpC
cxcAAAooEQAACoASAAAEKgAAAB4CKGoAAAoqGzABAD8AAAAcAAARfhEAAAQtMn4SAAAEKBEAAAoo
awAACn4RAAAELRxzMQAABoARAAAE3hB+EgAABCgRAAAKKGwAAArcfhEAAAQqAAEMAAACAB0ADCkA
EAAAAAFCU0pCAQABAAAAAAAMAAAAdjIuMC41MDcyNwAAAAAFAGwAAAAkDQAAI34AAJANAAAEEgAA
I1N0cmluZ3MAAAAAlB8AAJwDAAAjVVMAMCMAABAAAAAjR1VJRAAAAEAjAAA8BQAAI0Jsb2IAAAAA
AAAAAgAAAVcVogkJDwAAAPoBMwAWAAABAAAASwAAAA0AAAASAAAAMgAAABgAAAB3AAAAPQAAABwA
AAAHAAAADwAAABEAAAAJAAAAAQAAAAsAAAABAAAAAgAAAAMAAAACAAAAAADIEQEAAAAAAAoAqQF/
AQoA3QG/AQYA7QHmAQoARQJ/AQYAwwLmAQoARQMbAw4AlwOAAxIA5gPFAxYAFwTFAwYAXwTmAQ4A
9wSAAxoAqAWABR4ArwaGBg4AMQccByIAiAdbBwYA5QfUBwYAEgj9ByYAcwheCCYAwAiqCCYA2Qiq
CCYABgnuCAYAMAkdCQoAbwlICQoAhwkTACYAvAmfCQYA8QnRCQYADwrmAQYAMwrmAQoATAoTAAYA
kApxCgYApArmAQYAvArmARIA1grFAwYA4wrmAR4A+QqGBh4AKAuGBh4AUwuGBh4AcAuGBh4AswuG
BiIA4gtbByIA6QtbByIA/QtbByoARAwmDAYAUgzmAQYAZwzmAQoAdwxICQoAtQxICS4A3AzRDAYA
Uw3mAR4AgA2GBh4AqA2GBh4AAA6GBhoATg6ABQYAkg5/DgYA3g7mARYA8g7FAx4AFg+GBhIAaA/F
Aw4AsQ+PDw4AyQ+PDw4A5Q+PDyYA+Q+qCAYAIBAOEAYARxA2EAYAWhAdCQYAwxDRCQYA4xDRCQYA
AREOEAYAHhFxCgYALBEOEAYARxEOEAYAYhEOEAYAexEOEAYAlBEOEAYAsREOEAAAAAABAAAAAAAB
AAEAAAAAACkANwAFAAEAAQAAAAAAcgA3AAkAAQACAAABEAB9ADcADQABAAMABQEAAIcAAAANAAUA
CAAFAQAAlQAAAA0ABQAPAAEAAACwALwAHQAGABEAAQAAAPQAvAAtAAYAGAABAAAAAgG8AA0ACAAc
AAEAAAAOAbwADQAJAB4AAQAAABgBvAAgAAoAHwAAAAAAIwEvAQ0ADwAsAAABEAB0AbwASQARADAA
MQAIAiAAMQAxAi0AMQBTAjoAMQB4AkcAIQBUA5AABgACAdsABgAOAd8AAQBNBfAAAQBNBfAAAQAM
ByEBAQA9ByQBAQCiBygBAQCsBywBAQC2BywBEQD1BzMBEQAeCDcBEQCLCFUBEQCTCFkBCCEAAAAA
Bhi5ARMAAQAQIQAAAAAGGLkBEwABABghAAAAABEY9AEXAAEARCEAAAAAEwj7ARsAAQBcIQAAAAAT
CCECKAABAHQhAAAAABMISgI1AAEAjCEAAAAAEwhoAkIAAQCkIQAAAABGAq4CYwABAMAhAAAAAEYC
twJoAAIA1CEAAAAAgwDIAmwAAgDsIQAAAABGAtACcQACAAAiAAAAABEA2QJ4AAIAHCIAAAAAAQD3
AoAAAwA4IgAAAAAGGLkBEwAEAEAiAAAAAAMICwOLAAQAdCIAAAAABhi5ARMABACIIgAAAAAGGLkB
rwAEAJgiAAAAAEYKSAS5AAgArCIAAAAABghkBL4ACAC8IgAAAAAGCHcExAAJANgiAAAAAEYKiwS5
AAoA+CIAAAAAhgCjBMkACgAQIwAAAACGAKsEyQAKACgjAAAAAAYYuQETAAoASCMAAAAARgILBeMA
CgB4IwAAAABGAyAF6gAMAIwjAAAAAEYDMwXqAA0AkCMAAAAABhi5AfQADgCgIwAAAAAGCMEF+gAP
AMwjAAAAAAYYuQH0AA8A3CMAAAAABhi5ARMAEADkIwAAAABGAjMF6gAQAMQlAAAAAEYC4QUTABEA
OCYAAAAARgLsBRMAEQBcJgAAAAAGAPgFBAERACgnAAAAAEYCDAYTABIA3CcAAAAABgjBBXEAEgD0
JwAAAAAGCCEGCgESAAAoAAAAAAEIOQa5ABMAICgAAAAAAQBPBgoBEwBMKAAAAAABAMIGDwEUAOQo
AAAAAAEA3wYVARUAOCkAAAAAAQDvBhoBFgBsKQAAAAADGLkBEwAYAHQpAAAAABYIKgg7ARgAsCkA
AAAAFgg+CEABGADEKQAAAAAWCEoIRQEYAMwpAAAAABEY9AEXABkA4CkAAAAABhi5ARMAGQDoKQAA
AAAWCKAIXAEZAAAAAQC1AgAAAQDuAgAAAQDuAgAAAQAmBAAAAgAwBAAAAwA5BAAABABBBAAAAQBx
BAAAAQBxBAAAAQAYBQAAAgBBBAAAAQBBBAAAAQBJBQAAAQAmBAAAAQAmBAAAAQBJBQAAAQABBgAA
AQAzBgAAAQBaBgAAAQDSBgAAAQDSBgAAAQD/BgAAAgAGBwAAAQBxBAkAuQETAJkAuQFmAakAuQF1
AREAuQETALEAuQETACQAuQETACwAuQETADQAuQETADwAuQETACQACwOLACwACwOLADQACwOLADwA
CwOLALkAuQETAMEAuQETAMkAuQEKAdEAAAoOAhkArgJjABkAtwJoACkAIQobAhkA0AJxAOEAPQor
AhkAuQETAOkAuQE7AkQAVAOQAEwAoAiLAEwAZwq4AkwAuQETAPEAuQHEADkAuQGvADkAqwrQAjkA
tArWAgEBuQEKAQkBowTJAAkBqwTJABEBuQHEAFkAuQETAEEAEgviAhkBPwvoAiEBYAvuAikBaQto
ABkBkwv1AjEBYAv7AjkBzAv6AEkBuQETADkAXAwHA2kB0AIMA/kAbwxxAHEBgQwRA0kBjwwKAUkA
YAsYA1EAuQEKAUkBqwodA/kAnwwjA2EBuQEKAXkApgwpA1EBYAsyA0EBrgw3A3kBwQw8A1kB5AxD
A4EB7wxxAHkB/AwXAGEBDg1xAEEA4QUTAGEAGg1fA3EALA0TAHEANA0YA0EA7AUTAHEAPw0TAPkA
RQ1kAykBWQ3JADkBaA0KAVkADAYTACEBng1oACkB0A12A5kB9Q3EACkBHQ58A6EBNw4TAJkBNw4T
AJkBQQ6CA5EBRQ4KAZEBVw6IA5EBZA7WAvkAbw4hARkBdQ6YA5kBYAujA6EBng6qA7EBrA6wA2kA
uA5oAJEBaQtoALEB1Q7JALkB6g4TAFkABA/GA8EBKw/MAykBXAxoAGkAPQ9oAMkBSw/SA0kAYQ/i
A9EBuQETANkBuQETAOEBuQEKAekBuQEKAfEBuQEKASkAKRA+BIEAuQFEBJEAuQETAAECTxBhBAEC
VRBhBAkCuQETABECuQHWAhkCuQETACECuQEKASkCuQEKATECuQEKATkCuQEKAUECuQEKAUkCuQEK
AVECuQEKAVkCuQEKASkAgwDwAS4AqwMtBS4AowPwBC4AewN0BC4AgwOTBC4AmwPQBC4AuwPwBC4A
cwNrBC4AswPFAi4AiwOgBC4A6wDFAi4AIwHKBC4AkwPFAkAAKwCTAUAAEwBsAUMAEwBsAUMAGwB7
AUkAgwDIAWMAEwBsAWMAGwB7AWkAgwABAoAAKwCTAYMAGwB7AYMAcwCTAYMAewCTAYkAgwDcAaAA
KwCTAaMAEwBsAaMAwwBDAsAAKwCTAcMAEwBsAcMA6wDFAuAAKwCTAeMAIwHFAgABEwBsAQABKwCT
AQMBIwHFAiABEwBsASABKwCTAUABEwBsAUABKwCTAWABKwCTAWABEwBsAWMBKwPsA2MBIwOTAWMB
IwHFAmMBGwOTAWkBOwMRBGkBMwP6A4ABKwCTAaABKwCTAakBEwBYBMABKwCTAcABEwBsAckBEwBY
BOABKwCTAekBawOTAQACEwBsAQACKwCTAYADIwHFAsADIwHFArQBuQG+AcMBEwIXAiICJwI2AjYC
vgLLAtsCEwITAgIDSQNpA48DJwLbAhMCtAPYA+cDTARTBGYEBAABAAYABQAHAAYACQAKAAsACwAM
AA0ADQAPAAAA3QFPAAAAlgJUAAAARQJZAAAAogJeAAAAXgOYAAAAtwTNAAAAygTSAAAA0wTXAAAA
4wTNAAAA0wX/AAAA0wUvAQAAwgfNAAAA5QdLAQAAVghQAQAAcQRhAQIABAADAAIABQAFAAIABgAH
AAIABwAJAAIADwALAAIAEgANAAEAEwAPAAEAFAARAAIAFQATAAIAHQAVAAIAJQAXAAEAJgAXAAIA
JwAZAAIALQAbAAIALgAdAAEALwAdAAIAMgAfAHUAdQCIAJgBnwGmAa0BpQKsAgSAAAABAAAAAAAA
AAAAAAAAALwAAAACAAAAAAAAAAAAAAABAAoAAAAAAAgAAAAAAAAAAAAAAAoAEwAAAAAAAQAAAAAA
AAAAAAAAnQBqAwAAAAAKAAAAAAAAAAAAAACmAKgDAAAAAAoAAAAAAAAAAAAAAKYA9gMAAAAACgAA
AAAAAAAAAAAApgBdBQAAAAAKAAAAAAAAAAAAAACmAGIGAAAAAAEAAAAAAAAAAAAAAJ0ASgcAAAAA
AgAAAAAAAAAAAAAAAQDmAQAAAAACAAAAAAAAAAAAAAAKABIMAAAAAAIAAAAAAAAAAAAAAAEA0QwA
AAAAAAAAAAEAAAB3EAAABQAEAAYABAAAABAADADsAgAAEAAZAOwCAAAAABsA7AItADECLQCzAgAA
ADxNb2R1bGU+AG1zY29ybGliAE1pY3Jvc29mdC5WaXN1YWxCYXNpYwBNeUFwcGxpY2F0aW9uAFNj
cmlwdENvbXBvbmVudF8yNzA2NjEyOTY0M2U0NDQwYjZhYjg1ZmRiYThiMjA2Ni52YnByb2ouTXkA
TXlDb21wdXRlcgBNeVByb2plY3QATXlXZWJTZXJ2aWNlcwBUaHJlYWRTYWZlT2JqZWN0UHJvdmlk
ZXJgMQBJbnB1dEJ1ZmZlcgBTY3JpcHRDb21wb25lbnRfMjcwNjYxMjk2NDNlNDQ0MGI2YWI4NWZk
YmE4YjIwNjYudmJwcm9qAFVzZXJDb21wb25lbnQAQ29ubmVjdGlvbnMAVmFyaWFibGVzAFNjcmlw
dE1haW4ATXlSZXNvdXJjZXMAU2NyaXB0Q29tcG9uZW50XzI3MDY2MTI5NjQzZTQ0NDBiNmFiODVm
ZGJhOGIyMDY2LnZicHJvai5NeS5SZXNvdXJjZXMATXlTZXR0aW5ncwBNaWNyb3NvZnQuVmlzdWFs
QmFzaWMuQXBwbGljYXRpb25TZXJ2aWNlcwBBcHBsaWNhdGlvbkJhc2UALmN0b3IATWljcm9zb2Z0
LlZpc3VhbEJhc2ljLkRldmljZXMAQ29tcHV0ZXIAU3lzdGVtAE9iamVjdAAuY2N0b3IAZ2V0X0Nv
bXB1dGVyAG1fQ29tcHV0ZXJPYmplY3RQcm92aWRlcgBnZXRfQXBwbGljYXRpb24AbV9BcHBPYmpl
Y3RQcm92aWRlcgBVc2VyAGdldF9Vc2VyAG1fVXNlck9iamVjdFByb3ZpZGVyAGdldF9XZWJTZXJ2
aWNlcwBtX015V2ViU2VydmljZXNPYmplY3RQcm92aWRlcgBBcHBsaWNhdGlvbgBXZWJTZXJ2aWNl
cwBFcXVhbHMAbwBHZXRIYXNoQ29kZQBUeXBlAEdldFR5cGUAVG9TdHJpbmcAQ3JlYXRlX19JbnN0
YW5jZV9fAFQAaW5zdGFuY2UARGlzcG9zZV9fSW5zdGFuY2VfXwBnZXRfR2V0SW5zdGFuY2UATWlj
cm9zb2Z0LlZpc3VhbEJhc2ljLk15U2VydmljZXMuSW50ZXJuYWwAQ29udGV4dFZhbHVlYDEAbV9D
b250ZXh0AEdldEluc3RhbmNlAENvenlSb2MuU1NJU1BsdXMuMjAwOABDb3p5Um9jLlNxbFNlcnZl
ci5TU0lTAFNjcmlwdEJ1ZmZlclBsdXMATWljcm9zb2Z0LlNxbFNlcnZlci5UeFNjcmlwdABNaWNy
b3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZQBTY3JpcHRDb21wb25lbnQATWljcm9zb2Z0LlNx
bFNlcnZlci5QaXBlbGluZUhvc3QAUGlwZWxpbmVCdWZmZXIAQ29tcG9uZW50AE9iamVjdElEAElz
SW5wdXQAQnVmZmVyAGdldF9TdGF0aWNJbnB1dENvbHVtbnMAR3VpZABzZXRfT3V0cHV0SWQAVmFs
dWUAc2V0X091dHB1dElkX0lzTnVsbABnZXRfU3RhdGljT3V0cHV0Q29sdW1ucwBOZXh0Um93AEVu
ZE9mUm93c2V0AFN0YXRpY0lucHV0Q29sdW1ucwBPdXRwdXRJZABPdXRwdXRJZF9Jc051bGwAU3Rh
dGljT3V0cHV0Q29sdW1ucwBTY3JpcHRDb21wb25lbnRQbHVzAFByb2Nlc3NJbnB1dABJbnB1dElE
AElucHV0X1Byb2Nlc3NJbnB1dABJbnB1dF9Qcm9jZXNzSW5wdXRSb3cAUm93AFBhcmVudENvbXBv
bmVudABNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1J1bnRpbWVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2
ZXIuRHRzLlJ1bnRpbWUuV3JhcHBlcgBJRFRTQ29ubmVjdGlvbk1hbmFnZXIxMDAAZ2V0X0NybUNv
bm5lY3Rpb24AQ3JtQ29ubmVjdGlvbgBQcmVFeGVjdXRlAFBvc3RFeGVjdXRlAFZhbGlkYXRlAGVy
ck1lc3NhZ2UAUmVpbml0aWFsaXplTWV0YURhdGEAc2V0X0NybUNvbm5lY3Rpb24AdmFsdWUAZ2V0
X0NybUNvbm5lY3Rpb25UeXBlAEZpcmVFcnJvcl8AbWVzc2FnZQBNaWNyb3NvZnQuU3FsU2VydmVy
LkRUU1BpcGVsaW5lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZS5XcmFwcGVy
AElEVFNJbnB1dENvbHVtbjEwMABHZXRJbnB1dENvbHVtbl8AZXh0ZXJuYWxOYW1lAEdldENvbHVt
bkluZGV4XwBHZXRCdWZmZXJWYWx1ZV8AYnVmZmVyAGluZGV4AG1fY3JtQ29ubmVjdGlvbgBDb3p5
Um9jLkR5bmFtaWNzLkNybQBJQ29ubmVjdGlvbgBtX2Nvbm5lY3Rpb24AQ296eVJvYy5EeW5hbWlj
cwBDb3p5Um9jLkR5bmFtaWNzLkNybTIwMTEuT3JnYW5pemF0aW9uU2VydmljZQBPcmdhbml6YXRp
b25TZXJ2aWNlQ2xpZW50AG1fc2VydmljZQBtX2lkSW5kZXgAbV90eXBlSW5kZXgAQ3JtQ29ubmVj
dGlvblR5cGUAU3lzdGVtLlJlc291cmNlcwBSZXNvdXJjZU1hbmFnZXIAX3Jlc01ncgBTeXN0ZW0u
R2xvYmFsaXphdGlvbgBDdWx0dXJlSW5mbwBfcmVzQ3VsdHVyZQBnZXRfUmVzb3VyY2VNYW5hZ2Vy
AGdldF9DdWx0dXJlAHNldF9DdWx0dXJlAEN1bHR1cmUAU3lzdGVtLkNvbmZpZ3VyYXRpb24AQXBw
bGljYXRpb25TZXR0aW5nc0Jhc2UAbV9WYWx1ZQBtX1N5bmNPYmplY3QAZ2V0X1ZhbHVlAFN5c3Rl
bS5Db21wb25lbnRNb2RlbABFZGl0b3JCcm93c2FibGVBdHRyaWJ1dGUARWRpdG9yQnJvd3NhYmxl
U3RhdGUAU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIAR2VuZXJhdGVkQ29kZUF0dHJpYnV0ZQBTeXN0
ZW0uRGlhZ25vc3RpY3MARGVidWdnZXJIaWRkZW5BdHRyaWJ1dGUATWljcm9zb2Z0LlZpc3VhbEJh
c2ljLkNvbXBpbGVyU2VydmljZXMAU3RhbmRhcmRNb2R1bGVBdHRyaWJ1dGUASGlkZU1vZHVsZU5h
bWVBdHRyaWJ1dGUAU3lzdGVtLkNvbXBvbmVudE1vZGVsLkRlc2lnbgBIZWxwS2V5d29yZEF0dHJp
YnV0ZQBTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzAFJ1bnRpbWVIZWxwZXJzAEdldE9i
amVjdFZhbHVlAFJ1bnRpbWVUeXBlSGFuZGxlAEdldFR5cGVGcm9tSGFuZGxlAEFjdGl2YXRvcgBD
cmVhdGVJbnN0YW5jZQBNeUdyb3VwQ29sbGVjdGlvbkF0dHJpYnV0ZQBzZXRfVmFsdWUAU3lzdGVt
LlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzAENvbVZpc2libGVBdHRyaWJ1dGUAU3RyaW5nAHNldF9J
dGVtAFNldE51bGwASW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbgBTY3JpcHRCdWZmZXIAQ0xTQ29t
cGxpYW50QXR0cmlidXRlAElEVFNDb21wb25lbnRNZXRhRGF0YTEwMABnZXRfQ29tcG9uZW50TWV0
YURhdGEASURUU0lucHV0Q29sbGVjdGlvbjEwMABnZXRfSW5wdXRDb2xsZWN0aW9uAElEVFNJbnB1
dDEwMABnZXRfSXRlbQBnZXRfSUQASURUU1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbjEwMABn
ZXRfUnVudGltZUNvbm5lY3Rpb25Db2xsZWN0aW9uAElEVFNSdW50aW1lQ29ubmVjdGlvbjEwMABn
ZXRfQ29ubmVjdGlvbk1hbmFnZXIARW50aXR5AE9yZ2FuaXphdGlvblJlcXVlc3QAT3JnYW5pemF0
aW9uUmVzcG9uc2UAU3lzdGVtLldlYi5TZXJ2aWNlcwBTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3Rv
Y29scwBTb2FwRXhjZXB0aW9uAEV4Y2VwdGlvbgBnZXRfQnVmZmVyAENvbnZlcnQAVG9Mb3dlcgBP
cGVyYXRvcnMAQ29tcGFyZVN0cmluZwBzZXRfUmVxdWVzdE5hbWUARm9ybWF0AEV4ZWN1dGUAZ2V0
X0lkAFByb2plY3REYXRhAFNldFByb2plY3RFcnJvcgBTeXN0ZW0uWG1sAFhtbE5vZGUAZ2V0X0Rl
dGFpbABnZXRfSW5uZXJYbWwAQ2xlYXJQcm9qZWN0RXJyb3IAZ2V0X01lc3NhZ2UAQWNxdWlyZUNv
bm5lY3Rpb24AQ29ubmVjdABHZXRTZXJ2aWNlAENsb3NlAElzTnVsbE9yRW1wdHkASW50MzIAZ2V0
X0lzQXR0YWNoZWQAc2V0X0Nvbm5lY3Rpb25NYW5hZ2VySUQASURUU0V4dGVybmFsTWV0YWRhdGFD
b2x1bW4xMDAAZ2V0X0NvdW50AElEVFNFeHRlcm5hbE1ldGFkYXRhQ29sdW1uQ29sbGVjdGlvbjEw
MABnZXRfRXh0ZXJuYWxNZXRhZGF0YUNvbHVtbkNvbGxlY3Rpb24Ac2V0X0lzVXNlZABJRFRTSW5w
dXRDb2x1bW5Db2xsZWN0aW9uMTAwAGdldF9JbnB1dENvbHVtbkNvbGxlY3Rpb24AUmVtb3ZlQWxs
AE5ldwBzZXRfTmFtZQBEYXRhVHlwZQBzZXRfRGF0YVR5cGUAc2V0X0xlbmd0aABFbXB0eQBGaXJl
RXJyb3IAU3lzdGVtLkNvbGxlY3Rpb25zAElFbnVtZXJhdG9yAEdldEVudW1lcmF0b3IAZ2V0X0N1
cnJlbnQAZ2V0X0V4dGVybmFsTWV0YWRhdGFDb2x1bW5JRABNb3ZlTmV4dABJRGlzcG9zYWJsZQBE
aXNwb3NlAFBpcGVsaW5lQ29tcG9uZW50AGdldF9Ib3N0Q29tcG9uZW50AElEVFNCdWZmZXJNYW5h
Z2VyMTAwAGdldF9CdWZmZXJNYW5hZ2VyAGdldF9MaW5lYWdlSUQARmluZENvbHVtbkJ5TGluZWFn
ZUlEAElzTnVsbABTU0lTU2NyaXB0Q29tcG9uZW50RW50cnlQb2ludEF0dHJpYnV0ZQBDb3p5Um9j
LlNxbFNlcnZlci5TU0lTLkF0dHJpYnV0ZXMAQ29sdW1uTWFwcGluZ3NBdHRyaWJ1dGUAVmFsaWRh
dGVQcm9wZXJ0aWVzQXR0cmlidXRlAENvbm5lY3Rpb25BdHRyaWJ1dGUARGVzY3JpcHRpb25BdHRy
aWJ1dGUAU3lzdGVtLlJlZmxlY3Rpb24AQXNzZW1ibHkAZ2V0X0Fzc2VtYmx5AFN5c3RlbS5UaHJl
YWRpbmcATW9uaXRvcgBFbnRlcgBFeGl0AERlYnVnZ2VyTm9uVXNlckNvZGVBdHRyaWJ1dGUAU2Ny
aXB0Q29tcG9uZW50XzI3MDY2MTI5NjQzZTQ0NDBiNmFiODVmZGJhOGIyMDY2LnZicHJvai5SZXNv
dXJjZXMucmVzb3VyY2VzAENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAUnVudGltZUNv
bXBhdGliaWxpdHlBdHRyaWJ1dGUAQXNzZW1ibHlGaWxlVmVyc2lvbkF0dHJpYnV0ZQBHdWlkQXR0
cmlidXRlAEFzc2VtYmx5VHJhZGVtYXJrQXR0cmlidXRlAEFzc2VtYmx5Q29weXJpZ2h0QXR0cmli
dXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBc3NlbWJseUNvbXBhbnlBdHRyaWJ1dGUAQXNz
ZW1ibHlEZXNjcmlwdGlvbkF0dHJpYnV0ZQBBc3NlbWJseVRpdGxlQXR0cmlidXRlAFNjcmlwdENv
bXBvbmVudF8yNzA2NjEyOTY0M2U0NDQwYjZhYjg1ZmRiYThiMjA2Ni52YnByb2ouZGxsAACAm0kA
cwBOAHUAbABsACAAcAByAG8AcABlAHIAdAB5ACAAYwBhAG4AbgBvAHQAIABiAGUAIABzAGUAdAAg
AHQAbwAgAEYAYQBsAHMAZQAuACAAQQBzAHMAaQBnAG4AIABhACAAdgBhAGwAdQBlACAAdABvACAA
dABoAGUAIABjAG8AbAB1AG0AbgAgAGkAbgBzAHQAZQBhAGQALgAAEU8AdQB0AHAAdQB0AEkAZAAA
C0kAbgBwAHUAdAAAG0MAcgBtAEMAbwBuAG4AZQBjAHQAaQBvAG4AABdvAHAAcABvAHIAdAB1AG4A
aQB0AHkAADlHAGUAbgBlAHIAYQB0AGUAUQB1AG8AdABlAEYAcgBvAG0ATwBwAHAAbwByAHQAdQBu
AGkAdAB5AAAbTwBwAHAAbwByAHQAdQBuAGkAdAB5AEkAZAAAFXMAYQBsAGUAcwBvAHIAZABlAHIA
ADVDAG8AbgB2AGUAcgB0AFMAYQBsAGUAcwBPAHIAZABlAHIAVABvAEkAbgB2AG8AaQBjAGUAABlT
AGEAbABlAHMATwByAGQAZQByAEkAZAAACXQAZQBhAG0AADlDAG8AbgB2AGUAcgB0AE8AdwBuAGUA
cgBUAGUAYQBtAFQAbwBBAGMAYwBlAHMAcwBUAGUAYQBtAAANVABlAGEAbQBJAGQAADdVAG4AaABh
AG4AZABsAGUAZAAgAGMAbwBuAHYAZQByAHQAIAB0AHkAcABlADoAIAB7ADAAfQAADUUAbgB0AGkA
dAB5AAAJVAB5AHAAZQAAD0kAbgBwAHUAdABJAGQAAD9TAGUAbABlAGMAdAAgAEQAeQBuAGEAbQBp
AGMAcwAgAEMAUgBNACAAQwBvAG4AbgBlAGMAdABpAG8AbgAuAAA1VAB5AHAAZQAgAGMAbwBsAHUA
bQBuACAAaQBzACAAbgBvAHQAIABtAGEAcABwAGUAZAAuAAA7SQBuAHAAdQB0AEkAZAAgAGMAbwBs
AHUAbQBuACAAaQBzACAAbgBvAHQAIABtAGEAcABwAGUAZAAuAAAVTgBvACAAaQBuAHAAdQB0AHMA
LgAAGUQAWQBOAEEATQBJAEMAUwAtAEMAUgBNAAEpRAB5AG4AYQBtAGkAYwBzACAAQwBSAE0AIABD
AG8AbgB2AGUAcgB0AAAxTQB5AC4AUgBlAHMAbwB1AHIAYwBlAHMALgBNAHkAUgBlAHMAbwB1AHIA
YwBlAHMAAOcQ0MDiEJlEtKqtRHWVVUAACLd6XFYZNOCJCLA/X38R1Qo6AyAAAQMAAAEEAAASDAcG
FRIYARIMBAAAEggHBhUSGAESCAQAABIRBwYVEhgBEhEEAAASFAcGFRIYARIUBAgAEgwECAASCAQI
ABIRBAgAEhQEIAECHAMgAAgEIAASFQMgAA4CHgAHEAEBHgAeAAcwAQEBEB4AAhMABCAAEwAHBhUS
GQETAAQoABMACBbPSQu4DDTqCImEXc2AgMyRCSAEARIhCAISJQQgAB0OBSABAREpBCABAQIDIAAC
BCgAHQ4EKAARKQMoAAIDBhIkAwYSKAYgAgEIEiUFIAEBEhwDBhIhBSABARIhBCAAEjEEKAASMQUg
AQIQDgQgAQEOBSABEjUOBCABCA4GIAIcEiUIAgYOAwYSOQMGEj0CBggDKAAOAwYSQQMGEkUEAAAS
QQQAABJFBQABARJFBAgAEkEECAASRQMGEjQCBhwEAAASNAQIABI0BSABARFRCAEAAQAAAAAABSAC
AQ4OFwEACk15VGVtcGxhdGUHOC4wLjAuMAAABAEAAAAGFRIYARIMBhUSGAESCAYVEhgBEhEGFRIY
ARIUBAcBEgwEBwESCAQHARIRBAcBEhQTAQAOTXkuQXBwbGljYXRpb24AABMBAA5NeS5XZWJTZXJ2
aWNlcwAAEAEAC015LkNvbXB1dGVyAAAMAQAHTXkuVXNlcgAABAABHBwDBwECAwcBCAYAARIVEW0E
BwESFQMHAQ4FEAEAHgAECgEeAAQHAR4AByAEAQ4ODg5hAQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Q
cm90b2NvbHMuU29hcEh0dHBDbGllbnRQcm90b2NvbBJDcmVhdGVfX0luc3RhbmNlX18TRGlzcG9z
ZV9fSW5zdGFuY2VfXwAAAAYVEhgBEwAGFRIZARMABAoBEwAFIAEBEwAGBwITABMABQEAAAAABAcB
HQ4FIAIBCBwEIAEBCAYHAh0OHQ4FIAASgI0FIAASgJEGIAESgJUcBSAAEoCZBiABEoCdHAQHARIx
BCAAEiUEAAEOHAYAAwgODgIEIAEcCAUgAgEOHAUAAg4OHAggARKAqRKApQQgARwOBCAAESkGAAEB
EoCxBSAAEoDBFQcIEoChEoClEoCpDhKArRKAsQ4RKQQgARwcBAABAg4MBwUCAhKAlRI1EoCxBSAA
EoDNBSAAEoDRBSAAEoDJBiABARGA1QgHAhKAyRKAlQogBgEIDg4OCBACBiABEoDJHAUgABKA2QMg
ABwRBwYSgMkSNRKAlRI1EjUSgNkFIAASgOEFIAASgOUFIAIICAgJBwQIEoCVEjUIBCABAggEBwIc
HA0BAAhWYWxpZGF0ZQAAFgEAEUNybUNvbm5lY3Rpb25UeXBlAAAsAQAnU2VsZWN0IER5bmFtaWNz
IENSTSBDb25uZWN0aW9uIE1hbmFnZXIuAAAFIAASgP0HIAIBDhKA/QYHAhJBEkEEBwESRQgBAAIA
AAAAAAQAAQEcBAcBEjQIAQAIAAAAAAAeAQABAFQCFldyYXBOb25FeGNlcHRpb25UaHJvd3MBDAEA
BzEuMC4wLjAAACkBACQ2MDY1OWExZC01NGRiLTRmZDctYTI3Yi04NTJmMWE4NTc4ZmQAAAUBAAEA
AB8BABpDb3B5cmlnaHQgQCBNaWNyb3NvZnQgMjAxNgAAPAEAN1NjcmlwdENvbXBvbmVudF8yNzA2
NjEyOTY0M2U0NDQwYjZhYjg1ZmRiYThiMjA2Ni52YnByb2oAAA4BAAlNaWNyb3NvZnQAAOhSAAAA
AAAAAAAAAP5SAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUgAAAAAAAAAAX0NvckRsbE1haW4A
bXNjb3JlZS5kbGwAAAAAAP8lACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAAAoAACADgAA
AEgAAIAQAAAAYAAAgAAAAAAAAAAAAAAAAAAAAgACAAAAeAAAgAMAAACQAACAAAAAAAAAAAAAAAAA
AAABAAB/AACoAACAAAAAAAAAAAAAAAAAAAABAAEAAADAAACAAAAAAAAAAAAAAAAAAAABAAAAAADY
AAAAAAAAAAAAAAAAAAAAAAABAAAAAADoAAAAAAAAAAAAAAAAAAAAAAABAAAAAAD4AAAAAAAAAAAA
AAAAAAAAAAABAAAAAAAIAQAAgGUAAOgCAAAAAAAAAAAAAGhoAAAoAQAAAAAAAAAAAACQaQAAIgAA
AAAAAAAAAAAAGGEAAGgEAAAAAAAAAAAAAGgENAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4A
RgBPAAAAAAC9BO/+AAABAAAAAQAAAAAAAAABAAAAAAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAA
AAAARAAAAAEAVgBhAHIARgBpAGwAZQBJAG4AZgBvAAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQA
aQBvAG4AAAAAAAAAsATIAwAAAQBTAHQAcgBpAG4AZwBGAGkAbABlAEkAbgBmAG8AAACkAwAAAQAw
ADAAMAAwADAANABiADAAAAA0AAoAAQBDAG8AbQBwAGEAbgB5AE4AYQBtAGUAAAAAAE0AaQBjAHIA
bwBzAG8AZgB0AAAAmAA4AAEARgBpAGwAZQBEAGUAcwBjAHIAaQBwAHQAaQBvAG4AAAAAAFMAYwBy
AGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AMgA3ADAANgA2ADEAMgA5ADYANAAzAGUANAA0ADQA
MABiADYAYQBiADgANQBmAGQAYgBhADgAYgAyADAANgA2AC4AdgBiAHAAcgBvAGoAAAAwAAgAAQBG
AGkAbABlAFYAZQByAHMAaQBvAG4AAAAAADEALgAwAC4AMAAuADAAAACYADwAAQBJAG4AdABlAHIA
bgBhAGwATgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AMgA3ADAANgA2
ADEAMgA5ADYANAAzAGUANAA0ADQAMABiADYAYQBiADgANQBmAGQAYgBhADgAYgAyADAANgA2AC4A
dgBiAHAAcgBvAGoALgBkAGwAbAAAAFwAGwABAEwAZQBnAGEAbABDAG8AcAB5AHIAaQBnAGgAdAAA
AEMAbwBwAHkAcgBpAGcAaAB0ACAAQAAgAE0AaQBjAHIAbwBzAG8AZgB0ACAAMgAwADEANgAAAAAA
oAA8AAEATwByAGkAZwBpAG4AYQBsAEYAaQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBt
AHAAbwBuAGUAbgB0AF8AMgA3ADAANgA2ADEAMgA5ADYANAAzAGUANAA0ADQAMABiADYAYQBiADgA
NQBmAGQAYgBhADgAYgAyADAANgA2AC4AdgBiAHAAcgBvAGoALgBkAGwAbAAAAJAAOAABAFAAcgBv
AGQAdQBjAHQATgBhAG0AZQAAAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwAyADcA
MAA2ADYAMQAyADkANgA0ADMAZQA0ADQANAAwAGIANgBhAGIAOAA1AGYAZABiAGEAOABiADIAMAA2
ADYALgB2AGIAcAByAG8AagAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADEA
LgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMQAu
ADAALgAwAC4AMAAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD/
//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAB3d3d3d3d3d3d3d3d3d3AERERERERERERERERERERwBP/////////////////0
cAT/////////////////9HAE//////////////////RwBP/////////////////0cAT/////////
////////9HAE//////////////////RwBP/////////////////0cAT/////////////////9HAE
//////////////////RwBP/////////////////0cAT/////////////////9HAE////////////
//////RwBP/////////////////0cAT/////////////////9HAE//////////////////RwBP//
///////////////0cAT/////////////////9HAE//////////////////RwBIiIiIiIiIiIiIiI
iIiEcARERERERERERERERERERHAETExMTExMTExMTs7OSXRwBMzMzMzMzMzMzMzMzMzEAABERERE
REREREREREREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD/////////////////////wAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAA
AYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAAD
wAAAB////////////////ygAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAHd3d3d3d3d0RERERERERHT///////+EdP///////4R0////////hHT///
////+EdP///////4R0////////hHT///////+EdP///////4R0iIiIiIiIhHTMzMzMzMzEfERERE
REREwAAAAAAAAAAAAAAAAAAAAAD//wAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAEAAP//AAD//wAAAAABAAIAICAQAAEABADoAgAAAgAQEBAAAQAEACgB
AAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAMAAAAEDMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property>
<property id="13" name="UserComponentTypeName" dataType="System.String" state="default" isArray="false" description="" typeConverter="" UITypeEditor="" containsID="false" expressionType="None">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2008, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property>
<property id="33" name="VSTAProjectName" dataType="System.String" state="default" isArray="false" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None">ScriptComponent_27066129643e4440b6ab85fdba8b2066</property>
<property id="34" name="ScriptLanguage" dataType="System.String" state="default" isArray="false" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" UITypeEditor="" containsID="false" expressionType="None">VisualBasic</property></properties>
<connections>
<connection id="27" name="CrmConnection" description="" connectionManagerID="{0915ff2b-7c2a-4ade-90ec-d9c929d1c858}" /></connections>
<inputs>
<input id="3" name="Input" description="" hasSideEffects="true" dangling="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="True">
<externalMetadataColumn id="30" name="Type" description="" precision="0" scale="0" length="10" dataType="wstr" codePage="0" mappedColumnId="0" />
<externalMetadataColumn id="31" name="InputId" description="" precision="0" scale="0" length="0" dataType="guid" codePage="0" mappedColumnId="0" /></externalMetadataColumns></input>
</inputs>
<outputs>
<output id="4" name="Output" description="" exclusionGroup="0" synchronousInputId="3" deleteOutputOnPathDetached="false" hasSideEffects="false" dangling="false" isErrorOut="false" isSorted="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><outputColumns>
<outputColumn id="26" name="OutputId" description="" lineageId="26" precision="0" scale="0" length="0" dataType="guid" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" /></outputColumns><externalMetadataColumns isUsed="False" /></output>
</outputs>
</component>