{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F} Debug AnyCPU 8.0.30703 2.0 {3AF74B7B-CE4A-41E0-BFEF-C38D33FD6209} Library My Project ScriptTask_621609c6b8b34789b81ad064fe2a737d ScriptTask_621609c6b8b34789b81ad064fe2a737d v4.0 512 Binary On On true full false .\bin\Debug\ false true true prompt 4 false true .\bin\Release\ false false true prompt 4 False C:\Program Files (x86)\Microsoft SQL Server\130\SDK\Assemblies\CozyRoc.SSISPlus.2016.dll False False SSIS_ST130 ]]> unlzw.c code in gzip-1.2.4 (written ' by Peter Jannesen) and the original compress code. ' ' Based on implementation by Ronald Tschalr (ronald@innovation.ch). Class UncompressInputStream Inherits Stream ' Methods ' @param is the input stream to decompress Public Sub New(ByVal inputStream As Stream) Me._inputStream = inputStream Me.parse_header() End Sub ' New Private Sub fill() Me.got = Me._inputStream.Read(Me.data, Me.end, Me.data.Length - 1 - Me.end) If Me.got > 0 Then Me.end += Me.got End If End Sub ' fill Public Overrides Sub Flush() Throw New NotSupportedException End Sub ' Flush Private Const LZW_MAGIC As Integer = &H1F9D Private Const MAX_BITS As Integer = &H10 Private Const INIT_BITS As Integer = 9 Private Const HDR_MAXBITS As Integer = &H1F Private Const HDR_EXTENDED As Integer = &H20 Private Const HDR_FREE As Integer = &H40 Private Const HDR_BLOCK_MODE As Integer = &H80 Private Sub parse_header() ' read in and check magic number Dim t As Integer = Me.read_byte() If t < 0 Then Throw New Exception("Failed to read magic number") End If Dim magic As Integer = ((t And &HFF) << 8) t = Me.read_byte() If t < 0 Then Throw New Exception("Failed to read magic number") End If magic += (t And &HFF) If (magic <> LZW_MAGIC) Then Throw New IOException("Input not in compress format (read magic number 0x" & magic.ToString("x") & ")") End If ' read in header byte Dim header As Integer = Me.read_byte() If header < 0 Then Throw New Exception("Failed to read header") End If Me.block_mode = ((header And HDR_BLOCK_MODE) > 0) Me.maxbits = (header And HDR_MAXBITS) If Me.maxbits > MAX_BITS Then Throw New IOException( _ "Stream compressed with " & Me.maxbits.ToString() & _ " bits, but can only handle " & MAX_BITS.ToString() & " bits") End If If (header And HDR_EXTENDED) > 0 Then Throw New IOException("Header extension bit set") End If If (header And HDR_FREE) > 0 Then Throw New IOException("Header bit 6 set") End If ' initialize stuff Me.maxmaxcode = (CInt(1) << Me.maxbits) Me.n_bits = INIT_BITS Me.maxcode = (CInt(1) << Me.n_bits) - 1 Me.bitmask = Me.maxcode Me.oldcode = -1 Me.finchar = 0 Me.free_ent = CType(IIf(Me.block_mode, TBL_FIRST, &H100), Integer) Me.tab_prefix = New Integer((CInt(1) << Me.maxbits) - 1) {} Me.tab_suffix = New Byte((CInt(1) << Me.maxbits) - 1) {} Me.stack = New Byte((CInt(1) << Me.maxbits) - 1) {} Me.stackp = Me.stack.Length Dim idx As Integer = &HFF Do While idx >= 0 Me.tab_suffix(idx) = CByte(idx) idx -= 1 Loop End Sub ' parse_header Private one As Byte() = New Byte(1 - 1) {} Public Function read_byte() As Integer If Me._inputStream.Read(Me.one, 0, 1) = 1 Then Return (Me.one(0) And &HFF) End If Return -1 End Function ' read_byte Public Function read_internal(ByVal buf As Byte(), ByVal off As Integer, ByVal len As Integer) As Integer If Me.eof Then Return -1 End If Dim num As Integer Dim start As Integer = off Dim l_tab_prefix As Integer() = Me.tab_prefix Dim l_tab_suffix As Byte() = Me.tab_suffix Dim l_stack As Byte() = Me.stack Dim l_n_bits As Integer = Me.n_bits Dim l_maxcode As Integer = Me.maxcode Dim l_maxmaxcode As Integer = Me.maxmaxcode Dim l_bitmask As Integer = Me.bitmask Dim l_oldcode As Integer = Me.oldcode Dim l_finchar As Byte = Me.finchar Dim l_stackp As Integer = Me.stackp Dim l_free_ent As Integer = Me.free_ent Dim l_data As Byte() = Me.data Dim l_bit_pos As Integer = Me.bit_pos ' empty stack if stuff still left Dim s_size As Integer = (l_stack.Length - l_stackp) If s_size > 0 Then num = CType(IIf((s_size >= len), len, s_size), Integer) Array.Copy(l_stack, l_stackp, buf, off, num) off += num len -= num l_stackp += num End If If len = 0 Then Me.stackp = l_stackp Return (off - start) End If ' loop, filling local buffer until enough data has been decompressed main_loop: If Me.end < EXTRA Then Call Me.fill() End If Dim bit_in As Integer = CType(IIf(Me.got > 0, _ (Me.end - (Me.end Mod l_n_bits)) << 3, _ (Me.end << 3) - (l_n_bits - 1)), _ Integer) Do While l_bit_pos < bit_in Dim n_bytes As Integer ' check for code-width expansion If l_free_ent > l_maxcode Then n_bytes = (l_n_bits << 3) l_bit_pos = ((l_bit_pos - 1) + n_bytes - (l_bit_pos - 1 + n_bytes) Mod n_bytes) l_n_bits += 1 l_maxcode = CType(IIf(l_n_bits = Me.maxbits, _ l_maxmaxcode, _ ((CInt(1) << l_n_bits) - 1)), _ Integer) l_bitmask = ((CInt(1) << l_n_bits) - 1) l_bit_pos = Me.resetbuf(l_bit_pos) GoTo main_loop End If ' read next code Dim pos As Integer = (l_bit_pos >> 3) Dim code As Integer = _ (((l_data(pos) And &HFF) Or ((l_data(pos + 1) And &HFF) << 8) Or _ ((l_data(pos + 2) And &HFF) << &H10)) _ >> (l_bit_pos And 7)) And l_bitmask l_bit_pos += l_n_bits ' handle first iteration If (l_oldcode = -1) Then If (code >= &H100) Then Throw New IOException(("corrupt input: " & code & " > 255")) End If l_oldcode = code l_finchar = CByte(code) buf(off) = l_finchar off += 1 len -= 1 Continue Do End If ' handle CLEAR code If code = TBL_CLEAR AndAlso Me.block_mode Then Array.Copy(Me.zeros, 0, l_tab_prefix, 0, Me.zeros.Length) l_free_ent = TBL_FIRST - 1 n_bytes = (l_n_bits << 3) l_bit_pos = ((l_bit_pos - 1) + n_bytes - (l_bit_pos - 1 + n_bytes) Mod n_bytes) l_n_bits = INIT_BITS l_maxcode = ((CInt(1) << l_n_bits) - 1) l_bitmask = l_maxcode l_bit_pos = Me.resetbuf(l_bit_pos) GoTo main_loop End If ' setup Dim incode As Integer = code l_stackp = l_stack.Length ' Handle KwK case If code >= l_free_ent Then If code > l_free_ent Then Throw New IOException( _ "corrupt input: code=" & code.ToString() & _ ", free_ent=" & l_free_ent.ToString()) End If l_stackp -= 1 l_stack(l_stackp) = l_finchar code = l_oldcode End If ' Generate output characters in reverse order Do While (code >= &H100) l_stackp -= 1 l_stack(l_stackp) = l_tab_suffix(code) code = l_tab_prefix(code) Loop l_finchar = l_tab_suffix(code) buf(off) = l_finchar off += 1 len -= 1 ' And put them out in forward order s_size = (l_stack.Length - l_stackp) num = CType(IIf(s_size >= len, len, s_size), Integer) Array.Copy(l_stack, l_stackp, buf, off, num) off += num len -= num l_stackp += num ' generate new entry in table If l_free_ent < l_maxmaxcode Then l_tab_prefix(l_free_ent) = l_oldcode l_tab_suffix(l_free_ent) = l_finchar l_free_ent += 1 End If ' Remember previous code l_oldcode = incode ' if output buffer full, then return If len = 0 Then Me.n_bits = l_n_bits Me.maxcode = l_maxcode Me.bitmask = l_bitmask Me.oldcode = l_oldcode Me.finchar = l_finchar Me.stackp = l_stackp Me.free_ent = l_free_ent Me.bit_pos = l_bit_pos Return (off - start) End If Loop l_bit_pos = Me.resetbuf(l_bit_pos) If (Me.got > 0) Then GoTo main_loop End If Me.n_bits = l_n_bits Me.maxcode = l_maxcode Me.bitmask = l_bitmask Me.oldcode = l_oldcode Me.finchar = l_finchar Me.stackp = l_stackp Me.free_ent = l_free_ent Me.bit_pos = l_bit_pos Me.eof = True Return (off - start) End Function ' read_internal Public Overrides Function Read(ByVal buffer As Byte(), ByVal offset As Integer, ByVal count As Integer) As Integer Return Me.read_internal(buffer, offset, count) End Function ' Read ' Moves the unread data in the buffer to the beginning and resets ' the pointers. Private Function resetbuf(ByVal bit_pos As Integer) As Integer Dim pos As Integer = (bit_pos >> 3) Array.Copy(Me.data, pos, Me.data, 0, (Me.end - pos)) Me.end -= pos Return 0 End Function ' resetbuf Public Overrides Function Seek(ByVal offset As Long, ByVal origin As SeekOrigin) As Long Throw New NotSupportedException End Function ' Seek Public Overrides Sub SetLength(ByVal value As Long) Throw New NotSupportedException End Sub ' SetLength Public Overrides Sub Write(ByVal buffer As Byte(), ByVal offset As Integer, ByVal count As Integer) Throw New NotSupportedException End Sub ' Write ' Properties Public Overrides ReadOnly Property CanRead() As Boolean Get If Me.eof Then Return False End If Return Me._inputStream.CanRead End Get End Property ' CanRead Public Overrides ReadOnly Property CanSeek() As Boolean Get Return False End Get End Property ' CanSeek Public Overrides ReadOnly Property CanWrite() As Boolean Get Return False End Get End Property ' CanWrite Public Overrides ReadOnly Property Length() As Long Get Throw New NotSupportedException End Get End Property ' Length Public Overrides Property Position() As Long Get Throw New NotSupportedException End Get Set(ByVal value As Long) Throw New NotSupportedException End Set End Property ' Position ' Fields Private _inputStream As Stream = Nothing ' string table stuff Private Const TBL_CLEAR As Integer = &H100 Private Const TBL_FIRST As Integer = TBL_CLEAR + 1 Private tab_prefix As Integer() Private tab_suffix As Byte() Private zeros As Integer() = New Integer(&H100 - 1) {} Private stack As Byte() ' various state Private block_mode As Boolean Private n_bits As Integer Private maxbits As Integer Private maxmaxcode As Integer Private maxcode As Integer Private bitmask As Integer Private oldcode As Integer Private finchar As Byte Private stackp As Integer Private free_ent As Integer ' input buffer Private data As Byte() = New Byte(&H2710 - 1) {} Private bit_pos As Integer = 0 Private [end] As Integer = 0 Private got As Integer = 0 Private eof As Boolean = False Private Const EXTRA As Integer = &H40 End Class ' UncompressInputStream _ _ Partial Public Class ScriptMain Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase Enum ScriptResults Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure End Enum ' The execution engine calls this method when the task executes. ' To access the object model, use the Dts object. Connections, variables, events, ' and logging features are available as static members of the Dts class. ' Before returning from this method, set the value of Dts.TaskResult to indicate success or failure. ' ' To open Code and Text Editor Help, press F1. ' To open Object Browser, press Ctrl+Alt+J. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Sub Main() Dim result As Integer Dim fireAgain As Boolean Try Dim sourceFile As String = GetConnectionFile_(Me.SourceFile) Dim inStream As Stream = New UncompressInputStream(File.OpenRead(sourceFile)) Dim buf As Byte() = New Byte(&H1000 - 1) {} Dim targetFile As String = GetConnectionFile_(Me.TargetFile) Using outStream As Stream = File.Create(targetFile) Try Dim bytesRead As Integer = 0 Do While True bytesRead = inStream.Read(buf, 0, buf.Length) If bytesRead <= 0 Then Exit Do End If Call outStream.Write(buf, 0, bytesRead) Loop Call outStream.Flush() Catch ex As Exception ' Failed to uncompress. Remove target file. Call outStream.Close() Call File.Delete(targetFile) Throw End Try End Using Call Dts.Events.FireInformation( _ 0, _ String.Empty, _ String.Format("Uncompressed '{0}' to '{1}'.", sourceFile, targetFile), _ String.Empty, _ 0, _ fireAgain) result = ScriptResults.Success Catch ex As Exception result = ScriptResults.Failure Dts.Events.FireError(0, String.Empty, ex.Message, String.Empty, 0) End Try Dts.TaskResult = result End Sub ' Main #Region "Internals" ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' SourceFile property. _ _ Public Property SourceFile() As String Get SourceFile = m_source End Get Set(ByVal value As String) m_source = value End Set End Property ' SourceFile ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' TargetFile property. _ _ Public Property TargetFile() As String Get TargetFile = m_target End Get Set(ByVal value As String) m_target = value End Set End Property ' TargetFile ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private ReadOnly Property FileConnectionType() As String Get FileConnectionType = "FILE" End Get End Property ' FileConnectionType ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Validate specified connection is the expected type. Private Function ValidateConnection_( _ ByVal managerName As String, _ ByVal expectedType As String) As Boolean Dim result As Boolean Dim manager As ConnectionManager If Not String.IsNullOrEmpty(managerName) Then manager = Dts.Connections(managerName) If manager.CreationName = expectedType Then result = True Else ' Doesn't match expected type. Dts.Events.FireError( _ 0, _ String.Empty, _ String.Format( _ "'{0}' connection is not '{1}' type.", _ managerName, _ expectedType), _ String.Empty, _ 0) End If End If ValidateConnection_ = result End Function ' ValidateConnection_ ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Retrieves file path from specified file connection manager. Private Function GetConnectionFile_(ByVal managerName As String) As String Dim result As String Dim manager As ConnectionManager Dim fileConnection As Object If ValidateConnection_(managerName, "FILE") Then manager = Dts.Connections(managerName) fileConnection = manager.AcquireConnection(Nothing) If Not fileConnection Is Nothing Then result = fileConnection.ToString() Else Dts.Events.FireError( _ 0, _ String.Empty, _ String.Format("''{0}' connection file doesn't exist.", managerName), _ String.Empty, _ 0) End If End If GetConnectionFile_ = result End Function ' GetConnectionFile_ #End Region ' Internals #Region "Attributes" Private m_source As String Private m_target As String #End Region ' Attributes End Class ' ScriptMain]]> msBuild ScriptTask_621609c6b8b34789b81ad064fe2a737d ScriptTask_621609c6b8b34789b81ad064fe2a737d {AD8A1FE0-398F-44E7-9BCC-1F69CF9E9FEC} ]]> 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 KQAAACoAAAAXAAAATQAAAAwAAAAuAAAADQAAAAQAAAANAAAAEAAAAAgAAAABAAAABgAAAAMAAAAD AAAAAgAAAAAAQQYBAAAAAAAGAHAEbwkGAMgEbwkGAIoDsAgPAI8JAAAGAPsDMwUGAJ0GhQAGAOUG hQAKAKYEsAUGAJAErQYKAPQCsAUGAHUHrQYGAFAKrQYGALQGrQYOAEcEngkSAFsEKwYSAHMDIAgS ADUDKwYSAJ4DKwYWABAD/wgWAGQIwwgGABQEsAgWAMsDSAkWAOMDUQEWAFAI/wgWACwEUQEGAOcC rQYGALcDKQkWAAEA4QUSAF4DvQYGAOYErQYGACsArQYGAGkHrQYGAF0FrQYGAF0HhQAWACUHUQEW AMcJSAkGAOIKrQYGAHoChQAGAHYGhQAWADcBSAkGABMCrQYKABkGsAUKADgIsAUaANcJnAIaAAQI nAIWAAAKSAkGAPEJbwkGAB8CrQYGAJkIrQYAAAAARwAAAAAAAQABAAAAAACBBmcBGQABAAEAAQAA ANoGZwEpACAAEgAAAAAABwezCk0AIgAbAAAAAABiCLMKUQAiABwAAAEQAFcKswoxACIAHQACAQAA KQoAADUAJgAiAAUBAADxCAAAMQApACIABQEAABAAAAAxACkAKQBRgFYADQJRgM4ADQJRgMQADQJR gLgADQJRgGAADQJRgHwADQJRgG0ADQIBALwCEAIBAJcGFAJRgI8ADQJRgNcADQIBAJ0KGAIBAKgK EAIBAOsJGAIBAH8FEAIBAPwBHAIBABoKDQIBACEKDQIBAPEBDQIBAPQBDQIBANkFDQIBAOkBDQIB AIgHHwIBAIEHDQIBAIAKDQIBAEMBEAIBAOMJDQIBAKgBDQIBAI8KDQIBACYFHAJRgFAADQIBANQB 6gABAGEK6gAxAMYHIgIxAJ0HKgIxALEHMgIxAN8HOgIGBggBDQJWgAoKQgJWgOwCQgIhAJMKlQFQ IAAAAAAGGKMIRgIBAMAgAAAAAAEAcQYGAAIAFiEAAAAAxgJkBQYAAgAgIQAAAAABAJAHBgACACAj AAAAAAYA6wRqAQIAWCMAAAAABgALBjMAAgCHJwAAAADGAqMBMwAFAJQnAAAAAAEAKgVMAggA0CcA AAAAxgKMBVECCQAWIQAAAADGAnUFWAILABYhAAAAAMYCWAPLAAwA5CcAAAAAxgqTAa4ADwAKKAAA AADGCoUFrgAPAAooAAAAAMYKUQOuAA8AECgAAAAAxgpqBV0CDwAkKAAAAADGCkMHXQIPABYhAAAA AMYKUAdYAg8ANigAAAAABhijCAYAEABAKAAAAAAGAOAGBgAQAHgpAAAAAAYIQwJPABAAjSkAAAAA BghSAhAAEACYKQAAAAAGCGECTwARAK0pAAAAAAYIcAIQABEAuCkAAAAAAQjNAk8AEgDMKQAAAAAB ACMBYQISADAqAAAAAAEAEAFDABQAnyoAAAAABhijCAYAFQCnKgAAAAAGGKMIBgAVAK8qAAAAABMI VQhnAhUAuyoAAAAAEwj3BmwCFQDHKgAAAAATCEwIcQIVANMqAAAAABMI4Qh2AhUA3yoAAAAAERip CAgBFQAJKwAAAADGAsAJZQEVABcrAAAAAMYC3QFqARYAHysAAAAAgwDkAnsCFgArKwAAAADGAlsF TwAWADQrAAAAABEA9QCAAhYAVCsAAAAAAQDhAIgCFwBdKwAAAAAGGKMIBgAYAGgrAAAAAAMIuwFL ARgAnCsAAAAABhijCAYAGAAAAAEAmAYAAAEALwUAAAIAIgUAAAMAuQYAAAEA/QcAAAIAagoAAAMA iQoAAAEA4wkAAAEAagoAAAIA8AYAAAEAGAUAAAEA/QcAAAIAagoAAAMAiQoAAAEAGAUAAAEAGAUA AAEAGAUAAAEAkAIAAAIAwAIAAAEAkAIAAAEAfwcAAAEAywEAAAEAywEJAKMIAQARAKMIBgAZAKMI CgApAKMIEABBAKMIBgBJAKMIFQBxAKMIEAB5AKMIEACBAKMIGgCRAKMIIACpAKMIBgCxAKMIBgC5 AKMIBgDJAKMIJgDZAKMIFQDpAKMIEAAxAKMIBgAxAKMBMwABAaMIBgBZAKMIEAD5AFsFQwAJAUIK SAARAaMIEAD5AFsFTwAJAUIKUwAZAR4FWQAhARYIYAApAegKhgAhAVsFkwAJAUIKmAAxAJMBrgBR AKMIBgAxAZ8BxAAxAS4DxAAxAFgDywAxAGQFBgBBAYkI0wAxACADBgAxAUoD2QBJASYDBgBRABIK 3gBRATcK5AAJAfUK6gAJAUkK7QBZARUH9ABZAAcCTwBZAW0I/wBBAXcICAFRAXEKAQAJAe0KFQFR AdMJGgFhAaQGIAFpAX8CTwBxAU0FJwFpATEHNAF5AQkFOQFhAFsFTwAJAUkKPgGZAKMIBgChAKMI BgAMALsBSwEUALsBSwEcALsBSwEkALsBSwEMAKMIBgAUAKMIBgAcAKMIBgAkAKMIBgBhAMAJZQFh AN0BagHRADECbgGJAawBfgFhAKMIBgA0AJMKlQE8APUESwE8AP8ErAE8AKMIBgAIAAQA1gEIAAgA 2wEIAAwA4AEIABAA5QEIABQA6gEIABgA7wEIABwA9AEIACgA+QEIACwA/gEIAHwA7wEIAJwAAwII AKAACAIuAAsAtQIuABMAvgIuABsA3QIuACMA5gJjACsACAJjADMANwODAEsAPQODAFMALgOjAEsA PQOjAFMALgPDAGMACALDAGsACALDAEsAPQPJADsAuAPJAEMA0APpADsAuAPpAEMA9wMDAVMALgMD AXMAVgMjAVMALgMjAXsANwMpAYMAHgRJAYMALwRpAYMAQwSJAYMAUASAA1sACAKAA1MALgOgA1sA CALAA1sACALgA1sACAIABFsACAJABFMALgNABFsACAJgBFMALgNgBFsACAKABFMALgOABFsACAKg BFMALgOgBFsACALABFsACALgBFsACAIABVsACAIABVMALgMgBVsACAJABVsACAJABVMALgMuADsA ZQBpAKAApgCqALIADAEQAS4BdgGJAQIAAQADAAYABgAJAAkADQAAAJcBkAIAAIkFkAIAAFUDkAIA AHgFlAIAAFQHlAIAAFYCmAIAAHQCmAIAANECmAIAAGQInAIAAAkHoQIAAFAIpgIAAPMIqwIAAL8B sAICAAwAAwACAA0ABQACAA4ABwACAA8ACQACABAACwABABEACwACABQADQABABUADQACABYADwAB ABcADwACABgAEQACAB0AEwACAB4AFQACAB8AFwACACAAGQACACkAGwBEAVABVwFeAXsBjgGdAaQB BIAAAAAAAAAAAAAAAAAAAAAAZwEAAAQAAAAAAAAAAAAAALIBSAEAAAAADQAAAAAAAAAAAAAAuwGR BQAAAAABAAAAAAAAAAAAAADEATEAAAAAAAQAAAAAAAAAAAAAALIBrQYAAAAACgAAAAAAAAAAAAAA zQFRAQAAAAANAAAAAAAAAAAAAAC7AZkAAAAAAAcAAwAIAAYACQAGAAAAEAASAN8AAAAQAE0A3wAA AAAATwDfAJEAhAGRAKcBAAAAQ29udGV4dFZhbHVlYDEAVGhyZWFkU2FmZU9iamVjdFByb3ZpZGVy YDEASW50MzIAQ296eVJvYy5TU0lTUGx1cy4yMDE2ADxNb2R1bGU+AEVYVFJBAExaV19NQUdJQwBI RFJfRVhURU5ERUQASERSX0JMT0NLX01PREUASERSX0ZSRUUAU3lzdGVtLklPAFRCTF9DTEVBUgBN aWNyb3NvZnQuU3FsU2VydmVyLk1hbmFnZWREVFMASERSX01BWEJJVFMASU5JVF9CSVRTAE1BWF9C SVRTAFRCTF9GSVJTVABEaXNwb3NlX19JbnN0YW5jZV9fAENyZWF0ZV9fSW5zdGFuY2VfXwB2YWx1 ZV9fAEdldENvbm5lY3Rpb25GaWxlXwBWYWxpZGF0ZUNvbm5lY3Rpb25fAFByb2plY3REYXRhAGRh dGEAbXNjb3JsaWIATWljcm9zb2Z0LlZpc3VhbEJhc2ljAFNjcmlwdFRhc2tfNjIxNjA5YzZiOGIz NDc4OWI4MWFkMDY0ZmUyYTczN2QAZ2V0X0NhblJlYWQAT3BlblJlYWQAZW5kAENyZWF0ZUluc3Rh bmNlAGdldF9HZXRJbnN0YW5jZQBpbnN0YW5jZQBtX3NvdXJjZQBHZXRIYXNoQ29kZQBvbGRjb2Rl AG1heG1heGNvZGUAYmxvY2tfbW9kZQBnZXRfTWVzc2FnZQBJRGlzcG9zYWJsZQBSdW50aW1lVHlw ZUhhbmRsZQBHZXRUeXBlRnJvbUhhbmRsZQBnZXRfU291cmNlRmlsZQBzZXRfU291cmNlRmlsZQBn ZXRfVGFyZ2V0RmlsZQBzZXRfVGFyZ2V0RmlsZQBnZXRfQ3JlYXRpb25OYW1lAG1hbmFnZXJOYW1l AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlJ1bnRpbWUAb25lAGV4cGVjdGVkVHlwZQBnZXRfRmls ZUNvbm5lY3Rpb25UeXBlAEdldFR5cGUARmFpbHVyZQBWU1RBUlRTY3JpcHRPYmplY3RNb2RlbEJh c2UAQXBwbGljYXRpb25CYXNlAENsb3NlAERpc3Bvc2UAQ3JlYXRlAEVkaXRvckJyb3dzYWJsZVN0 YXRlAERlbGV0ZQBnZXRfQ2FuV3JpdGUASGVscEtleXdvcmRBdHRyaWJ1dGUAR2VuZXJhdGVkQ29k ZUF0dHJpYnV0ZQBEZWJ1Z2dhYmxlQXR0cmlidXRlAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0ZQBD b21WaXNpYmxlQXR0cmlidXRlAFN0YW5kYXJkTW9kdWxlQXR0cmlidXRlAEhpZGVNb2R1bGVOYW1l QXR0cmlidXRlAFRhcmdldEZyYW1ld29ya0F0dHJpYnV0ZQBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0 ZQBNeUdyb3VwQ29sbGVjdGlvbkF0dHJpYnV0ZQBDb25uZWN0aW9uQXR0cmlidXRlAERlc2NyaXB0 aW9uQXR0cmlidXRlAENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAQ0xTQ29tcGxpYW50 QXR0cmlidXRlAFNTSVNTY3JpcHRUYXNrRW50cnlQb2ludEF0dHJpYnV0ZQBSdW50aW1lQ29tcGF0 aWJpbGl0eUF0dHJpYnV0ZQBCeXRlAHJlYWRfYnl0ZQBnZXRfVmFsdWUAc2V0X1ZhbHVlAEdldE9i amVjdFZhbHVlAHZhbHVlAElJZgBvZmYAZW9mAHJlc2V0YnVmAFN5c3RlbS5SdW50aW1lLlZlcnNp b25pbmcAQ29tcGFyZVN0cmluZwBUb1N0cmluZwBGbHVzaABnZXRfTGVuZ3RoAFNldExlbmd0aABz dGFjawBnZXRfQ2FuU2VlawBNaWNyb3NvZnQuU3FsU2VydmVyLlNjcmlwdFRhc2sATWljcm9zb2Z0 LlNxbFNlcnZlci5EdHMuVGFza3MuU2NyaXB0VGFzawBiaXRtYXNrAE1pY3Jvc29mdC5WaXN1YWxC YXNpYy5NeVNlcnZpY2VzLkludGVybmFsAHJlYWRfaW50ZXJuYWwAU2NyaXB0T2JqZWN0TW9kZWwA U3lzdGVtLkNvbXBvbmVudE1vZGVsAFNjcmlwdFRhc2tfNjIxNjA5YzZiOGIzNDc4OWI4MWFkMDY0 ZmUyYTczN2QuZGxsAGZpbGwARmlsZVN0cmVhbQBVbmNvbXByZXNzSW5wdXRTdHJlYW0AX2lucHV0 U3RyZWFtAGdldF9JdGVtAFN5c3RlbQBFbnVtAGxlbgBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVz aWduAFNjcmlwdE1haW4AU2Vla09yaWdpbgBvcmlnaW4AZ2V0X0FwcGxpY2F0aW9uAE15QXBwbGlj YXRpb24ARmlyZUluZm9ybWF0aW9uAEludGVyYWN0aW9uAEFjcXVpcmVDb25uZWN0aW9uAGdldF9Q b3NpdGlvbgBzZXRfUG9zaXRpb24ASU9FeGNlcHRpb24ATm90U3VwcG9ydGVkRXhjZXB0aW9uAG8A c3RhY2twAGZpbmNoYXIAcGFyc2VfaGVhZGVyAG1fQXBwT2JqZWN0UHJvdmlkZXIAbV9Vc2VyT2Jq ZWN0UHJvdmlkZXIAbV9Db21wdXRlck9iamVjdFByb3ZpZGVyAG1fTXlXZWJTZXJ2aWNlc09iamVj dFByb3ZpZGVyAGJ1ZmZlcgBDb25uZWN0aW9uTWFuYWdlcgBUb0ludGVnZXIAU3lzdGVtLkNvZGVE b20uQ29tcGlsZXIARXZlbnRzT2JqZWN0V3JhcHBlcgBnZXRfVXNlcgBnZXRfQ29tcHV0ZXIATXlD b21wdXRlcgBGaXJlRXJyb3IAQ2xlYXJQcm9qZWN0RXJyb3IAU2V0UHJvamVjdEVycm9yAEFjdGl2 YXRvcgAuY3RvcgAuY2N0b3IAU3lzdGVtLkRpYWdub3N0aWNzAE1pY3Jvc29mdC5WaXN1YWxCYXNp Yy5EZXZpY2VzAGdldF9XZWJTZXJ2aWNlcwBNeVdlYlNlcnZpY2VzAE1pY3Jvc29mdC5WaXN1YWxC YXNpYy5BcHBsaWNhdGlvblNlcnZpY2VzAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwBN aWNyb3NvZnQuVmlzdWFsQmFzaWMuQ29tcGlsZXJTZXJ2aWNlcwBTeXN0ZW0uUnVudGltZS5Db21w aWxlclNlcnZpY2VzAERlYnVnZ2luZ01vZGVzAENvenlSb2MuU3FsU2VydmVyLlNTSVMuQXR0cmli dXRlcwBFcXVhbHMAQ29udmVyc2lvbnMAZ2V0X0Nvbm5lY3Rpb25zAGJpdF9wb3MAemVyb3MAUnVu dGltZUhlbHBlcnMAT3BlcmF0b3JzAFN1Y2Nlc3MAZ2V0X0R0cwBuX2JpdHMAbWF4Yml0cwBTY3Jp cHRSZXN1bHRzAGdldF9FdmVudHMAQ29uY2F0AEZvcm1hdABPYmplY3QATXlQcm9qZWN0AG1fdGFy Z2V0AG9mZnNldABzZXRfVGFza1Jlc3VsdABmcmVlX2VudABjb3VudABnb3QAbV9Db250ZXh0AHRh Yl9wcmVmaXgAdGFiX3N1ZmZpeABTY3JpcHRUYXNrXzYyMTYwOWM2YjhiMzQ3ODliODFhZDA2NGZl MmE3MzdkLk15AEFycmF5AENvcHkASXNOdWxsT3JFbXB0eQAAADdGAGEAaQBsAGUAZAAgAHQAbwAg AHIAZQBhAGQAIABtAGEAZwBpAGMAIABuAHUAbQBiAGUAcgAAZUkAbgBwAHUAdAAgAG4AbwB0ACAA aQBuACAAYwBvAG0AcAByAGUAcwBzACAAZgBvAHIAbQBhAHQAIAAoAHIAZQBhAGQAIABtAGEAZwBp AGMAIABuAHUAbQBiAGUAcgAgADAAeAAAA3gAAAMpAAArRgBhAGkAbABlAGQAIAB0AG8AIAByAGUA YQBkACAAaABlAGEAZABlAHIAAC9TAHQAcgBlAGEAbQAgAGMAbwBtAHAAcgBlAHMAcwBlAGQAIAB3 AGkAdABoACAAADcgAGIAaQB0AHMALAAgAGIAdQB0ACAAYwBhAG4AIABvAG4AbAB5ACAAaABhAG4A ZABsAGUAIAAACyAAYgBpAHQAcwAAMUgAZQBhAGQAZQByACAAZQB4AHQAZQBuAHMAaQBvAG4AIABi AGkAdAAgAHMAZQB0AAAhSABlAGEAZABlAHIAIABiAGkAdAAgADYAIABzAGUAdAAAH2MAbwByAHIA dQBwAHQAIABpAG4AcAB1AHQAOgAgAAANIAA+ACAAMgA1ADUAACljAG8AcgByAHUAcAB0ACAAaQBu AHAAdQB0ADoAIABjAG8AZABlAD0AABcsACAAZgByAGUAZQBfAGUAbgB0AD0AADlVAG4AYwBvAG0A cAByAGUAcwBzAGUAZAAgACcAewAwAH0AJwAgAHQAbwAgACcAewAxAH0AJwAuAAEJRgBJAEwARQAA RycAewAwAH0AJwAgAGMAbwBuAG4AZQBjAHQAaQBvAG4AIABpAHMAIABuAG8AdAAgACcAewAxAH0A JwAgAHQAeQBwAGUALgABSycAJwB7ADAAfQAnACAAYwBvAG4AbgBlAGMAdABpAG8AbgAgAGYAaQBs AGUAIABkAG8AZQBzAG4AJwB0ACAAZQB4AGkAcwB0AC4AAQBBjdlLxtTHS6bFLdV+g8ibAAQgAQEI AyAAAQUgAQEREQQgAQEOBCABAQIFIAIBDg4FIAEBEUUHIAQBDg4ODgQHARAIByADCB0FCAgHBwUI CAgICAQgAQ4OBgADDg4ODgMgAA4FAAEOHQ4GAAMcAhwcBAABCBwDBwEIHAcWCAgIHQgdBR0FCAgI CAgFCAgdBQgICAgICAgMAAUBEoCVCBKAlQgIBAABDggHAAQODg4ODgUHAggQCAMHAQoDBwECAyAA AhEHCggCDhIZHQUOEhkIEi0SLQYAARKAnQ4HIAMBHQUICAUAAQESLQQAAQEOBSAAEoCpBSAAEoCt AgYOBgADDg4cHAogBgEIDg4OCBACCCAFAggODg4IAwAAAQMHAQ4EBwICAgQAAQIOBSAAEoCxBiAB EoC1HAYAAwgODgIFBwMODhwEIAEcHAQAARwcBQACDg4cBhUSJAESFAQgABMABhUSJAESEAYVEiQB EmEGFRIkARIgBCABAhwDIAAIBwABEmkRgMEEBwEeAAIeAAUQAQAeAAQKAR4ABAcBEwAGFRIkARMA BwYVEnEBEwAGFRJxARMAAhMABAoBEwAFIAEBEwAIt3pcVhk04IkIiYRdzYCAzJEIFs9JC7gMNOoI sD9ffxHVCjoEnR8AAAQQAAAABAkAAAAEHwAAAAQgAAAABEAAAAAEgAAAAAQAAQAABAEBAAAEAAAA AAQBAAAAAgYIAwYdBQMGEhkDBh0IAgYCAgYFBwYVEiQBEhQHBhUSJAESEAcGFRIkARJhBwYVEiQB EiADBhEcBSABARIZBCABCAgGIAIKChEdBCABAQoDIAAKBSACAg4OBAAAEhQEAAASEAQAABJhBAAA EiAEIAASaQcQAQEeAB4ABzABAQEQHgADKAACAygACgMoAA4ECAASFAQIABIQBAgAEmEECAASIAQo ABMACAEACAAAAAAAHgEAAQBUAhZXcmFwTm9uRXhjZXB0aW9uVGhyb3dzAQgBAAIAAAAAAEcBABou TkVURnJhbWV3b3JrLFZlcnNpb249djQuMAEAVA4URnJhbWV3b3JrRGlzcGxheU5hbWUQLk5FVCBG cmFtZXdvcmsgNAgBAAEAAAAAAAUBAAAAABgBAApNeVRlbXBsYXRlCDExLjAuMC4wAABhAQA0U3lz dGVtLldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMuU29hcEh0dHBDbGllbnRQcm90b2NvbBJDcmVhdGVf X0luc3RhbmNlX18TRGlzcG9zZV9fSW5zdGFuY2VfXwAAABcBABJGaWxlQ29ubmVjdGlvblR5cGUA ACYBACFTZWxlY3QgY29ubmVjdGlvbiB0byBzb3VyY2UgZmlsZS4AACYBACFTZWxlY3QgY29ubmVj dGlvbiB0byB0YXJnZXQgZmlsZS4AABABAAtNeS5Db21wdXRlcgAAEwEADk15LkFwcGxpY2F0aW9u AAAMAQAHTXkuVXNlcgAAEwEADk15LldlYlNlcnZpY2VzAABESQAAAAAAAAAAAABeSQAAACAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAUEkAAAAAAAAAAAAAAABfQ29yRGxsTWFpbgBtc2NvcmVlLmRsbAAA AAAA/yUAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgA AIAAAAAAAAAAAAAAAAAAAAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYYAAA1AIA AAAAAAAAAAAA1AI0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEA AAAAAAAAAAAAAAAAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBG AGkAbABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBDQC AAABAFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAABACAAABADAAMAAwADAAMAA0AGIAMAAA ACwAAgABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAAAgAAAAMAAIAAEARgBpAGwA ZQBWAGUAcgBzAGkAbwBuAAAAAAAwAC4AMAAuADAALgAwAAAAgAAwAAEASQBuAHQAZQByAG4AYQBs AE4AYQBtAGUAAABTAGMAcgBpAHAAdABUAGEAcwBrAF8ANgAyADEANgAwADkAYwA2AGIAOABiADMA NAA3ADgAOQBiADgAMQBhAGQAMAA2ADQAZgBlADIAYQA3ADMANwBkAC4AZABsAGwAAAAoAAIAAQBM AGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAAAgAAAAiAAwAAEATwByAGkAZwBpAG4AYQBsAEYA aQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AFQAYQBzAGsAXwA2ADIAMQA2ADAAOQBjADYAYgA4 AGIAMwA0ADcAOAA5AGIAOAAxAGEAZAAwADYANABmAGUAMgBhADcAMwA3AGQALgBkAGwAbAAAADQA CAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADAALgAwAC4AMAAuADAAAAA4AAgAAQBB AHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMAAuADAALgAwAC4AMAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAABwOQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=