This commit is contained in:
2020-09-23 07:22:38 +02:00
parent 41b13fe4b0
commit f5248e4a51
31 changed files with 2776 additions and 141 deletions

6
RKSV_DE/App.config Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
</startup>
</configuration>

View File

@@ -0,0 +1,38 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
'HINWEIS: Diese Datei wird automatisch generiert und darf nicht direkt bearbeitet werden. Wenn Sie Änderungen vornehmen möchten
' oder in dieser Datei Buildfehler auftreten, wechseln Sie zum Projekt-Designer.
' (Wechseln Sie dazu zu den Projekteigenschaften, oder doppelklicken Sie auf den Knoten "Mein Projekt" im
' Projektmappen-Explorer). Nehmen Sie auf der Registerkarte "Anwendung" entsprechende Änderungen vor.
'
Partial Friend Class MyApplication
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Public Sub New()
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
Me.IsSingleInstance = false
Me.EnableVisualStyles = true
Me.SaveMySettingsOnExit = true
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
End Sub
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.RKSV_DE.frmRKSV
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>true</MySubMain>
<MainForm>frmRKSV</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -0,0 +1,35 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' Allgemeine Informationen über eine Assembly werden über die folgenden
' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
' die einer Assembly zugeordnet sind.
' Werte der Assemblyattribute überprüfen
<Assembly: AssemblyTitle("RKSV_DE")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("RKSV_DE")>
<Assembly: AssemblyCopyright("Copyright © 2020")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird.
<Assembly: Guid("b1dadbd1-6007-42be-b960-227879d69faa")>
' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
'
' Hauptversion
' Nebenversion
' Buildnummer
' Revision
'
' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

73
RKSV_DE/My Project/Resources.Designer.vb generated Normal file
View File

