<component id="14" name="Dynamics CRM Audit Logs Query" componentClassID="Microsoft.ManagedComponentHost" description="Includes and runs custom script code. For example, apply a business rule that limits the range of valid values in an &quot;income&quot; column or add values in two columns and calculate the average of the sum." localeId="1033" version="9" contactInfo="Includes and runs custom script code. For example, apply a business rule that limits the range of valid values in an &quot;income&quot; column or add values in two columns and calculate the average of the sum.;Microsoft Corporation; Microsoft SQL Server; Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;7"><properties><property id="15" 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[SC_6ad45d3034474ff4ba9b8f9cdbd17de6.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{A5ED2BC2-175F-4064-8646-CF06A6E137C6}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>SC_6ad45d3034474ff4ba9b8f9cdbd17de6</RootNamespace>
    <AssemblyName>SC_6ad45d3034474ff4ba9b8f9cdbd17de6</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Debug\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>.\bin\Release\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.Dynamics, 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.Dynamics.dll</HintPath>
    </Reference>
    <Reference Include="CozyRoc.SSISPlus.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=12.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_12.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.ManagedDTS.dll</HintPath>
    </Reference>
    <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=12.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=12.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=12.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=12.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Compile Include="main.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <!-- Visual Basic supports Importing namespaces (equivalent to using statements in C#).-->
  <ItemGroup>
    <Import Include="Microsoft.VisualBasic" />
    <Import Include="System" />
    <Import Include="System.Collections" />
    <Import Include="System.Data" />
    <Import Include="System.Diagnostics" />
    <Import Include="System.Windows.Forms" />
  </ItemGroup>
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <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>
  </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;vstadebug9b38d93b-4cfd-4a39-af77-44e163bb7227/8cf975cd-0e94-4b17-a554-cfb85e3953cb&quot;" />
        <Host Name="SSIS_SC110" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC120</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ComponentWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public OutputBuffer As OutputBuffer

    Dim InputsFinished As Integer = 0

    Public Overrides Sub ProcessInput(ByVal InputID As Integer, ByVal InputName As String, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        If InputID = MyBase.ComponentMetaData.InputCollection("Input").ID Then
            Input_ProcessInput(New InputBuffer(Me, InputID, True, Buffer, OutputMap))
        End If

        If Buffer.EndOfRowset Then
            InputsFinished = InputsFinished + 1
            If InputsFinished = 1 Then
                FinishOutputs()
                MarkOutputsFinished()
            End If
        End If

    End Sub

    Public Overridable Sub FinishOutputs()
    End Sub

    Private Sub MarkOutputsFinished()

        If OutputBuffer IsNot Nothing Then
            OutputBuffer.SetEndOfRowset
            OutputBuffer = Nothing
        End If

    End Sub

    Public Overrides Sub PrimeOutput(ByVal Outputs As Integer, ByVal OutputIDs() As Integer, ByVal Buffers() As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        For I As Integer = 0 To Outputs - 1
            If OutputIDs(I) = GetOutputID(OutputMap, "Output") Then
                OutputBuffer = New OutputBuffer(Me, OutputIDs(I), False, Buffers(I), OutputMap)
            End If
        Next

        CreateNewOutputRows()

    End Sub

    Public Overridable Sub CreateNewOutputRows()
    End Sub

    Public Overridable Sub Input_ProcessInput(ByVal Buffer As InputBuffer)

        While Buffer.NextRow()
            Input_ProcessInputRow(Buffer)
        End While

    End Sub

    Public Overridable Sub Input_ProcessInputRow(ByVal Row As InputBuffer)

    End Sub

End Class

Public Class Connections

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

    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[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-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.Collections
Imports System.Collections.Generic
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
Imports CRM2011 = CozyRoc.Dynamics.Crm2011.OrganizationService


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute()> _
<CLSCompliant(False)> _
<ColumnMappings()> _
<SortProperties(New String() {"CrmConnection", "BatchSize", "InsertTerminator"})> _
<ValidateProperties("Validate")> _
Public Class ScriptMain
    Inherits UserComponent


    Public Const Formatted As String = "Formatted"


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Try
            ' Setup entity reference.
            Dim entityRef As New EntityReference()
            entityRef.LogicalName = Convert.ToString(Row.Buffer(m_entityIdx))
            entityRef.Id = New Guid(Convert.ToString(Row.Buffer(m_idIdx)))

            ' Setup paging info.
            Dim pi As PagingInfo = New PagingInfo()
            pi.Count = Me.BatchSize
            pi.PageNumber = 1

            ' Setup audit request.
            Dim req As New OrganizationRequest()
            req.RequestName = "RetrieveRecordChangeHistory"
            req("Target") = entityRef
            req("PagingInfo") = pi

            While True
                Dim res As OrganizationResponse = m_service.Execute(req)
                Dim details As AuditDetailCollection = CType( _
                    res("AuditDetailCollection"),  _
                    AuditDetailCollection)

                Call OutputDetails_(details)

                If details.MoreRecords Then
                    ' Setup next PageInfo.
                    pi.PageNumber += 1
                    pi.PagingCookie = details.PagingCookie
                Else
                    ' Reached end. Exit loop.
                    Exit While
                End If
            End While

            If Me.InsertTerminator Then
                Call OutputBuffer.AddRow()
            End If

            If Row.EndOfRowset() Then
                Call OutputBuffer.SetEndOfRowset()
            End If
        Catch ex As SoapException
            Call FireError_(ex.Detail.InnerXml)
        Catch ex As Exception
            Call FireError_(ex.ToString())
        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)

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

        ' Get input column indexes.
        inputCol = GetInputColumn_("Entity")
        m_entityIdx = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)

        inputCol = GetInputColumn_("Id")
        m_idIdx = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)
    End Sub ' PreExecute


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

        Call m_connection.Close()
    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 = Me.ComponentMetaData.InputCollection(0)
            If input.IsAttached AndAlso _
                (input.InputColumnCollection.Count = 0 OrElse _
                input.InputColumnCollection.Count < 2) Then
                Throw New Exception("Map input columns.")
            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 entity.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "Entity"
        column.DataType = DataType.DT_WSTR
        column.Length = 100

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


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Specifies retrieve batch size.")> _
    <DefaultValue(100)> _
    Public Property BatchSize() As Integer
        Get
            BatchSize = m_batchSize
        End Get
        Set(ByVal value As Integer)
            m_batchSize = value
        End Set
    End Property    ' BatchSize


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Indicates whether an empty line should be inserted at the end of each set of detail records.")> _
    Public Property InsertTerminator() As Boolean
        Get
            InsertTerminator = m_insertTermintator
        End Get
        Set(ByVal value As Boolean)
            m_insertTermintator = value
        End Set
    End Property    ' InsertTerminator
#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 Audit Logs Query", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub     ' FireError_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Find input column of specified external column name.
    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

        If result Is Nothing Then
            Throw New Exception("Input column not found.")
        End If

        GetInputColumn_ = result
    End Function    ' GetInputColumn_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Audit details output.
    Private Sub OutputDetails_(ByVal details As AuditDetailCollection)
        For Each detail As AuditDetail In details.AuditDetails
            If Not TypeOf detail Is AttributeAuditDetail Then
                Continue For
            End If

            Dim attributeDetail As AttributeAuditDetail = CType(detail, AttributeAuditDetail)

            ' Setup audit.
            Dim audit As Hashtable = GetAttributes_(detail.AuditRecord)
            Dim newAttrs As Hashtable = GetAttributes_(attributeDetail.NewValue)
            Dim oldAttrs As Hashtable = GetAttributes_(attributeDetail.OldValue)

            If Not attributeDetail.NewValue Is Nothing Then
                For Each attribute As KeyValuePair(Of String, Object) In attributeDetail.NewValue.Attributes
                    Call AddOutputRow_(audit)

                    With OutputBuffer
                        .fieldName = attribute.Key
                        .oldValue = Convert.ToString(oldAttrs(attribute.Key))
                        .oldValueFormatted = Convert.ToString(oldAttrs(attribute.Key + Formatted))
                        .newValue = Convert.ToString(newAttrs(attribute.Key))
                        .newValueFormatted = Convert.ToString(newAttrs(attribute.Key + Formatted))
                    End With
                Next
            End If

            If Not attributeDetail.OldValue Is Nothing Then
                For Each attribute As KeyValuePair(Of String, Object) In attributeDetail.OldValue.Attributes
                    If Not newAttrs.Contains(attribute.Key) Then
                        Call AddOutputRow_(audit)

                        With OutputBuffer
                            .fieldName = attribute.Key
                            .oldValue = Convert.ToString(oldAttrs(attribute.Key))
                            .oldValueFormatted = Convert.ToString(oldAttrs(attribute.Key + Formatted))
                        End With
                    End If
                Next
            End If
        Next
    End Sub     ' OutputDetails_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetAttributes_(ByVal entity As Entity) As Hashtable
        Dim result As New Hashtable

        If entity Is Nothing Then
            Return result
        End If

        For Each attribute As KeyValuePair(Of String, Object) In entity.Attributes
            Dim value As Object = attribute.Value
            Dim formattedValue As Object = attribute.Value

            Dim entityRef As EntityReference = TryCast(value, EntityReference)
            Dim osv As OptionSetValue = TryCast(value, OptionSetValue)

            If Not entityRef Is Nothing Then
                value = entityRef.Id
                formattedValue = entityRef.Name
            ElseIf Not osv Is Nothing Then
                value = osv.Value
                formattedValue = GetAttributeLabel_(osv.Value)
            End If

            result(attribute.Key) = value
            result(attribute.Key + Formatted) = formattedValue
        Next

        For Each attribute As KeyValuePair(Of String, String) In entity.FormattedValues
            result(attribute.Key + Formatted) = attribute.Value
        Next

        GetAttributes_ = result
    End Function    ' GetAttributes_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub AddOutputRow_(ByVal audit As Hashtable)
        With OutputBuffer
            Call .AddRow()

            .action = Convert.ToInt32(audit("action"))
            .actionFormatted = Convert.ToString(audit("action" + Formatted))
            .auditid = New Guid(Convert.ToString(audit("auditid")))
            .createdon = Convert.ToDateTime(audit("createdon"))
            .objectid = New Guid(Convert.ToString(audit("objectid")))
            .objectidFormatted = Convert.ToString(audit("objectid" + Formatted))
            .objecttypecode = Convert.ToString(audit("objecttypecode"))
            .objecttypecodeFormatted = Convert.ToString(audit("objecttypecode" + Formatted))
            .operation = Convert.ToInt32(audit("operation"))
            .operationFormatted = Convert.ToString(audit("operation" + Formatted))
            .userid = New Guid(Convert.ToString(audit("userid")))
            .useridFormatted = Convert.ToString(audit("userid" + Formatted))
        End With
    End Sub     ' AddOutputRow_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns attribute label for input code. Most probably not needed.
    ' DO NOTHING FOR NOW.
    Private Function GetAttributeLabel_(ByVal code As Integer) As String
        Dim result As String = String.Empty

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


#Region "Attributes"
    Private m_crmConnection As String
    Private m_batchSize As Integer
    Private m_insertTermintator As Boolean

    Private m_connection As IConnection
    Private m_service As OrganizationServiceClient
    Private m_entityIdx As Integer
    Private m_idIdx As Integer
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class InputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Function NextRow() As Boolean
        NextRow = MyBase.NextRow()
    End Function

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class

<CLSCompliant(False)> _
Public Class OutputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public WriteOnly Property [action]() As Int32
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [action_IsNull] As Boolean
        Set
            If (value)
                SetNull(0)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [actionFormatted]() As String
        Set
            Me(1) = Value
        End Set
    End Property
    Public WriteOnly Property [actionFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(1)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [auditid]() As Guid
        Set
            Me(2) = Value
        End Set
    End Property
    Public WriteOnly Property [auditid_IsNull] As Boolean
        Set
            If (value)
                SetNull(2)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [createdon]() As DateTime
        Set
            Me(3) = Value
        End Set
    End Property
    Public WriteOnly Property [createdon_IsNull] As Boolean
        Set
            If (value)
                SetNull(3)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [objectid]() As Guid
        Set
            Me(4) = Value
        End Set
    End Property
    Public WriteOnly Property [objectid_IsNull] As Boolean
        Set
            If (value)
                SetNull(4)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [objectidFormatted]() As String
        Set
            Me(5) = Value
        End Set
    End Property
    Public WriteOnly Property [objectidFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(5)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [objecttypecode]() As String
        Set
            Me(6) = Value
        End Set
    End Property
    Public WriteOnly Property [objecttypecode_IsNull] As Boolean
        Set
            If (value)
                SetNull(6)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [objecttypecodeFormatted]() As String
        Set
            Me(7) = Value
        End Set
    End Property
    Public WriteOnly Property [objecttypecodeFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(7)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [operation]() As Int32
        Set
            Me(8) = Value
        End Set
    End Property
    Public WriteOnly Property [operation_IsNull] As Boolean
        Set
            If (value)
                SetNull(8)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [operationFormatted]() As String
        Set
            Me(9) = Value
        End Set
    End Property
    Public WriteOnly Property [operationFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(9)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [userid]() As Guid
        Set
            Me(10) = Value
        End Set
    End Property
    Public WriteOnly Property [userid_IsNull] As Boolean
        Set
            If (value)
                SetNull(10)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [useridFormatted]() As String
        Set
            Me(11) = Value
        End Set
    End Property
    Public WriteOnly Property [useridFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(11)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [fieldName]() As String
        Set
            Me(12) = Value
        End Set
    End Property
    Public WriteOnly Property [fieldName_IsNull] As Boolean
        Set
            If (value)
                SetNull(12)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [oldValue]() As String
        Set
            Me(13) = Value
        End Set
    End Property
    Public WriteOnly Property [oldValue_IsNull] As Boolean
        Set
            If (value)
                SetNull(13)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [oldValueFormatted]() As String
        Set
            Me(14) = Value
        End Set
    End Property
    Public WriteOnly Property [oldValueFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(14)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [newValue]() As String
        Set
            Me(15) = Value
        End Set
    End Property
    Public WriteOnly Property [newValue_IsNull] As Boolean
        Set
            If (value)
                SetNull(15)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [newValueFormatted]() As String
        Set
            Me(16) = Value
        End Set
    End Property
    Public WriteOnly Property [newValueFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(16)
            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() {"action", "actionFormatted", "auditid", "createdon", "objectid", "objectidFormatted", "objecttypecode", "objecttypecodeFormatted", "operation", "operationFormatted", "userid", "useridFormatted", "fieldName", "oldValue", "oldValueFormatted", "newValue", "newValueFormatted"}
        End Get
    End Property

    Public Overloads Sub AddRow()
        MyBase.AddRow()
    End Sub

    Public Overloads Sub SetEndOfRowset()
        MyBase.SetEndOfRowset()
    End Sub

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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("SC_6ad45d3034474ff4ba9b8f9cdbd17de6")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("")> 
<Assembly: AssemblyProduct("SC_6ad45d3034474ff4ba9b8f9cdbd17de6")> 
<Assembly: AssemblyCopyright("Copyright @  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("5b395152-bf3a-4f8d-b7c9-aa34085de81f")> 

' 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.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\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[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="3.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:CodeName>SC_6ad45d3034474ff4ba9b8f9cdbd17de6</msb:CodeName>
		<msb:Language>msBuild</msb:Language>
		<msb:DisplayName>SC_6ad45d3034474ff4ba9b8f9cdbd17de6</msb:DisplayName>
		<msb:ProjectId>{A0E62868-D422-4BF1-9D62-3784AF59F868}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="SC_6ad45d3034474ff4ba9b8f9cdbd17de6.vbproj"/>
		<msb:File Include="My Project\Settings.Designer.vb"/>
		<msb:File Include="main.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:File Include="My Project\Resources.Designer.vb"/>
		<msb:File Include="My Project\AssemblyInfo.vb"/>
		<msb:File Include="My Project\Resources.resx"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="My Project\Settings.settings"/>
	</msb:ItemGroup>
</c:Project>]]></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="16" 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[SC_6ad45d3034474ff4ba9b8f9cdbd17de6.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
AAAKcjAEAHAodwAAChIHKIQAAApvfwAAChIJKIUAAAot0N4OEgn+Fg4AABtvbQAACtwHCgYqAAAB
HAAAAgALAMLNAA4AAAAAAgDbAEEcAQ4AAAAAEzAEAGwBAAAhAAARAnsIAAAECgZvOwAABgYDcp4A
AHBvdgAACigRAAAKKIYAAApvGAAABgYDcqwAAHBvdgAACigRAAAKKDQAAApvGgAABgYSAgNyzAAA
cG92AAAKKBEAAAooNAAACig2AAAKCG8cAAAGBgNy3AAAcG92AAAKKBEAAAoohwAACm8eAAAGBhIC
A3LwAABwb3YAAAooEQAACig0AAAKKDYAAAoIbyAAAAYGA3ICAQBwb3YAAAooEQAACig0AAAKbyIA
AAYGA3ImAQBwb3YAAAooEQAACig0AAAKbyQAAAYGA3JEAQBwb3YAAAooEQAACig0AAAKbyYAAAYG
A3J0AQBwb3YAAAooEQAACiiGAAAKbygAAAYGA3KIAQBwb3YAAAooEQAACig0AAAKbyoAAAYGEgID
cq4BAHBvdgAACigRAAAKKDQAAAooNgAACghvLAAABgYDcrwBAHBvdgAACigRAAAKKDQAAApvLgAA
BhQKKhMwAQAKAAAAIgAAEX5lAAAKCwcKBioAAB4CKBcAAAoqEzACAC0AAAAjAAARfhQAAAQtIHJE
BABw0A0AAAIoFAAACm+QAAAKc5EAAAoLB4AUAAAEfhQAAAQqAAAAEzABAAYAAAAkAAARfhUAAAQq
AAAeAoAVAAAEKkJzFwAACigRAAAKgBcAAAQqAAAAHgIokgAACiobMAEAPwAAACUAABF+FgAABC0y
fhcAAAQoEQAACiiTAAAKfhYAAAQtHHNhAAAGgBYAAATeEH4XAAAEKBEAAAoolAAACtx+FgAABCoA
ARAAAAIAHQAMKQAQAAAAALQAAADOyu++AQAAAJEAAABsU3lzdGVtLlJlc291cmNlcy5SZXNvdXJj
ZVJlYWRlciwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJs
aWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMuUnVudGltZVJlc291
cmNlU2V0AgAAAAAAAAAAAAAAUEFEUEFEULQAAABCU0pCAQABAAAAAAAMAAAAdjQuMC4zMDMxOQAA
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
AQCmBAAAAQDnCQAAAgDvCQAAAwAgBAAABAAnBAAAAQAnCgAAAgAvCgAAAwA5CgAABAAnBAAAAQAg
BAAAAQB+CgAAAQAFBAAAAQAFBAAAAQB+CgAAAQBACwAAAQByCwAAAQByCwAAAQByCwAAAQDfCwAA
AQBXDAAAAQDHDAAAAQACDQAAAQAXDQAAAQAwDQAAAQCmBAkAigETAMEAigGxAdEAigHAAREAigET
ANkAigETACQAigETACwAigETADQAigETADwAigETACQA3AKLACwA3AKLADQA3AKLADwA3AKLAOEA
igETAOkAigETAPEAigHTAPkAJBBaAhkAfwJjABkAiAJoACkARRBnAhkAoQJxAAkBYRB4AhkAigET
ABEBigGIAkQAJQOQAEwAxA6LAEwAixAFA0wAigETABkBigHOADkAigGvACkBYATAACkBaATAADEB
igHOADkA+BAfAzkAARHJAEEBigHTACkBbAcTACkBcwcTAGkAigETAEEAPBEsA0kBaREyA1EBihE4
A1kBkxFoAEkAmhHAAEEAqhE/A0kB2RFLA2EBihFRA2kBEhIvAXEBigETADkAthJdA0kAihFiA6EB
oQJnA3EByRLTAFkAigHTAHEB2RJsA3kBigETAHkB4BLJAHkB6hLJAIEBigETAIEB+RLTAIEB+BBz
A6EACRN5A4kBihGCA4EAERPAAHkBIRNoAIEAMBNxAHkBQRPTALEBXhOHA5EBgROOA7kBjBNxALEB
mRMXAJkBoQJxAEEAIAsTAHEAqxOyA5kAvRMTAJkAxRNiA2kA4hO3A8EBCRS9A1kBthJoAHkAGxRo
AMkBKRTDA0EAKwsTAJkAPxQTACEBRRTRA5kBigHTAFkBUxTAAFkBfxTWA9EBmRRoAGkBoxTTAJkB
uxRxAGkASwsTAFEBmRRoAFkBDRXnA+EBMhXOANEBPRUTAOEBPRUTAOEBRxXtA9kBSxXTANkBXRXz
A9kBahXJACEBdRU5AUkBexUDBOEBihEOBNEBkRUVBPEBnxUbBHkAqxVoANkBkxFoAPEByBXAAPkB
3RUTAIEAQhYxBAkCUxY4BAECYxY4BAECcBY4BJEAkRY9BFQAkRVQBFwAnxWLAGQAoBaLAIkAihGy
AyEBqBZvBFwAyBXAAIkArxZjAIkAigETAGQAxA6zBHEBxxa4BHEBzhZxADECxA5oAIkA+BC+BJEA
8BbEBGwAkRVQBHQAnxWLAHwAoBaLAHwAxA6zBHQAyBXAAKEBBBchBaEBDBcmBUECigHTAEkCigFI
BVECigETAFkCigETAGECigHTAGkCigHTAHECigHTAHkCigHJACkAGBhhBqkAigFnBrkAigETAIkC
PhiEBokCRBiEBpECigETAJkCigHJAKECigETAKkCigHTALECigHTALkCigHTAMECigHTAMkCigHT
ANECigHTANkCigHTAOECigHTAOkCigHTAA4AMAA8ASkAgwA8Ai4A4wQ7By4A+wQUAy4AAwVSBy4A
CwE1By4AswSOBi4A6wAUAy4A8wQUAy4A2wQUAy4A6wRSBy4AuwSXBi4AwwS2Bi4AywT+Bi4A0wQL
B0AAKwDfAUAAEwC3AUMAEwC3AUMAGwDGAUkAgwAUAmMAGwDGAWMAEwC3AWkAgwBNAoAAKwDfAYMA
ewDfAYMAcwDfAYMAGwDGAYkAgwAoAqAAKwDfAaMAwwCQAqMAEwC3AcAAKwDfAcMAEwC3AcMA6wAU
A+AAKwDfAeMACwEUAwABKwDfAQABEwC3AQMBCwEUAyABKwDfASABEwC3ASMBCwEUA0ABKwDfAUAB
EwC3AWABEwC3AWABKwDfAYABKwDfAYMBQwQ6BYMBSwROBYMBUwTfAYMBCwEUA4MBWwTfAaABKwDf
AcABEwC3AcABKwDfAeABKwDfAQACKwDfAQACEwC3AakFcwTwBakFYwQHBqkFawTiBckFawTiBckF
ewQ0BskFYwQ9BukFYwSABekFawTiBSkGEwB7BkkGEwB7BmkGqwTfAcAICwEUAwAJCwEUAwACBQIK
Ag8CXwJjAm8CdAKDAoMCCwMaAxoDXwJfAhoDJQNfAkYDWAOUA8kD3AP6A3QCYwJfAiUDXwIfBHUE
7AQsBTUFbwZ2BokGBAABAAYABQAHAAYACAAIAAoALAAMAC0ADQAxAA4AMwAAAK4BTwAAAGcCVAAA
ABYCWQAAAHMCXgAAAC8DmAAAAHQExAAAAIcExAAAAHQExAAAAIIH5AAAAIkH6AAAAJcH7AAAAKcH
6AAAAL4H8AAAAMYH6AAAANUH9QAAAN8H6AAAAPAH8AAAAPkH6AAAAAkI7AAAABsI6AAAADQI7AAA
AEMI6AAAAFkI7AAAAHEI6AAAAJAI5AAAAJoI6AAAAKsI7AAAAL4I6AAAANgI8AAAAN8I6AAAAO0I
7AAAAP0I6AAAABQJ7AAAAB4J6AAAAC8J7AAAADgJ6AAAAEgJ7AAAAFoJ6AAAAHMJ7AAAAHwJ6AAA
AIwJ7AAAAJ4J6AAAAIcExAAAAAgLNAEAAAgL7AAAAMsN5AAAANUN6AAAAOYNxAAAAAkOlgEAAHoO
mwEAAKYErAECAAQAAwACAAUABQACAAYABwACAAcACQACAA8ACwACABIADQACABMADwACABcAEQAB
ABgAEwABABkAFQABABoAFwABABsAGQABABwAGwABAB0AHQABAB4AHwABAB8AIQABACAAIwABACEA
JQABACIAJwABACMAKQABACQAKwABACUALQABACYALwABACcAMQABACgAMwABACkANQABACoANwAB
ACsAOQABACwAOwABAC0APQABAC4APwABAC8AQQABADAAQwABADEARQABADIARwABADMASQABADQA
SwABADUATQABADYATwABADcAUQABADgAUwABADkAVQACADoAVwACAEcAWQACAE8AWwABAFAAWwAC
AFEAXQABAFIAXQACAFMAXwABAFQAXwACAFUAYQACAF0AYwACAF4AZQABAF8AZQACAGIAZwB1AHUA
iADkAesB8gH5AfIC+QJDBFoEZwTKBNcE5AQEgAAAAQAAAAAAAAAAAAAAAACoAAAABAAAAAAAAAAA
AAAAAQAKAAAAAAAKAAAAAAAAAAAAAAAKABMAAAAAAAEAAAAAAAAAAAAAAJ0AOwMAAAAADAAAAAAA
AAAAAAAApgB5AwAAAAAMAAAAAAAAAAAAAACmAMcDAAAAAAwAAAAAAAAAAAAAAKYAkgoAAAAADAAA
AAAAAAAAAAAApgDnCwAAAAABAAAAAAAAAAAAAACdAGQMAAAAAAQAAAAAAAAAAAAAAAEAtwEAAAAA
BAAAAAAAAAAAAAAACgBsEgAAAAACAAAAAAAAAAAAAAABAAoAAAAAAAQAAAAAAAAAAAAAAAEAbhMA
AAAAAAAAAAEAAABmGAAABQAEAAYABAAAABAADAC9AgAAEAAZAL0CAAAAABsAvQItAH4CLQAAAwAA
AAAAPE1vZHVsZT4AbXNjb3JsaWIATWljcm9zb2Z0LlZpc3VhbEJhc2ljAE15QXBwbGljYXRpb24A
U0NfNmFkNDVkMzAzNDQ3NGZmNGJhOWI4ZjljZGJkMTdkZTYuTXkATXlDb21wdXRlcgBNeVByb2pl
Y3QATXlXZWJTZXJ2aWNlcwBUaHJlYWRTYWZlT2JqZWN0UHJvdmlkZXJgMQBJbnB1dEJ1ZmZlcgBT
Q182YWQ0NWQzMDM0NDc0ZmY0YmE5YjhmOWNkYmQxN2RlNgBPdXRwdXRCdWZmZXIAVXNlckNvbXBv
bmVudABDb25uZWN0aW9ucwBWYXJpYWJsZXMAU2NyaXB0TWFpbgBNeVJlc291cmNlcwBTQ182YWQ0
NWQzMDM0NDc0ZmY0YmE5YjhmOWNkYmQxN2RlNi5NeS5SZXNvdXJjZXMATXlTZXR0aW5ncwBNaWNy
b3NvZnQuVmlzdWFsQmFzaWMuQXBwbGljYXRpb25TZXJ2aWNlcwBBcHBsaWNhdGlvbkJhc2UALmN0
b3IATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkRldmljZXMAQ29tcHV0ZXIAU3lzdGVtAE9iamVjdAAu
Y2N0b3IAZ2V0X0NvbXB1dGVyAG1fQ29tcHV0ZXJPYmplY3RQcm92aWRlcgBnZXRfQXBwbGljYXRp
b24AbV9BcHBPYmplY3RQcm92aWRlcgBVc2VyAGdldF9Vc2VyAG1fVXNlck9iamVjdFByb3ZpZGVy
AGdldF9XZWJTZXJ2aWNlcwBtX015V2ViU2VydmljZXNPYmplY3RQcm92aWRlcgBBcHBsaWNhdGlv
bgBXZWJTZXJ2aWNlcwBFcXVhbHMAbwBHZXRIYXNoQ29kZQBUeXBlAEdldFR5cGUAVG9TdHJpbmcA
Q3JlYXRlX19JbnN0YW5jZV9fAFQAaW5zdGFuY2UARGlzcG9zZV9fSW5zdGFuY2VfXwBnZXRfR2V0
SW5zdGFuY2UATWljcm9zb2Z0LlZpc3VhbEJhc2ljLk15U2VydmljZXMuSW50ZXJuYWwAQ29udGV4
dFZhbHVlYDEAbV9Db250ZXh0AEdldEluc3RhbmNlAENvenlSb2MuU1NJU1BsdXMuMjAxNABDb3p5
Um9jLlNxbFNlcnZlci5TU0lTAFNjcmlwdEJ1ZmZlclBsdXMATWljcm9zb2Z0LlNxbFNlcnZlci5U
eFNjcmlwdABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZQBTY3JpcHRDb21wb25lbnQA
TWljcm9zb2Z0LlNxbFNlcnZlci5QaXBlbGluZUhvc3QAUGlwZWxpbmVCdWZmZXIAT3V0cHV0TmFt
ZU1hcABDb21wb25lbnQAT2JqZWN0SUQASXNJbnB1dABCdWZmZXIAT3V0cHV0TWFwAGdldF9TdGF0
aWNJbnB1dENvbHVtbnMAZ2V0X1N0YXRpY091dHB1dENvbHVtbnMATmV4dFJvdwBFbmRPZlJvd3Nl
dABTdGF0aWNJbnB1dENvbHVtbnMAU3RhdGljT3V0cHV0Q29sdW1ucwBzZXRfYWN0aW9uAFZhbHVl
AHNldF9hY3Rpb25fSXNOdWxsAHNldF9hY3Rpb25Gb3JtYXR0ZWQAc2V0X2FjdGlvbkZvcm1hdHRl
ZF9Jc051bGwAR3VpZABzZXRfYXVkaXRpZABzZXRfYXVkaXRpZF9Jc051bGwARGF0ZVRpbWUAc2V0
X2NyZWF0ZWRvbgBzZXRfY3JlYXRlZG9uX0lzTnVsbABzZXRfb2JqZWN0aWQAc2V0X29iamVjdGlk
X0lzTnVsbABzZXRfb2JqZWN0aWRGb3JtYXR0ZWQAc2V0X29iamVjdGlkRm9ybWF0dGVkX0lzTnVs
bABzZXRfb2JqZWN0dHlwZWNvZGUAc2V0X29iamVjdHR5cGVjb2RlX0lzTnVsbABzZXRfb2JqZWN0
dHlwZWNvZGVGb3JtYXR0ZWQAc2V0X29iamVjdHR5cGVjb2RlRm9ybWF0dGVkX0lzTnVsbABzZXRf
b3BlcmF0aW9uAHNldF9vcGVyYXRpb25fSXNOdWxsAHNldF9vcGVyYXRpb25Gb3JtYXR0ZWQAc2V0
X29wZXJhdGlvbkZvcm1hdHRlZF9Jc051bGwAc2V0X3VzZXJpZABzZXRfdXNlcmlkX0lzTnVsbABz
ZXRfdXNlcmlkRm9ybWF0dGVkAHNldF91c2VyaWRGb3JtYXR0ZWRfSXNOdWxsAHNldF9maWVsZE5h
bWUAc2V0X2ZpZWxkTmFtZV9Jc051bGwAc2V0X29sZFZhbHVlAHNldF9vbGRWYWx1ZV9Jc051bGwA
c2V0X29sZFZhbHVlRm9ybWF0dGVkAHNldF9vbGRWYWx1ZUZvcm1hdHRlZF9Jc051bGwAc2V0X25l
d1ZhbHVlAHNldF9uZXdWYWx1ZV9Jc051bGwAc2V0X25ld1ZhbHVlRm9ybWF0dGVkAHNldF9uZXdW
YWx1ZUZvcm1hdHRlZF9Jc051bGwAQWRkUm93AFNldEVuZE9mUm93c2V0AGFjdGlvbgBhY3Rpb25f
SXNOdWxsAGFjdGlvbkZvcm1hdHRlZABhY3Rpb25Gb3JtYXR0ZWRfSXNOdWxsAGF1ZGl0aWQAYXVk
aXRpZF9Jc051bGwAY3JlYXRlZG9uAGNyZWF0ZWRvbl9Jc051bGwAb2JqZWN0aWQAb2JqZWN0aWRf
SXNOdWxsAG9iamVjdGlkRm9ybWF0dGVkAG9iamVjdGlkRm9ybWF0dGVkX0lzTnVsbABvYmplY3R0
eXBlY29kZQBvYmplY3R0eXBlY29kZV9Jc051bGwAb2JqZWN0dHlwZWNvZGVGb3JtYXR0ZWQAb2Jq
ZWN0dHlwZWNvZGVGb3JtYXR0ZWRfSXNOdWxsAG9wZXJhdGlvbgBvcGVyYXRpb25fSXNOdWxsAG9w
ZXJhdGlvbkZvcm1hdHRlZABvcGVyYXRpb25Gb3JtYXR0ZWRfSXNOdWxsAHVzZXJpZAB1c2VyaWRf
SXNOdWxsAHVzZXJpZEZvcm1hdHRlZAB1c2VyaWRGb3JtYXR0ZWRfSXNOdWxsAGZpZWxkTmFtZQBm
aWVsZE5hbWVfSXNOdWxsAG9sZFZhbHVlAG9sZFZhbHVlX0lzTnVsbABvbGRWYWx1ZUZvcm1hdHRl
ZABvbGRWYWx1ZUZvcm1hdHRlZF9Jc051bGwAbmV3VmFsdWUAbmV3VmFsdWVfSXNOdWxsAG5ld1Zh
bHVlRm9ybWF0dGVkAG5ld1ZhbHVlRm9ybWF0dGVkX0lzTnVsbABTY3JpcHRDb21wb25lbnRQbHVz
AElucHV0c0ZpbmlzaGVkAFByb2Nlc3NJbnB1dABJbnB1dElEAElucHV0TmFtZQBGaW5pc2hPdXRw
dXRzAE1hcmtPdXRwdXRzRmluaXNoZWQAUHJpbWVPdXRwdXQAT3V0cHV0cwBPdXRwdXRJRHMAQnVm
ZmVycwBDcmVhdGVOZXdPdXRwdXRSb3dzAElucHV0X1Byb2Nlc3NJbnB1dABJbnB1dF9Qcm9jZXNz
SW5wdXRSb3cAUm93AFBhcmVudENvbXBvbmVudABNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1J1bnRp
bWVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlJ1bnRpbWUuV3JhcHBlcgBJRFRTQ29ubmVj
dGlvbk1hbmFnZXIxMDAAZ2V0X0NybUNvbm5lY3Rpb24AQ3JtQ29ubmVjdGlvbgBGb3JtYXR0ZWQA
UHJlRXhlY3V0ZQBQb3N0RXhlY3V0ZQBWYWxpZGF0ZQBlcnJNZXNzYWdlAFJlaW5pdGlhbGl6ZU1l
dGFEYXRhAHNldF9Dcm1Db25uZWN0aW9uAHZhbHVlAGdldF9CYXRjaFNpemUAc2V0X0JhdGNoU2l6
ZQBnZXRfSW5zZXJ0VGVybWluYXRvcgBzZXRfSW5zZXJ0VGVybWluYXRvcgBnZXRfQ3JtQ29ubmVj
dGlvblR5cGUARmlyZUVycm9yXwBtZXNzYWdlAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRFRTUGlwZWxp
bmVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBpcGVsaW5lLldyYXBwZXIASURUU0lucHV0
Q29sdW1uMTAwAEdldElucHV0Q29sdW1uXwBleHRlcm5hbE5hbWUAQ296eVJvYy5EeW5hbWljcwBD
b3p5Um9jLkR5bmFtaWNzLkNybTIwMTEuT3JnYW5pemF0aW9uU2VydmljZQBBdWRpdERldGFpbENv
bGxlY3Rpb24AT3V0cHV0RGV0YWlsc18AZGV0YWlscwBTeXN0ZW0uQ29sbGVjdGlvbnMASGFzaHRh
YmxlAEVudGl0eQBHZXRBdHRyaWJ1dGVzXwBlbnRpdHkAQWRkT3V0cHV0Um93XwBhdWRpdABHZXRB
dHRyaWJ1dGVMYWJlbF8AY29kZQBtX2NybUNvbm5lY3Rpb24AbV9iYXRjaFNpemUAbV9pbnNlcnRU
ZXJtaW50YXRvcgBDb3p5Um9jLkR5bmFtaWNzLkNybQBJQ29ubmVjdGlvbgBtX2Nvbm5lY3Rpb24A
T3JnYW5pemF0aW9uU2VydmljZUNsaWVudABtX3NlcnZpY2UAbV9lbnRpdHlJZHgAbV9pZElkeABC
YXRjaFNpemUASW5zZXJ0VGVybWluYXRvcgBDcm1Db25uZWN0aW9uVHlwZQBTeXN0ZW0uUmVzb3Vy
Y2VzAFJlc291cmNlTWFuYWdlcgBfcmVzTWdyAFN5c3RlbS5HbG9iYWxpemF0aW9uAEN1bHR1cmVJ
bmZvAF9yZXNDdWx0dXJlAGdldF9SZXNvdXJjZU1hbmFnZXIAZ2V0X0N1bHR1cmUAc2V0X0N1bHR1
cmUAQ3VsdHVyZQBTeXN0ZW0uQ29uZmlndXJhdGlvbgBBcHBsaWNhdGlvblNldHRpbmdzQmFzZQBt
X1ZhbHVlAG1fU3luY09iamVjdABnZXRfVmFsdWUAU3lzdGVtLkNvbXBvbmVudE1vZGVsAEVkaXRv
ckJyb3dzYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93c2FibGVTdGF0ZQBTeXN0ZW0uQ29kZURvbS5D
b21waWxlcgBHZW5lcmF0ZWRDb2RlQXR0cmlidXRlAFN5c3RlbS5EaWFnbm9zdGljcwBEZWJ1Z2dl
ckhpZGRlbkF0dHJpYnV0ZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQ29tcGlsZXJTZXJ2aWNlcwBT
dGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9kdWxlTmFtZUF0dHJpYnV0ZQBTeXN0ZW0uQ29t
cG9uZW50TW9kZWwuRGVzaWduAEhlbHBLZXl3b3JkQXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLkNv
bXBpbGVyU2VydmljZXMAUnVudGltZUhlbHBlcnMAR2V0T2JqZWN0VmFsdWUAUnVudGltZVR5cGVI
YW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAQWN0aXZhdG9yAENyZWF0ZUluc3RhbmNlAE15R3JvdXBD
b2xsZWN0aW9uQXR0cmlidXRlAHNldF9WYWx1ZQBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2Vydmlj
ZXMAQ29tVmlzaWJsZUF0dHJpYnV0ZQBTdHJpbmcAU2NyaXB0QnVmZmVyAENMU0NvbXBsaWFudEF0
dHJpYnV0ZQBJbnQzMgBzZXRfSXRlbQBTZXROdWxsAEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24A
SURUU0NvbXBvbmVudE1ldGFEYXRhMTAwAGdldF9Db21wb25lbnRNZXRhRGF0YQBJRFRTSW5wdXRD
b2xsZWN0aW9uMTAwAGdldF9JbnB1dENvbGxlY3Rpb24ASURUU0lucHV0MTAwAGdldF9JdGVtAGdl
dF9JRABnZXRfRW5kT2ZSb3dzZXQAR2V0T3V0cHV0SUQASURUU1J1bnRpbWVDb25uZWN0aW9uQ29s
bGVjdGlvbjEwMABnZXRfUnVudGltZUNvbm5lY3Rpb25Db2xsZWN0aW9uAElEVFNSdW50aW1lQ29u
bmVjdGlvbjEwMABnZXRfQ29ubmVjdGlvbk1hbmFnZXIARW50aXR5UmVmZXJlbmNlAFBhZ2luZ0lu
Zm8AT3JnYW5pemF0aW9uUmVxdWVzdABPcmdhbml6YXRpb25SZXNwb25zZQBTeXN0ZW0uV2ViLlNl
cnZpY2VzAFN5c3RlbS5XZWIuU2VydmljZXMuUHJvdG9jb2xzAFNvYXBFeGNlcHRpb24ARXhjZXB0
aW9uAGdldF9CdWZmZXIAQ29udmVydABzZXRfTG9naWNhbE5hbWUAc2V0X0lkAHNldF9Db3VudABz
ZXRfUGFnZU51bWJlcgBzZXRfUmVxdWVzdE5hbWUARXhlY3V0ZQBnZXRfTW9yZVJlY29yZHMAZ2V0
X1BhZ2VOdW1iZXIAZ2V0X1BhZ2luZ0Nvb2tpZQBzZXRfUGFnaW5nQ29va2llAFByb2plY3REYXRh
AFNldFByb2plY3RFcnJvcgBTeXN0ZW0uWG1sAFhtbE5vZGUAZ2V0X0RldGFpbABnZXRfSW5uZXJY
bWwAQ2xlYXJQcm9qZWN0RXJyb3IAQWNxdWlyZUNvbm5lY3Rpb24AQ29ubmVjdABHZXRTZXJ2aWNl
AFBpcGVsaW5lQ29tcG9uZW50AGdldF9Ib3N0Q29tcG9uZW50AElEVFNCdWZmZXJNYW5hZ2VyMTAw
AGdldF9CdWZmZXJNYW5hZ2VyAGdldF9MaW5lYWdlSUQARmluZENvbHVtbkJ5TGluZWFnZUlEAENs
b3NlAElzTnVsbE9yRW1wdHkAZ2V0X0lzQXR0YWNoZWQASURUU0lucHV0Q29sdW1uQ29sbGVjdGlv
bjEwMABnZXRfSW5wdXRDb2x1bW5Db2xsZWN0aW9uAGdldF9Db3VudABzZXRfQ29ubmVjdGlvbk1h
bmFnZXJJRABnZXRfTWVzc2FnZQBJRFRTRXh0ZXJuYWxNZXRhZGF0YUNvbHVtbjEwMABJRFRTRXh0
ZXJuYWxNZXRhZGF0YUNvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X0V4dGVybmFsTWV0YWRhdGFDb2x1
bW5Db2xsZWN0aW9uAHNldF9Jc1VzZWQAUmVtb3ZlQWxsAE5ldwBzZXRfTmFtZQBEYXRhVHlwZQBz
ZXRfRGF0YVR5cGUAc2V0X0xlbmd0aABFbXB0eQBGaXJlRXJyb3IASUVudW1lcmF0b3IAR2V0RW51
bWVyYXRvcgBnZXRfQ3VycmVudABnZXRfRXh0ZXJuYWxNZXRhZGF0YUNvbHVtbklEAE1vdmVOZXh0
AElEaXNwb3NhYmxlAERpc3Bvc2UAQXR0cmlidXRlQXVkaXREZXRhaWwAQXVkaXREZXRhaWwAU3lz
dGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMAS2V5VmFsdWVQYWlyYDIATGlzdGAxAEVudW1lcmF0b3IA
Z2V0X0F1ZGl0RGV0YWlscwBnZXRfQXVkaXRSZWNvcmQAZ2V0X05ld1ZhbHVlAGdldF9PbGRWYWx1
ZQBBdHRyaWJ1dGVDb2xsZWN0aW9uAGdldF9BdHRyaWJ1dGVzAGdldF9LZXkAQ29uY2F0AENvbnRh
aW5zAE9wdGlvblNldFZhbHVlAGdldF9JZABnZXRfTmFtZQBGb3JtYXR0ZWRWYWx1ZUNvbGxlY3Rp
b24AZ2V0X0Zvcm1hdHRlZFZhbHVlcwBUb0ludDMyAFRvRGF0ZVRpbWUAQ296eVJvYy5TcWxTZXJ2
ZXIuU1NJUy5BdHRyaWJ1dGVzAFZhbGlkYXRlUHJvcGVydGllc0F0dHJpYnV0ZQBTb3J0UHJvcGVy
dGllc0F0dHJpYnV0ZQBDb2x1bW5NYXBwaW5nc0F0dHJpYnV0ZQBTU0lTU2NyaXB0Q29tcG9uZW50
RW50cnlQb2ludEF0dHJpYnV0ZQBEZXNjcmlwdGlvbkF0dHJpYnV0ZQBDYXRlZ29yeUF0dHJpYnV0
ZQBDb25uZWN0aW9uQXR0cmlidXRlAERlZmF1bHRWYWx1ZUF0dHJpYnV0ZQBTeXN0ZW0uUmVmbGVj
dGlvbgBBc3NlbWJseQBnZXRfQXNzZW1ibHkAU3lzdGVtLlRocmVhZGluZwBNb25pdG9yAEVudGVy
AEV4aXQARGVidWdnZXJOb25Vc2VyQ29kZUF0dHJpYnV0ZQBTQ182YWQ0NWQzMDM0NDc0ZmY0YmE5
YjhmOWNkYmQxN2RlNi5SZXNvdXJjZXMucmVzb3VyY2VzAENvbXBpbGF0aW9uUmVsYXhhdGlvbnNB
dHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuVmVy
c2lvbmluZwBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUAQXNzZW1ibHlGaWxlVmVyc2lvbkF0dHJp
YnV0ZQBHdWlkQXR0cmlidXRlAEFzc2VtYmx5VHJhZGVtYXJrQXR0cmlidXRlAEFzc2VtYmx5Q29w
eXJpZ2h0QXR0cmlidXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBc3NlbWJseUNvbXBhbnlB
dHRyaWJ1dGUAQXNzZW1ibHlEZXNjcmlwdGlvbkF0dHJpYnV0ZQBBc3NlbWJseVRpdGxlQXR0cmli
dXRlAFNDXzZhZDQ1ZDMwMzQ0NzRmZjRiYTliOGY5Y2RiZDE3ZGU2LmRsbAAAAACAm0kAcwBOAHUA
bABsACAAcAByAG8AcABlAHIAdAB5ACAAYwBhAG4AbgBvAHQAIABiAGUAIABzAGUAdAAgAHQAbwAg
AEYAYQBsAHMAZQAuACAAQQBzAHMAaQBnAG4AIABhACAAdgBhAGwAdQBlACAAdABvACAAdABoAGUA
IABjAG8AbAB1AG0AbgAgAGkAbgBzAHQAZQBhAGQALgAADWEAYwB0AGkAbwBuAAAfYQBjAHQAaQBv
AG4ARgBvAHIAbQBhAHQAdABlAGQAAA9hAHUAZABpAHQAaQBkAAATYwByAGUAYQB0AGUAZABvAG4A
ABFvAGIAagBlAGMAdABpAGQAACNvAGIAagBlAGMAdABpAGQARgBvAHIAbQBhAHQAdABlAGQAAB1v
AGIAagBlAGMAdAB0AHkAcABlAGMAbwBkAGUAAC9vAGIAagBlAGMAdAB0AHkAcABlAGMAbwBkAGUA
RgBvAHIAbQBhAHQAdABlAGQAABNvAHAAZQByAGEAdABpAG8AbgAAJW8AcABlAHIAYQB0AGkAbwBu
AEYAbwByAG0AYQB0AHQAZQBkAAANdQBzAGUAcgBpAGQAAB91AHMAZQByAGkAZABGAG8AcgBtAGEA
dAB0AGUAZAAAE2YAaQBlAGwAZABOAGEAbQBlAAARbwBsAGQAVgBhAGwAdQBlAAAjbwBsAGQAVgBh
AGwAdQBlAEYAbwByAG0AYQB0AHQAZQBkAAARbgBlAHcAVgBhAGwAdQBlAAAjbgBlAHcAVgBhAGwA
dQBlAEYAbwByAG0AYQB0AHQAZQBkAAALSQBuAHAAdQB0AAANTwB1AHQAcAB1AHQAABtDAHIAbQBD
AG8AbgBuAGUAYwB0AGkAbwBuAAA3UgBlAHQAcgBpAGUAdgBlAFIAZQBjAG8AcgBkAEMAaABhAG4A
ZwBlAEgAaQBzAHQAbwByAHkAAA1UAGEAcgBnAGUAdAAAFVAAYQBnAGkAbgBnAEkAbgBmAG8AACtB
AHUAZABpAHQARABlAHQAYQBpAGwAQwBvAGwAbABlAGMAdABpAG8AbgAADUUAbgB0AGkAdAB5AAAF
SQBkAAA/UwBlAGwAZQBjAHQAIABEAHkAbgBhAG0AaQBjAHMAIABDAFIATQAgAEMAbwBuAG4AZQBj
AHQAaQBvAG4ALgAAJU0AYQBwACAAaQBuAHAAdQB0ACAAYwBvAGwAdQBtAG4AcwAuAAAVTgBvACAA
aQBuAHAAdQB0AHMALgAAGUQAWQBOAEEATQBJAEMAUwAtAEMAUgBNAAE7RAB5AG4AYQBtAGkAYwBz
ACAAQwBSAE0AIABBAHUAZABpAHQAIABMAG8AZwBzACAAUQB1AGUAcgB5AAAvSQBuAHAAdQB0ACAA
YwBvAGwAdQBtAG4AIABuAG8AdAAgAGYAbwB1AG4AZAAuAAATRgBvAHIAbQBhAHQAdABlAGQAADFN
AHkALgBSAGUAcwBvAHUAcgBjAGUAcwAuAE0AeQBSAGUAcwBvAHUAcgBjAGUAcwAAAAAVSls67iei
TK4PdXLcGWViAAi3elxWGTTgiQiwP19/EdUKOgMgAAEDAAABBAAAEgwHBhUSGAESDAQAABIIBwYV
EhgBEggEAAASEQcGFRIYARIRBAAAEhQHBhUSGAESFAQIABIMBAgAEggECAASEQQIABIUBCABAhwD
IAAIBCAAEhUDIAAOAh4ABxABAR4AHgAHMAEBARAeAAITAAQgABMABwYVEhkBEwAEKAATAAgWz0kL
uAw06giJhF3NgIDMkQsgBQESIQgCEiUSKQQgAB0OAyAAAgQoAB0OBCABAQgEIAEBAgQgAQEOBSAB
AREtBSABARExAygACAMoAAIDKAAOBCgAES0EKAARMQMGEigDBhIsAwYSIAIGCAkgBAEIDhIlEikL
IAQBCB0IHRIlEikFIAEBEhwDBhIhBSABARIhBCAAEjkEKAASOQIGDhJGAG8AcgBtAGEAdAB0AGUA
ZAAFIAECEA4FIAESPQ4FIAEBEkEGIAESRRJJBSABARJFBCABDggCBgIDBhJNAwYSUQMGElUDBhJZ
BAAAElUEAAASWQUAAQESWQQIABJVBAgAElkDBhI4AgYcBAAAEjgECAASOAUgAQERZQgBAAEAAAAA
AAUgAgEODhgBAApNeVRlbXBsYXRlCDEwLjAuMC4wAAAEAQAAAAYVEhgBEgwGFRIYARIIBhUSGAES
EQYVEhgBEhQEBwESDAQHARIIBAcBEhEEBwESFBMBAA5NeS5BcHBsaWNhdGlvbgAAEwEADk15Lldl
YlNlcnZpY2VzAAAQAQALTXkuQ29tcHV0ZXIAAAwBAAdNeS5Vc2VyAAAEAAEcHAMHAQIDBwEIBwAB
EhURgIEEBwESFQMHAQ4FEAEAHgAECgEeAAQHAR4AByAEAQ4ODg5hAQA0U3lzdGVtLldlYi5TZXJ2
aWNlcy5Qcm90b2NvbHMuU29hcEh0dHBDbGllbnRQcm90b2NvbBJDcmVhdGVfX0luc3RhbmNlX18T
RGlzcG9zZV9fSW5zdGFuY2VfXwAAAAYVEhgBEwAGFRIZARMABAoBEwAFIAEBEwAIBwMTABMAEwAF
AQAAAAAEBwEdDgUgAgEIHAYHAh0OHQ4FIAASgKUFIAASgKkGIAESgK0cBgACCBIpDgQHAggIBSAA
EoCxBiABEoC1HAQHARI5BCAAEiUEIAEcCAQAAQ4cBiABARGA1QUgAgEOHAggARKAxRKAwQQgARwO
BgABARKAzQUgABKA3R0HChKAuRKAvRKAwRJBEoDFEoDJEoDNES0RLRKAvQQgARwcBSAAEoDhBSAA
EoDlBSACCAgIBwcCEoCtEj0EAAECDgUgABKA6QoHBAICEoCtEoDNBSAAEoDxBSAAEoDtBiABARGA
9QgHAhKA7RKArQogBgEIDg4OCBACBiABEoDtHAUgABKA+QMgABwRBwYSgO0SPRKArRI9Ej0SgPkG
IAAdEoEFBCAAEkkFIAASgRUMFRKBDQEVEYEJAg4cCSAAFRGBEQETAAwVEYERARURgQkCDhwHFRGB
CQIOHAUAAg4ODj0HDRKBARJFEoEFEkUSRRURgQkCDhwVEYEJAg4cCB0SgQUVEYERARURgQkCDhwS
IBURgREBFRGBCQIOHBIgBCAAEwEFIAARgNUFIAIBHBwFIAASgR0MFRKBDQEVEYEJAg4ODBURgREB
FRGBCQIODgcVEYEJAg4ONAcKEkUSRRURgQkCDhwSgLkcEoEZHBURgQkCDg4VEYERARURgQkCDhwV
EYERARURgQkCDg4EAAEIHAUAARExHAgHAxIgES0RLQQHAg4ODQEACFZhbGlkYXRlAAAFIAEBHQ4x
AQADAAAADUNybUNvbm5lY3Rpb24JQmF0Y2hTaXplEEluc2VydFRlcm1pbmF0b3IAAGEBAFxJbmRp
Y2F0ZXMgd2hldGhlciBhbiBlbXB0eSBsaW5lIHNob3VsZCBiZSBpbnNlcnRlZCBhdCB0aGUgZW5k
IG9mIGVhY2ggc2V0IG9mIGRldGFpbCByZWNvcmRzLgAADQEACFNldHRpbmdzAAAWAQARQ3JtQ29u
bmVjdGlvblR5cGUAACwBACdTZWxlY3QgRHluYW1pY3MgQ1JNIENvbm5lY3Rpb24gTWFuYWdlci4A
AAgBAGQAAAAAACMBAB5TcGVjaWZpZXMgcmV0cmlldmUgYmF0Y2ggc2l6ZS4AAAUgABKBQQcgAgEO
EoFBBgcCElUSVQQHARJZCAEAAgAAAAAABAABARwEBwESOAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5v
bkV4Y2VwdGlvblRocm93cwFHAQAaLk5FVEZyYW1ld29yayxWZXJzaW9uPXY0LjABAFQOFEZyYW1l
d29ya0Rpc3BsYXlOYW1lEC5ORVQgRnJhbWV3b3JrIDQMAQAHMS4wLjAuMAAAKQEAJDViMzk1MTUy
LWJmM2EtNGY4ZC1iN2M5LWFhMzQwODVkZTgxZgAABQEAAQAAFgEAEUNvcHlyaWdodCBAICAyMDE2
AAAoAQAjU0NfNmFkNDVkMzAzNDQ3NGZmNGJhOWI4ZjljZGJkMTdkZTYAAAB8bgAAAAAAAAAAAACe
bgAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkG4AAAAAAAAAAAAAAAAAAAAAAAAAAF9Db3JEbGxN
YWluAG1zY29yZWUuZGxsAAAAAAD/JQAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAAAGAAAgAAAAAAAAAAAAAAAAAAAAQAB
AAAAMAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAASAAAAFiAAACAAwAAAAAAAAAAAACAAzQAAABWAFMA
XwBWAEUAUgBTAEkATwBOAF8ASQBOAEYATwAAAAAAvQTv/gAAAQAAAAEAAAAAAAAAAQAAAAAAPwAA
AAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAEQAAAABAFYAYQByAEYAaQBsAGUASQBuAGYAbwAAAAAA
JAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAAALAE4AIAAAEAUwB0AHIAaQBuAGcARgBp
AGwAZQBJAG4AZgBvAAAAvAIAAAEAMAAwADAAMAAwADQAYgAwAAAAcAAkAAEARgBpAGwAZQBEAGUA
cwBjAHIAaQBwAHQAaQBvAG4AAAAAAFMAQwBfADYAYQBkADQANQBkADMAMAAzADQANAA3ADQAZgBm
ADQAYgBhADkAYgA4AGYAOQBjAGQAYgBkADEANwBkAGUANgAAADAACAABAEYAaQBsAGUAVgBlAHIA
cwBpAG8AbgAAAAAAMQAuADAALgAwAC4AMAAAAHAAKAABAEkAbgB0AGUAcgBuAGEAbABOAGEAbQBl
AAAAUwBDAF8ANgBhAGQANAA1AGQAMwAwADMANAA0ADcANABmAGYANABiAGEAOQBiADgAZgA5AGMA
ZABiAGQAMQA3AGQAZQA2AC4AZABsAGwAAABIABIAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBo
AHQAAABDAG8AcAB5AHIAaQBnAGgAdAAgAEAAIAAgADIAMAAxADYAAAB4ACgAAQBPAHIAaQBnAGkA
bgBhAGwARgBpAGwAZQBuAGEAbQBlAAAAUwBDAF8ANgBhAGQANAA1AGQAMwAwADMANAA0ADcANABm
AGYANABiAGEAOQBiADgAZgA5AGMAZABiAGQAMQA3AGQAZQA2AC4AZABsAGwAAABoACQAAQBQAHIA
bwBkAHUAYwB0AE4AYQBtAGUAAAAAAFMAQwBfADYAYQBkADQANQBkADMAMAAzADQANAA3ADQAZgBm
ADQAYgBhADkAYgA4AGYAOQBjAGQAYgBkADEANwBkAGUANgAAADQACAABAFAAcgBvAGQAdQBjAHQA
VgBlAHIAcwBpAG8AbgAAADEALgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABW
AGUAcgBzAGkAbwBuAAAAMQAuADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAYAAADAAAALA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAA==]]></arrayElement></arrayElements></property><property id="17" 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">SC_6ad45d3034474ff4ba9b8f9cdbd17de6</property><property id="18" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property><property id="24" name="UserComponentTypeName" dataType="System.String">CozyRoc.ScriptComponentHostPlus</property></properties><connections><connection id="25" name="CrmConnection" connectionManagerID="{A009B891-80CE-4350-A6EC-0E82D212FDC8}" /></connections><inputs><input id="26" name="Input" hasSideEffects="true"><externalMetadataColumns isUsed="True"><externalMetadataColumn id="29" name="Entity" dataType="wstr" length="100" /><externalMetadataColumn id="30" name="Id" dataType="guid" /></externalMetadataColumns></input></inputs><outputs><output id="31" name="Output" hasSideEffects="true"><outputColumns><outputColumn id="32" name="action" lineageId="32" dataType="i4" /><outputColumn id="33" name="actionFormatted" lineageId="33" length="50" dataType="wstr" /><outputColumn id="34" name="auditid" lineageId="34" dataType="guid" /><outputColumn id="35" name="createdon" lineageId="35" dataType="dbTimeStamp" /><outputColumn id="36" name="objectid" lineageId="36" dataType="guid" /><outputColumn id="37" name="objectidFormatted" lineageId="37" length="160" dataType="wstr" /><outputColumn id="38" name="objecttypecode" lineageId="38" length="50" dataType="wstr" /><outputColumn id="39" name="objecttypecodeFormatted" lineageId="39" length="50" dataType="wstr" /><outputColumn id="40" name="operation" lineageId="40" dataType="i4" /><outputColumn id="41" name="operationFormatted" lineageId="41" length="50" dataType="wstr" /><outputColumn id="42" name="userid" lineageId="42" dataType="guid" /><outputColumn id="43" name="useridFormatted" lineageId="43" length="100" dataType="wstr" /><outputColumn id="44" name="fieldName" lineageId="44" length="50" dataType="wstr" /><outputColumn id="45" name="oldValue" lineageId="45" length="1000" dataType="wstr" /><outputColumn id="46" name="oldValueFormatted" lineageId="46" length="1000" dataType="wstr" /><outputColumn id="47" name="newValue" lineageId="47" length="1000" dataType="wstr" /><outputColumn id="48" name="newValueFormatted" lineageId="48" length="1000" dataType="wstr" /></outputColumns><externalMetadataColumns /></output></outputs></component>