From 6d7cfc87bda3271b109a6a37c7d73c5fee598cb2 Mon Sep 17 00:00:00 2001
From: gfdgd_xi <3025613752@qq.com>
Date: Sat, 15 Oct 2022 18:56:14 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BF=AB=E6=8D=B7=E9=94=AE=E5=8A=9F=E8=83=BDGU?=
 =?UTF-8?q?I=E5=88=9D=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Makefile                                      |   2 +
 .../ConfigLanguareRunner.cpython-37.pyc       | Bin 17013 -> 17259 bytes
 deb/DEBIAN/control                            |   4 +-
 .../deepin-wine-runner/API/Python/__init__.py |  54 +++++++++++
 .../__pycache__/__init__.cpython-37.pyc       | Bin 0 -> 2035 bytes
 deb/opt/apps/deepin-wine-runner/API/demo/a.py |   3 +
 deb/opt/apps/deepin-wine-runner/AutoConfig.py |   2 +-
 .../AutoShell/command/installvb               |  13 +++
 .../ConfigLanguareRunner-help.json            |   3 +-
 .../ConfigLanguareRunner.py                   |  15 ++-
 .../Model/__pycache__/__init__.cpython-37.pyc | Bin 1103 -> 1103 bytes
 .../apps/deepin-wine-runner/UI/KeyAddGui.py   |  85 +++++++++++++++++
 .../UI/KeyAddKeyboardGui.py                   |  86 ++++++++++++++++++
 .../deepin-wine-packager.py                   |   2 +-
 .../deepin-wine-runner/deepin-wine-runner     |  25 +++--
 .../deepin-wine-runner/package-script.zip     | Bin 300911 -> 300911 bytes
 deb/usr/lib/python3/dist-packages/WineRunner  |   1 +
 key/UI/AutoConfig.py                          |   0
 key/UI/AutoConfig.ui                          |   0
 key/UI/KeyAddGui.py                           |   0
 key/UI/KeyAddGui.ui                           |   0
 key/UI/KeyAddKeyboardGui.py                   |   0
 key/UI/KeyAddKeyboardGui.ui                   |   0
 key/UI/__pycache__/AutoConfig.cpython-310.pyc | Bin
 key/UI/__pycache__/AutoConfig.cpython-37.pyc  | Bin
 key/UI/__pycache__/KeyAddGui.cpython-37.pyc   | Bin
 .../KeyAddKeyboardGui.cpython-37.pyc          | Bin
 .../deepin-wine-runner-keyboard.desktop       |  10 ++
 key/key-add-gui.py                            |   9 +-
 key/key-get.py                                |   0
 key/keyboard-add-gui.py                       |   0
 key/list/KeyList.json                         |   2 +-
 key/replace.py                                |   9 ++
 key/start-auto-server.sh                      |  28 ++++--
 key/stop-auto-server.sh                       |  27 ++++--
 package-script.zip                            | Bin 300911 -> 300911 bytes
 36 files changed, 339 insertions(+), 41 deletions(-)
 create mode 100644 deb/opt/apps/deepin-wine-runner/API/Python/__init__.py
 create mode 100644 deb/opt/apps/deepin-wine-runner/API/Python/__pycache__/__init__.cpython-37.pyc
 create mode 100644 deb/opt/apps/deepin-wine-runner/API/demo/a.py
 create mode 100755 deb/opt/apps/deepin-wine-runner/AutoShell/command/installvb
 create mode 100644 deb/opt/apps/deepin-wine-runner/UI/KeyAddGui.py
 create mode 100644 deb/opt/apps/deepin-wine-runner/UI/KeyAddKeyboardGui.py
 create mode 120000 deb/usr/lib/python3/dist-packages/WineRunner
 mode change 100644 => 100755 key/UI/AutoConfig.py
 mode change 100644 => 100755 key/UI/AutoConfig.ui
 mode change 100644 => 100755 key/UI/KeyAddGui.py
 mode change 100644 => 100755 key/UI/KeyAddGui.ui
 mode change 100644 => 100755 key/UI/KeyAddKeyboardGui.py
 mode change 100644 => 100755 key/UI/KeyAddKeyboardGui.ui
 mode change 100644 => 100755 key/UI/__pycache__/AutoConfig.cpython-310.pyc
 mode change 100644 => 100755 key/UI/__pycache__/AutoConfig.cpython-37.pyc
 mode change 100644 => 100755 key/UI/__pycache__/KeyAddGui.cpython-37.pyc
 mode change 100644 => 100755 key/UI/__pycache__/KeyAddKeyboardGui.cpython-37.pyc
 create mode 100755 key/desktop/deepin-wine-runner-keyboard.desktop
 mode change 100644 => 100755 key/key-add-gui.py
 mode change 100644 => 100755 key/key-get.py
 mode change 100644 => 100755 key/keyboard-add-gui.py
 mode change 100644 => 100755 key/list/KeyList.json
 create mode 100755 key/replace.py
 mode change 100644 => 100755 key/start-auto-server.sh
 mode change 100644 => 100755 key/stop-auto-server.sh