@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary>
''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("RKSV_DE.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property rksv_de() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("rksv_de", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
End Module
End Namespace

View File

@@ -0,0 +1,124 @@
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
<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" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</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" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="rksv_de" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\rksv_de.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

73
RKSV_DE/My Project/Settings.Designer.vb generated Normal file
View File

@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.RKSV_DE.My.MySettings
Get
Return Global.RKSV_DE.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

130
RKSV_DE/RKSV_DE.vbproj Normal file
View File

@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{173CD166-FB23-4E8F-9BAA-DBDAF2A0383F}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>RKSV_DE.My.MyApplication</StartupObject>
<RootNamespace>RKSV_DE</RootNamespace>
<AssemblyName>RKSV_DE</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v4.7</TargetFrameworkVersion>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>RKSV_DE.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>RKSV_DE.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="KsVCom">
<HintPath>..\..\..\..\RKSV DE\KsVCom.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="cRKSV_DE.vb" />
<Compile Include="frmRKSV.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmRKSV.Designer.vb">
<DependentUpon>frmRKSV.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="frmRKSV.resx">
<DependentUpon>frmRKSV.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\rksv_de.jpg" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

121
RKSV_DE/cRKSV_DE.vb Normal file
View File

@@ -0,0 +1,121 @@
Imports ItgKsV
Public Class cRKSV_DE
Private Function SurroundingSub()
' COM-Objekt anlegen
Dim licenseKey As String = "MEUCIQDg2GSwFrgOMHLzKBO7Sac+D3xBh9Ct+QRBXarDFPtdNgIgQyvotBil11sRfqQgdY+spD3aUve/HZS9cF7MS0D720w="
Dim m_ksv As ItgKsV.KsVCom = New ItgKsV.KsVCom()
Dim result As Integer = m_ksv.InitialiseLibrary("F:", "SwissbitDemo", "12345", licenseKey)
If result <> &H0 Then
MessageBox.Show(m_ksv.StringifyErrorCode(result), "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
Return False
End If
' Setup bei erstmaliger Verwendung der Swissbit-TSE !!!
result = m_ksv.SetupTSEForFirstUse("123456", "12345", "98765", "SwissbitDemo")
If result <> &H0 Then
MessageBox.Show(m_ksv.StringifyErrorCode(result), "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
Else
MessageBox.Show("TSE setup succeeded.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
' BeginTransaction: für jede neue Rechnung wird eine Transaktion gestartet
Dim transactionNumber As Long = 0
result = m_ksv.StartTransaction(transactionNumber)
If result <> &H0 Then
MessageBox.Show(m_ksv.StringifyErrorCode(result), "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
Return False
End If
' UpdateTransaction: processData bleibt leer
result = m_ksv.UpdateTransaction(transactionNumber, "", "KassenBeleg-V1")
If result <> &H0 Then
MessageBox.Show(m_ksv.StringifyErrorCode(result), "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
End If
' FinishTransaction: Abschluss einer Rechnung, processData nach vorgegebenem Format
result = m_ksv.FinishTransaction(transactionNumber, "Beleg^19.99_0.00_0.00_0.00_0.00^19.99:Bar", "KassenBeleg-V1")
If result <> &H0 Then
MessageBox.Show(m_ksv.StringifyErrorCode(result), "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
End If
' QR-Code und weitere Werte, die auf der Rechnung angedruckt werden müssen
' QR-Code wird als base64 kodiertes bitmap geliefert
Dim qrCode As String = String.Empty
' QR-Code Inhalt für die Ablage in der Datenbank, falls eine Rechnung nochmals gedruckt werden muss
Dim qrCodeContent As String = String.Empty
m_ksv.GetLastReceiptQrCode(qrCode)
m_ksv.GetLastReceiptQrCodeContent(qrCodeContent)
Dim sTransactionNumber As String = String.Empty
Dim serialNumber As String = String.Empty
Dim signature As String = String.Empty
Dim sigCounter As String = String.Empty
Dim dtStartTransaction As Date = Date.MinValue
Dim dtFinishTransaction As Date = Date.MinValue
m_ksv.GetLastReceiptValues(sTransactionNumber, serialNumber, signature, dtStartTransaction, dtFinishTransaction, sigCounter)
' Anzeige der gestarteten/noch möglichen Transaktionen
Dim maxTransactions As Integer = 0
Dim openTransactions As Integer = 0
m_ksv.GetMaxStartedTransactions(maxTransactions)
m_ksv.GetStartedTransactions(openTransactions)
Dim startedTransactions As Integer() = Nothing
result = m_ksv.GetStartedTransactionNumbers(startedTransactions)
If result <> &H0 Then
MessageBox.Show(m_ksv.StringifyErrorCode(result), "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
End If
' Export der TSE-Daten im TAR-Format
result = m_ksv.ExportAsTarFile("d:\export.tar")
If result <> 0 Then
MessageBox.Show(m_ksv.StringifyErrorCode(result), "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
End If
' Bibliothek aufräumen, andernfalls wird ein power-cycle der TSE erforderlich um sie wieder einsetzen zu können
'result = CSharpImpl.__Assign(,, m_ksv.CleanupLibrary())
result = m_ksv.CleanupLibrary()
If result <> 0 Then
MessageBox.Show(m_ksv.StringifyErrorCode(result), "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
End If
Return True
End Function
End Class

284
RKSV_DE/frmRKSV.Designer.vb generated Normal file
View File

@@ -0,0 +1,284 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class frmRKSV
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmRKSV))
Me.Label1 = New System.Windows.Forms.Label()
Me.txtLog = New System.Windows.Forms.TextBox()
Me.LinkLabel1 = New System.Windows.Forms.LinkLabel()
Me.SplitContainer1 = New System.Windows.Forms.SplitContainer()
Me.Label2 = New System.Windows.Forms.Label()
Me.cbxAMBAR = New System.Windows.Forms.CheckBox()
Me.Label5 = New System.Windows.Forms.Label()
Me.txtFSSATLAS = New System.Windows.Forms.Label()
Me.Label3 = New System.Windows.Forms.Label()
Me.Label6 = New System.Windows.Forms.Label()
Me.txtInitAufschubStatus = New System.Windows.Forms.Label()
Me.cbxVERAG_DE = New System.Windows.Forms.CheckBox()
Me.Button1 = New System.Windows.Forms.Button()
Me.Button3 = New System.Windows.Forms.Button()
Me.Button2 = New System.Windows.Forms.Button()
Me.Panel1 = New System.Windows.Forms.Panel()
Me.pic = New System.Windows.Forms.PictureBox()
CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainer1.Panel1.SuspendLayout()
Me.SplitContainer1.Panel2.SuspendLayout()
Me.SplitContainer1.SuspendLayout()
Me.Panel1.SuspendLayout()
CType(Me.pic, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label1.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer))
Me.Label1.Location = New System.Drawing.Point(5, 5)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(28, 13)
Me.Label1.TabIndex = 1
Me.Label1.Text = "Log"
'
'txtLog
'
Me.txtLog.BackColor = System.Drawing.Color.White
Me.txtLog.Dock = System.Windows.Forms.DockStyle.Fill
Me.txtLog.Font = New System.Drawing.Font("Microsoft Sans Serif", 7.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.txtLog.Location = New System.Drawing.Point(0, 24)
Me.txtLog.Multiline = True
Me.txtLog.Name = "txtLog"
Me.txtLog.ReadOnly = True
Me.txtLog.Size = New System.Drawing.Size(485, 318)
Me.txtLog.TabIndex = 3
'
'LinkLabel1
'
Me.LinkLabel1.AutoSize = True
Me.LinkLabel1.Location = New System.Drawing.Point(359, 85)
Me.LinkLabel1.Name = "LinkLabel1"
Me.LinkLabel1.Size = New System.Drawing.Size(105, 13)
Me.LinkLabel1.TabIndex = 8
Me.LinkLabel1.TabStop = True
Me.LinkLabel1.Text = "Log ein-/ausblenden"
'
'SplitContainer1
'
Me.SplitContainer1.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1
Me.SplitContainer1.IsSplitterFixed = True
Me.SplitContainer1.Location = New System.Drawing.Point(0, 0)
Me.SplitContainer1.Name = "SplitContainer1"
Me.SplitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal
'
'SplitContainer1.Panel1
'
Me.SplitContainer1.Panel1.Controls.Add(Me.pic)
Me.SplitContainer1.Panel1.Controls.Add(Me.LinkLabel1)
Me.SplitContainer1.Panel1.Controls.Add(Me.Label2)
Me.SplitContainer1.Panel1.Controls.Add(Me.cbxAMBAR)
Me.SplitContainer1.Panel1.Controls.Add(Me.Label5)
Me.SplitContainer1.Panel1.Controls.Add(Me.txtFSSATLAS)
Me.SplitContainer1.Panel1.Controls.Add(Me.Label3)
Me.SplitContainer1.Panel1.Controls.Add(Me.Label6)
Me.SplitContainer1.Panel1.Controls.Add(Me.txtInitAufschubStatus)
Me.SplitContainer1.Panel1.Controls.Add(Me.cbxVERAG_DE)
Me.SplitContainer1.Panel1.Controls.Add(Me.Button1)
Me.SplitContainer1.Panel1.Controls.Add(Me.Button3)
Me.SplitContainer1.Panel1.Controls.Add(Me.Button2)
Me.SplitContainer1.Panel1MinSize = 100
'
'SplitContainer1.Panel2
'
Me.SplitContainer1.Panel2.Controls.Add(Me.txtLog)
Me.SplitContainer1.Panel2.Controls.Add(Me.Panel1)
Me.SplitContainer1.Panel2MinSize = 50
Me.SplitContainer1.Size = New System.Drawing.Size(485, 446)
Me.SplitContainer1.SplitterDistance = 100
Me.SplitContainer1.TabIndex = 9
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label2.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer))
Me.Label2.Location = New System.Drawing.Point(5, 16)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(50, 13)
Me.Label2.TabIndex = 1
Me.Label2.Text = "Dienste"
'
'cbxAMBAR
'
Me.cbxAMBAR.AutoSize = True
Me.cbxAMBAR.Location = New System.Drawing.Point(8, 63)
Me.cbxAMBAR.Name = "cbxAMBAR"
Me.cbxAMBAR.Size = New System.Drawing.Size(15, 14)
Me.cbxAMBAR.TabIndex = 7
Me.cbxAMBAR.UseVisualStyleBackColor = True
'
'Label5
'
Me.Label5.AutoSize = True
Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label5.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer))
Me.Label5.Location = New System.Drawing.Point(206, 16)
Me.Label5.Name = "Label5"
Me.Label5.Size = New System.Drawing.Size(43, 13)
Me.Label5.TabIndex = 1
Me.Label5.Text = "Status"
'
'txtFSSATLAS
'
Me.txtFSSATLAS.AutoSize = True
Me.txtFSSATLAS.Location = New System.Drawing.Point(206, 63)
Me.txtFSSATLAS.Name = "txtFSSATLAS"
Me.txtFSSATLAS.Size = New System.Drawing.Size(74, 13)
Me.txtFSSATLAS.TabIndex = 5
Me.txtFSSATLAS.Text = "nicht gestartet"
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.Location = New System.Drawing.Point(29, 40)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(94, 13)
Me.Label3.TabIndex = 1
Me.Label3.Text = "Kasse VERAG DE"
'
'Label6
'
Me.Label6.AutoSize = True
Me.Label6.Location = New System.Drawing.Point(29, 63)
Me.Label6.Name = "Label6"
Me.Label6.Size = New System.Drawing.Size(77, 13)
Me.Label6.TabIndex = 6
Me.Label6.Text = "Kasse AMBAR"
'
'txtInitAufschubStatus
'
Me.txtInitAufschubStatus.AutoSize = True
Me.txtInitAufschubStatus.Location = New System.Drawing.Point(206, 40)
Me.txtInitAufschubStatus.Name = "txtInitAufschubStatus"
Me.txtInitAufschubStatus.Size = New System.Drawing.Size(74, 13)
Me.txtInitAufschubStatus.TabIndex = 1
Me.txtInitAufschubStatus.Text = "nicht gestartet"
'
'cbxVERAG_DE
'
Me.cbxVERAG_DE.AutoSize = True
Me.cbxVERAG_DE.Location = New System.Drawing.Point(8, 40)
Me.cbxVERAG_DE.Name = "cbxVERAG_DE"
Me.cbxVERAG_DE.Size = New System.Drawing.Size(15, 14)
Me.cbxVERAG_DE.TabIndex = 4
Me.cbxVERAG_DE.UseVisualStyleBackColor = True
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(277, 11)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(45, 23)
Me.Button1.TabIndex = 2
Me.Button1.Text = "start"
Me.Button1.UseVisualStyleBackColor = True
Me.Button1.Visible = False
'
'Button3
'
Me.Button3.Location = New System.Drawing.Point(319, 40)
Me.Button3.Name = "Button3"
Me.Button3.Size = New System.Drawing.Size(54, 23)
Me.Button3.TabIndex = 2
Me.Button3.Text = "restart"
Me.Button3.UseVisualStyleBackColor = True
Me.Button3.Visible = False
'
'Button2
'
Me.Button2.Location = New System.Drawing.Point(328, 12)
Me.Button2.Name = "Button2"
Me.Button2.Size = New System.Drawing.Size(45, 23)
Me.Button2.TabIndex = 2
Me.Button2.Text = "stop"
Me.Button2.UseVisualStyleBackColor = True
Me.Button2.Visible = False
'
'Panel1
'
Me.Panel1.Controls.Add(Me.Label1)
Me.Panel1.Dock = System.Windows.Forms.DockStyle.Top
Me.Panel1.Location = New System.Drawing.Point(0, 0)
Me.Panel1.Name = "Panel1"
Me.Panel1.Size = New System.Drawing.Size(485, 24)
Me.Panel1.TabIndex = 4
'
'pic
'
Me.pic.BackgroundImage = Global.RKSV_DE.My.Resources.Resources.rksv_de
Me.pic.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.pic.Location = New System.Drawing.Point(380, 11)
Me.pic.Name = "pic"
Me.pic.Size = New System.Drawing.Size(100, 66)
Me.pic.TabIndex = 9
Me.pic.TabStop = False
'
'frmRKSV
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.White
Me.ClientSize = New System.Drawing.Size(485, 446)
Me.Controls.Add(Me.SplitContainer1)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "frmRKSV"
Me.Text = "RKSV Deutschland"
Me.SplitContainer1.Panel1.ResumeLayout(False)
Me.SplitContainer1.Panel1.PerformLayout()
Me.SplitContainer1.Panel2.ResumeLayout(False)
Me.SplitContainer1.Panel2.PerformLayout()
CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainer1.ResumeLayout(False)
Me.Panel1.ResumeLayout(False)
Me.Panel1.PerformLayout()
CType(Me.pic, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
Friend WithEvents Label1 As Label
Friend WithEvents txtLog As TextBox
Friend WithEvents LinkLabel1 As LinkLabel
Friend WithEvents SplitContainer1 As SplitContainer
Friend WithEvents Label2 As Label
Friend WithEvents cbxAMBAR As CheckBox
Friend WithEvents Label5 As Label
Friend WithEvents txtFSSATLAS As Label
Friend WithEvents Label3 As Label
Friend WithEvents Label6 As Label
Friend WithEvents txtInitAufschubStatus As Label
Friend WithEvents cbxVERAG_DE As CheckBox
Friend WithEvents Button1 As Button
Friend WithEvents Button3 As Button
Friend WithEvents Button2 As Button
Friend WithEvents Panel1 As Panel
Friend WithEvents pic As PictureBox
End Class

980
RKSV_DE/frmRKSV.resx Normal file
View File

@@ -0,0 +1,980 @@
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
<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" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</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" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAgIAAAAEAGAAoyAAAFgAAACgAAACAAAAAAAEAAAEAGAAAAAAAAMgAAMQOAADEDgAAAAAAAAAA
AACRbEd5TB+CWC59USZ8USV9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9
USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9
USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9
USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9
USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9
USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9
USZ9USZ9USZ9USZ8USV9USaCWC55TB+RbEd4Sx5mMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwB4Sx5/VClmMwBuPg5r
OglrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhr
OQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhr
OQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhr
OQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhr
OQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhr
OQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhr
OQhrOgluPg5mMwB/VCl0RhhmMwBmMwBnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFn
NAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFn
NAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFn
NAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFn
NAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFn
NAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFn
NAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFmMwBmMwB0RhhzRBVmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBz
RBV3Sh1mMwBnNQJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBnNQJmMwB3Sh18UCRmMwBqOQdnNAFmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBnNAFqOQdmMwB8UCR9USZmMwBrOQhn
NAFmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9
USZ9USZmMwBrOQhnNAFmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwBmMwBmMwBmMwDm4N3/////////
///////39fR0SSZmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwCAXUL/////////////////
//////////////////////////////////////////////90SSZmMwBmMwBmMwBmMwBmMwB0SSb39fT/
//////////////9mMwBmMwBmMwBmMwBmMwBmMwBmMwCAXUL///////////////////+YfWtmMwBmMwBm
MwBmMwB0SSbu6+n////////////39fR0SSZmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwD39fT/////
///////////Bs6pmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwC3p5zUy8X////////////////L
v7itmo1mMwBmMwCYfWv///////90SSZmMwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhn
NAFmMwBmMwBmMwB0SSb////////////////////////Lv7hmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwDu6+n///////////////////////////////////////////////////////////+j
jH1mMwBmMwBmMwBmMwBmMwBmMwDm4N3///////////////+MblhmMwBmMwBmMwBmMwBmMwBmMwC3p5z/
///////////////m4N1mMwBmMwBmMwBmMwBmMwBmMwCYfWv////////////////Bs6pmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwB0SSb///////////////////+jjH1mMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwCt
mo3////////////////////////////////////m4N2Mbli3p5z///////+jjH1mMwBmMwBmMwBmMwBm
MwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwBmMwBmMwCMblj///////////////////////////+M
blhmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDUy8X/////////////////////////////
///////////////////////////////Lv7hmMwBmMwBmMwBmMwBmMwBmMwDBs6r///////////////+3
p5xmMwBmMwBmMwBmMwBmMwBmMwDm4N3///////////////+3p5xmMwBmMwBmMwBmMwBmMwBmMwBmMwDU
y8X///////////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwCYfWv///////////////////90SSZm
MwBmMwBmMwBmMwBmMwBmMwBmMwDLv7j////////////////////////////////////////////39fTm
4N3///////+3p5xmMwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwBmMwBmMwC3
p5z////////////////////////////d1tFmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwC3
p5z////////////////39fRmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwCjjH3////////////////Lv7hmMwBmMwBmMwBmMwBmMwCAXUL///////////////////90
SSZmMwBmMwBmMwBmMwBmMwBmMwBmMwCAXUL39fT////////////Lv7hmMwBmMwBmMwBmMwBmMwBmMwBm
MwC3p5z////////////////39fRmMwBmMwBmMwBmMwBmMwBmMwBmMwC3p5z////////////////////U
y8WAXUJmMwBmMwC3p5z39fT////////////////////Uy8VmMwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9
USZ9USZmMwBrOQhnNAFmMwBmMwBmMwDBs6r////////////////u6+n///////////+tmo1mMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwCMblj///////////////////90SSZmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwCMblj////////////////m4N1mMwBmMwBmMwBm
MwBmMwC3p5z////////////////Uy8VmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwC3p5z/////////
///////////////////////////////////////////////////////Uy8VmMwBmMwBmMwBmMwBmMwBm
MwBmMwD39fT////////////////Lv7hmMwBmMwBmMwBmMwBmMwCAXULu6+n////////////////39fRm
MwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwBmMwBmMwDm4N3/////////////
//+jjH3////////////u6+lmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwB0SSb/////////////
//////+jjH1mMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwD3
9fT///////////////90SSZmMwBmMwBmMwBmMwDm4N3///////////////+jjH1mMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwDu6+n/////////////////////////////////////////////////////
//////+3p5xmMwBmMwBmMwBmMwBmMwBmMwCjjH3///////////////////+MblhmMwBmMwBmMwBmMwBm
MwBmMwCMblj///////////////////90SSZmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhn
NAFmMwBmMwBmMwD39fT///////////////9mMwDLv7j///////////+3p5xmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwDm4N3////////////////Bs6pmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDUy8X///////////////+YfWtmMwBmMwBmMwCAXUL/////////
///////39fR0SSZmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwCYfWv/////////////////////
//////////////////////////////////////+jjH1mMwBmMwBmMwBmMwBmMwBmMwC3p5z/////////
//////////9mMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDUy8X///////////////+jjH1mMwBmMwBmMwBm
MwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwBmMwCMblj////////////////m4N1mMwCAXUL39fT/
///////39fSAXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDBs6r////////////////Uy8VmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwC3p5z/////////////
///////////////////////////////////////u6+lmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwDUy8X////////////u6+lmMwBmMwBmMwBmMwCMblj///////////////////90SSZmMwBm
MwBmMwBmMwBmMwBmMwC3p5z///////////////////9mMwBmMwBmMwB0SSb/////////////////////
//////////////+3p5xmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwBmMwCjjH3/
///////////////Uy8VmMwBmMwC3p5z////////////Lv7hmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwC3p5z////////////////////////////////////////////////////m4N1mMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwCjjH3////////////////////////////////////////////////////////////d
1tGMblhmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwCAXUL///////////////+tmo1mMwBmMwBmMwCt
mo3////////////////m4N1mMwBmMwBmMwBmMwBmMwBmMwBmMwC3p5z///////////////////90SSZm
MwBmMwBmMwDm4N3////////////////////////////////Uy8VmMwBmMwBmMwBmMwBnNAFrOQhmMwB9
USZ9USZmMwBrOQhnNAFmMwBmMwC3p5z///////////////+3p5xmMwBmMwB0SSb39fT///////////+Y
fWtmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwCMblj/////////////////////////////////////////
//////////////9mMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwB0SSb/////////////////////////////
//////////////////////////////////////+YfWtmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwC3
p5z////////////39fR0SSZmMwBmMwDBs6r////////////////Uy8VmMwBmMwBmMwBmMwBmMwBmMwBm
MwCjjH3///////////////////+jjH1mMwBmMwBmMwDBs6r////////////////////////////////3
9fRmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwBmMwDUy8X///////////////+t
mo1mMwBmMwBmMwCtmo3////////////m4N1mMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwD39fT/////
//////////////////////////////////////////////+YfWtmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwDu6+n///////////////90SSZmMwBmMwBmMwBmMwBmMwCjjH3m4N3////////////////39fR0SSZm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDu6+n///////////+3p5xmMwBmMwDUy8X/////////////
//+3p5xmMwBmMwBmMwBmMwBmMwBmMwBmMwB0SSb////////////////////Bs6pmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhn
NAFmMwBmMwDu6+n///////////////+MblhmMwBmMwBmMwBmMwDu6+n///////////+tmo1mMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwDd1tH////////////////Bs6pmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDUy8X///////////////+YfWtmMwBmMwBmMwBmMwBmMwBm
MwB0SSbu6+n///////////////+3p5xmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwCjjH3/////////
///39fSAXUJmMwD39fT///////////////+MblhmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDUy8X/////
///////////39fRmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDBs6r////Uy8W3p5y3p5yYfWtmMwBmMwBm
MwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwB0SSb///////////////////90SSZmMwBmMwBmMwBm
MwCtmo3////////////u6+l0SSZmMwBmMwBmMwBmMwBmMwBmMwBmMwDBs6r////////////////m4N1m
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwC3p5z/////////
//////+3p5xmMwBmMwBmMwBmMwBmMwBmMwBmMwDLv7j////////////////Bs6pmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwDUy8X////////////Lv7h0SSb///////////////////90SSZmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwCYfWv///////////////////+3p5xmMwBmMwBmMwBmMwBmMwBmMwBmMwDu
6+n///////////////+jjH1mMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwCYfWv/////
///////////u6+lmMwBmMwBmMwBmMwBmMwBmMwDd1tH///////////+3p5xmMwBmMwBmMwBmMwBmMwBm
MwBmMwCjjH3///////////////////90SSZmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwCYfWv////////////////Uy8VmMwBmMwBmMwBmMwBmMwBmMwBmMwDm4N3/////
//////////+3p5xmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwCAXUL///////////////+tmo3/
///////////////m4N1mMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDBs6r/////////////////
//+YfWtmMwBmMwBmMwBmMwBmMwCtmo3////////////////u6+lmMwBmMwBmMwBmMwBnNAFrOQhmMwB9
USZ9USZmMwBrOQhnNAFmMwC3p5z////////////////Uy8VmMwBmMwBmMwBmMwBmMwBmMwCYfWv/////
//////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwCAXUL///////////////////+MblhmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwB0SSb////////////////u6+lmMwBm
MwBmMwBmMwBmMwCAXULLv7j///////////////////+MblhmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwC3p5z////////////////////////////////Lv7hmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwDd1tH///////////////////+3p5x0SSZmMwBmMwC3p5z///////////////////+t
mo1mMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwDLv7j////////////////Bs6pm
MwBmMwBmMwBmMwBmMwBmMwBmMwDd1tH////////////Uy8VmMwBmMwBmMwBmMwBmMwBmMwBmMwD39fT/
//////////////////////////////////////////////////////////90SSZmMwBmMwBmMwBmMwBm
MwBmMwDm4N3////////////////////////////////////////////////////////////Bs6pmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDu6+n///////////////////////////+3
p5xmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDUy8X/////////////////////////
///////////////////////////Lv7hmMwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhn
NAFmMwDm4N3///////////////+tmo1mMwBmMwBmMwBmMwBmMwBmMwBmMwCAXUL///////////////+Y
fWtmMwBmMwBmMwBmMwBmMwBmMwDUy8X/////////////////////////////////////////////////
//////////+YfWtmMwBmMwBmMwBmMwBmMwBmMwDLv7j/////////////////////////////////////
///////////////////Uy8VmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwCj
jH3///////////////////////////+MblhmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwCtmo339fT///////////////////////////////////////+tmo1mMwBmMwBmMwBmMwBmMwBm
MwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAF0SSb///////////////////+MblhmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwDLv7j////////////u6+l0SSZmMwBmMwBmMwBmMwBmMwC3p5z/////////////////
//////////////////////////////////////////+3p5xmMwBmMwBmMwBmMwBmMwBmMwC3p5z/////
///////////////////////////////////////m4N23p5yMblhmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDd1tH///////////////////////9mMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwCjjH23p5z39fT////////////////Uy8W3
p5xmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9
USZ9USZmMwBrOQhnNAFmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhn
NAFmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9
USZ9USZmMwBrOQhnNAFmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ9USZmMwBrOQhnNAFmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBnNAFrOQhmMwB9USZ8UCRmMwBqOQdn
NAFmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBnNAFqOQdmMwB8UCR3Sh1mMwBnNQJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBnNQJmMwB3Sh1zRBVmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBz
RBV0RhhmMwBmMwBnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFn
NAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFn
NAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFn
NAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFn
NAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFn
NAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFnNAFn
NAFnNAFnNAFnNAFnNAFnNAFmMwBmMwB0Rhh/VClmMwBuPg5rOglrOQhrOQhrOQhrOQhrOQhrOQhrOQhr
OQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhr
OQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhr
OQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhr
OQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhr
OQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhr
OQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOQhrOgluPg5mMwB/VCl4Sx5mMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm
MwBmMwBmMwBmMwB4Sx6RbEd5TB+CWC59USZ8USV9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9
USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9
USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9
USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9
USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9
USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ9
USZ9USZ9USZ9USZ9USZ9USZ9USZ9USZ8USV9USaCWC55TB+RbEf/////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////p6ferq+Kr
q+Krq+Krq+Krq+Krq+LFxer/////////////////////////////////////////////////////////
//////////+4uOarq+Krq+Krq+Krq+Krq+Ld3fP/////////////////////////////////////////
//////////////////////////////+4uOarq+Krq+Krq+Krq+Krq+Ld3fP/////////////////////
//////////////////////+rq+Krq+Krq+Krq+Krq+Krq+Krq+Krq+Krq+Krq+Krq+Krq+Krq+Krq+Kr
q+Krq+K4uOb////////////////////////////////Fxeqrq+Krq+Krq+Krq+Krq+Krq+Lp6ff/////
////////////////////////////////////////////////////////////////////////////////
///////////////////////d3fMDA70DA70DA70DA70DA70DA71ZWcv/////////////////////////
///////////////////////////////R0e9sbNADA70DA70DA70DA70DA70DA70DA70DA70DA72dnd30
9Pv////////////////////////////////////////////////R0e9sbNADA70DA70DA70DA70DA70D
A70DA70DA70DA72dnd309Pv///////////////////////////////8pKcIDA70DA70DA70DA70DA70D
A70DA70DA70DA70DA70DA70DA70DA70DA70DA70pKcL///////////////////+4uOZsbNADA70DA70D
A70DA70DA70DA70DA70DA70DA70DA72dnd3p6ff/////////////////////////////////////////
//////////////////////////////////////////////////////////8pKcIDA70DA70DA70DA70D
A70DA73///////////////////////////////////////////////////+dnd0DA70DA70DA70DA70D
A70DA70DA70DA70DA70DA70DA70DA70DA724uOb///////////////////////////////////////+d
nd0DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA724uOb/////////////////////
//////9ZWcsDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA7309Pv/
///////p6fdZWcsDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA72rq+L/////
////////////////////////////////////////////////////////////////////////////////
//////////9sbNADA70DA70DA70DA70DA70DA73d3fP/////////////////////////////////////
//////9+ftQDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA72rq+L/////
//////////////////////////9+ftQDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70D
A70DA70DA72rq+L///////////////////////+OjtkDA70DA70DA70DA70DA70DA70DA70DA70DA70D
A70DA70DA70DA70DA70DA70DA73d3fP////p6fcpKcIDA70DA70DA70DA70DA70DA70DA70DA70DA70D
A70DA70DA70DA70DA70DA70DA72dnd3/////////////////////////////////////////////////
//////////////////////////////////////////+dnd0DA70DA70DA70DA70DA70DA73Fxer/////
//////////////////////////////////+rq+IDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70D
A70DA70DA70DA70DA70DA70DA72rq+L///////////////////////+rq+IDA70DA70DA70DA70DA70D
A70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA72rq+L///////////////////+rq+IDA70D
A70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA724uOb///9ZWcsDA70DA70D
A70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA73Fxer/////////////
//////////////////////////////////////////////////////////////////////////+rq+ID
A70DA70DA70DA70DA70DA72dnd3////////////////////////////////////p6fcDA70DA70DA70D
A70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA73d3fP/////////////
///p6fcDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70D
A73d3fP////////////////R0e8DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70D
A70DA70DA72rq+K4uOYDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70D
A70DA70DA70DA71ZWcv/////////////////////////////////////////////////////////////
///////////////////////////d3fMDA70DA70DA70DA70DA70DA71+ftT/////////////////////
//////////////+rq+IDA70DA70DA70DA70DA70DA70DA72dnd309Pv////R0e9+ftQDA70DA70DA70D
A70DA70DA70DA71sbND///////////////+rq+IDA70DA70DA70DA70DA70DA70DA72dnd309Pv////R
0e9+ftQDA70DA70DA70DA70DA70DA70DA71sbND////////////////09PsDA70DA70DA70DA70DA70D
A71ZWcv///////////////////////////////////////9sbNADA70DA70DA70DA70DA70DA70DA72d
nd3d3fP////////d3fN+ftQDA70DA70DA70DA70DA70DA70DA73d3fP/////////////////////////
///////////////////////////////////////////////////////////09PsDA70DA70DA70DA70D
A70DA71ERMf///////////////////////////////////9ZWcsDA70DA70DA70DA70DA70DA72rq+L/
//////////////////+dnd0DA70DA70DA70DA70DA70DA70DA73Fxer///////////9ZWcsDA70DA70D
A70DA70DA70DA72rq+L///////////////////+dnd0DA70DA70DA70DA70DA70DA70DA73Fxer/////
//////////8pKcIDA70DA70DA70DA70DA70DA73////////////////////////////////////09PsD
A70DA70DA70DA70DA70DA70DA73d3fP///////////////////////9sbNADA70DA70DA70DA70DA70D
A73Fxer/////////////////////////////////////////////////////////////////////////
//////////////9ZWcsDA70DA70DA70DA70DA70DA7309Pv////////////////////////////09PsD
A70DA70DA70DA70DA70DA71ERMf///////////////////////////9ZWcsDA70DA70DA70DA70DA70D
A71sbND////////09PsDA70DA70DA70DA70DA70DA71ERMf///////////////////////////9ZWcsD
A70DA70DA70DA70DA70DA71sbND///////////////9+ftQDA70DA70DA70DA70DA70DA73d3fP/////
///////////////////////////09Purq+Krq+Krq+JsbNADA70DA72Ojtn/////////////////////
//////9ZWcsDA70DA70DA70DA70DA70DA724uOb/////////////////////////////////////////
//////////////////////////////////////////////9+ftQDA70DA70DA70DA70DA70DA73R0e//
///////////////////////////d3fMDA70DA70DA70DA70DA70DA71+ftT/////////////////////
//////+4uOYDA70DA70DA70DA70DA70DA70DA7309Pv////d3fMDA70DA70DA70DA70DA70DA71+ftT/
//////////////////////////+4uOYDA70DA70DA70DA70DA70DA70DA7309Pv///////////+dnd0D
A70DA70DA70DA70DA70DA73Fxer/////////////////////////////////////////////////////
///////////////////////////d3fOrq+IpKcIDA70DA70DA70DA70DA70DA70DA73Fxer/////////
//////////////////////////////////////////////////////////////////////////////+r
q+IDA70DA70DA70DA70DA70DA72rq+L////////////////////////////R0e8DA70DA70DA70DA70D
A70DA72Ojtn///////////////////////////////8pKcIDA70DA70DA70DA70DA70DA73Fxer////R
0e8DA70DA70DA70DA70DA70DA72Ojtn///////////////////////////////8pKcIDA70DA70DA70D
A70DA70DA73Fxer///////////+4uOYDA70DA70DA70DA70DA70DA72rq+L/////////////////////
//////////////////////////////////////////////+4uOarq+IDA70DA70DA70DA70DA70DA70D
A70DA70DA70DA70DA7309Pv/////////////////////////////////////////////////////////
///////////////////////////////FxeoDA70DA70DA70DA70DA70DA72dnd3/////////////////
///////////R0e8DA70DA70DA70DA70DA70DA72Ojtn///////////////////////////////9+ftQD
A70DA70DA70DA70DA70DA72rq+L////R0e8DA70DA70DA70DA70DA70DA72Ojtn/////////////////
//////////////9+ftQDA70DA70DA70DA70DA70DA72rq+L////////////d3fMDA70DA70DA70DA70D
A70DA71+ftT////////////////////////////////////////////////////////p6fednd0DA70D
A70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA71sbND/////////////////////////////
///////////////////////////////////////////////////////////////p6fcDA70DA70DA70D
A70DA70DA71ZWcv////////////////////////////p6fcDA70DA70DA70DA70DA70DA71ZWcv/////
//////////////////////////+rq+IDA70DA70DA70DA70DA70DA72Ojtn////p6fcDA70DA70DA70D
A70DA70DA71ZWcv///////////////////////////////+rq+IDA70DA70DA70DA70DA70DA72Ojtn/
///////////09PsDA70DA70DA70DA70DA70DA71ERMf/////////////////////////////////////
///////////////FxeoDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70pKcLp
6ff/////////////////////////////////////////////////////////////////////////////
//////////////////8pKcIDA70DA70DA70DA70DA70pKcL////////////////////////////09PsD
A70DA70DA70DA70DA70DA70pKcL////////////////////////////////d3fMDA70DA70DA70DA70D
A70DA71sbND////09PsDA70DA70DA70DA70DA70DA70pKcL////////////////////////////////d
3fMDA70DA70DA70DA70DA70DA71sbND///////////////9ZWcsDA70DA70DA70DA70DA70DA7309Pv/
///////////////////////////////////////////FxeoDA70DA70DA70DA70DA70DA70DA70DA70D
A70DA70DA70DA70DA70DA71ERMfd3fP/////////////////////////////////////////////////
//////////////////////////////////////////////////9ZWcsDA70DA70DA70DA70DA70DA73d
3fP///////////////////////////8pKcIDA70DA70DA70DA70DA70DA73R0e//////////////////
///////////p6fcDA70DA70DA70DA70DA70DA71sbND///////8pKcIDA70DA70DA70DA70DA70DA73R
0e/////////////////////////////p6fcDA70DA70DA70DA70DA70DA71sbND///////////////9+
ftQDA70DA70DA70DA70DA70DA73d3fP////////////////////////////////////////09PspKcID
A70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA71ZWcurq+L/////////////////////////
////////////////////////////////////////////////////////////////////////////////
//+dnd0DA70DA70DA70DA70DA70DA73Fxer///////////////////////////9+ftQDA70DA70DA70D
A70DA70DA72Ojtn////////////////////////////p6fcDA70DA70DA70DA70DA70DA71+ftT/////
//9+ftQDA70DA70DA70DA70DA70DA72Ojtn////////////////////////////p6fcDA70DA70DA70D
A70DA70DA71+ftT///////////////+rq+IDA70DA70DA70DA70DA70DA724uOb/////////////////
///////////////////////FxeoDA70DA70DA70DA70DA70DA70DA70DA70DA70DA71sbNCrq+Lp6ff/
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////+rq+IDA70DA70DA70DA70DA70DA72rq+L/////////////
///////////////FxeoDA70DA70DA70DA70DA70DA70DA73p6ff////////////////////////FxeoD
A70DA70DA70DA70DA70DA72Ojtn////////FxeoDA70DA70DA70DA70DA70DA70DA73p6ff/////////
///////////////FxeoDA70DA70DA70DA70DA70DA72Ojtn////////////////FxeoDA70DA70DA70D
A70DA70DA72dnd3///////////////////////////////////////+rq+IDA70DA70DA70DA70DA70D
A70DA72Ojtm4uOb/////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////d3fMDA70DA70D
A70DA70DA70DA71+ftT///////////////////////////////8pKcIDA70DA70DA70DA70DA70DA71+
ftT///////////////////////+OjtkDA70DA70DA70DA70DA70DA72rq+L///////////8pKcIDA70D
A70DA70DA70DA70DA71+ftT///////////////////////+OjtkDA70DA70DA70DA70DA70DA72rq+L/
///////////////d3fMDA70DA70DA70DA70DA70DA71sbND/////////////////////////////////
//////+rq+IDA70DA70DA70DA70DA70DA73d3fP////////////////////p6ferq+Krq+L09Pv/////
////////////////////////////////////////////////////////////////////////////////
///////////////////09PsDA70DA70DA70DA70DA70DA71ERMf/////////////////////////////
//+rq+IDA70DA70DA70DA70DA70DA70DA71+ftT///////////////+4uOYDA70DA70DA70DA70DA70D
A70DA73d3fP///////////+rq+IDA70DA70DA70DA70DA70DA70DA71+ftT///////////////+4uOYD
A70DA70DA70DA70DA70DA70DA73d3fP///////////////////8pKcIDA70DA70DA70DA70DA70pKcL/
//////////////////////////////////////+rq+IDA70DA70DA70DA70DA70DA724uOb/////////
///////09PtZWcsDA70DA70DA70DA71sbNCrq+L09Pv/////////////////////////////////////
///////////////////////////09Purq+Krq+Krq+Krq+Krq+Krq+IpKcIDA70DA70DA70DA70DA70D
A72rq+Krq+Krq+Krq+Krq+Krq+LR0e////////9ERMcDA70DA70DA70DA70DA70DA70DA70DA72rq+Kr
q+JZWcsDA70DA70DA70DA70DA70DA70DA71ZWcv///////////////////9ERMcDA70DA70DA70DA70D
A70DA70DA70DA72rq+Krq+JZWcsDA70DA70DA70DA70DA70DA70DA71ZWcv/////////////////////
//9ZWcsDA70DA70DA70DA70DA70DA7309Pv////////////////////////////////////R0e8DA70D
A70DA70DA70DA70DA70DA71ZWcurq+Krq+J+ftQDA70DA70DA70DA70DA70DA70DA70pKcL09Pv/////
///////////////////////////////////////////////////////////09PsDA70DA70DA70DA70D
A70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA72Ojtn////////d3fMDA70D
A70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA73R0e//////////
///////////d3fMDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70D
A70DA73R0e////////////////////////+OjtkDA70DA70DA70DA70DA70DA73R0e//////////////
//////////////////////////9ERMcDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70D
A70DA70DA70DA70DA72rq+L/////////////////////////////////////////////////////////
//////////////8pKcIDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70D
A70DA70DA71ZWcv///////////+4uOYDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70D
A70DA70DA70DA72dnd3///////////////////////////+4uOYDA70DA70DA70DA70DA70DA70DA70D
A70DA70DA70DA70DA70DA70DA70DA70DA72dnd3///////////////////////////+rq+IDA70DA70D
A70DA70DA70DA72rq+L////////////////////////////////////////d3fMDA70DA70DA70DA70D
A70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA71ZWcv/////////////////////////////
//////////////////////////////////////////////9sbNADA70DA70DA70DA70DA70DA70DA70D
A70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70pKcL///////////////+4uOYDA70DA70DA70D
A70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA71+ftT/////////////////////////////////
//+4uOYDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA71+ftT/////////////
///////////////////R0e8DA70DA70DA70DA70DA70DA72Ojtn/////////////////////////////
//////////////+4uOYDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA71ZWcvp
6ff///////////////////////////////////////////////////////////////////////////+d
nd0DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA73p
6ff////////////////d3fNZWcsDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA724uOb/////
///////////////////////////////////////d3fNZWcsDA70DA70DA70DA70DA70DA70DA70DA70D
A70DA70DA724uOb////////////////////////////////////09PsDA70DA70DA70DA70DA70DA71Z
Wcv////////////////////////////////////////////////R0e9ERMcDA70DA70DA70DA70DA70D
A70DA70DA70DA70DA70DA72Ojtn/////////////////////////////////////////////////////
//////////////////////////////+rq+IDA70DA70DA70DA70DA70DA70DA70DA70DA70DA70DA70D
A70DA70DA70DA70DA70DA70DA70DA73R0e/////////////////////////R0e+rq+IpKcIDA70DA70D
A70DA70DA72Ojtmrq+L////////////////////////////////////////////////////////////R
0e+rq+IpKcIDA70DA70DA70DA70DA72Ojtmrq+L/////////////////////////////////////////
//////8pKcIDA70DA70DA70DA70DA70DA73/////////////////////////////////////////////
//////////+4uOarq+IDA70DA70DA70DA70DA70DA71+ftSrq+L09Pv/////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</value>
</data>
</root>

414
RKSV_DE/frmRKSV.vb Normal file
View File

@@ -0,0 +1,414 @@
Imports System.Net, System.Net.Sockets
Imports System.Text
Imports System.Threading
Public Class frmRKSV
Dim serverSocket As Socket
Dim clientSocket As Socket
Dim byteData(1023) As Byte
Public Shared boolInitAufschub As Boolean = False
Public Shared boolFSSAtlas As Boolean = False
Public Shared boolDatenserver As Boolean = False
Dim splitPanelDefaultHeight As Integer = 0
Private Sub frmServer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
splitPanelDefaultHeight = SplitContainer1.Panel2.Height
Dim computername As String = System.Environment.MachineName.ToUpper
If computername = "YLPS023046" Then 'DEVELOPER ANDREAS
cbxVERAG_DE.Checked = True
cbxAMBAR.Checked = True
End If
If computername = "DEVELOPER" Then 'DEVELOPER SERVER
cbxVERAG_DE.Checked = True
cbxAMBAR.Checked = True
cbxAMBAR.Enabled = True
End If
If True Or computername = "RKSV.........1" Then 'RKSV 1 SERVER,2
cbxVERAG_DE.Checked = True
cbxAMBAR.Checked = True
cbxAMBAR.Enabled = True
End If
' cbxInitAufschub.Checked = True
cbxVERAG_DE.Focus()
DIENST_InitSocket() 'initialisieren
End Sub
Sub DIENST_InitSocket()
serverSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Dim IpEndPoint As IPEndPoint = New IPEndPoint(IPAddress.Any, 8800)
serverSocket.Bind(IpEndPoint)
serverSocket.Listen(5)
serverSocket.BeginAccept(New AsyncCallback(AddressOf OnAccept), Nothing)
End Sub
Private Sub OnAccept(ByVal ar As IAsyncResult)
clientSocket = serverSocket.EndAccept(ar)
serverSocket.BeginAccept(New AsyncCallback(AddressOf OnAccept), Nothing)
AddClient(clientSocket)
End Sub
Delegate Sub _AddClient(ByVal client As Socket)
Private Sub AddClient(ByVal client As Socket) ' Neunen Client hinzufügen
If InvokeRequired Then
Invoke(New _AddClient(AddressOf AddClient), client)
Exit Sub
End If
writeToFrmLog(client, "", "Verbindungsaufbau.. ")
Send("ConSuccess", client) ' Der Client bekommt die Nachricht, dass die Verbindung steht...
'... jetzt kann der Client senden, der Server horcht...
clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None,
New AsyncCallback(AddressOf OnRecieve), clientSocket)
End Sub
Private Sub Send(ByVal msg As String, ByVal client As Socket) 'An den Client senden
Dim sendBytes As Byte() = Encoding.BigEndianUnicode.GetBytes(msg)
client.BeginSend(sendBytes, 0, sendBytes.Length, SocketFlags.None, New AsyncCallback(AddressOf OnSend), client)
End Sub
Private Sub OnSend(ByVal ar As IAsyncResult)
Dim client As Socket = ar.AsyncState
client.EndSend(ar)
End Sub
Private Sub OnRecieve(ByVal ar As IAsyncResult) ' Wenn ein Task-Befehl vom Client empfangen wurde
Dim client As Socket = ar.AsyncState
Try
client.EndReceive(ar)
Dim bytesRec As Byte() = byteData
Dim message As String = Encoding.BigEndianUnicode.GetString(bytesRec) '.Replace(Convert.ToChar(0), "")
Dim s As String = Read(message, client)
If s <> "" Then Send(s, client) ' Die Aufgabe wird abgearbeitet, der Client bekommt bei Fehler eine Antwort...
Catch ex As Exception
client.Shutdown(SocketShutdown.Both)
client.Close()
End Try
End Sub
Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs)
End Sub
Delegate Function _Read(ByVal msg As String, client As Socket, messageFile() As Byte, fileName As String)
Private Function Read(ByVal msg As String, client As Socket, Optional messageFile() As Byte = Nothing, Optional fileName As String = "") As String
If InvokeRequired Then
Invoke(New _Read(AddressOf Read), msg, client, messageFile, fileName)
Return ""
End If
' writeToFrmLog(client, "testDS", msg)
msg = msg.Replace(Convert.ToChar(0), "")
' MsgBox(msg)
If True Then 'msg.Contains("|||") Then ''!!!!!!!!!!!!! NICHT FERTIG
Dim split() As String = msg.Split("|||")
Select Case split(0)
Case "RKSV_DE" 'der Task für die RKSV Signierung wird aufgerufen
'If Not boolDatenserver Then Me.writeToFrmLog(client, "DATENSERVER", "Abgebrochen - Task nicht aktiv " & msg) : Return "Task inactive"
If split.Length > 1 Then
Select Case split(1)
Case "VERAG_DE"
writeToFrmLog(client, "testDS", "VERAG_DE")
'' die eigentliche Funktion wird in einem Tread aufgrufen
'Dim thread As New Thread(AddressOf SignRKSV)
'thread.IsBackground = True
'thread.Start(client)
''Ein zweiter Thread kontrolliert, ob die Funktion nach einer gewissen Zeit noch läuft und beendet diese ggf.
'Dim st As New Thread(AddressOf stopThread)
'st.IsBackground = True
'Dim param_obj(3) As Object
''Übergabeparameter des 2. Threads
'param_obj(0) = thread
'param_obj(1) = client
'param_obj(2) = 110 'SEKUNDEN
'st.Start(param_obj)
' Return "Task successful"
Send("Task successful", client) 'Client-Mittelung
Case "AMBAR"
writeToFrmLog(client, "testDS", "AMBAR")
' die eigentliche Funktion wird in einem Tread aufgrufen
Dim thread As New Thread(AddressOf SignRKSV_AMBAR)
thread.IsBackground = True
thread.Start(client)
'Ein zweiter Thread kontrolliert, ob die Funktion nach einer gewissen Zeit noch läuft und beendet diese ggf.
Dim st As New Thread(AddressOf stopThread)
st.IsBackground = True
Dim param_obj(3) As Object
'Übergabeparameter des 2. Threads
param_obj(0) = thread
param_obj(1) = client
param_obj(2) = 110 'SEKUNDEN
st.Start(param_obj)
' Return "Task successful"
Send("Task successful", client) 'Client-Mittelung
End Select
End If
Return ""
End Select
'Else
' Select Case msg
' Case "test" 'nur ein Test, des Ergbnis ist immer Positiv
' writeToFrmLog(client, "test", "test ")
' ' Return "Task successful"
' Send("Task successful", client) 'Client-Mittelung
' Case "initAufschubkonten" 'der Task initAufschubkonten wird aufgerufen
' ' MsgBox("initAufschubkonten")
' If Not boolInitAufschub Then Me.writeToFrmLog(client, "initAufschubkonten", "Abgebrochen - Task nicht aktiv " & msg) : Return "Task inactive"
' ' die eigentliche Funktion wird in einem Tread aufgrufen
' Dim thread As New Thread(AddressOf startInitAufschubkonten)
' thread.IsBackground = True
' thread.Start(client)
' 'Ein zweiter Thread kontrolliert, ob die Funktion nach einer gewissen Zeit noch läuft und beendet diese ggf.
' Dim st As New Thread(AddressOf stopThread)
' st.IsBackground = True
' Dim param_obj(3) As Object
' 'Übergabeparameter des 2. Threads
' param_obj(0) = thread
' param_obj(1) = client
' param_obj(2) = 60
' st.Start(param_obj)
' Return ""
' Case "FSSAtlasStart" 'der Task initAufschubkonten wird aufgerufen
' ' MsgBox("initAufschubkonten")
' If Not boolFSSAtlas Then Me.writeToFrmLog(client, "KASSE_AMBAR", "Abgebrochen - Task nicht aktiv " & msg) : Return "Task inactive"
' ' die eigentliche Funktion wird in einem Tread aufgrufen
' Dim thread As New Thread(AddressOf startFSSAtlas)
' thread.IsBackground = True
' thread.Start(client)
' 'Ein zweiter Thread kontrolliert, ob die Funktion nach einer gewissen Zeit noch läuft und beendet diese ggf.
' Dim st As New Thread(AddressOf stopThread)
' st.IsBackground = True
' Dim param_obj(3) As Object
' 'Übergabeparameter des 2. Threads
' param_obj(0) = thread
' param_obj(1) = client
' param_obj(2) = 110 'SEKUNDEN
' st.Start(param_obj)
' Return ""
' End Select
End If
Return "Task not found"
Me.writeToFrmLog(client, "", "ERROR: Undefinierter Task: " & msg)
End Function
Sub stopThread(param_obj As Object) 'Stoppt einen Hauptthread nach einer gewissen Anzahl von Sekunden; Übergabeparameter: Object { Tread, clientSocket, SekundenToTimeout }
Thread.Sleep(param_obj(2) * 1000) ' Hier wird soviele Senkunden gewartet, wie in den Übergabeparametern definiert wurde.
If param_obj(0).IsAlive Then
param_obj(0).Abort() ' Wenn der Hauptthread noch immer läuft, wird er jetzt beendet.
Else
Exit Sub
End If
Send("Task timeout", param_obj(1)) 'Client-Mittelung
Me.writeToFrmLog(param_obj(1), "ERROR: Task wurde aufgrund eines Timeouts abgebrochen.") 'Log-Mittelung
End Sub
Function SignRKSV(client As Socket) As Boolean
Me.writeToFrmLog(client, "KASSE_VERAG_DE", "Signierung gestartet...")
Try
'SIGNIERUNG"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Me.writeToFrmLog(client, "KASSE_VERAG_DE", "Signierung beendet (Success)")
Send("Task successful", client)
Return True
Catch ex As Exception
Me.writeToFrmLog(client, "KASSE_VERAG_DE", "ERROR: Fehler Signierung: " & ex.Message)
Send("Task error", client)
Return False
End Try
End Function
Function SignRKSV_AMBAR(client As Socket) As Boolean
Me.writeToFrmLog(client, "KASSE_AMBAR", "Signierung gestartet...")
Try
'SIGNIERUNG"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Me.writeToFrmLog(client, "KASSE_AMBAR", "Signierung beendet (Success)")
Send("Task successful", client)
Return True
Catch ex As Exception
Me.writeToFrmLog(client, "KASSE_AMBAR", "ERROR: Fehler Signierung: " & ex.Message)
Send("Task error", client)
Return False
End Try
End Function
'Threadsichere Funktion zum schreiben in die TextBox:
Delegate Sub writeToFrmLogCallback(ByVal client As Socket, ByVal nameTask As String, ByVal text As String)
Public Sub writeToFrmLog(ByVal client As Socket, ByVal nameTask As String, ByVal text As String)
' InvokeRequired required compares the thread ID of the
' calling thread to the thread ID of the creating thread.
' If these threads are different, it returns true.
If Me.txtLog.InvokeRequired Then
Dim d As New writeToFrmLogCallback(AddressOf writeToFrmLog)
Me.Invoke(d, New Object() {client, nameTask, text})
Else
Dim remoteIpEndPoint As IPEndPoint = client.RemoteEndPoint
Me.txtLog.Text &= Now.ToString("dd.MM.yyyy HH:mm ") & nameTask & " (" & remoteIpEndPoint.Address.ToString & "): " & text & vbNewLine
If Me.txtLog.Lines.Count > 35 Then
Dim arr As String() = Me.txtLog.Lines
Me.txtLog.Text = ""
For i = arr.Count - 35 To arr.Count - 1
Me.txtLog.Text &= arr(i) & vbNewLine
Next i
End If
End If
Me.txtLog.SelectionLength = 0
End Sub
Public Sub writeToFrmLog(ByVal nameTask As String, ByVal text As String)
Me.txtLog.Text &= Now.ToString("dd.MM.yyyy HH:mm ") & nameTask & ": " & text & vbNewLine
If Me.txtLog.Lines.Count > 35 Then
Dim arr As String() = Me.txtLog.Lines
Me.txtLog.Text = ""
For i = arr.Count - 35 To arr.Count - 1
Me.txtLog.Text &= arr(i) & vbNewLine
Next i
End If
End Sub
Private Sub CheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles cbxVERAG_DE.CheckedChanged
boolInitAufschub = cbxVERAG_DE.Checked
If cbxVERAG_DE.Checked Then
txtInitAufschubStatus.Text = "läuft"
writeToFrmLog("KASSE_VERAG_DE", "läuft ...")
txtInitAufschubStatus.ForeColor = Color.DarkGreen
Else
txtInitAufschubStatus.Text = "läuft nicht"
writeToFrmLog("KASSE_VERAG_DE", "läuft nicht ...")
txtInitAufschubStatus.ForeColor = Color.DarkRed
End If
End Sub
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles cbxAMBAR.CheckedChanged
boolFSSAtlas = cbxAMBAR.Checked
If cbxAMBAR.Checked Then
txtFSSATLAS.Text = "läuft"
writeToFrmLog("KASSE_AMBAR", "läuft ...")
txtFSSATLAS.ForeColor = Color.DarkGreen
Else
txtFSSATLAS.Text = "läuft nicht"
writeToFrmLog("KASSE_AMBAR", "läuft nicht ...")
txtFSSATLAS.ForeColor = Color.DarkRed
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DIENST_InitSocket()
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 'geht nicht
clientSocket.Close()
If clientSocket.Connected Then
clientSocket.Shutdown(SocketShutdown.Both)
clientSocket.Close()
End If
clientSocket.Disconnect(True)
txtInitAufschubStatus.Text = "angehalten"
txtInitAufschubStatus.ForeColor = Color.DarkRed
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
clientSocket.Shutdown(SocketShutdown.Both)
clientSocket.Close()
serverSocket.Shutdown(SocketShutdown.Both)
serverSocket.Close()
DIENST_InitSocket()
End Sub
Private Result As Object = Nothing 'Store the worked result of abc()
Private Sub Worker(ByVal state As Object)
Dim are As AutoResetEvent = DirectCast(state, AutoResetEvent)
' do anything you want here:
Dim result As Integer = 0
'result = abc(input_val);
SyncLock Me.Result
Me.Result = result
End SyncLock
are.[Set]()
End Sub
Private Sub method()
Const TimeOut As Int32 = 5000
Dim [handles] As WaitHandle() = New WaitHandle() {New AutoResetEvent(False)}
ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Worker), [handles](0))
Dim finished As Boolean = WaitHandle.WaitAll([handles], TimeOut, True)
'ThreadPool.RegisterWaitForSingleObject ()
If finished Then
' step 2
MessageBox.Show("Worker function finished sucessfully, go to Step2")
Else
' step 3
MessageBox.Show([String].Format("Worker function time out({0})!, go to Step3", TimeOut))
End If
End Sub
Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
SplitContainer1.Panel2Collapsed = Not SplitContainer1.Panel2Collapsed
If SplitContainer1.Panel2Collapsed Then
Me.Height = 150
Else
Me.Height = 620
End If
End Sub
Private Sub Label3_Click(sender As Object, e As EventArgs) Handles Label3.Click
End Sub
End Class