From 53f828559a33e0d27c22b75c688dc6e9e53f3440 Mon Sep 17 00:00:00 2001
From: 29353 <29353@DESKTOP-KFP891H>
Date: Sat, 1 Nov 2025 15:24:28 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A1=B9=E7=9B=AE=E6=96=87?=
=?UTF-8?q?=E4=BB=B6=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
SysTunnelNuget.sln | 31 ++++
TunnelNuget/IRfidTunnel.cs | 53 ++++++
TunnelNuget/InfoParams.cs | 214 +++++++++++++++++++++
TunnelNuget/Properties/AssemblyInfo.cs | 33 ++++
TunnelNuget/RfidTunnel.cs | 245 +++++++++++++++++++++++++
TunnelNuget/Rovinj.Device.dll | Bin 0 -> 7680 bytes
TunnelNuget/Rovinj.Reader.Silion.dll | Bin 0 -> 28160 bytes
TunnelNuget/Rovinj.Reader.dll | Bin 0 -> 13824 bytes
TunnelNuget/Rovinj.Tunnel.dll | Bin 0 -> 37888 bytes
TunnelNuget/TunnelNuget.csproj | 79 ++++++++
TunnelNuget/packages.config | 9 +
TunnelNuget/tunnelPlc.dll | Bin 0 -> 44544 bytes
UITunnel/App.config | 6 +
UITunnel/Program.cs | 136 ++++++++++++++
UITunnel/Properties/AssemblyInfo.cs | 33 ++++
UITunnel/UITunnel.csproj | 103 +++++++++++
UITunnel/packages.config | 9 +
17 files changed, 951 insertions(+)
create mode 100644 SysTunnelNuget.sln
create mode 100644 TunnelNuget/IRfidTunnel.cs
create mode 100644 TunnelNuget/InfoParams.cs
create mode 100644 TunnelNuget/Properties/AssemblyInfo.cs
create mode 100644 TunnelNuget/RfidTunnel.cs
create mode 100644 TunnelNuget/Rovinj.Device.dll
create mode 100644 TunnelNuget/Rovinj.Reader.Silion.dll
create mode 100644 TunnelNuget/Rovinj.Reader.dll
create mode 100644 TunnelNuget/Rovinj.Tunnel.dll
create mode 100644 TunnelNuget/TunnelNuget.csproj
create mode 100644 TunnelNuget/packages.config
create mode 100644 TunnelNuget/tunnelPlc.dll
create mode 100644 UITunnel/App.config
create mode 100644 UITunnel/Program.cs
create mode 100644 UITunnel/Properties/AssemblyInfo.cs
create mode 100644 UITunnel/UITunnel.csproj
create mode 100644 UITunnel/packages.config
diff --git a/SysTunnelNuget.sln b/SysTunnelNuget.sln
new file mode 100644
index 0000000..d183b5b
--- /dev/null
+++ b/SysTunnelNuget.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.14.36623.8 d17.14
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TunnelNuget", "TunnelNuget\TunnelNuget.csproj", "{7B9289E9-0AE5-40A8-B5F8-1DCD5FC9F4E3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UITunnel", "UITunnel\UITunnel.csproj", "{974DBE1D-C300-4BAA-8163-F7D7AA99CED4}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {7B9289E9-0AE5-40A8-B5F8-1DCD5FC9F4E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7B9289E9-0AE5-40A8-B5F8-1DCD5FC9F4E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7B9289E9-0AE5-40A8-B5F8-1DCD5FC9F4E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7B9289E9-0AE5-40A8-B5F8-1DCD5FC9F4E3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {974DBE1D-C300-4BAA-8163-F7D7AA99CED4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {974DBE1D-C300-4BAA-8163-F7D7AA99CED4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {974DBE1D-C300-4BAA-8163-F7D7AA99CED4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {974DBE1D-C300-4BAA-8163-F7D7AA99CED4}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {57D3B418-10FA-47A0-9EAF-3CDC901A6EF1}
+ EndGlobalSection
+EndGlobal
diff --git a/TunnelNuget/IRfidTunnel.cs b/TunnelNuget/IRfidTunnel.cs
new file mode 100644
index 0000000..fb27774
--- /dev/null
+++ b/TunnelNuget/IRfidTunnel.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Rovinj.Tunnel;
+using Rovinj.Reader.Silion;
+using Rovinj.Device;
+namespace TunnelNuget
+{
+ ///
+ /// 隧道机接口
+ ///
+ public interface IRfidTunnel
+ {
+ ///
+ /// 连接通道机
+ ///
+ bool ConnectTunnel(SilionReaderConfig readerConfig, ConnectionConfig plcConnectionConfig, TunnelConfig tunnelConfig);
+
+ ///
+ /// 关闭通道机
+ ///
+ ///
+ void CloseTunnel();
+
+ ///
+ /// 标签报告事件
+ ///
+ ///
+ ///
+ void Tunnel_TagsReported(ITunnel tunnel, TunnelTagsReportedEventArgs e);
+ ///
+ /// 通道机读写器状态变化事件
+ ///
+ ///
+ ///
+ void Tunnel_ReaderStateChanged(ITunnel tunnel, TunnelReaderStateChangedEventArgs e);
+ ///
+ /// 通道机PLC状态变化事件
+ ///
+ ///
+ ///
+ void Tunnel_PlcStateChanged(ITunnel tunnel, TunnelPlcStateChangedEventArgs e);
+
+ ///
+ /// 通道机错误事件
+ ///
+ ///
+ ///
+ void Tunnel_ErrorReceived(ITunnel tunnel, TunnelErrorReceivedEventArgs e);
+ }
+}
diff --git a/TunnelNuget/InfoParams.cs b/TunnelNuget/InfoParams.cs
new file mode 100644
index 0000000..9a4f690
--- /dev/null
+++ b/TunnelNuget/InfoParams.cs
@@ -0,0 +1,214 @@
+using Rovinj.Device;
+using Rovinj.Reader.Silion;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace TunnelNuget
+{
+ ///
+ /// 参数列表
+ ///
+ public class InfoParams
+ {
+ ///
+ /// Plc连接工厂
+ ///
+ public class PlcConnectionParams
+ {
+ ///
+ /// Ip地址
+ ///
+ public string Address { get; set; }
+ ///
+ /// 端口号
+ ///
+ public ushort Port { get; set; } = 502;
+ ///
+ /// 波特率
+ ///
+ public int BaudRate { get; set; } = 9600;
+ ///
+ /// 连接模式
+ ///
+ public ConnectionMode Mode { get; set; }
+ }
+
+ ///
+ /// 工厂/构建方法:根据参数创建配置对象
+ ///
+ public static class PlcConnectionFactory
+ {
+ public static ConnectionConfig Create(PlcConnectionParams parameters)
+ {
+ if (parameters == null) throw new ArgumentNullException(nameof(parameters));
+
+ var config = new ConnectionConfig
+ {
+ ConnectionMode = parameters.Mode
+ };
+
+ // 设置网络相关字段
+ switch (parameters.Mode)
+ {
+ case ConnectionMode.Network:
+ config.ConnectionMode = parameters.Mode;
+ config.NetworkAddress = parameters.Address;
+ config.NetworkPort = parameters.Port;
+ break;
+ case ConnectionMode.Serial:
+ config.ConnectionMode = parameters.Mode;
+ config.SerialPortName = parameters.Address;
+ config.BaudRate = parameters.BaudRate;
+ break;
+ case ConnectionMode.USB:
+ config.ConnectionMode = parameters.Mode;
+ config.Address = parameters.Address;
+ break;
+ // 未来扩展…… 继续加
+ default:
+ throw new NotSupportedException($"不支持的连接模式: {parameters.Mode}");
+ }
+ return config;
+ }
+ }
+
+
+ ///
+ /// 参数对象:读写器连接参数
+ ///
+ public class ReaderConnectionParams
+ {
+ ///
+ /// 天线数量
+ ///
+ public object[] Args { get; set; }
+ ///
+ /// IP地址
+ ///
+ public string Address { get; set; }
+ ///
+ /// 连接模式
+ ///
+ public ConnectionMode Mode { get; set; }
+ }
+
+
+ ///
+ /// 工厂/构建方法:根据参数创建读取/写入器的连接配置对象
+ ///
+ public static class ReaderConnectionFactory
+ {
+ public static ConnectionConfig Create(ReaderConnectionParams parameters)
+ {
+ if (parameters == null) throw new ArgumentNullException(nameof(parameters));
+
+ var config = new ConnectionConfig
+ {
+ ConnectionMode = parameters.Mode
+ };
+
+ // 设置网络相关字段(当前示例为网络模式)
+ switch (parameters.Mode)
+ {
+ case ConnectionMode.Network:
+ config.Args = new object[] { parameters.Args };
+ config.ConnectionMode = parameters.Mode;
+ config.NetworkAddress = parameters.Address;
+ break;
+ // 未来扩展…… 继续加
+ default:
+ throw new NotSupportedException($"不支持的连接模式: {parameters.Mode}");
+ }
+
+ return config;
+ }
+ }
+
+ ///
+ /// 参数对象:RFID 读写器参数
+ ///
+ public class SilionReaderParams
+ {
+ ///
+ /// Q值,-1=DynamicQ, 0~15时为StaticQ
+ ///
+ public int QValue { get; set; } = 5;
+ ///
+ /// Gen2会话,取值范围为0、1、2、3
+ ///
+ public int Session { get; set; } = 1;
+ ///
+ /// 读取TID
+ ///
+ public bool ReadTID { get; set; } = false;
+ ///
+ /// 目标,0=A, 1=B, 2=AB, 3=BA
+ ///
+ public int Target { get; set; } = 0;
+ ///
+ /// 0=FM0, 1=M2, 2=M4, 3=M8
+ ///
+ public int RfMode { get; set; } = 1;
+ ///
+ /// 快速模式
+ ///
+ public bool IsFastRead { get; set; } = true;
+ ///
+ /// 0:快速模式;1:快速模式-读距离优先;2:快速模式-读次数优先;3:Ex10快速模式;4:按照给定的Gen2参数进行设置
+ ///
+ public int QuickModeType { get; set; } = 3;
+
+ ///
+ /// 天线
+ ///
+ public int AntCount { get; set; } = 4; // 天线数量,默认 4
+ ///
+ /// 天线功率,单位 dBm
+ ///
+ public double PowerDbm { get; set; } = 30;
+ }
+
+ ///
+ /// 工厂/构建方法:根据参数创建 SilionReaderConfig 对象
+ ///
+ public static class SilionReaderFactory
+ {
+ public static SilionReaderConfig Create(SilionReaderParams parameters)
+ {
+ if (parameters == null) throw new ArgumentNullException(nameof(parameters));
+
+ // 基础配置
+ var readerConfig = new SilionReaderConfig
+ {
+ Qvalue = parameters.QValue,
+ Session = parameters.Session,
+ ReadTID = parameters.ReadTID,
+ Target = parameters.Target,
+ RfMode = parameters.RfMode,
+ IsFastRead = parameters.IsFastRead,
+ QuickModeType = parameters.QuickModeType,
+ Antennas = new List()
+ };
+ // 确保天线数量至少为 1,避免出现无天线的情况。
+ int antCount = Math.Max(1, parameters.AntCount);
+ for (int i = 0; i < antCount; i++)
+ {
+ readerConfig.Antennas.Add(new SilionAntennaConfig
+ {
+ IsEnabled = true,
+ PortNumber = (ushort)(i + 1),
+ TxPowerInDbm = (int)parameters.PowerDbm
+ });
+ }
+
+ return readerConfig;
+ }
+ }
+
+
+
+ }
+}
diff --git a/TunnelNuget/Properties/AssemblyInfo.cs b/TunnelNuget/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..8bdb991
--- /dev/null
+++ b/TunnelNuget/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("TunnelNuget")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("TunnelNuget")]
+[assembly: AssemblyCopyright("Copyright © 2025")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("7b9289e9-0ae5-40a8-b5f8-1dcd5fc9f4e3")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/TunnelNuget/RfidTunnel.cs b/TunnelNuget/RfidTunnel.cs
new file mode 100644
index 0000000..d61d4f6
--- /dev/null
+++ b/TunnelNuget/RfidTunnel.cs
@@ -0,0 +1,245 @@
+using Rovinj.Device;
+using Rovinj.Reader.Silion;
+using Rovinj.Tunnel;
+using Rovinj.Tunnel.Plc;
+using Rovinj.Reader;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Media;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using Rovinj.Log;
+
+namespace TunnelNuget
+{
+ ///
+ /// 隧道机实现类
+ ///
+ public class RfidTunnel : IRfidTunnel
+ {
+ ///
+ /// 是否开始校验数量
+ ///
+ private volatile bool isStartCheckTags;
+ ///
+ /// 扫描ID的标签
+ ///
+ private string tagsScanId;
+ ///
+ /// 标签ID列表,可以是EPC或TID
+ ///
+ private List tagIdList = new List();
+ ///
+ /// 当前PLC的状态
+ ///
+ private PlcStatus currentPlcStatus;
+ ///
+ /// 隧道是否已连接
+ ///
+ private bool isTunnelConnected;
+ ///
+ ///通道机接口
+ ///
+ private ITunnel tunnel;
+ ///
+ /// 线程退出标识
+ ///
+ private CancellationTokenSource cancellationTokenSource;
+ ///
+ /// 检查标签线程
+ ///
+ private Thread checkTagsThread;
+ ///
+ /// Silion读写器,支持R2000/E310/E710芯片,支持1、2、3、4、8、16口天线
+ ///
+ private SilionReader silionReader;
+ public RfidTunnel() { }
+
+ ///
+ /// 通道机读写器状态变化事件
+ ///
+ ///
+ ///
+ public void Tunnel_ReaderStateChanged(ITunnel tunnel, TunnelReaderStateChangedEventArgs e)
+ {
+ LogHelper.Error("e.RunningState:" + e.RunningState);
+ if (e.RunningState == 0)
+ {
+ //停止业务
+ LogHelper.Info("停止业务");
+ }
+ else if (e.RunningState == 1)
+ {
+ //启动业务
+ tagsScanId = e.ScanId;
+ LogHelper.Info("启动业务");
+ }
+ else
+ {
+ LogHelper.Info("其他状态");
+ //其他状态
+ }
+ }
+
+ ///
+ /// 标签报告事件
+ ///
+ ///
+ ///
+ public void Tunnel_TagsReported(ITunnel tunnel, TunnelTagsReportedEventArgs e)
+ {
+ LogHelper.Error("e.Tags.Count:" + e.Tags.Count);
+ for (int i = 0; i < e.Tags.Count; i++)
+ {
+ Tag tag = e.Tags[i];
+ //过滤掉不符合扫描ID的标签
+ if (tag.ScanId != tagsScanId)
+ continue;
+
+ //如果配置为"TID"且TID不为空,则使用TID;否则使用EPC。检查标签ID是否已存在于 tagIdList 中,避免重复添加。
+ if (tunnel.TunnelConfig.TagIdFieldName == "TID" && !string.IsNullOrEmpty(tag.TID))
+ {
+ if (tagIdList.Contains(tag.TID))
+ continue;
+
+ tagIdList.Add(tag.TID);
+ LogHelper.Info("tag.TID:" + tag.TID);
+ }
+ else
+ {
+ if (tagIdList.Contains(tag.EPC))
+ continue;
+
+ tagIdList.Add(tag.EPC);
+ LogHelper.Info("tag.TID:" + tag.TID);
+ }
+ }
+ }
+
+
+ ///
+ /// 通道机PLC状态变化事件
+ ///
+ ///
+ ///
+ public void Tunnel_PlcStateChanged(ITunnel tunnel, TunnelPlcStateChangedEventArgs e)
+ {
+ currentPlcStatus = e.PlcStatus;//记录当前PLC状态
+ LogHelper.Info("通道机PLC状态变化事件:" + e.PlcStatus);
+ }
+
+ ///
+ /// 通道机错误接收事件
+ ///
+ ///
+ ///
+ ///
+ public void Tunnel_ErrorReceived(ITunnel tunnel, TunnelErrorReceivedEventArgs e)
+ {
+ // 在控制台输出错误信息,包括错误消息和异常详情
+ Console.WriteLine($"错误信息:{e.ErrorMessage},异常:{e.Exception}");
+ LogHelper.Error("通道机错误接收事件:" + $"错误信息:{e.ErrorMessage},异常:{e.Exception}");
+ }
+
+ ///
+ /// 关闭通道机连接
+ ///
+ ///
+ ///
+ public void CloseTunnel()
+ {
+ if (tunnel == null)
+ return;
+
+ if (tunnel.Reader.IsStarted)
+ {
+ tunnel.StopReader();
+ }
+
+ StopTunnel();
+ tunnel.Close();
+ tunnel = null;
+ isTunnelConnected = false;
+ }
+
+ ///
+ /// 停止隧道
+ ///
+ private void StopTunnel()
+ {
+ if (tunnel.IsStarted)
+ tunnel.Stop();
+
+ isStartCheckTags = false;
+
+ if (cancellationTokenSource != null)
+ cancellationTokenSource.Cancel();
+
+ if (checkTagsThread != null)
+ checkTagsThread.Join();
+
+ }
+
+ ///
+ /// 连接隧道
+ ///
+ /// 配置RFID读写器参数
+ /// 配置PLC连接方式
+ /// 配置读写器连接方式
+ public bool ConnectTunnel(SilionReaderConfig readerConfig, ConnectionConfig plcConnectionConfig, TunnelConfig tunnelConfig)
+ {
+ if (!isTunnelConnected)
+ {
+ //创建并打开隧道
+ tunnel = TunnelFactory.CreateTunnel(TunnelType.SC201, tunnelConfig);//根据实际的设备选择对应的类型,这里假设是SC201
+ tunnel.TagsReported += Tunnel_TagsReported; //读到标签时触发;
+ tunnel.ReaderStateChanged += Tunnel_ReaderStateChanged; //读写器状态变化
+ tunnel.PlcStateChanged += Tunnel_PlcStateChanged; //PLC 状态变化
+ tunnel.ErrorReceived += Tunnel_ErrorReceived; //收到错误时触发
+ if (tunnel.Open())
+ {
+ LogHelper.Info("连接成功");
+
+ isTunnelConnected = true;
+
+ //获取读写器能力(支持的发射功率列表)
+ silionReader = tunnel.Reader as SilionReader;
+ if (silionReader.ReaderCapability != null)
+ {
+ //发射率列表
+ List doubles = new List();
+ for (int i = 0; i < silionReader.ReaderCapability.TxPowers.Count; i++)
+ {
+ doubles.Add(silionReader.ReaderCapability.TxPowers[i]);
+ LogHelper.Info("发射率列表:" + silionReader.ReaderCapability.TxPowers[i]);
+ }
+ }
+
+ if (tunnel.Initialize())//复位
+ {
+ LogHelper.Info("复位成功");
+ //语音提示
+ SoundPlayer player = new SoundPlayer();
+ player.Play();
+ }
+ return true;
+ }
+ else
+ {
+ LogHelper.Error("连接失败");
+ tunnel.Close();
+ isTunnelConnected = false;
+ return false;
+ }
+ }
+ else
+ {
+ CloseTunnel();
+ return false;
+ }
+ }
+
+ }
+}
diff --git a/TunnelNuget/Rovinj.Device.dll b/TunnelNuget/Rovinj.Device.dll
new file mode 100644
index 0000000000000000000000000000000000000000..0ceb592a18ab3ae8f94ffc2f71fa734b92ef77df
GIT binary patch
literal 7680
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
literal 0
HcmV?d00001
diff --git a/TunnelNuget/Rovinj.Reader.Silion.dll b/TunnelNuget/Rovinj.Reader.Silion.dll
new file mode 100644
index 0000000000000000000000000000000000000000..b5ac507fe9548a0ed59188b74379884ab2965a48
GIT binary patch
literal 28160
zcmeHwdwkqgweR}h60@=lXf7lCX+s-IGrZbbnIk)
z;Wv{$D1}s!16n~8Q66dm6{;ZA3kre?2k=Zt^u6;#6!xkfY4g~o8a?sBA
zu_*tSf7&Fo@alu!0Ztqv`Ytnh&^gtPr
zM_&+tu%V~DAOdKjk)DT?$EY#Ucl@YO51)Eesz((+{ARU!`0>!wHNeBr?9>l2)|m5|
zE$PN@qEd4~j`o`ib7{k@MY;*L713IV!5r9D1WWv$<}>vGOgGYX5Ls%}Yzx#QVJ>2-
z#%$npBLEp5!_o0f6Pk=Bs3uDS3}{jeNi5O>tgC66?x+bY<`hIqvLccI1AVE=NCFJF
zN--n>hMO697V{IfJLpW<4qGeqLvW?jW0bfYfzwby2ENit^-G!Sb_L*?W{=@o@v|n#
zzg4*7)a3Si$z$mN_z0dVA7xlpfbL*R3
zPU`y$$|1I(K8(P^`Y_J8KIWo6G-Ymmv&%_+Z(B~!O<8^6VHZ@Z>ESS!qAOae)U&3w
z#6tf~rk8cm;R;?QtvtrnC2p#58+&rK-i&m5)cTpgpv07y`l&`2jPD6P?R;~3%G)CngU4;$_
zv_fC{9e_*JqZ!Do((#KQCwT%x~8SiU)l`c3g-QaF(A2vir6f~kRpchFe89Ur%~ZFN01U%
zx~@rd{GE!nOPA}*nsme5g1n{Jn*1#N|zqM)(uV#f`@vQBzq((xY9m_bPV7Q^5
zi)b18*@J$TuJ<&Qeh~9TD=E~*{Zi^)xV>hz;jZ6avueJr7JE25+CX1zNprK}*NcXw
z-@Or)1P-8V%!5ePy8I2LflH8b`L8?cYFOZ^x$dkZ{G5N?@=FcZf@`^U>toOy
zI0Ui4r2uR}>fVB1{}%iP&s$}boHC<%>HMS}0az8P%{^FW#WyK98?LRYQjymZ3
z@EP`BGv)^SR7Gh72E${R2nmKCUNJaC87}iMno#EsS;!?8aJ((gl40xrzl%A$&*mh}}y70ydpI`DVMNS=;C
zh1d2C7n*36kGcTY|Z
zdOySpKJ`z4ZGBmSl_Nj$fSWHU}Im>o`wWvcAO
zK^Xs$W4L(dWUO1Fb02bFSGp_QA&h?90}zek{X4u5B943n@3q$eY^6N$8}=5iJEEEc
zjQ{8+4iovEwZ*ZedX6lI75`Dxs$|!CV1?4IwhVjFl!o~oSXM=~)Oc}TOLI+OMnyiu
zX8*OO%r7wI@?1mT+7vTi<4jX3^BMo8Df8#ZvR4XC`4c+8R>S?4Mzm5RVeOCeIqYB+
zYUb!;H>glDr(3ux7jJKjeA5ejsv=xoVRO>X{J&D0S|9BQgpo00Rh)(s)J!n_NEWQ6
zYDC*tJ_!F#ImNh4OcCR0`{t*BjqSf--vP-WJJspO@E^Vfiq;}v+mTMKR?Cb-IEOfw
zE}y^5Fy1h>K$WapODjExIitc}!HO%2dA@S3a;P&7u{zlyR21j;2+eh;mhsCDLKUiX
z8x=Tnh&_r^P)5#i=e?6-NA|p?m1FSGlg$?|~gPa?hihX}NeH~gr}4zz~(Ddv}0i=Ek%cf+ER
z^f53?-L-~!D-y2sZ9wyOfZO~uu%>;nJ-)&yYyclbg(Gk$WLvPjhxS9%Z3L#!CoviYL(Ej+54Va9dyU+&@b!4TsE%=hFjJH*(w&Sq8*>L
zy}}zRBfk(xoB5vRd$1d>FRy+HPnOkFi0S|8KGQ)&^j|-O8r0+%QHp4tIlTp|R*52`?5^>(-H@^tlZc-Zd
z7&8|uW~s%hrl}{}ZB@>IGD&Q?-K_`ougn}%^Y>xp=PN=>CgJ@;cO*MKhCPbF1$d^S0OM%ja|}dehoP_
zP47~)bt8t3<7i8EKasU@5!P~krN7RV`>i`5WQckpvi3S%xIQsLnDZ
z0fs-zki@ANHCYKsKw^HDAqg-RWEqmcZDJTRc)=SQOj!^(pTjeR7G{Mc0Y+_>Aqg<*
zvJ6R}xg7sT@Z^{M8B-14ry7{)>-kX~Sj&%^zy`(aR1_b!?V5G@yeQDC^85LbeiS1o
z(2b-TUq!Tq^~-!402eoU8}&dJQt1-FDL*S(YOf0CZjj?^0qH>z^Y2lE{YldOP5-Er
zwZJc|^fD~0h)y-jF2l-;!!jn6k$#K^^EBs}k0Uv!%(0ne-kC4MIjRgkkHV(F(=_Ce
z^<7t|?I*xOPh>McYiAz18RhaD8a=C+tQqq3&c9BNO~M4iLu
zcWU-0jivD8zLl+Qtt;AAw66n!Ge{EHhH-KFWkk2&NsEvk&RB`mc$y_{S%Z&Gah^YY
zWSAbtz67zGPTx2ZM*q;0pq<5_JCo)v7RC$xq;37wm(DDPqv?NXD+uG3!^390(Oq;5
zZ@7n`Rz4F)`{@wgeR#7R;;KBIc=8+bfZFiJj1fM|z#PfL%7WLtO6D+?RjU>^M$Ei&l!c|$&f?k)d$l|kDCs|7m*KPLFhJkGUhPgHuSwE6_(KRu7NJwf4O
zFQqE3@~@$XP@$J@@L%Qk(OG3JWnLPsxeBM>O2M$;a-ff{sc0$l&=>tDd|rCA{whE2
zgP~`fS~0o2bQ-jI=qdLJ-#BdmXPmYI4f^%G6P4q18MaeidProRuQ}m6kNzDq+rTb_
zZF{EjgwI2N6#RkcKf9K-9ht}c@+!9cZb%yRSS91vyo`6(F}6X!K`TAwJ|7)~{RVBV
zX3mo${|QN7<73WekoHgjwHWjz@Nl4=(&1`Um(yn#E~;wB*x-NVw5MWGRS=`YCDbSVoM&J+&Uq)1
z*N&02hBRpCEL&9dAl36H2A~pnx6_TF9N6Y^1?_Z`O~L)3ZbqzgEH0-IMtnPclD1Mc
z#5UmlRl1cfL@lM&orXq_mGl6wEe!)}OE&}mR|(^%Dk8w{I?jFEzYX}k`W?V8E!+t_
zUOEQ6vt%6j0m0gmcO(5HPYU>9j|KF4_8IMTMeQX>|3Ye6SIXM{UNBY0=`B+B+S2zR
zZAx0%GbA#TK*PA%-D7N-{+#xHVBE=gzTn{^PJhC|c%h^R+?=kF^a{alojH3A#tJDl
zF7k(jzg*H$Nxws6ekbXFmaq5RNj1jzJV33d@S6dG1Mmz79o*Ohb-D>Ckn`bf3
zRiCr-jv=p@zG&y&i@aibNT@5_pZA|M5SMMquh#z~s3&d8QSuBZ=V{!&mx`-EmC$;d
zdc^Z1qm(i>^*vB!beByX^!&{5(hD~A0Z{X(PWERn75}mLMWdV|Hs$iXXjITqq1c1}
zYWT>xB=W)4>Ii+R_*J8twx7XyN2s&c=%pU5n^poBE!=$<;tNtyX!L
zRoGpSmoCO
z)L>KNRT>3|clkV5?yL1{XHuI@eZ5x0cca$X)MB4sYoee{wfi(`qVsKPTbW;LrXiae
zEz_u(F0`p995-k!G-^{%J8<7bNt=o;7bc^@)JoUb
z)IG?12i<5>k09?Ibem1_d~c)A*%Z(BHu@hnbu-%DP7h`C(DrtE+@`*YybgNOrk+Ax
z2mMe{GH+MV`m@DL5(`$)Cly5pu@_oN-?OO?2xZ{7q@o7rd4+l}T~7O4E9vxtyj9d}
z=Ut1uRWu@$>dn;@E0A1G30ravUFup*mQC#d#Y0D~9lmCB
zn6J|(aWkb+jmZ3MHqR}k{8L)bnrEVu!q{#0;Ux7z#8Hm=6+nX)06mxu`uuW?8OC*j
zLBX)#X2I=(7Xu9{)>two=~BU~ZT#2T#dI~@Tg0e289VD4e^t#Gax=aPOo)7fc>E{m
zuBv6gKlz%0EyZn!hg{1MZH;yo(kcHkU_VxXQu=-Id6FBVtF?XJ2wkULRkjmpXGMe_
zrKz%8=vJ}qQL0;b8!SBPyMvBvjq^TFC&2$AWX|&50SsVOI!R~F`#L?S?W{d1x#jez
zls!qGuYHQDV8c%!^Pb}85mQyVw))Ss#7;lw_h=`HSGT9>v^u}`Bdw@%AvibJF40Qq
z&dL_;2u1xJ+RwFbEL;uFe8`-nYoYBVEr*_y^n1~8u$Jc%xA*5%xp1fUvZVh&Nm%|e
zK94S^KhPzT{;Gr14ex5Zl#Zx9nfB*tE;cjUel7^_iLNcY6EADqJ`IL+qJP`>??E)abmmn{&_bbef_+}
z^dL&zq^+l+`p*IHth`ryTI_t9R#cV40~-ZfarJ+a-na1UTCrYQ_5`rT`z?(<{1oI{
zyev5Y8I-EiXgv+q{uBK3Pj$aQ?ynd85%{jUWyn1M?6&ngYIXf->MU6den9Zg3rqBF
zY0H_qx4uz7Nm_lA-mYI>-=QzokNVEjAJn$jcIy$l7dBug5fT3?88+C*=Q}Ca?dy!r@k9%LAZy|k=q`BX(*2ilPI8KrS
zC+y=G16LsZ?-d4}u+zUTem^+Z*Iuh#FScDT_Auuj)Vmk;o}^FLT8{OSyB@jsIUVS9BV&Gl040ta!1Mj0Y-~+S@_%NLXe1y&eK2F`hZ&DceB=rNo
zOT)nL(>CA_=_25>vsG4MCE5BLfl0{)4nfv?j0fUnd0fuvmvbZXZF
z-P(=7Qtgw#a_x3tm3Aj^zIHdTPWvLTQTsA*iS{rspgjs~(Y^s})4mN{seKo?R{H^P
zz4l|^2JL6SZtVr&ChcWlul76Op!P>#M0*vuP5V#a4oxp|<4(c_9MejHd$bB*Qu6~R
zwOU|CYXlz9mI5!;nt;>VJAhYcD}h&O>wrhKbAcbyx`5Yfn}8qJ`hd4+L%?I&R^X?#
z9l$%a81OD_H}GCSqEYdMj|7z5=*IUklu+pJO!Q7Up($EAAP;;A+J^&zFI<^iROk
z>1V)ZT8`Wmv<`SS^#HqQ7k4XAa!RG{jE=W3S)&v^`7Yl9>4C|xxf;%SZBZ9{S
zZxwt*@HxSs3z9>$2{sBY7Th2h6x=Bo6Py-2qSDS$y3_rf!5YZL*eJL`aHrt3;=4I_
zgWyiVX~AQHj|esvi;Un-!D+!`f{zGlIM4E(aW$<*4_Sy<*C4`d(!Q)!>gVg%=}t$N
zqu;T^ah=17T^Zpkl$(J+@{9mK?AZ?VdM?6#kk8=`?9qzwk1wU~^}Yv+Kf2&b;LVlS
z0{027sQn1iuX#QOyif2R|IJ80T7L}qpXFR?Zx!QXwT!ELjN@gDKX7oVk1qHO@P%Sd
zKQ5^1x>rg)19YP`I&LEUKxLVRrvs<+8dz9P^MOnk!D_bHjeVp6{z9M*fAFm)+>duH
z-sRXoxxp{SKMidwM!F0h!%ZPj$7k*8-m?tp3Q!vPfI4PI1+WTF9e1JC;I9?C*1-ym
z&I0OmHfrXb1op9X4r4M3fO`1D`H&z%~O?xMv=cLQ|_VZLejCTTa3TEw--pt)GqGacuD!0+WA#qxDg9CX
zY5k}AV#k?|I~)%??!1CRy3Vydt5&V;T(xp#aK(zAwQJf}cXfA!R(GsuYwKCj
zwQf~UuzOACy3opwuC^6z9bKW0l@u{YP+R+IibjVsu}oq#Xj!p?;Z!0MIXD>~PFxZ{
zXAPXVj@GNH&!zQ)R$^Z)6Aw>JCgT$@AEnGxcRUkIB-7_oPjI9+5*-{GhzxWM^hU$|
zTY|me?K`a3mD%4n~5uMBng6FbDcKM*BzlIzvOzfu6$bISL^4w)vsKE=tEUQGO~L
zHir5;@`m(<`UZx!M+dfqhK5G^qn*L-C?p5^d$-%R<;r#Dtq%7EH-@5JLs^wMtNI7T
znCMU_*lkyrZD~$screrz?g@vo0>Mqe-e}jRV1Iw8H#*SOH8RL~k>JK???BfDIk8ik
zZA%Oc_5{PdIni8I%Dbn|>kLPt-J!05?l62kLqwGt3=R*6y2XZ>**WbOgnN5uW}*4H
z-0o0MxIbr7us;&&?+-@%2O`m~0W`HMlFQ>R&w8n6D6|>g>k5UpAfG!ff{#JR@f?cB
z#yHKqY+7|Fy9z_8bEKyS<7Fr`7z#ppRIx=qoVI5%%BwQ46#2u^o`I46EH7tz));9Z
z`(f+AP*!N9KioIi8|n+8LEX`TK{zlptEXo$d1yx?0|U|C;Lygbtz
z{R1N#Hz~`5ThQgf&fXAZdmkQ%pf&J1WsQzvR1aVd4M_!P^iXJcZ~y|z3o{$j1HX+7
zW%II5=nRf@M~C21lBSIGcMY%uKr0=Ey*C&f3icsuD2mxVQYbMvuoYZx;imA$O?JEr
z4u%QwaU&kmtHZ-85l#8z7@*xLMpFcBOa
zM3;3(gWcUjlojRBfVy(7vWv}}-r@dXjOK7x7{e?ozB{E@|3H7#4kulztBC_yG#k`V
zO_tBygn(sB!5e)+SSG_GuR1h@P{iI={H;B3-zJ-2yL&_Z8zWi9z##i_wu*w#I?{hZ
z|G?In62sevBcZVhP54DhV7=znaQ>W
zJG-Dy5#NThrC`_~Jiv1x8rs$s;^-H~&=|I3$WYISt$#3&LQXO^Tx6T9ML
z@v*K6MRJe~r$aWy6Dm*jU=g0O;?ay5-ESo_@#q*U;}ShX5mqiVmnozt(xax8Ozh&_
z5)B_rXW|pBU1l;Fmz_tNw;FLPF)DgCPA0-**`^@Hy3i1$Vq;@bn4M<3$%;>y`{H?;
znQ<#mvq_-??QPk%i=G(_)yx_B;dG7+j;RU}Q+VGJ@7fbfjmLBK&Sn=bSn0|5XkvE)
z!r1x5E&LUNy-3?$mEE9f6})OwiCii&IvK?_FNJMSlzokY+-%jl;fy&snYUpkQ|Xto
zqZtUPe#_H^YGM{k*e=YfQB0)0M^b
zQrwN`?atVgB8IcXkhw3BdUtDgd|zTTPGS2woJhhAYPf|g%e1=C6EZJ`c5|o5khPPR
z;_zs+yBbABsLPy~j9Kx}fl--}m}C3Qy>ZGPe^4I|X{H>gXlN>xNle6LOsQj#)H1jy
zmW~Hg{3nUDZm7Raar=r%F70qy&T*$Um
ze~J63D`}=-v^YCX5$oV!%mSm!ilZIW9Z$x`Il<=HHMC1874v3t3S>Iw$k?20$Q6Zo
zAv?t}n!PoNm}$v+0>)S{ld%%Jro^0GQ{&@u$j2!QzSMp#ak--T)#~#?l10qwv
zQ4^;Jf5Ruf-?aATMY9@uQ0tbs#nXIlW;nImv?gSh$C7U;g>i_(y&VnmN>r1i@K8J%
zJ0PiaK0j;0poM`rnwgs+^CfjKpJ7i4;b#)NFex(yxe>GTpxtSkB^;{3q>@9j=t?-?
zxt_vXO=mWqw-i*cKfo{;i^e!;6moeroXg#tNG5HriV}8oQ%=EHO3VDgZGp|fBc*l^
zHe+-)c;F#IzIE
z?!=fKf)KnC87|yoTA|qJo`S0!(J+KXi2C9aow3wj4p&{V$(ZVV*`=gnNhOBX2m?Ky
zi%vO4?lOz)5U)Jjs(jiymQ3;}z*x+fqxj1Mh|RGiEZmKorYNFzY$C_P-^3Cbo6XLf
zwaiNGvw7m=g4I^Vl0pVcgt5W2gO&`|@BlAsvPKBqYmP_5DU1ZZV&WzYCSxg*7@wms
z5_0K*$#_a?8cd{U5^u>I$85(YN*9rjW-b+nWTHuQm+C
z^`Ckf;*|B{06r}h9g&Cx+^5mY|6O11}z{HchGjh
z86%DC&^9Besqqloubfo4W3i+MU|b3vp>83vn*r%WoW1OIIeR!L;3##`IUI?K@v+c8
zEC=>YGjB3vUA9k6g}2Z$s&NERXPFr}2pu@waa&nk{^FYY5(r+Y@hCPJSb}k;%7>90
zCp#=;CocYHgB8Vj`A8y}1tcc362qdS5*ZaxxYO)?WyZ9qbyT4|5`46aC8K@m@o1Md
z8pXbe%t?g)xFl2Y_*fLXa8#^zh{By%9nX@8hG`|bdw-P0c3~Hd`K)-@W$u^b^=^F7
zut&;*wGWHn?t{@8JgLY`jv+5ACahF^e*w!bDIqv5a)tI|#lZGN*x7J}&22IsRr?mn
zNGHKkp{$U-2Rl*@WzmEgjbZ1dw7^zgjiOVNW85ONkln*u=Lz--K0p!1Oe9Vxh3G68n={UmHSUQ`ZU2D~@3ZpP?@exH;
zuQu>$HFo6uk;cx0w~ZKkJXe(%CV-4>Me&$b##=~Wvy(TToQ}vfRb&84o@r>+~ZI&Gk
zrqUc22H1H>a(OH;X+D6B#xlHZ!5}Q$>J99AH@0|uz(61JZV!KZ#N=_w2N(X-iq&C?
zlC+%@xKzbtRx~HL4z+g|6YXT-rfGK!2Rp*3PiF?K?zkd(I^yaW9oCh~sPH}z?K~I_
zj*ceA;7-xoHDy`3w25P;aC2^D2J4x@h^dbNyK>^_eMPWnj$pGlPMU=|HUR~SD?wLG
zi#}
zZ2kPFIft=o;9_7Xz7O9`;t%k!xM4#spXcFYKJ{eNd#w1yQ}NX3L2Qkwq%_6x9ft(I
zS(yYC1Ah!pY%(Z=zXxX`Z!hRcNo9~4MJgrvqmW1lm6nng%CNpENN45a(AG+{KSFyX
z7kdzBjNvnC*3UIJ;?sN!zeHmlTq~F0bOxGP8}>M;Gl4&$%GPFVJt@>OLAz`XCUTYS
ztdp&ap(N@p&g!OfM!=nG+w4-ReN⋘QI)T_#C|rpPbta)dA{Om|{vo7d
z;B!0pJ3Z`yn6!)aut(XayOByrN%2K(1oSxcP0}Drn9@@ADt-}pdKaE~@3Jp~VoSbN
zRNsm6qv(}v?E}!1?FoF9pkWj8EtK3Z&p3X?%Jw0Cif(Ec#&b7HyhZ*z)#i7g?d{z5
z>LExEqRf8L(+8~wPQgvUPFlPPa+CN527BUS_>1ixMb9b!#qnjCtkrB&H}W&k$KJt@
zK8v>Do9yJ+MpUy=N_OD8QMgyi+g_dJZ>D`Hmy{YP$7Rp*SYoZzz|Rykat-77ZU|e#
zy~vi16D?4l&9_YXemA~m!E!0II>B;f-2R;XWix7?H_N`V85Y!ThJ6X?t8DoQe8D4{
zD(3X-f(ZPYwTbq~CPMLyTELGc~WO!UMV{g9tKH`t#s*u=A74Bxn+ifnHVg2%Cg=4EEIf?Sj0
zZ(2Hg)NVvu!kA0kGF&)7qb0t^B^x;Ge{%J}I{XH=sE@}5aHSxANK&C@4)+k-0-0Hy
z_BkAAm?eWB&dlOK|11uEGE+GOUqxZb0Qw_@6m-wwLDwAKsmkIP5SUN1^+Dq)xUl#X
zT-0<5F6ye8tG5l`IXo4=gFQA!eg*ssJ$Q{DKko;he`Z_f1NS}qvx^QGX>vAdn%mJx
zS`iWz6-;`aF3lG*s(t5Zz92Jn1{XsyOZh?$m*&PdRpW>>x{Ppocmya@j&stDw_W>j_#5*K
z8n|b9G~W*=*`xV>FyZMU_m?l(v1P%^=dO0Q-97Nq7eD)j-@-P0>kz*{#h0rY91Ko|
zA_jw@n8Cxq-&k~N4ETo>gU;Y!a5BJ+D8}Goa5EG$co<3;N*TNi^BBq*Di|6WPG?xc
z(9G}-2K;3jR9FPSuT@bcgM-1zP{e?*tRj~|XK*m!CvAXffX1LRI2fD^MGOW5eue-M
z2A#pd;AALbFc@46ZiZq84?_t|z*Y7-NVtU=KwO!?#K|+-eT_
zg1S)#P7Loj-U+-h*uA=;Befat5xlqKeGwPnxMmkDbr==%@owQ@b{z!Diy@$*1*m|V
zDIV=^6{dW_Vmprcf{sS~ssw>1&XADlv{`UOaJwLu6HK$1!C^J#=0~0HV)Z!8Gpf!v
zeT2gq$5hN`Oh?S#5AuZbG9YN^x{h)@*}bS+X6Tee9tj)ACF?kfLre#OFmVFk$m70
zrgAqn_?*YwpVlCU`HNSdMs=(
zwz{n&*1l%t*qYIfu{H74ZEM}~+ez6TakIuk**%f&2wlnMpPrky}&~W$gM8NU#{T2Vx{XqS1Uwq|fwfHODMBQiY
z*ox0))045$_zux?`_A3GU}HD%t9I`CEP0v<21AdXQCmb@YPiOk|K&HzDlb8uRHWr=kMQ8zj(<0
z7DheK6D^puc&ZR&Gw|rf8-GnkPNO~c`Hs)AyKyGu*Agkk=SDtnrsdq3yZsP}d!65h
zQVlj`%rocQ@vTW~8gtK96HqhV>Med>j58v=M<=dAl1DOk+@qOev
zlw65ESxu`1+i)8Z18)tuW57|+{ES1Q4bL`=)iv^54gM<0TLoFHUwEyRz71lO@XagV
eVXAxBx3@)#{`D}e{-05w=IQ$1umA5n@V@~qtg$Bm
literal 0
HcmV?d00001
diff --git a/TunnelNuget/Rovinj.Reader.dll b/TunnelNuget/Rovinj.Reader.dll
new file mode 100644
index 0000000000000000000000000000000000000000..14b3ac7a59cafcb9a98e4470158f8b865c528f6f
GIT binary patch
literal 13824
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
a{gT9g2x#^G&q(bRe~8TgKhHmO3;Y-9{U>Yy
literal 0
HcmV?d00001
diff --git a/TunnelNuget/Rovinj.Tunnel.dll b/TunnelNuget/Rovinj.Tunnel.dll
new file mode 100644
index 0000000000000000000000000000000000000000..035f6014b60b21540d22fc0cc800edf5fd611a69
GIT binary patch
literal 37888
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
+
+
+
+ Debug
+ AnyCPU
+ {7B9289E9-0AE5-40A8-B5F8-1DCD5FC9F4E3}
+ Library
+ Properties
+ TunnelNuget
+ TunnelNuget
+ v4.6.1
+ 512
+ true
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\packages\Rovinj.Reader.Silion.1.4.3.3\lib\net461\ModuleAPI.dll
+
+
+ ..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll
+
+
+ ..\packages\Rovinj.Device.1.2.0\lib\net461\Rovinj.Device.dll
+
+
+ ..\packages\Rovinj.Log.1.1.0\lib\net461\Rovinj.Log.dll
+
+
+ ..\packages\Rovinj.Reader.1.4.3\lib\net461\Rovinj.Reader.dll
+
+
+ ..\packages\Rovinj.Reader.Silion.1.4.3.3\lib\net461\Rovinj.Reader.Silion.dll
+
+
+ ..\packages\Rovinj.Tunnel.1.9.0\lib\net461\Rovinj.Tunnel.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+
+
\ No newline at end of file
diff --git a/TunnelNuget/packages.config b/TunnelNuget/packages.config
new file mode 100644
index 0000000..feb9099
--- /dev/null
+++ b/TunnelNuget/packages.config
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TunnelNuget/tunnelPlc.dll b/TunnelNuget/tunnelPlc.dll
new file mode 100644
index 0000000000000000000000000000000000000000..d38d4a4eb692d5572cd05dcadd76c95230a54bdc
GIT binary patch
literal 44544
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