diff --git a/Makefile b/Makefile
index 0391662..0c14ee7 100755
--- a/Makefile
+++ b/Makefile
@@ -63,6 +63,8 @@ build:
 	cp -rv UI/*.py                    deb/opt/apps/deepin-wine-runner/UI
 	cp -rv InstallDll.py              deb/opt/apps/deepin-wine-runner
 	cp -rv Model              deb/opt/apps/deepin-wine-runner
+	cp -rv API                deb/opt/apps/deepin-wine-runner
+	cp -rv key
 	dpkg -b deb spark-deepin-wine-runner.deb
 	
 
diff --git a/__pycache__/ConfigLanguareRunner.cpython-37.pyc b/__pycache__/ConfigLanguareRunner.cpython-37.pyc
index 3230c7e4cc14ecd5f4a46100351cc189e29996a3..691b9ff2c301a792fcadd9319f7ba6f417443822 100644
GIT binary patch
delta 3621
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
I)U|c|AIKGRng9R*

delta 3374
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

diff --git a/deb/DEBIAN/control b/deb/DEBIAN/control
index 18a2f7c..0f572e4 100755
--- a/deb/DEBIAN/control
+++ b/deb/DEBIAN/control
@@ -1,5 +1,5 @@
-Package: spark-deepin-wine-runner-52
-Version: 2.3.0
+Package: spark-deepin-wine-runner
+Version: 2.4.0
 Maintainer: gfdgd xi <3025613752@qq.com>, 为什么您不喜欢熊出没和阿布呢
 Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner, https://github.com/gfdgd-xi/deep-wine-runner, https://gitlink.org.cn/gfdgd_xi/deep-wine-runner
 Architecture: all
diff --git a/deb/opt/apps/deepin-wine-runner/API/Python/__init__.py b/deb/opt/apps/deepin-wine-runner/API/Python/__init__.py
new file mode 100644
index 0000000..517951d
--- /dev/null
+++ b/deb/opt/apps/deepin-wine-runner/API/Python/__init__.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python3
+# 使用系统默认的 python3 运行
+###########################################################################################
+# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
+# 版本:2.4.0
+# 更新时间:2022年10月15日
+# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
+# 基于 Python3 构建
+###########################################################################################
+#################
+# 加入路径
+#################
+import os
+import sys
+programPath = os.path.split(os.path.realpath(__file__))[0]  # 返回 string
+sys.path.append(f"{programPath}/../../")
+#################
+# 引入所需的库(正式内容)
+#################
+import os
+import sys
+import ConfigLanguareRunner
+class Old:
+    wine = ""
+    wineprefix = ""
+    def __init__(self, wine = "", wineprefix = "") -> None:
+        self.wine = os.getenv("WINE") if wine == "" else wine
+        self.wineprefix = os.getenv("WINEPREFIX") if wine == "" else wineprefix
+
+    def runCommand(self, command: str) -> None:
+        com = ConfigLanguareRunner.Command(command)
+        print(com.GetCommandList())
+        return com.Run(com.GetCommandList(), self.wineprefix, self.wine)
+
+    def runList(self, command: list) -> None:
+        return ConfigLanguareRunner.Command("").Run(command, self.wineprefix, self.wine)
+
+class Bash:
+    wine = ""
+    wineprefix = ""
+    def __init__(self, wine = "", wineprefix = "") -> None:
+        self.wine = os.getenv("WINE") if wine == "" else wine
+        self.wineprefix = os.getenv("WINEPREFIX") if wine == "" else wineprefix
+
+    def runCommand(self, command: str) -> int:
+        return os.system(f"'{programPath}/../../AutoShell/main.py' -c \"{command}\"")
+
+    def runList(self, command: list) -> int:
+        commandStr = ""
+        for k in command:
+            for i in k:
+                commandStr += f"'{i}' "
+            commandStr += ";"
+        return os.system(f"'{programPath}/../../AutoShell/main.py' -c \"{commandStr}\"")
diff --git a/deb/opt/apps/deepin-wine-runner/API/Python/__pycache__/__init__.cpython-37.pyc b/deb/opt/apps/deepin-wine-runner/API/Python/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5969ca55cf24079177bdcc7b413c58fcaace5ecf
GIT binary patch
literal 2035
zcmbtUOK%)S5bmCymuJ_H1Oo|#U~;i0O1u&eaR8wZCqzM!vEqZ#NN6<KZrfw;&Te{U
z!Cuy<_+OAn_K`FHrmvhh@CSV2tDb#0h6o{gw`;m;db;bYs;}<P&qoa7&!4|-|K>6F
zJ1LU^o!!GMpFv0_d50zSlP6rUedknI=_>DxpK-~qv&2^%_CWc+FzLK<&N#2X2$S#;
zlR~;DOu8?eWDc4qeP}+kNb)Tf2Y=umwlNG^YismxlR6nL7WXjA2M~%SxGr%dPXwkb
z8`6>DC6})BPQ1iZK6L-3BLf+pxJjVGu|6jw=yTG+bxk9_>qx^kVs3n`s(~)r0*BL}
zC(U)t@>7Trm;AudS1WePC14fKh>utbY3;YIU0AyVyO0bwxEq=dG4A%`jfW;8x%u?r
zH;=!MUE}mh<L|0U6+asHr@T-mBH7n!CqImZaZA<N(R27*Q-*$Jx{1g6XRSf0Tb=w_
ztAAAO^@>kgGB2yU{j7bE?W(f1jWeDOibCmDn&w4brRiG#$b=K6fkR4)CF9rlu!#Vy
zO<u*03EI7GH!Gy39c_oUVGstY1sjYzSP<9|GJfn-&Ina-#$F)LSh=+}V*4JZe<lzF
zz7YpzdA(Qc<hxI@Vt0_~v4<vDudg#+U*|=YEId-x*z^Rbi~tgg-o_yon!MMG5Q%`N
zHX^l{hs{KKP>esPJ*5x9c*L80xIjQ>ucy!m;uP97C^nCPc53sxF95@}Fq}G<v8R`?
zO<y7L775Bu?VmIA@3LzF?j}gf*j(DU@?m4_6WL?OR*DsIMCmHBu1ZrArD?Y(2OU~B
z)Aacu>(p;%rJ)yas1aqQH63r<4i40BlUr0W7X(E~)9oQ<Nsfoy#c#=7@~piL({%ht
z#;M=}<3cqz)@#N^W5&7nvvSX(1ncT5qw1nTPnzqP|C@4}lB%fyVpj*WCdjjxO=@Y%
zugg)Qn7)TO<H|g_et|5u4qqn<g_bU}5N6d>In)eC98$bOtF)croUaaVjvL+AgQ~Z+
zr#hWhH_Hp~b#>)#d*#+SzXd<(K;xH3Wu>~N(bv6Qopm>}Y7aFt<-=w7sSs{rPHJt@
zI{yy@pg2uk-h?8->cfvm`~myn_OUp;F%noUAA{L|;93acb9U@JU)~1erEAyGc1;}g
z1MKidB>geepeByKfy0N+>dHC);@^Pl53qL(T@wubAsM_G-XsG5sZ(uL+VBIz^UD#S
z`u_;CBn~hXd4%6G^@8Rk7JnmNL%)N)`dt!~zFECkj_K>L8G%k^iKeMO-psT2@s>_{
zoo7OmJ#N%#6-cXb`$(qo%6=!WOsG}Xu?F;jot$`Y!5cs8_Z2#`?LJg!_Mi)>E!S-y
X48N>f##clqi$CNc+Wl3?g~h)B>^+$Y

literal 0
HcmV?d00001

diff --git a/deb/opt/apps/deepin-wine-runner/API/demo/a.py b/deb/opt/apps/deepin-wine-runner/API/demo/a.py
new file mode 100644
index 0000000..13d3184
--- /dev/null
+++ b/deb/opt/apps/deepin-wine-runner/API/demo/a.py
@@ -0,0 +1,3 @@
+import WineRunner
+WineRunner.Bash("a").runList([["thank"], ["version"]])
+#WineRunner.Bash("a").runCommand("thank")
\ No newline at end of file
diff --git a/deb/opt/apps/deepin-wine-runner/AutoConfig.py b/deb/opt/apps/deepin-wine-runner/AutoConfig.py
index a4e72c6..3927109 100755
--- a/deb/opt/apps/deepin-wine-runner/AutoConfig.py
+++ b/deb/opt/apps/deepin-wine-runner/AutoConfig.py
@@ -33,7 +33,7 @@ class Connect:
             return
         for i in lists:
             # 显示筛选的内容
-            if ui.searchThings.text() in i[0]:
+            if ui.searchThings.text().upper() in i[0].upper():
                 nmodel.appendRow(QtGui.QStandardItem(i[0]))
         ui.searchList.setModel(nmodel)
 
diff --git a/deb/opt/apps/deepin-wine-runner/AutoShell/command/installvb b/deb/opt/apps/deepin-wine-runner/AutoShell/command/installvb
new file mode 100755
index 0000000..1bf2fba
--- /dev/null
+++ b/deb/opt/apps/deepin-wine-runner/AutoShell/command/installvb
@@ -0,0 +1,13 @@
+#!/usr/bin/env python3
+# 加入路径
+import os
+import sys
+programPath = os.path.split(os.path.realpath(__file__))[0]  # 返回 string
+sys.path.append(f"{programPath}/../../")
+import ConfigLanguareRunner
+# 符号转移
+argv = []
+for i in sys.argv[1:]:
+    argv.append(i.replace(" ", "\\ "))
+com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
+com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
\ No newline at end of file
diff --git a/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner-help.json b/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner-help.json
index f249b54..10517d4 100644
--- a/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner-help.json
+++ b/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner-help.json
@@ -37,5 +37,6 @@
     "killall": "杀死指定进程\n参数数量:1\n参数介绍:进程名",
     "control": "打开控制面板\n参数数量:0\n参数介绍:无",
     "taskmgr": "打开任务管理器\n参数数量:0\n参数介绍:无",
-    "killallwineserver": "杀死所有 Wine 程序\n参数数量:0\n参数介绍:无"
+    "killallwineserver": "杀死所有 Wine 程序\n参数数量:0\n参数介绍:无",
+    "installvb": "安装指定的 VB 运行库到指定容器\n参数数量:1\n参数介绍:在安装 Visual Basic Runtime 工具的编号,如 4 Visual Basic Runtime Visual Basic 6"
 }
\ No newline at end of file
diff --git a/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner.py b/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner.py
index f0ef5cd..ba6c723 100755
--- a/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner.py
+++ b/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner.py
@@ -3,7 +3,7 @@
 ###########################################################################################
 # 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
 # 版本:2.1.0
-# 更新时间:2022年08月25日
+# 更新时间:2022年10月05日
 # 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
 # 基于 Python3 构建
 ###########################################################################################
@@ -109,7 +109,8 @@ class Command():
         "enabledwinecrashdialog",
         "disbledwinecrashdialog",
         "disbledWinebottlecreatelink",
-        "enabledWinebottlecreatelink"
+        "enabledWinebottlecreatelink",
+        "installvb"
     ]
 
     def __init__(self, commandString: str) -> None:
@@ -391,6 +392,10 @@ class Command():
             self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyEnable", "/t", "REG_DWORD", "/d", "00000000", "/f"]
             self.Bat()
 
+        def InstallVB(self):
+            import InstallVisualBasicRuntime
+            return InstallVisualBasicRuntime.Download(self.wineBottonPath, int(self.command[1]), self.wine)
+
         # 可以运行的命令的映射关系
         # 可以被使用的命令的映射
         commandList = {
@@ -431,7 +436,8 @@ class Command():
             "enabledwinecrashdialog": EnabledWineCrashDialog,
             "disbledwinecrashdialog": DisbledWineCrashDialog,
             "disbledWinebottlecreatelink": DisbledWineBottleCreateLink,
-            "enabledWinebottlecreatelink": EnabledWineBottleCreateLink
+            "enabledWinebottlecreatelink": EnabledWineBottleCreateLink,
+            "installvb": InstallVB
         }
 
         # 参数数列表
@@ -474,7 +480,8 @@ class Command():
             "enabledwinecrashdialog": [0],
             "disbledwinecrashdialog": [0],
             "disbledWinebottlecreatelink": [0],
-            "enabledWinebottlecreatelink": [0]
+            "enabledWinebottlecreatelink": [0],
+            "installvb": [1]
         }
         windowsUnrun = [
             "createbotton",
diff --git a/deb/opt/apps/deepin-wine-runner/Model/__pycache__/__init__.cpython-37.pyc b/deb/opt/apps/deepin-wine-runner/Model/__pycache__/__init__.cpython-37.pyc
index 676678829275fdba51367b5fb3ebc737086dd84b..b0920ebac871dadb85ca2d0fe2c72620958efef6 100644
GIT binary patch
delta 20
acmX@lah`+QiI<m)0SL?-EH`qyumAup+XK@8

delta 20
acmX@lah`+QiI<m)0SLA)klD!X!U6y@5d@b2

diff --git a/deb/opt/apps/deepin-wine-runner/UI/KeyAddGui.py b/deb/opt/apps/deepin-wine-runner/UI/KeyAddGui.py
new file mode 100644
index 0000000..171ad00
--- /dev/null
+++ b/deb/opt/apps/deepin-wine-runner/UI/KeyAddGui.py
@@ -0,0 +1,85 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'KeyAddGui.ui'
+#
+# Created by: PyQt5 UI code generator 5.11.3
+#
+# WARNING! All changes made in this file will be lost!
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+class Ui_MainWindow(object):
+    def setupUi(self, MainWindow):
+        MainWindow.setObjectName("MainWindow")
+        MainWindow.resize(692, 314)
+        self.centralwidget = QtWidgets.QWidget(MainWindow)
+        self.centralwidget.setObjectName("centralwidget")
+        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
+        self.verticalLayout.setObjectName("verticalLayout")
+        self.tips = QtWidgets.QLabel(self.centralwidget)
+        self.tips.setObjectName("tips")
+        self.verticalLayout.addWidget(self.tips)
+        self.keyBoardList = QtWidgets.QListView(self.centralwidget)
+        self.keyBoardList.setObjectName("keyBoardList")
+        self.verticalLayout.addWidget(self.keyBoardList)
+        self.horizontalLayout = QtWidgets.QHBoxLayout()
+        self.horizontalLayout.setObjectName("horizontalLayout")
+        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout.addItem(spacerItem)
+        self.addButton = QtWidgets.QPushButton(self.centralwidget)
+        self.addButton.setObjectName("addButton")
+        self.horizontalLayout.addWidget(self.addButton)
+        self.editButton = QtWidgets.QPushButton(self.centralwidget)
+        self.editButton.setObjectName("editButton")
+        self.horizontalLayout.addWidget(self.editButton)
+        self.saveButton = QtWidgets.QPushButton(self.centralwidget)
+        self.saveButton.setObjectName("saveButton")
+        self.horizontalLayout.addWidget(self.saveButton)
+        self.verticalLayout.addLayout(self.horizontalLayout)
+        MainWindow.setCentralWidget(self.centralwidget)
+        self.menuBar = QtWidgets.QMenuBar(MainWindow)
+        self.menuBar.setGeometry(QtCore.QRect(0, 0, 692, 33))
+        self.menuBar.setObjectName("menuBar")
+        self.menu = QtWidgets.QMenu(self.menuBar)
+        self.menu.setObjectName("menu")
+        MainWindow.setMenuBar(self.menuBar)
+        self.action = QtWidgets.QAction(MainWindow)
+        self.action.setObjectName("action")
+        self.serverTips = QtWidgets.QAction(MainWindow)
+        self.serverTips.setEnabled(False)
+        self.serverTips.setObjectName("serverTips")
+        self.startServer = QtWidgets.QAction(MainWindow)
+        self.startServer.setObjectName("startServer")
+        self.stopServer = QtWidgets.QAction(MainWindow)
+        self.stopServer.setObjectName("stopServer")
+        self.setAutoStart = QtWidgets.QAction(MainWindow)
+        self.setAutoStart.setObjectName("setAutoStart")
+        self.setUnautoStart = QtWidgets.QAction(MainWindow)
+        self.setUnautoStart.setObjectName("setUnautoStart")
+        self.menu.addAction(self.serverTips)
+        self.menu.addSeparator()
+        self.menu.addAction(self.startServer)
+        self.menu.addAction(self.stopServer)
+        self.menu.addSeparator()
+        self.menu.addAction(self.setAutoStart)
+        self.menu.addAction(self.setUnautoStart)
+        self.menuBar.addAction(self.menu.menuAction())
+
+        self.retranslateUi(MainWindow)
+        QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+    def retranslateUi(self, MainWindow):
+        _translate = QtCore.QCoreApplication.translate
+        MainWindow.setWindowTitle(_translate("MainWindow", "编辑快捷键"))
+        self.tips.setText(_translate("MainWindow", "<html><head/><body><p>此工具可以用于设置快捷键到 Wine 容器的映射,以便 Wine 程序可以正常的使用快捷键<br/>Deepin/UOS将会使用默认的快捷键服务,其它发行版将使用此运行器提供的快捷键服务<br>Deepin/UOS将只会提供快捷键添加功能,请在控制中心进行快捷键的修改管理</p></body></html>"))
+        self.addButton.setText(_translate("MainWindow", "添加"))
+        self.editButton.setText(_translate("MainWindow", "编辑"))
+        self.saveButton.setText(_translate("MainWindow", "保存"))
+        self.menu.setTitle(_translate("MainWindow", "设置快捷键服务"))
+        self.action.setText(_translate("MainWindow", "关于"))
+        self.serverTips.setText(_translate("MainWindow", "此内容只支持非Deepin/UOS发行版"))
+        self.startServer.setText(_translate("MainWindow", "启动服务"))
+        self.stopServer.setText(_translate("MainWindow", "停止服务"))
+        self.setAutoStart.setText(_translate("MainWindow", "设置开机自启"))
+        self.setUnautoStart.setText(_translate("MainWindow", "关闭开机自启动"))
+
diff --git a/deb/opt/apps/deepin-wine-runner/UI/KeyAddKeyboardGui.py b/deb/opt/apps/deepin-wine-runner/UI/KeyAddKeyboardGui.py
new file mode 100644
index 0000000..5e4e12c
--- /dev/null
+++ b/deb/opt/apps/deepin-wine-runner/UI/KeyAddKeyboardGui.py
@@ -0,0 +1,86 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'KeyAddKeyboardGui.ui'
+#
+# Created by: PyQt5 UI code generator 5.11.3
+#
+# WARNING! All changes made in this file will be lost!
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+class Ui_MainWindow(object):
+    def setupUi(self, MainWindow):
+        MainWindow.setObjectName("MainWindow")
+        MainWindow.resize(800, 195)
+        icon = QtGui.QIcon.fromTheme("..")
+        MainWindow.setWindowIcon(icon)
+        self.centralwidget = QtWidgets.QWidget(MainWindow)
+        self.centralwidget.setObjectName("centralwidget")
+        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
+        self.verticalLayout.setObjectName("verticalLayout")
+        self.addTips = QtWidgets.QLabel(self.centralwidget)
+        self.addTips.setObjectName("addTips")
+        self.verticalLayout.addWidget(self.addTips)
+        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
+        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
+        self.exeNameTips = QtWidgets.QLabel(self.centralwidget)
+        self.exeNameTips.setObjectName("exeNameTips")
+        self.horizontalLayout_3.addWidget(self.exeNameTips)
+        self.exeName = QtWidgets.QLineEdit(self.centralwidget)
+        self.exeName.setObjectName("exeName")
+        self.horizontalLayout_3.addWidget(self.exeName)
+        self.verticalLayout.addLayout(self.horizontalLayout_3)
+        self.horizontalLayout = QtWidgets.QHBoxLayout()
+        self.horizontalLayout.setObjectName("horizontalLayout")
+        self.localTips = QtWidgets.QLabel(self.centralwidget)
+        self.localTips.setObjectName("localTips")
+        self.horizontalLayout.addWidget(self.localTips)
+        self.localKeyboardChoose = QtWidgets.QComboBox(self.centralwidget)
+        self.localKeyboardChoose.setObjectName("localKeyboardChoose")
+        self.horizontalLayout.addWidget(self.localKeyboardChoose)
+        self.addTips_2 = QtWidgets.QLabel(self.centralwidget)
+        self.addTips_2.setObjectName("addTips_2")
+        self.horizontalLayout.addWidget(self.addTips_2)
+        self.localKey = QtWidgets.QLineEdit(self.centralwidget)
+        self.localKey.setObjectName("localKey")
+        self.horizontalLayout.addWidget(self.localKey)
+        self.wineTips = QtWidgets.QLabel(self.centralwidget)
+        self.wineTips.setObjectName("wineTips")
+        self.horizontalLayout.addWidget(self.wineTips)
+        self.wineKeyboardChoose = QtWidgets.QComboBox(self.centralwidget)
+        self.wineKeyboardChoose.setObjectName("wineKeyboardChoose")
+        self.horizontalLayout.addWidget(self.wineKeyboardChoose)
+        self.addTipsWine = QtWidgets.QLabel(self.centralwidget)
+        self.addTipsWine.setObjectName("addTipsWine")
+        self.horizontalLayout.addWidget(self.addTipsWine)
+        self.wineKey = QtWidgets.QLineEdit(self.centralwidget)
+        self.wineKey.setObjectName("wineKey")
+        self.horizontalLayout.addWidget(self.wineKey)
+        self.verticalLayout.addLayout(self.horizontalLayout)
+        spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
+        self.verticalLayout.addItem(spacerItem)
+        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
+        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_2.addItem(spacerItem1)
+        self.addButton = QtWidgets.QPushButton(self.centralwidget)
+        self.addButton.setObjectName("addButton")
+        self.horizontalLayout_2.addWidget(self.addButton)
+        self.verticalLayout.addLayout(self.horizontalLayout_2)
+        MainWindow.setCentralWidget(self.centralwidget)
+
+        self.retranslateUi(MainWindow)
+        QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+    def retranslateUi(self, MainWindow):
+        _translate = QtCore.QCoreApplication.translate
+        MainWindow.setWindowTitle(_translate("MainWindow", "添加快捷键"))
+        self.addTips.setText(_translate("MainWindow", "暂时只支持特定组合\n"
+"文本框内的只能输入单字母"))
+        self.exeNameTips.setText(_translate("MainWindow", "可这执行文件名称:"))
+        self.localTips.setText(_translate("MainWindow", "本地映射:"))
+        self.addTips_2.setText(_translate("MainWindow", "+"))
+        self.wineTips.setText(_translate("MainWindow", "Wine 容器映射内容:"))
+        self.addTipsWine.setText(_translate("MainWindow", "+"))
+        self.addButton.setText(_translate("MainWindow", "添加快捷键"))
+
diff --git a/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py b/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py
index 809beb8..b49f1ce 100755
--- a/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py
+++ b/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py
@@ -942,7 +942,7 @@ Description: {e3_text.text()}
             ################
             if not self.build:
                 self.label.emit("正在构建 deb 包……")
-                self.run_command("dpkg -b {} {}".format(debPackagePath, e12_text.text()))
+                self.run_command("bash -c 'dpkg -b {} {}'".format(debPackagePath, e12_text.text()))
             ################
             # 完成构建
             ################
diff --git a/deb/opt/apps/deepin-wine-runner/deepin-wine-runner b/deb/opt/apps/deepin-wine-runner/deepin-wine-runner
index 24bcaac..1d87350 100755
--- a/deb/opt/apps/deepin-wine-runner/deepin-wine-runner
+++ b/deb/opt/apps/deepin-wine-runner/deepin-wine-runner
@@ -632,6 +632,13 @@ def InstallNetFramework():
         wineBottonPath = e1.currentText()
     OpenTerminal(f"'{programPath}/InstallNetFramework.py' '{wineBottonPath}' '{wine[o1.currentText()]}' {int(setting['RuntimeCache'])}")
 
+def InstallVB():
+    if e1.currentText() == "":
+        wineBottonPath = setting["DefultBotton"]
+    else:
+        wineBottonPath = e1.currentText()
+    OpenTerminal(f"'{programPath}/InstallVisualBasicRuntime.py' '{wineBottonPath}' '{wine[o1.currentText()]}' {int(setting['RuntimeCache'])}")
+
 def InstallVisualStudioCPlusPlus():
     if e1.currentText() == "":
         wineBottonPath = setting["DefultBotton"]
@@ -1816,16 +1823,8 @@ exe路径\' 参数 \'
 <b>千万不要中断后不删除源的情况下 apt upgrade !!!</b>中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine(会自动执行恢复操作)即可
 以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示
 <code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。</code>'''
-updateThingsString = '''※1、自动配置解释器支持 bash 语法(新版底层调用 bash,旧版任然使用旧版解析引擎)
-※2、修复缺失 wimtools 依赖导致无法正常安装的问题
-※3、修复基于生态适配活动脚本打包器对话框过多影响使用的问题,并支持指定不同的包名和容器名
-※4、7z 文件解压不会自动替换文件然后卡死以及因此导致程序闪退的问题
-※5、修复安装更多 Wine 终端调用问题和图标问题
-※6、支持 openkylin
-7、支持通过 exe 路径自动生成 Wine 容器路径
-8、支持禁用/启用 wine 容器是否生成快捷方式的功能以及启用/禁用程序崩溃提示对话框
-9、支持设置 wine 容器代理
-10、自动配置脚本支持使用 --help 参数查看帮助
+updateThingsString = '''※1、新增 VB Runtime 组件安装工具
+※2、优化自动配置容器搜索功能,搜索不区分大小写
 '''
 for i in information["Thank"]:
     thankText += f"{i}\n"
@@ -2107,12 +2106,14 @@ wm1_2 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "在指定wine
 wm1_3 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "在指定wine、指定容器安装 MSXML"))
 wm1_4 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "在指定wine、指定容器安装 gecko"))
 wm1_5 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "在指定wine、指定容器安装 mono"))
+wm1_7 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "在指定wine、指定容器安装 Visual Basic Runtime"))
 wm1_6 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "在指定wine、指定容器安装其它运行库"))
 wm1.addAction(wm1_1)
 wm1.addAction(wm1_2)
 wm1.addAction(wm1_3)
 wm1.addAction(wm1_4)
 wm1.addAction(wm1_5)
+wm1.addAction(wm1_7)
 wm1.addAction(wm1_6)
 wm2 = wineOption.addMenu(QtCore.QCoreApplication.translate("U", "在指定 Wine、容器运行基础应用"))
 wm2_1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "打开指定wine、指定容器的控制面板"))
@@ -2188,6 +2189,7 @@ wm1_2.triggered.connect(lambda: threading.Thread(target=InstallVisualStudioCPlus
 wm1_3.triggered.connect(lambda: threading.Thread(target=InstallMSXML).start())
 wm1_4.triggered.connect(lambda: threading.Thread(target=InstallMonoGecko, args=["gecko"]).start())
 wm1_5.triggered.connect(lambda: threading.Thread(target=InstallMonoGecko, args=["mono"]).start())
+wm1_7.triggered.connect(lambda: threading.Thread(target=InstallVB).start())
 wm1_6.triggered.connect(lambda: threading.Thread(target=InstallOther).start())
 wm2_1.triggered.connect(lambda: RunWineProgram("control"))
 wm2_2.triggered.connect(lambda: RunWineProgram("iexplore' 'https://www.deepin.org"))
@@ -2272,6 +2274,8 @@ help.addAction(h2)
 help.addAction(h3)
 help.addAction(h4)
 help.addSeparator()
+wikiHelp = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "程序 Wiki"))
+help.addAction(wikiHelp)
 videoHelp = help.addMenu(QtCore.QCoreApplication.translate("U", "视频教程"))
 easyHelp = QtWidgets.QAction("简易使用教程")
 buildHelp = QtWidgets.QAction("打包教程")
@@ -2296,6 +2300,7 @@ runStatusWebSize.triggered.connect(lambda: webbrowser.open_new_tab("https://gfdg
 h2.triggered.connect(helps)
 h3.triggered.connect(UpdateThings)
 h4.triggered.connect(ThankWindow)
+wikiHelp.triggered.connect(lambda: webbrowser.open_new_tab("https://gfdgd-xi.github.io/wine-runner-wiki"))
 easyHelp.triggered.connect(lambda: webbrowser.open_new_tab("https://www.bilibili.com/video/BV1ma411972Y"))
 buildHelp.triggered.connect(lambda: webbrowser.open_new_tab("https://www.bilibili.com/video/BV1EU4y1k7zr"))
 h5.triggered.connect(UpdateWindow.ShowWindow)
diff --git a/deb/opt/apps/deepin-wine-runner/package-script.zip b/deb/opt/apps/deepin-wine-runner/package-script.zip
index 5bbfae231360b4f427e56bb4901841048595289c..ae3de9f02e261e33a6cf566efcf6f033e73aab97 100755
GIT binary patch
delta 390
zcmaFAPU!tQp$TRzrYT;@(<lC76rTPsiJ5C+xEZr>x!1-C%v@+P(`UA`@J&9%r3R9p
z{F>_<n0~^27)-C?2?NoanR$7bzyd=2`@sTN_+LqY7|jPYwjb1Be7p<Y*rSgb%|Qyb
z|9{N*kr!Q7@DrmmST_6<V-(or?OVPu3V>PDkAGvF4U$}*`kj#xu2XaSq#ul2%pi&O
z`M(*r&;QNzHW0*{-tWtt4L0nrFLMl7!S<LyW>pBQC4_k&A6V8knK?!fZk*)g1TKN;
z=SrAW;X;t0nl4hxYzo%kQ_3vB2xi5XG4F%06e^hQ!K~>?mCUa|lI{Lg%-j8|Sk7~S
Ll`6Kf_z3|3E<A?I

delta 390
zcmaFAPU!tQp$TRzC*N2lPoMaUQF!{lBxbIO;bzQh9V|CaVCG`c-GeMMeP%lg-{eDF
zY9RT^uerW~=_lNW!SpJgFy_SztTr?A@-Tq~g!uP^=*?I7UrB%%%?CBMAJkxcybImf
zqmLQQK?=72f6Vxi7hP8H6QeU&HvAJ~6xihLTfQ&~fLYUze`A~tl3bqposkjl5zXzB
zelT(|gCyGL|7P4i|2NayK<0}xEvNVUGG~Jg`|Hab16Hs-CXiVb!fFX&-p2=)bxmfD
z5ri8jIXQt#VEVZdW>s{ziIg&%f;IS*G7B(*S@C7e`yecZ3TAsSYkE>8^DB^KyMGn)
RcK<4t^ITx1imfbuLI6s+lf?i4

diff --git a/deb/usr/lib/python3/dist-packages/WineRunner b/deb/usr/lib/python3/dist-packages/WineRunner
new file mode 120000
index 0000000..de01466
--- /dev/null
+++ b/deb/usr/lib/python3/dist-packages/WineRunner
@@ -0,0 +1 @@
+/opt/apps/deepin-wine-runner/API/Python/
\ No newline at end of file
diff --git a/key/UI/AutoConfig.py b/key/UI/AutoConfig.py
old mode 100644
new mode 100755
diff --git a/key/UI/AutoConfig.ui b/key/UI/AutoConfig.ui
old mode 100644
new mode 100755
diff --git a/key/UI/KeyAddGui.py b/key/UI/KeyAddGui.py
old mode 100644
new mode 100755
diff --git a/key/UI/KeyAddGui.ui b/key/UI/KeyAddGui.ui
old mode 100644
new mode 100755
diff --git a/key/UI/KeyAddKeyboardGui.py b/key/UI/KeyAddKeyboardGui.py
old mode 100644
new mode 100755
diff --git a/key/UI/KeyAddKeyboardGui.ui b/key/UI/KeyAddKeyboardGui.ui
old mode 100644
new mode 100755
diff --git a/key/UI/__pycache__/AutoConfig.cpython-310.pyc b/key/UI/__pycache__/AutoConfig.cpython-310.pyc
old mode 100644
new mode 100755
diff --git a/key/UI/__pycache__/AutoConfig.cpython-37.pyc b/key/UI/__pycache__/AutoConfig.cpython-37.pyc
old mode 100644
new mode 100755
diff --git a/key/UI/__pycache__/KeyAddGui.cpython-37.pyc b/key/UI/__pycache__/KeyAddGui.cpython-37.pyc
old mode 100644
new mode 100755
diff --git a/key/UI/__pycache__/KeyAddKeyboardGui.cpython-37.pyc b/key/UI/__pycache__/KeyAddKeyboardGui.cpython-37.pyc
old mode 100644
new mode 100755
diff --git a/key/desktop/deepin-wine-runner-keyboard.desktop b/key/desktop/deepin-wine-runner-keyboard.desktop
new file mode 100755
index 0000000..1aba0c6
--- /dev/null
+++ b/key/desktop/deepin-wine-runner-keyboard.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Type=Application
+X-Categories=System;Wine;
+Exec=@programPath@/key-get.py
+Icon=@programPath@/../deepin-wine-runner.svg
+Name=Wine Runner
+Name[zh]=Wine 运行器快捷键服务
+Terminal=false
+StartupNotify=true
+Keywords=exe;scr;
diff --git a/key/key-add-gui.py b/key/key-add-gui.py
old mode 100644
new mode 100755
index 4b87c11..37953c7
--- a/key/key-add-gui.py
+++ b/key/key-add-gui.py
@@ -14,6 +14,7 @@ class Check:
         try:
             bus = dbus.SessionBus()
             bus.get_object("com.deepin.daemon.Keybinding", "/com/deepin/daemon/Keybinding").List()
+            int("a")
             return True
         except:
             print("无法检测到 Deepin/UOS 快捷键服务")
@@ -30,7 +31,9 @@ class Check:
 
 class Click:
     def AddButton():
-        pass
+        os.system(f"'{programPath}/keyboard-add-gui.py'")
+
+    
 
 if __name__ == "__main__":
     app = QtWidgets.QApplication(sys.argv)
@@ -39,6 +42,10 @@ if __name__ == "__main__":
     ui.setupUi(window)
     # 连接槽
     ui.addButton.clicked.connect(Click.AddButton)
+    ui.startServer.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"nohup '{programPath}/key-get.py' &"]).start())
+    ui.stopServer.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/stop.sh'"]).start())
+    ui.setAutoStart.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/start-auto-server.sh'"]).start())
+    ui.setUnautoStart.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/stop-auto-server.sh'"]).start())
     window.show()
     threading.Thread(target=Check.CheckThreading).start()
     sys.exit(app.exec_())
\ No newline at end of file
diff --git a/key/key-get.py b/key/key-get.py
old mode 100644
new mode 100755
diff --git a/key/keyboard-add-gui.py b/key/keyboard-add-gui.py
old mode 100644
new mode 100755
diff --git a/key/list/KeyList.json b/key/list/KeyList.json
old mode 100644
new mode 100755
index b37ba25..fe51488
--- a/key/list/KeyList.json
+++ b/key/list/KeyList.json
@@ -1 +1 @@
-[["ctrl", "alt", "c", "'/home/gfdgd_xi/Desktop/deep-wine-runner/key/sendkeys.sh' b 'aa' 4"]]
\ No newline at end of file
+[]
diff --git a/key/replace.py b/key/replace.py
new file mode 100755
index 0000000..9a11ac1
--- /dev/null
+++ b/key/replace.py
@@ -0,0 +1,9 @@
+#!/usr/bin/python3
+import os
+import sys
+file = open(sys.argv[1], "r")
+things = file.read().replace(sys.argv[2], sys.argv[3])
+file.close()
+file = open(sys.argv[1], "w")
+file.write(things)
+file.close()
\ No newline at end of file
diff --git a/key/start-auto-server.sh b/key/start-auto-server.sh
old mode 100644
new mode 100755
index a5e01ef..226d344
--- a/key/start-auto-server.sh
+++ b/key/start-auto-server.sh
@@ -1,10 +1,18 @@
-#!/bin/bash
-# 使用系统默认的 Bash
-#################################################################################################################
-# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
-# 版本:2.3.0
-# 更新时间:2022年10月11日
-# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序
-# 基于 Bash 制作
-#################################################################################################################
-echo Flag!
\ No newline at end of file
+#!/bin/bash
+# 使用系统默认的 Bash
+#################################################################################################################
+# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
+# 版本:2.4.0
+# 更新时间:2022年10月11日
+# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序
+# 基于 Bash 制作
+#################################################################################################################
+programPath=$(cd "$(dirname "$0")";pwd)
+echo $programPath
+if [[ -f "/etc/xdg/autostart/deepin-wine-runner-keyboard.desktop" ]]; then
+	# 判断是否自启动,已经自启动就不再考虑
+	echo "文件已存在,取消"
+	exit 1
+fi
+sudo cp -rv desktop/deepin-wine-runner-keyboard.desktop /etc/xdg/autostart/deepin-wine-runner-keyboard.desktop
+sudo ./replace.py /etc/xdg/autostart/deepin-wine-runner-keyboard.desktop @programPath@ "$programPath"
\ No newline at end of file
diff --git a/key/stop-auto-server.sh b/key/stop-auto-server.sh
old mode 100644
new mode 100755
index a5e01ef..f2086b7
--- a/key/stop-auto-server.sh
+++ b/key/stop-auto-server.sh
@@ -1,10 +1,17 @@
-#!/bin/bash
-# 使用系统默认的 Bash
-#################################################################################################################
-# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
-# 版本:2.3.0
-# 更新时间:2022年10月11日
-# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序
-# 基于 Bash 制作
-#################################################################################################################
-echo Flag!
\ No newline at end of file
+#!/bin/bash
+# 使用系统默认的 Bash
+#################################################################################################################
+# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
+# 版本:2.4.0
+# 更新时间:2022年10月11日
+# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序
+# 基于 Bash 制作
+#################################################################################################################
+programPath=$(cd "$(dirname "$0")";pwd)
+echo $programPath
+if [[ ! -f "/etc/xdg/autostart/deepin-wine-runner-keyboard.desktop" ]]; then
+	# 判断是否自启动,已经自启动就不再考虑
+	echo "文件已存在,取消"
+	exit 1
+fi
+sudo rm -rfv /etc/xdg/autostart/deepin-wine-runner-keyboard.desktop 
\ No newline at end of file
diff --git a/package-script.zip b/package-script.zip
index 5bbfae231360b4f427e56bb4901841048595289c..ae3de9f02e261e33a6cf566efcf6f033e73aab97 100755
GIT binary patch
delta 390
zcmaFAPU!tQp$TRzrYT;@(<lC76rTPsiJ5C+xEZr>x!1-C%v@+P(`UA`@J&9%r3R9p
z{F>_<n0~^27)-C?2?NoanR$7bzyd=2`@sTN_+LqY7|jPYwjb1Be7p<Y*rSgb%|Qyb
z|9{N*kr!Q7@DrmmST_6<V-(or?OVPu3V>PDkAGvF4U$}*`kj#xu2XaSq#ul2%pi&O
z`M(*r&;QNzHW0*{-tWtt4L0nrFLMl7!S<LyW>pBQC4_k&A6V8knK?!fZk*)g1TKN;
z=SrAW;X;t0nl4hxYzo%kQ_3vB2xi5XG4F%06e^hQ!K~>?mCUa|lI{Lg%-j8|Sk7~S
Ll`6Kf_z3|3E<A?I

delta 390
zcmaFAPU!tQp$TRzC*N2lPoMaUQF!{lBxbIO;bzQh9V|CaVCG`c-GeMMeP%lg-{eDF
zY9RT^uerW~=_lNW!SpJgFy_SztTr?A@-Tq~g!uP^=*?I7UrB%%%?CBMAJkxcybImf
zqmLQQK?=72f6Vxi7hP8H6QeU&HvAJ~6xihLTfQ&~fLYUze`A~tl3bqposkjl5zXzB
zelT(|gCyGL|7P4i|2NayK<0}xEvNVUGG~Jg`|Hab16Hs-CXiVb!fFX&-p2=)bxmfD
z5ri8jIXQt#VEVZdW>s{ziIg&%f;IS*G7B(*S@C7e`yecZ3TAsSYkE>8^DB^KyMGn)
RcK<4t^ITx1imfbuLI6s+lf?i4