First files added

This commit is contained in:
BarsTiger
2023-02-01 17:03:14 +02:00
commit 2a189cc689
19 changed files with 1446 additions and 0 deletions

5
.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
/.idea/
/venv/
/build/
/dist/
/tests/

15
D0CXUN7R4C3.py Normal file
View File

@@ -0,0 +1,15 @@
import sys
from PySide6 import QtWidgets
from gui.gui import Ui_MainWindow
from gui.modules.initialize import setup_ui
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
setup_ui.on_load(ui, MainWindow)
MainWindow.show()
sys.exit(app.exec())

5
README.md Normal file
View File

@@ -0,0 +1,5 @@
![DOCXunTraceOpenGraph](/gui/img/docxuntraceog.png)
# DOCXUNTRACE
Ultimate and powerful util to spoof .docx (and other .*x MS Office files) private properties, such as author name,
creation and save date, words, pages and other

0
gui/__init__.py Normal file
View File

36
gui/gui.py Normal file
View File

@@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'gui.ui'
##
## Created by: Qt User Interface Compiler version 6.4.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide6.QtCore import * # type: ignore
from PySide6.QtGui import * # type: ignore
from PySide6.QtWidgets import * # type: ignore
from . import images_rc
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(800, 460)
icon = QIcon()
icon.addFile(u":/img/img/icon.ico", QSize(), QIcon.Normal, QIcon.Off)
MainWindow.setWindowIcon(icon)
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QMetaObject.connectSlotsByName(MainWindow)
# setupUi
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"D0CXUN7R4C3", None))
# retranslateUi

26
gui/gui.ui Normal file
View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>460</height>
</rect>
</property>
<property name="windowTitle">
<string>D0CXUN7R4C3</string>
</property>
<property name="windowIcon">
<iconset resource="images.qrc">
<normaloff>:/img/img/icon.ico</normaloff>:/img/img/icon.ico</iconset>
</property>
<widget class="QWidget" name="centralwidget"/>
</widget>
<resources>
<include location="images.qrc"/>
</resources>
<connections/>
</ui>

5
gui/images.qrc Normal file
View File

@@ -0,0 +1,5 @@
<RCC>
<qresource prefix="img">
<file>img/icon.ico</file>
</qresource>
</RCC>

586
gui/images_rc.py Normal file
View File

@@ -0,0 +1,586 @@
# Resource object code (Python 3)
# Created by: object code
# Created by: The Resource Compiler for Qt version 6.4.2
# WARNING! All changes made in this file will be lost!
from PySide6 import QtCore
qt_resource_data = b"\
\x00\x00\x22\x02\
\x00\
\x00\x01\x00\x01\x00\x00\x00\x00\x00\x01\x00 \x00\xec!\x00\
\x00\x16\x00\x00\x00\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\
\x0dIHDR\x00\x00\x01\x00\x00\x00\x01\x00\x08\x06\x00\
\x00\x00\x5cr\xa8f\x00\x00!\xb3IDATx\xda\
\xed\x9dyxdU\x9d\xf7?\xe7\xdeZ\x92J\xaa\xb2\
vz\xdfYzakzX\x1a\x11h\xa0eq\x01\
\x01u\x18q\xd4Q\xc7mF\x1d\xe7\xd5\xf7\x1dud\
\x9c\xf7uy\x1e\xc7Wgt\xf4U\xc6}C\x18g\
\x04\x05\x05\x91\x16\x11\xe8f\xb3\xe9\xa6\x17\xe8\x85\xde\xb7\
t\xf6\xa4R\xdb\xbd\xe7\xfd\xa3\xaa+U\xa9J'i\
\xe8$\x95|?\xcf\xd3KR\xf7V\xdd:\xf7\xfc>\
\xf7\x9c\xdf9\xf7\x5c\x10B\x08!\x84\x10B\x08!\x84\
\x10B\x08!\x84\x10B\x08!\x84\x10B\x08!\x84\x10\
B\x08!\x84\x10B\x08!\x84\x10B\x08!\x84\x10B\
\x08!\x84\x10B\x08!\x84\x10B\x8c)f\xb2\x7f\xc1\
\x1fm\xf2Y\xd2l\xf8\xca:\xcb\xba\x83\x96\xe6j\x08\
\xba:\xf1\x13\xa6\xfa%\x13\xc4w\xef$\x10\x89\xb0\xfe\
S\x8bU$\x12\xc0+\xc3\x1b~\xe6\xd1Rc\xd8\xde\
ny\xe4Q\xcb\xff~\x9bS}\xd7V[{F\xa3\
i1\x86\x86\xc9\xfc\xdd+\xaa\xfe\xa5\x93\xc9\xc4\x81\xfd\
\x9b\x0f\x1d\xeb\xebmk\xefe\xf7\xb7.U\xa9H\x00\
'\xcf\xdb~\xe1sf\x93\xe1\xc1]>\xf7\xfd\xb9\xe3\
\xdcv\x8f]\xf4R\x87\xbd<\x91aMw\x8a\xc5@\
\xb31\xd4\xe9\xd4O\x8c\xfa\xe7\xc7\xe3}\xec}\xf1\x87\
\xb3\xe8\xfc|\xaf\x0dw\xa7-\x92\x80\x04pr\xbc\xee\
N\x9f\x05\xf5\xf0\xb5?\xf8\xbc\xf6l3wg'\xb7\
\xf5\xa4xS\xdac\x99o\x09\xebtO\xbc\xea\x97\xe9\
\xeb%\xbe\xeb\xc5\x9e:\x93\xfc\xfa\xbcZ\xefs\xdd)\
G\x12\x18C\x9c\xc9\xf2En\xba\xdbcF-|\xed\
\xdaNV,4\x97?\xdf\xca\x1dmq>\x93\xcc\xb0\
B\xc1?a\xe3\x1f\x00\xcf\x12\xedL;\x1f\xd8\xdb\x17\
\xf8D,\xe4\xc7\x82\x06\x16\xfc\xf5\x1fU>c\xc0\xa4\
H\x87\xad\xb8\xc3cN\x14\xbe\xfbz\x87\xff\x9e\x1d~\
\xe3\x91>\xbe\x9a\xf4\xb8p\xb2|\xbf\xc9+\x00\x83\x9f\
J\x91\xeah\xc3\xf7m8\xe5\x9bs\x93\xbe\xa9j\xa9\
\xf6\x9e\xcc\xf8&\x19[\xf9Wt>\xf3\x1d\x95\xd3)\
dR\xb4\x00\x02\x0e\xac\xdd\x03\xe7|\xcb_\xdd\xda\xc7\
\x173>\xa7\xe9\xd4V\x1e\x9e%\xda\x99RK@\x02\
\x18\x05\xd7\xfc\xc4'\xe0\xc0\xe9\x8d\x9c\xd1\x91\xe0\x9f\xd2\
>\x1aK\x92\x04\xc4T\x11@m\x08\xdez\xb6\x13\xdc\
\xdb\xcd\xdb\x13\x19.\xd1)\x95\x04\xc4\x14\x11\xc0\xdb\xee\
\xf1\xd9\xddi\xf9\xf1&{A<\xc5m@@\xa7T\
\x12\x10SD\x00\xb10\xdc\x7f\xab\xe3\xb6\xf5\xdbk\xd3\
>su:%\x011\x85\x04\xf0\xd8>\xcb-\xff\xe9\
\xd7\xc7\xd3\xacF3\xfb$\x011\xb5\x04\x10v\xa1\xbe\
\xca,\xca\xf8,\xd0\xa9\x94\x04\xc4\x14\x13@_\x1a\x8e\
\xf4\xda\xc5@\xb3N\xa5$ \xa6\x98\x00\xda\xe2p\xa0\
\x87:\xcf'\xa8S)\x09\x88)&\x80\xb4\x0fI\x8f\
\x80U\xff_\x12\x10SO\x00B\x12\x90\x04$\x00!\
\x09H\x02\x12\x80\x90\x04$\x01\x09@H\x02\x92\x80\x04\
$\x01!\x01\x08I@H\x00B\x12\x10\x12\x80\x90\
\x04\x84\x04 $\x01!\x01\x08I@\x02P\x11\x08I\
@\x02\x10B\x12\x90\x00\x84\x90\x04$\x00!$\x01\x09\
@\x08I@\x02\x10B\x12\x90\x00\x84\x90\x04$\x00!\
$\x01\x09@\x88W\x84q\x5c\xccM\x12\x90\x00\xc4x\
b-\xc6q0\xe3h\x81\xa9.\x01\x09@\x8c+\xc6\
q\xc1\x19\xdf5]\xa7\xb2\x04$\x001\xbe\x02p]\
\x9cP\x18\xac\x95\x04$\x001\x15\x05\x10\x88\xd4L\x88\
c\x99\x8a\x12\x90\x00\xc48\x1b\xc0\x10\x88F1\xae+\
\x09H\x00b\xcaa-\xc1\x9aZ\xdcH\xcd\xb8w\x03\
\xa6\xa2\x04$\x001\xee\x98@\x80\xaai-\x13\xa6\x15\
0\x95$ \x01\x88\x09A\xb0\xae\x9ePC\xd3\x84:\
\xa6\xa9 \x01\x09@L\x08\x8c\xe3P=s&\xc1h\
t\xc2t\x05\xa6\x82\x04$\x001q*c(Ld\
\xce<\x02\xd1\xd8\x84:\xae\xc9,\x01\x09@L(\xdc\
\xea\x08\xb5\xf3\x17\x12nl\xc68\x13\xa7zNV\x09\
H\x00b\xe2U\xcap\x98\xc8\xbcyDf\xce\xc6\x0d\
\x84\x98(O\x7f/\x94@4\xe0\xc5\xa2A\xc3\xd9\x7f\
\xbb\xbe\xa2\xcb:\xa0\xea&&\x22\xc6q\x09\xb7L\xc7\
u\x83\xa4\x8e\x1d\xc3K'\xf1<\x0fk}`\xfcr\
\x04\x1eD\xbb\xd2\xee\x07\x8cqXR\xe7}\xae#\xe5\
uK\x00B\x9c\x12\x0b\x18\x02\x8d\x8d\x18\x0b^W\x17\
\xd6\xda\xdc\x1f\x7f\x04\xfb\x8e\xfa\x85\xd144\xa2i\xc7\
\xbe;a\xfb\x1e\xf7\x5c\xf7^\x09@\x88S\x85cp\
\x1b\xeb\xb1\xbe\x8f\xdf\xdb\x9b\xbds\xd0\x9cL\xe0g_\
\xb2\x85\x1b\x15\xffS\xb6]\x91\xdf\xc7\x14\xff\xd6\xe0\xd7\
fH\xd4\xfa\xa6\xb2CH\x02\x10\x13\x1f\xd7\xc5mj\
\x04\xeb\xe3\xc7\xfb\x07\xa2\xd2\x9c\xc8\x00\xb6$\xc2\x87\xea\
8\xd8\xa2]M\xd1+\xb6\xe0\xe7\x22Q\x18,\x06;\
Q\xf2\x13\x12\x80\x98\xd4\x98@V\x02\xd6\x1e\xc3&\x92\
`\x86i\x09\x14\xbe\x98\x0fl[\xfeu\x86\x93\xc9\xc0\
\xcf\x03\xb20\xd9?\x15\x8eF\x01D\xe5H \x18$\
\xd0\xd4\x84S\x15\xce\xc6\xa6a@\x04\xb9\xff\x9b\xe3\x81\
i\x0c\xc6\x19\xf8\xff\xc0\xb6\xa6d\x9fl \x9b\xdc?\
\xb9\x17L\xe9\x1f\x9b\xdf\xa7p\xb7\xca\x96\x80\x04 *\
K\x02\xa1\x10nc#&\x14\xccE\x22e\x82:\xfb\
;\x8b\xc9\xd6pC\xb1\x18\xca\x8a\x00\xec\xf1\x9fK\xf6\
\x19$\x0bg\xd0{U0\xea\x02\x8c\x03\xe31\x88U\
\xf9\x8d\xd5\x82\xef\x12\x0e\xe364\xe0\xb5\xb7c=\xaf\
\xe8*\x5cR\xb6\xb9\xd7l\xd9\xd2(N$\x18S\xbc\
\x9d\x1d\xaa\xf4\xf2\xad\x84\xf1\x1c\x90\x94\x00*\x0a\xdff\
+K\xd8\x05w\x1c\xa21c!\x95\x19\xb8\x80U:\
Nu54\xd4\xe3uvb}\xbf$\xb0MQ\x7f\
}H\x95\x14\xfdds\xc1m\xb0\xc5\xa3\x05e\xc8v\
\x07\x8c5J\x02\x8a\xe1\xb0\xc0i\x0dp\xcdb\xc3\x19\
\x8dP\x1d\x1c\xfbc\x88\xa7\xe1\xf9V\xf8\xcdN\xcb\x81\
\xeeI\x91\xbf\xc2\x89\xd4`}\x8b\xdf\x9d\x9d#P\x18\
\xd8E?\xe5[\x016\xaf\x87\xc1\xe1]n$\xa0\xb8\
\x9d0\xa0\x85l\xbe\xc0@\xa5G\xbf\x0406\xc1\x7f\
\xf5B\xc3?^jX>m\x9c\x8f\xc5\xc2-K\x0c\
\xb7?\xe2\xf3\xe4\xc1\xc9!\x01\xb7\xa6&;<\xd8\xdb\
\x83\xb5\xa5c\xfa\xc5\xcd\xfar\x11;\xa8;0hn\
@\xf9m)3dX\x99(\x09x\x0a\xf1-,n\
`B\x04\xff\xf1`\xb8`\x16|\xea\xd5\x0e-\x13g\
\x01\x9e\x97\xfd\xa5\xdc\xda(NMm6\xd8\x0bF\x03\
\xb2\xa3\x00\xd9\x16\x80)\xc9\xe8\x17'\xf8\xb2\xdb\x0ct\
\xef\xed\xa0D\xa1\x1d2\x81\xa8Q\x001\x04\x16\xb8n\
\xf1\xc4\x08\xfeB.\x98\x05\xab\x17\x18\xfc\xc9 \x80\x02\
\x09\x98\xeaHQP[\xb2\xcd}k\x0af\xf3\xe5\x03\
\x992\xc3|\xa6 \xd0)\x92\xc3\xc0HA\xd1~\xb6\
\xd2\x05\xa0.\xc0)$\xec\xc2i\x8d\x13\xef\xb8\x82\x0e\
\x9c\xd949\xba\x00y\x1c\x077\x96]G\xc0&\xfb\
\x19\xdc\x8f\xcf_\xea\xecq9\x0c\xee\x0e\x98\x82V}\
\xf9i\x86f\xf0\x0f\x93\xa0\x00%\x80S\x84%\x9bm\
\x0fO\x9ce\xee\x8aO\xbc\x99\x5cC\x83\x90\xbd\x83\xd0\
\x8d\xc6\xf0\xb0\xd8Tr@\x01\xf9\xa0\x1e\x08\xda\xc1\x09\
@S\x18\xd8\xd6\x94\x99\xfb_\xf0\x1e\xb9\x99@\x86\xca\
\x97\x80\x04p\xaa*#\x90\xf2\xe0P\xef\xc4<\xbeC\
}\xe0\xd9\xac\x08&U\xb9\xbb.nm\x14\xaf\xc7b\
3\xe9\x13\x04\xf5\x80\x06La`\xc3\x09:\xc6\x83\x92\
\x80\x06L\x85w\xa3\x94\x038\x85x\x16\xfe\xb0\xc7\xd2\
\x99\x98X\xc7u\xa0\x07\x9e\xd8o'\xc5|\x80\xb2a\
\x1a\x08\xe2Fc\x98@` [o\xca\xfd\xe1\x843\
\x09\xcbO!.\xf3G\x02\x10e\x0b\xd7\xc0\x13\x07\xe0\
?6X\x92\xde\xc48\xa6x\x1a\xee\xf8\x93\xe5\xf9\xd6\
\xc91!\xe8\x84\x12\xa8\x89b\xdc\xc0@P3T\xe0\
\x0f\x0eh3\xc4\xbd\x06\x94\x97H\x05\xa3.\xc0\xa9\xac\
\x84@2\x03_}\xca\xd2\xda\x077-1\xcc\xaf\x1b\
\x9f\xc0\xf3,\xech\x87;\xb7X\xeey\xd1\x92\xf1'\
_\x0e\xa0\xa4\xfcCa\x1c,^\xbc\x17|\x7fPG\
\xbf\xdc\xd9\xb2'\xe8.\x94\xdfC9\x00q\xe2Jb\
\xa0/\x0d\xdf~\xce\xf2_/X\x1a\xaa 0\x0e\x06\
Hy\x96\xf6\x04t'\x80I\x98\x00\x1c\x0a'T\x05\
\x16\xbc\xfe^\xc0gD\xab\x89\x18\x86\x90Ea\xba0\
7\xa7\xdaJ\x00b8\x09\xe4\xfe\xed\xe8\x87\xf6\xfe\xe3\
\x15i|\x8ecR\x0d\xfd\x8dT\x02\xe1*\xac\xf5\xf1\
\x93q\x18\x9c\xf0+\xf9\x99\x91\xdd;`\x86\xdbV\x02\
\x10\x83\xab\xcf\x14\xba\xf2N4\xdcp5`\xf1S\xfd\
C\x07u\xfe\xc7\xf2w\x0b\x96\x9c\xcc\xe2\xa6\x82\x04 \
\xc4\x84\xc5\x18\xdcp$+\x81t\xf2\xc4\xc1]\x22\x82\
RY\x98I\xd2\x8f\x92\x00\xc4\x94\x92\x80\x13\x8edW\
\x16\xf6Re\x02\xbbp\xa2O\xc1\xaf\xcc\xd0\xef\xa7\x16\
\x80\x10\x15\xe5\x00\x07\xb7\xaa\x06?\x09\xbe\x97\x1e\xfcj\
\xe9\x0e\xceP&P\x0b@\x88\x8a\x95\x80\x13\x8a`S\
}X?\xc3\xd0\xfd\xfca\xe40\x09r\x00\x9a\x08$\
\xa6\xa6\x04\x1c\x177T\x83q\x02e&\xfa\x14\xc4\xb5\
\x19j\x81P3\x19\xe2_-\x80\xb1\xc2\x92[\x16l\
\xb2\xdc\x82{\xaa\x02\xf3\xf8\x9a\x9bc&\x81\x08^:\
>\xe8iC\xd9\xdb\x81m\xc9]B\x85[\xe4\xb6S\
\x0e@\x0c\x87o!\x1a\x82\xf3g\xc2\xbc\x98!\xe0T\
\xfeb\x92\xafx0\x92\x9d\xa6\xf3R\x87\xe5\xd9\xc3\xd0\
\x9b\x1a\x9b\x19\x93\xc6\x09\xe0\x04\xab\xf13\xfd9\x09\xe4\
\xee\xfb\x1b\xf6\xean0\xc5\xcf\x0d\x91\x00D\xf9\xe0?\
\xb3\x09\xfe\xfeb\xc3\xd5\x0b\x0d5\xc1\xa99\x19gD\
X\xe8M\x1b~\xbb\xcb\xf2\xc5u\x96\x1d\xedc#\x01\
\xc7\x09B\xc0\xe2g\x12\x05\xeb\xfeQ\xb0\xb0h\xf1r\
a\xc7_\xcd\xdf[ \x01\x88\xb2\xf5\xd9\xc2\xf4\x1a\xf8\
\xcce\x865\x8b\x14\xf5\xc3b\xa0.\x0c\xb7,5D\
\xc3\xf0\xe1\x07,\xc7\xe2c\x13c\x8e\x13\xcaJ\xc0K\
\x96\xae&l\xcd\xd0\x09A\xdd\x0d(\x86\xc2\x07\xaeZ\
h\xb8b\xbe\x82\x7f\xb4\x5c\xb9\xc0\xf0\x9aEc\xbbl\
\x99\xe3\x84q\xdcp~\x090[\xf6\x09Ce\x1eF\
\x22\x01\x88r\x04\x1dX1\x1d\x82\x13tU\xa0\x09_\
v3\xc6\xbe\xec\x1c'\x8cqBEO\xfc\xb1%O\
\x09*\x0c~\xb5\x00D\x19,\x10p \x16VY\x9c\
,\xd1\x10\xe3\x920u\x9d\x10\xc6\x09\xe6\x83\xde\xe4\x9e\
\x0bh\x06-\x10\xaa\xf5\x00\xc4\x90\x18 \xe3CWR\
eq\xb2t& =.\xeb\x16\x18\x1c\x13\xc67\x00\
\x99!\x9e\x1249\xbauj\x01\x9cB\xd2\x1e<s\
(\xbb6\xa0\x18\x1dI\x0f\x9e:\x98\x95\xe8x`0\
8\x840\x04\xf2\xcb\x84\xdb\xa2e\xc1\xf5t`1\x5c\
\xe1\x1ax\xe8%\xcb\xafwh\xd4\x7f\xb4\xdc\xbf\xc3\xf2\
\xd0\xee\xf1]\xb7\xd0\xe0\xe0\x10\xc2\xc1\x1d\xf4da\xb2\
\xcf\x04\xc0X=\x1dX\x0c]\x81\x0c\xb4\xf5\xc3\xed\x7f\
\xb0\xf4\xa4\xe0\xda\xc5\x86\xda\x90\xe6\x01\x0c\x85\xb5\xd0\x99\
\xcc\x06\xff\xbf=\x99]Lu\xbc\xd7-4886\
\x84gR\x18S\xf8\x10\xd2\xdc\x94\xe0\x0a/s\x09\xe0\
\x14\xe3\x18\xd8\xdf\x0d\x9fXk\xf9\xfeF\xcb\xfc\xba\xec\
L@QJ\xc6\x87]\x9d\x96\x17\xda \x91\x998\x8b\
\x96\x1a\x1c\x5c\x1b\xc43i\xec\xa0u\xc0\xd5\x02\x10\xc3\
W \x03\xf1\x0c<{\x18\x9e9\xa4\xee\xc0pe5\
\x11\x1fan\xac\x8b\xe3\x83\xeffr\x12\x98\x1c\xcfY\
\x97\x00\xc6\xaa\x021)\xd6\x8f\x98\xd28\xd6\x05\x1f\xfc\
@&wRu;\xb0\x10SK\x02\xbe\x8b\xe3\xb9\x03\
\x81\xaf.\x80\x10SL\x02^\x00\x07\xab%\xc1\x84\x98\
\xba\x12pp\x8d\x8b[\xe1!$\x01\x08qR\x18\xf0\
\x1d\xab\x1c\x80\x10\xa2bQ\x0b`\x0c\xf15\x028,\
S\xf5\xe9E\x12\xc0$\xc6Zp\x1c\x98U\x03\xcd\x11\
4\x11h\x88\xc0O\xfbp\xb8\x0fZsO\xf0\x92\x08\
$\x80I\x11\xfc\xb10\xbc\xfd\x1c\xc3\x9b\x97\x19Zj\
4\x15`\xc8\xb2\x02\x0e\xf4\xc0\xcf6[\xee\xdcb\xe9\
JH\x02\x12@\x85W\xe8\xaa |l\x95\xe1=+\
4\x05x$4U\xc3\xf2f\xc3\x9c\x18|\xf61K\
\x22#a\x9eJT%O!\xbe\x85W\xcf\x85\xb7\x9e\
\xa5\xe0\x1f\x0d\xae\x03\xb7\x9dm\xb8|\x9e\xf2&\x12@\
%Wd\x03\x97\xcd3Z\x15\xe8$\x88\x86\xe0\xe2\xd9\
\x06W\x97\x7f\x09\xa0\x12\xb1@\xc8\xcd&\xfd\xc4\xc9\xd1\
R\x93]\x13P\x8d\x00\x09\xa0\xe20d\x9b\xaf\x89\x8c\
\xca\xe2dI{\xd92T#@\x02\xa8H\x92\x1e\xbc\
\xd0\xa6r8\x19\xac\x85M\xad\x90\x92@%\x80J\xc5\
\x00\x0f\xee\xb2l8\xa2\xb2\x18-O\x1f\x82\xdf\xec\xb4\
\x1a\x06\x94\x00*\xb8p\x0d\xec\xea\x80O\xae\xf5y\xfa\
x\xea\xcc\x0e\x8bga\xfd\x01\xf8\xf4#>\x07\xba\
'\xc5\x9a\x1b\x13\x1a\xcd\x038\xc5\x18\x93\xad\xd0\xef\xbe\
\xcfg\xf5|\xc3i\x8dd\xd7\x05T\xd1\x14\xe1\x03\xf1\
4\xech\xcf.\xa4z\xa0G\xc1/\x01L\x22\x09\xec\
\xeb\x86\xefm\xb4\xb8\x0e\x04\xb42P)\x162\x16|\
?\x1b\xf8\x0a~\x09`RQX\xa9=\x8b\xc6\xb6\xca\
`\xc8N\x02\x12cX/U\x04BH\x00B\x08\x09\
@\x08!\x01\x08!$\x00!\xc4\xe4F\xa3\x00c\x8c\
U\xf6\xff\xc4\x18\x8d\x90J\x00\x93\x10\xcff\xef\x0e\x8c\
\x864\xc6=\x14\xbe\x85\xdeT\xf6q\xea*#\x09`\
R`\xc9\xae\x0bp\xf9|\xc3\xebO\x87%M\x86p\
@\xd3\x00\x06c\xc8\xde\xfd\xb7\xad\xcd\xf2\xf3m\x96'\
\xf6g\xa5)\x0fH\x00\x15\x8d\x03\xbcy\xa9\xe1\xd3\x97\
\x19\xa6im\x80a\xb9`\x96\xe1\xea\x85\x86\xcf\xfe\xd1\
r\xf7V\xab\x15\x81\xc6\xa0~\x8aS\x84oa\xd94\
\xf8\xd8%\x0a\xfe\xd10\xb3\x16\xfe\xe1U\x86\xf3\xa6k\
I0\x09\xa0\x821\xc0\xf5\xa7\x19\xe6\xc5T\x16\xa3e\
v\x14\xae\x5c\xa0\x0e\x80\x04P\xa1\x1c_\x12L\xc1\x7f\
\xf2\xcc\xab\x83\xb0\x96\x04\x93\x00*\x16\xa3u\xed\x85\x04\
0Uc\x9fd\x06\xf6t\xa9,N\x96\xdd\x9d\xd9e\
\xd5\xe4P\x09\xa0b\xf9]nq\x0b1:\xf6v\xc1\
\x03\xbb\xd4\xf8\x97\x00*\xb9p\x0dl8\x02\x9f\x7f\xcc\
r\xa8W\xe51RZ\xe3\xf0\x85\xc7-\x9b[5!\
\xe8T\xa3y\x00\xa7\x18\xcf\xc2\xdd[-\xfb{,7\
/1,i2\x04]\x95K9\x92\x99\xecD\xa0_\
n\x87G\xf7Z,j\xfeK\x00\x15\xce\xf1\xe7\x03<\
\xba\x17\xd6\x1f\xb0DCZ\xe9v(|\x0b=\xb9\xa9\
\xc0\xae\xee\x09\x90\x00&\x13\x8e\xc9>\xfe\xba\xbd_e\
q\x22\x8cA\x8f\x03\x93\x00&i\xe5\xce\xff%\xc4\xc4\
@I@!$\x00!\x84\x04 \x84\x90\x00\x84\x10\x12\
\x80\x10B\x02\x10BH\x00B\x08\x09@\x08!\x01\x08\
!$\x00!\x84\x04 \x84\x90\x00\x84\x10\x12\x80\x10B\
\x02\x10BH\x00B\x08\x09@\x08!\x01\x08!$\x00\
!\x84\x04 \x84\x90\x00\x84\x10\x12\x80\x10B\x02\x10B\
H\x00B\x08\x09@\x08!\x01\x08!$\x00!\x84\x04\
\x84\x90\x00\x84\x10\x12\x80\x10\xe3\xc2dx\xcekE\
?\x1d\xd8f2\xd8\xec\x13\xa5\x85\x18\xbbz\x07X|\
<\x9b1~\x85_C+Z\x00\xdd;^\x04\x08\x1a\
\xb5d\xc4\x18\x0b h|\xa7;\xd0\x13\x8e\xdb\x8a\x0e\
\xa1\xca\x16\x80\x17\xef\x050XUJ1\x96\x18\x8c\xf1\
M&\xdco<\xdf\x95\x00\xc6\xf3D\x14\xfe#\xc4\x98\
\xd5<s\xbc\xdaUv\xe5S\xd3Y\x88)\x8c\x04 \
\x84\x04 \x84\x90\x00\x84\x10\x12\x80\x10B\x02\x10BH\
\x00B\x08\x09@\x08!\x01\x08!$\x00!\x84\x04 \
\x84\x90\x00\x84\x10\x15I\x85\xdf\x0c$&\x13\xd6Rt\
c\xa7\xc9\xfd5\x9a\xdbml\xee}\x18\xf4>Z4\
B\x02\x18\x12\xdf\x1fT\xf3r\xb5\xc6qJk\x8do\
\x8f\xff5\xf4\xb6\xbeW\xe6\xfed\xc7\xe0\x98Q|~\
n\xfb\xb2\xaf\x8d\x10\xe3\x98|\xc5/{Lew\xca\
\xfdc\xccI\x05\xcd\x89\xbe\xcb\x90\xfb\xe4\xa2\xb6>\xe2\
R[\xe5\xe6\xcb2\x99\xf6\xe9\xe9\xf7\x88\xa7|0#\
{\x8f\xda\xb0C\xb4:@0\x90\xdd8\xe3Y\xfa\x12\
\x1e]\xfd\xde\xb0\xef!\x01L\xd1\xe0_\xbd\xbc\x8e+\
\x97\xc7\xf0\xfd\x5c}u\xe0\xe1\xcd\xdd\xac\xdd\xdcU\x1c\
\xd8\x16\xce\x99]\xc5\x0d\x174\x12p\x9d\x5c\xa0\xc0\xce\
C\xfd\xdc\xf5d;\x89\xb4%Z\xed\xf2\x8e\xcb\x9ai\
\x8e\x06\xf3W\xa2\x8c\xe7\xf3\x8b\xa7\xda\xd9\xb4?\x81S\
\xd0\xe9\xb2@\xd85\xdcrq#g\xcc\x8e\x94l\xbf\
\xfdH\x92\xb7\x5c\xd2\xc4\xe2\x99\xd5%W\xb5\xe1H\xa6\
=\xee~\xa2\x8d\xed\xad)be\x8e\xa9\x1c\x19\xcfg\
\xdf\xd1\x04[\x0e&\xd8z(AO\xd2/\xb8\xedu\
x\x1c\x037\xacl`\xc5\xa2\xda\xfc\xe7Xk\xf9\xcd\
s\x9d\xac\xdb\xd9W\x12|\xd6f\xf79oN\x15\xd7\
\x9dW\xcf\x95Kc,\x9eUM(\x90-\xa4\xd6\xce\
\x14/\x1c\xe8\xe7\xe1\xad\xdd\xfcjC'\x07\xbb2e\
\x03\xd8\xb703\x16\xe0\x86\x95\x0d\xacY\x16c\xc9\xdc\
\x08u\xb5\xd9\xaa\xdd\xd7\xef\xb1\xfbH\x82\xdfo\xeb\xe6\
\xd7\x1b:\xd9t \x81\x8f\xee \x97\x00\x0a\xa2\xf0\xca\
\xe51>u\xe3\xec\x92\x97\xd6>\xdfURc\xcf\x9e\
]\xcd\xedo\x9c\x8d\x1b\x18\x88\xe4G6ur\xef\xb3\
\x1d\xf4\xa7|\xa2U\x0e\x7fw\xed\x0c\x16\xb4T\x15\xed\
:\xbf1\xc4\x87~\xb8\x87\xfe\x8c\x1d\xa8|\x16\xc2\x01\
\xc3_\xbe\xaa\x895+\x1a\xf3\xdbz\x19\x9f\x9d\x07\xfb\
\xd9},\xc5;_\xdd\xcc\xe5g\xd7\x8f\xfak\xf5'\
<\xfe\xb4\xbd\x87\xedG\x92C\x1eS9Ri\x9f\xce\
x\x86'\xb6\xf5\xf0\xad\x87\x8f\xf2\xd0\xd6n\xd2\xfe\xf0\
\x01\xe3\xfb\x96\x95\x0b\x22|\xe9\xad\xf3X8\xa3\xba\xe8\
\xb5\xae\xde4\xeb\xb6\xf7\x82k\x8a\x82?\x122\xbc\xeb\
\xd2f>t\xfdL\x16\xcf\xac.y\xcf\xd9\x8d!\xce\
[T\xcb\xcd\x974\xf3\xce\x1d=|\xfe\x9e\x83\xdc\xbf\
\xb1\x0b\xaf \x80}\x0b\x97\x9fQ\xc3\xffy\xd3\x5cV\
\x9d\x19\xc3u\x07\x1di\x03\x9c1\xab\x9a\xd7\xach\xe0\
=\xab[\xf8\xf2}\x87\xf8\xf6\xa3\xc7\x8a\xcf\xc3\x14F\
I@\xc8_\xf9\x87\xfb\xdd\xf1\x8a\x9b\x1e\xd4\x9c\xf6\x06\
\xfd\x9c)\xd3\xdc\xbe\xf9\xa2&\xd6,\x8ba\xfd\xd2\xd7\
\xbcA\xbfK{\x16\x9b\xbb\x84\xfa\xfe\xc9\xb5\xffS\x19\
K\xb2\xe082#\xec\x02\x84\x82\x0e-u!n\xb8\
\xa8\x89\xef\xbe\x7f1\xef\xbb|\x1a\xc1aj\x89\xb5\x10\
\xadr\xf9\xf053J\x82\xdfZ[\xd2c\xb2@U\
\xc0\xf0\xb1kg\xf0\x85\xdb\xe6\x97\x0d\xfeB\x02\xae\xe1\
\xe23c|\xe3]\x0b\xb9ee}Q\xf0_\xb8 \
\xc2\xbf\xbfs!\x97.\xab+\x0d\xfeA,\x9cQ\xcd\
go\x9d\xc7\xad\x176b\xb4\x8aT\xb6lU\x04c\
C}m\x80\xf7_=\x9d\xc7v\xf4\xd2\xd6\xe7\x8d\xa8\
\x7fm\xad\xe5hO\x86C\x9d\xe9\x12I\x14\x12t\x0d\
\xd3\xa2\x81\xa2\xee\xca\x8b\x87\xfa\xd9z8\xf9\xb2\xda\xba\
-\xf5!>q\xd3\x1c6\x1f\xe8\xe7w\xdbz\xca\xe6\
D\x8e\x1f\xe7\x0d+\xea\xb9\xf1\xa2\xa6\x11\xbd\xaf\xb5\xf0\
\xbas\xeb\xf8\xc8kgQ\x1d.^R\xab'\xee\xd1\
\x9d\xf0p\x1dCS\xadK\xb0\xa0\xa55\xab)\xccg\
\xde4\x97m\x87\x13l\xd8\xd7O$\xe4\xf0\xc1\xabZ\
X>\xaf\xa6\xe8=\xf6\xb5&\xb8\x7fC'm}\x1e\
\xd7\x9dS\xc7y\x0bk\xf3\xe5\x1d\x8d\x04x\xffk\xa6\
\xf3\xeb\xe7\xbb\x86\xecRH\x00\xe2\x94\xb0\xfa\xec:n\
\xfa\xb3\x06\xbe\xf5\xfbV\xcc0\x060\x18zS\x96\x0f\
\xfdx/U\xc1\xfdCn\xe7\xf9\x96\xeb\xcf\x8a\xf1\x95\
w.$\x92\x0b&k\xe1\x9e\xa7\xda9\xdc\x9d\x192\
\xfd\x1dO\xfa\xfc\xe4\x8f\xad\xec\xefLc\x0c\x04\x1d\xc3\
\xaaE5\xacZ\x12\xa3*4\x10t\xd3\x1bB\xdc\xf6\
\xaaf\x1e\xdf\xd9G\xc2+m6\xfb\x16No\x09\xf3\
\xd1\xebgRS5\xfc\xfax\xd6\xc2\x8cX\x80\x8f\x5c\
?3\xdfO?\xfe\xfb\x877v\xf0\xe5\xfb\x0f\xf3\xfc\
\xa1\x04\x91\xa0\xe1\x8a%Q>x\xcd\x8c\xa2\x00?c\
N\x84w\x5c6\x8d\xbf\xff\xe9>\xea\x22\x01V-\x89\
\x15\xbd\xff\xb1\xee4\x7f}\xc7K\xfcvK7\x9eg\
\xb9\xf3\x8f\xc7\xf8\xee\xfb\x16\xb1\xf2\xb4h~\x9b%s\
\x22\x5c\xb8\xa0\x86_l\xe8\x9c\xf2\xc3\x03\x12\xc0\x18\x12\
\x0a:\xbc\xef\xaa\xe9\xac\xdd\xdc\xcd\xf6c\xa9\xe1/\xce\
\xd6\xd2\xda\x9d\x19z\x10\xc0Z\xc2\x01\x87K\xcf\x8c\xe6\
\x83\x1f`\xef\xd1\x04\xbf\xfcS\xe7\x09\x07\x0f\xe2I\x8f\
\xff\xf7\xe0a\x9e\xd9\x1d\xe7\xf8e\xb09\x1a\xe0\xf6\x1b\
g\xf1\x81kg\x16]\xed\xcf_TC,\xe2\xd2\xdf\
\x9d)\x8a\x97\xe3I\xcc\xf7]\xd9\xc2y\x8bjGT\
\x06\xd6ZV/\x89r\xfe\xa0\xed7\xed\xee\xe5C\xdf\
\xdf\xc3\x96C\x89\xfc\xf1l=\x98`_[\x8a\xef\x7f\
\xf04\x1a\xa3\xc1\xfc\xb6k\xce\xa9g\xc6\xfd\x87\xe9I\
\xfa|sm+\xb1\x88\xcb\xf1\xf5\xe1\xf7\xb6&x\xe4\
\xc5\x1e|\x0b\x8ek\xd8t\xb0\x9f\xdfn\xea.\x12@\
8`\x98\x16S\xd5\x97\x00\xc6\x81\xf3\x16\xd5\xf0\xf6W\
7\xf3O\xbf8\xc8H\xba\xe5'\xca\xc2\xfb\x16\xce_\
\x10\xe15\xe75\x14\xfd\xfe\x81\x8d\x9dl;\x92\xc4\x18\
\x86\xcc\xfa\x1b \xe0\x18p\x9d\xfc\xc8\xc4\xb1\xde\x0c?\
y\xbc\x8d\xbfx\xf5\xb4\xa2\x80\x8b\xd5\x04\x8b\x9a\xe2\xf9\
`\xf6-\xab\x97Fy\xdbe\xd3\xf2bH\xa5}\x82\
\x01\xa7\xec\x85\xd5\xe6\x82\xef\xaae\xc5\xad\x0c\x80_>\
\xdb\xc1\x96\xc3\x09\x9c\xc2D\xa1cX\xb7\xab\x8f\x9d\x87\
\xfa\x8b\x8eg\xe1\xb40g\xcf\xaa\xe27\x9b\xbb\xf9\xd2\
\xaf\x0e\x96|1\xc7)\x1e\xc2t\x9c\xd2r\xebO\xf9\
\xaa\x8c\x12\xc0\xd8c\x8c\xe1m\x97M\xe3\x97\x1b:Y\
\xbf\xab\xefe\xbdW\xd05\xdczq#3\x1aB\xf9\
\xdfu\xf4f\xb8k]\x1b\xa9\x8c\x8f\xe3\x8cr\xc5t\
c8\xdc\x93!\x91\xb1\x83\x02f )Y\x18D\xd3\
\xa2\x01>z\xfdL\xa6\xd5g?\x7f\xff\xb1$\xcf\xed\
\xee\xe3\xfa\x95\x8d\xe5\xdf?\x97,\x5c:\xa78\xe9\x97\
Hyl\xd9\xdf_\xd6R\xbdI\x9f\xaf>x\x84\xd3\
7\xf7\xe4e\xe6{>\xc7z\xb2\xdd\x9br\xc1\x9d\x9f\
\xf3``\xe5\xbc\x08\xd7\x9dS_\xb4\xcd\xae\xc3\x09\x9e\
~)\xae\xd9A\x12\xc0\xd8\x90H\xf9\xb4w\xa7\x99\xd5\
\x1c\x06`^K\x15\xefY\xdd\xc2\xc6}{F=\xbe\
_X\xd1\x97\xcf\xac\xe2u\xe7\x17_\xfd\xd7\xbf\xd8\xcd\
3\xbb\xe3\xc3\xe6\x18 \xd7:\xb0\x16\xdf\x9a\xfc\x9b^\
0?B]uq_\xfeXW\x8aT\xda/j\x89\
\xb8\x06\xdeu\xd94V\x17\x04\xd7O\xff\xd8JW\xd2\
\xe7\xb5\x7f\xd68T\xfc\x13\x0e9ya\x0c\x94\x8f\xe5\
`{\xaa\x5c\xfc\x93\xf2,?|\xbc\x0dl[\xd1k\
\x8e[:\xa9\xc7\xb7p\xf1\xe2\x1a\xae=\xb7\x1e\x0c\xd4\
\x06\x1d\xae9\xbb\x8e\xb3\x16\x0c\xe4\x10\xfa\x12\x1e_\x7f\
\xe00\xdb[\x93\x9a\x14$\x01\x8c\x0d\xddq\x8f\xbb\x1f\
=\xca_];\x93hu\xb6\xc8o\xbe\xa8\x89{\x9f\
n\xe7\xe1m='5\xd3\xcf\x01nZ\xd9\xc0\x82\xe9\
\x03W\xd3T\xda\xe7?\x9fl\xa7\xb3\xdf\x1b2c\x9f\
\xdf\xdf\x18\xa6\xd7\x07\x99\xdd\x1b\xc6q `\xe0\x92\xc5\
5|\xfc\x0d\xb3K\x92y\xeb\xb6\xf7\xd2\x19\x1f\x18\xb9\
\xf0}\xcb\xaaE5\xbco\xcdt\x02\xb9&\xfb\xe6\xbd\
}|sm+7]\xd4x\xe2\xcfuLI\xe6\xdf\
\xf3m\xaeIn\x86\xdcg\xa4V\x5c\xb5\xb8\x86\xdbo\
\x9eS\xf6\xe5\xbd\xad\x09\xfe\xe5\xde\x83|\xfb\x8f\xc74\
\x19H\x02\x18;\x1c\x03\xf7o\xecbvK\x15\xb7\xbc\
j\x1a\x90\x1b\x16\x5c3\x9dM\xfb\xfbG\x1d\xff\xbe\x85\
\x85\x8dA\xdexacQ+v\xf3\xde8\xbf\xde\xd8\
=\xa2\xa6m]\x8d\xcb\x7f\xbc\xff4R\xb9\xe6\xb2c\
\xa0!\xe2\x96\x04\xe7\x9e\xa3\x09~\xf2D\x1bi\xcff\
\xbb\x14\x16\xea\xaa]>r\xed\x0c\xe6\xe7&\x16\xa53\
>w<t\x84\x9dG\x92\xb8\xc3\x8en\x9cZN4\
m\xe2\xc0\xb1\x14\x9b\xf6\xf7\x93\xd4$\xa0\x81\xba\xa9\x22\
8\xf5\x18\x03\xedq\x9fo<t\x94\xd6\xce\x81\xa6\xee\
\xea\xb3\xea\xb9\xe9\xcf\x1aF\xdf\x0d\xb0\x96\xeb\xce\xadg\
\xf9\xfc\x82\xf1o\x0b\xf7>\xdd\xce\xe1\xee\xf4\x88\x9a\xb6\
\x8ech\xa9\x0b2\xa71\xc4\x9c\xc6\x10\xb3\x1aB%\
\xc1\xbf\xb75\xc9'\xef\xdc\xcbS\xbb\xe3\xf9\xab\xb0\xb5\
\x96\x9bV6\xf0\xfa\x0b\x06\xae\xf4\x8fl\xee\xe2\xc7\xeb\
\xda\xc1\xda\xb22\xcb\xce\xd3'\x9f\x91<e\xc1\x97\xcb\
\x19\xeckKr\xa0=\xc5\xc1\x8e\x14\xe9\xcc@\xb2o\
\xd5\xd2\x18?\xfc\xe0i\xbcu\x98V\xcaTB-\x80\
1\xc2q\xe0\xd1\x1d\xbd\xdc\xf9\xf81\xfe\xf6\xfaY@\
\xb6?\xfc\xee+[H\x8e\x22#m-\xb4D\x03\xdc\
zIS\xbe\xf9\x0d\xb0\xefX\x92{\xfe\xd4\x89\xef\x97\
f\xbdO\x86'_\xe8\xe6\x7f\xfcd/\x8f\xed\xec+\
\x0a\xe43\xa7W\xf1\xe1\xebf\xe4e\x11Ox\xfc\xf7\
\x93\xed\x84C\x0e3\x9b\xc3\xd4GJ\xe7\x024\xd4\x04\
\x98\xd5\x1c\xa2\xa7\xdf\xc3\xb7\x94\x9d\xd4\x94m8\xd8\xb2\
z\xb0\xf9\xbf\x06o_*\xb5\xbb\x9fl\xe7\xc1\xcd\xdd\
\x00\x84\x5c\xc3ug\xc7\xf8\xf8\xebg3wZ6\xff\
2\xa79\xcc\xa7n\x9e\xc3\xc6\xfdq6\xecOh\x22\
\x90Bs\x88@\x1bM\xc3\xdc\x8cl\x93t\xc6\xf2\xad\
\x87[\xb9\xe6\x9cz\xce\x98\x13\x01\xe0\xcc95\xa4\xbd\
\xd1\x08\xc0\xb2fy\x8c\x95\x8b\x8b\xc7\xd1\x7f\xb7\xa9\x93\
\xad\x87\x12\x98\x11\x06\xbf\xef[\x8e\xf5dHy\x96\xea\
\xa0\xa1\xb16X\x14T\x89\xb4\xcf\xb6\xc3\x89\xecxz\
\xee\xf7A\x07\xdeuy3\xe7.\x1c\xf8\xecp\xc8\xe1\
\xd3o\x9a\xc7?\xdc\x9c-\xaf\xe8\xa0\xfc\x811\x86\xbf\
{\xddL\xde\xbbf:\x9f\xfd\xef\x03\xdc\xb5\xbe\x8d\xae\
\xde\x0c\xe4\x12\xa2\x90\x1d\x1al\x8e\x06\x86,\xb7\x9a\xa0\
C`\x90W\xfa\xd36\xdf})\xa4'\xe1\xd3\x9d\x18\
he}\xed\xa1\xa34D\x02|\xe6-s\xf3\x89\xd1\
\xd3gUs\xf5Yul\xd8\xd7\xaf\x89@\x0a\xf5\xf2\
\xc1^\x1d(?\x00\xef\xba\x94d\xd8=\xcf\x8e\xac\x19\
o`\xeb\xe1\x04\xdf^{\x94\xcf\xde:\x9f@ ;\
^\x1d\x0a\x8c,j\xad\x85\xfaj\x97[W5\x175\
\xd7\xbb\xfa\xb2C\x7f\x89\xb4?\xe2\x84YW\x9f\xc7\xbb\
\xbf\xb1\x83\xa7\xf7\xf5\xb3tF\x98\xef\xbcwq\xbeO\
\x0fp\xf1\x92\x187\xadl\xe0\x9b\xbfo\x05\x93\x1dN\
t\x0d\xcc\xa8\x0b\x16\x97\x87\x93M&\x9e\x88\xfaH\x80\
\xfa\x08\xc4\xaa]\xe2I\x9f\x83mI\xce.\xc8\xcc\x87\
CNv(\xb3\xcc=\x03\x91\xa0\xc3\xedo\x98\xc1\xca\
\xc5\xd1\xec}\x11\x06\x92)\x9f/\xdew\x88\xb5/\xf4\
\x96-\xe3\xc1wp>\xb7\xbb\x8fx\xc2\xa7\xa6`t\
\xe3\xdc9\xd5T\x05\x1d\x92\xde\xd4\xce\x07H\x00@w\
o\xa6\xa4\xf5\xb9tz\x15\xb5a\x87\xde\x94\xc51\x03\
us\xe1\xb4*\xc2\x83\xee\x8ei\xeb\xcd\x90\xca\xd8\x11\
\x5cM\x0c\x9e\x85\x1f<\xde\xc6\x0d\x174r\xc9\xa0i\
\xac\xc3\x0b \x9b\xe5\xbetY\xf1~\xeb_\xeca\xfd\
\xae\xbe\x11\x0d\xfd\x0d\x04\x86\xe5Hg\x9aC\xed)\x8e\
v\xa5\xf9\xf9\xba6>\xfa\x86\x81;\x22C\x01\x87\xf7\
\x5c\xd9\xc2\x03\x1b\xbb\xd8\xdd\x91\xcd+$\xd2\x96\xdd\x1d\
\xe9\x93.g\xc7\xc9v\x19\xd6\xef\xea\xe3\x9a\x82\xb9\x02\
\xc1\x80\xc3egF\xf9\xf1\x13\xed\xf4gl\xbe\xc5a\
}\xcb\x8cX\x80\x1b.j\xe6\xb4Y\x03\xa3\x1d\x1d\xbd\
\x19\xfa\x7fq\x90\x15\x0b\x22\xbc~e#nn\x07\xc7\
\x81?l\xed\xe6\xb7\xcfw\x175\xed3\xbe\xc5\x1fd\
\xe8P@k\x03H\x00\xd9\x98d\xfb\xc1~z\x13\x1e\
\xb5\x05W\x88W-\x8bq\xd3\xf9\x0d\xdc\xfdt\xf66\
\xdf@\xc0p\xc1\xa2\x1a\xde\xbc\xaa\xa9\xb8e`\xe1\x99\
=q\xe2i\x7fD\xcdI\xc7\xc0\xe1\xae4\xff\xfe\xc0\
a\xce\x9d_StU:a\xf0\x03\xd5A\x87[/\
i\xa6\xaef\xe0\xb4\xa53>\xff\xb9\xbe\x8d\xf6\xb87\
\xf2\xe1\xb2\xe3_=\xb7T\x8e\xe7[~\xf8\xd81\xde\
xac\xd1\xdd|\xe7-\xac\xe5\xe6\x0b\x1a\xf8\xbf\x0f\
\x1e\xcd\x1f\xfc\x03\x1b\xbb\x18*\x95\xe7Y\xcb\xab\xcf\x8c\
r\xf5Yu\x05\xd2\x82\x07\x9e\xebd\xdd\xce^\x1e}\
\xa1\x07\x8c\xe1\xf7[\xba\xf9@W\x9a\xe6\x82\xd6\xc4\xf5\
+\x1by\xd3\xf3\xdd\xfc\xfc\x99\x0e\xfar\xeb\x10\xcc\xa8\
\x0b\xf27k\xa6\xb3`z\xf1m\xcc\x9b\xf7\xf6\xb1\xed\
H\x82k\x96\xc7\xf8\xc7\x1bg\x11(hA\xad]T\
\xc3\xb3/\xf5\xd1\xd6\x9b\x01\xc05\x86\x0b\x17\xd7\x96\x0c\
m\xee\xedH\x93H\xdb)?\x17h\xca\x0b\xc0\x18\xc3\
\xfa\xddq6\xee\xe9+\xba\x227F\x83|\xe5\x1d\x0b\
\xb8~E=\xdb\x8e$\x99U\x17\xe4\xaa\xe51\x16\x0d\
\xbau\xf5@[\x92\xb5[\xba\x19Mn\xdb\x18\xc3}\
\x1b\xbbx`C\x077\xadj\x1e\x99\x00|\xcby\x0b\
#\xac9\xb7\xbe\xe8\xf7\xdb\xf6\xc5yhs\xf7\xcb\xea\
\xcb:\x8ea\xd3\x81\x04?\xf8C+\x9f~\xd3\xbc\xfc\
[\xb9\xae\xe1\x9dW\xb4\xf0\xab\x0d\x9d\xbcp4\x85c\
\xe0\xb1\xed\xbd<\xf6BO\xf97\xf2,\x1f\xbbqV\
\x91\x00\xb0\x96\xfb\x9em\xe7k\xbf9\x02A\x07\xe3\x1a\
\x9e|\xa9\x8f\xfb\x9fi\xe7/\xaf\x9c\x9e\xdf\xac)\x96\
-\xef7\xacl`\xcb\xe1$\x91\xa0\xe1\xd23jY\
\xb1\xb8\xb6(\xd9\x99\xf1,?_\xdfNg\xdc\xe3\xd9\
=q\xf6\xb4&\x8bn'\xbedi\x8c\xcf\xdd2\x87\
;~\xdfJ{\xdc\xe3\x8d+\xeax\xef\x9a\x19Er\
\xecKx\xac\xdb\xde\x83o-\x8er\x00S]\x00p\
\xb4'\xc3\xbf\xfe\xfa\x10\xcb\xe6D\xa8/\xb8C\xad!\
\x1a\xe4-\x97N\x1br_\xcf\xb3|g\xed\x116\x1e\
\xe8\xc7qN<\x06=\xf83\xbb\xfa=\xfe\xed\x81#\
\xbcji\x8c\xe9\x83f\xc6\x95#\xe8\x1a\xderQS\
\xd1\xb4_\x80{\x9e\xee`OG\xfae7g=\x0b\
w>\xd1\xce\x9f_\xd2\xcc\x99\xb9\x04%\xc0\xb2y5\
\xfc\xc5\xaa&\xfe\xf9\xdeCXr\x09\xc1!\xee\xbb\xf7\
\xa1t\x1e\x80\xc9\xe6\x09(\x98\xb9\xd7\x97\xb6\xfc\xeb\x83\
G8waMQB\xb1!\x1a\xe4\xe6K\x9a\xb9\xf9\
\x04\xc7\xf9\xab\xa7\xda\xf9\xd1\xba60\x86\xdd\xed)~\
\xfch+\x9f\xbcyn~-\x80p\xd0\xe1\xaf\xd7\xcc\
\xe0\xa6UM\xa42\x96i\xd1@\xc9}\x0c\xbfy\xb6\
\x83\xb5\xdbzG\xd5e\x9a\xach\x1e@. \xef\xf9\
S\x17\x9f\xb9{\x1f\xad]\xa9\x11\xed\x93H\xf9|\xfd\
\x81C|\xf9\xc1\xa3d\xbcA\xef7(\x1aM\xe1\x12\
@\x05\xdb<\xb1\xab\x8f\xbb\x1e?VzR\x9c\xe2\x04\
\xa4oa\xd9\xcc*n\xbc\xa0x\xfc\xfaP{\x92_\
<\xdb1\xa2EC\x86;&\xc7\xc0\xf6\xd6$?}\
\xecXQ2\xce\x18x\xfb\xe5-\x9c;\xa7z\xc8E\
R\xca\xbf\xef\xf1\x9fK\x83\xcc1\xf0\xec\xbe~\xfe\xf6\
{\xbb\xf9\xd3\xce\xde\x91\x09\xca\xb3\xdc\xbb\xbe\x8dO\xdc\
\xb5\x8fc\xbd\x1e\x8e\x81\x8c\x07_\xf9\xedQ\xbe\xb3\xf6\
h\xf1\x82'\x06\x9a\xa3Af5\x84\x8a\x82\xdfZx\
\xf0\xd9\x0en\xff\xf9~\xda\xe3\x9en\x05@-\x80\xe3\
\xf5\x85\x94o\xf9\xfa\xc3G\xd9q$\xc1{\xafj\xe1\
\xa23c4D\xdc\xa2\xfe\xa5\xef[z\xfa=\xb6\xee\
\x8f\xf3\xed\xb5G\xb9\xeb\xc9\x0e\xba\x93~\xd1\xd5\xd7\xf3\
\xe1PG\x8a\xea\x90\x93\x1fBk\xcb\x0d\xb7\x15\xd68\
Cv\xd5\x9eo>\xdc\xca\x05\xa7E\x997-\x8c\x9f\
\xdb$\x91\xf4\xb3\x0ba\xe6p\x0d\x5c\xb1$\x8a\x130\
\x1chOe3\xf2\x8e\xe1\xde\xa7:rC\x7f'\xae\
\xc9#=&\xcf\xc2O\x9ehc\xf5\xf2:N\x9f]\
M.\xe9N \xe8\xb0\xe6\xac\x18\xcf\x8d`\xd6bw\
\xbf\xc7\xc1\x8e\xd4\xc0\x8d;\xd6\xd2\x9b,]S\xcc1\
\xf0\xe8\x8e>n\xfb\xfa\x0e\xde\x7f\xf5t^w~\x03\
3\x1aBEw\x09Z\xdf\xd2\xdd\xef\xb1\xed@??\
z\xec\x18?[\xd7Fk.\xf8\x8f\xcb\xa6#\xee\xf1\
\xf1;\xf7\xb1aO\x1f\xef\xb8|\x1aKgE\xb2\xb9\
\x9c\x82\xcf\x8b'=v\x1fM\xf2_\xeb\xdb\xb8cm\
+{;\xd3J\x00\x16\xd4\xc3\x8a\xc5y\xeb:\x80\x8f\
\x02_z%\xde\xcf\xe6*]\xb4\xcae\xf9\xec*\xce\
\x9e]\xcd\xcc\xe6\xaa|\x969\xbbHe\x9c\xe7\x0e$\
8\xda\x93)\xbb\xdc\xb4\xebdW\xe7)\xec\xb7z\xbe\
\x1d\x08\xb82'\xa09\x1a(\x1aY\xb0\x16:\xfa2\
y\x09\x18\xa0\xb16@\xf5\xa0[h\xbbs\xab\xe7\x0c\
\xc7h\x8ei\xa8\xcfJ\xa4|\xda\xfa2\xc3\x0ewF\
\xab\x5c\xea\x0a&\x03Y\xb2\xc3\x94\xbd\xc9\xf2\xcd\x07?\
\xb7.\xe2\x82\xc6\x10\xe7\xcf\x8f\xb0\xe8\xf8\xa2\xa0\x06\xda\
\xbaRl\xdd\x97+\xef\xee\xf4\x90+\x15[\x9b\x1d!\
\x99Q\x17\xe4\xfc\xb9\xd5\xd9EAk\xb2\x09\xc6\x9ex\
\x86\x97\x0e\xf7\xf3\xd4\x9e8\x07;\xd3d|^\x91\xe0\
\x0f\x1a?\xb5 \xd4\xf7\x9e\xb8\x1f\xf8\xc1\xbe\xef\xad\x96\
\x00&\x83\x00\x06W\xa8|\x0d\x1eTb\xc3-\x99\xed\
\x97_\x15\xfc\xc4\x9f7\xf8c\x06MC\xb0\xe5W.\
\x1fq3v4\xc7\xf4r>\xebd\xf6\xcd\xcf\x12\x1e\
b\xe7\x91.Q\x9e?oC\x1c\xc0+y\xd5\x9f,\
\x02P\x17\xa0\x0c\xc6\xf0\xb2\x12D\xa3\xadh#Yz\
\xdb\x98\x97g\xeb\xd1\x1c\xd3\xcb\xf9\xac\x93\xd97/\x88\
\x97\xd9)\x7f\xb9\xe7m*\xa2$\xa0\x10\x12\x80\x10B\
\x02\x10BH\x00B\x08\x09@\x08!\x01\x08!$\x00\
!\x84\x04 \x84\x90\x00\x84\x10\x12\x80\x10S\x13[\xf0\
\xa7\x92\xa9\xe8\xa9\xc0\xa1\x80\x83\xeb\x90I\xa4}k\xb5\
\xd4\xbb\x18C\x8c1~M\xd8Mz\x99\xca\xbe\x86V\
\xf4\xd1\xcfm\x0a\xb1tV\xf5\x0bA\xd7\xb4\xabJ\x8a\
1\x0e\x9c\xa3M\xb5\x81\x17\xaaBn\xa5\x7f\x8f\xca\xa5\
%\x16`\xc9\xac\xea\xc7\x22!\xe7\x1e\x93]\x90F\x88\
S\x1f4\xc6\xa4b!\xfb\xc3\xd3M\xeb\x96f\xdbS\
\xd1\xdf\xa5\xc2\x9b\xcd\xcd\xf0\x96_r\xc5Yu\xb3\xb7\
\x1c\xe8\xff\x9b\xaex\xe6Fc\x98\x8er\x1b\xe2\xd4\xe0\
\x198\xd8Xm\xee\xae\xab\xab\xfe\xaaI\xc6;\x22\xa9\
^\x9e\xfa\xfaU\x12\xc0x\xf0\xfb-]\x5c\xb1\xec>\
\xce\xf9\x9fgq\xc5\xd2X\xf0\xd9=}s\xeb\x22\xee\
\x5ck%\x00\xf1\xca\xc7\x8a\x83M\xf5\xc6S\xfb\xfer\
~\xe7\x81\x7f\xd9T\x9b\xe9N\xc1\xfe\xaf\xad\xac\xec/\
5\x19\xce\xcc\xb9\xffk#\x0d5\x01\xf6\xb5'\x89U\
Wv\x9fLL`,\xc4\x13i\x96\xc7\x92\xb4%\x1d\
\x1e\xf9\xc2\xc5*\x13!\x84\x10B\x08!\x84\x10B\x08\
!\x84\x10B\x08!\x84\x10B\x08!\x84\x10B\x08!\
\x84\x10B\x08!\x84\x10B\x08!\x84\x10B\x08!\x84\
\x10B\x08!\x84\x10B\x08!\xc4\xe8\xf8\xffA~\xc9\
QK\x05\xc0\xad\x00\x00\x00\x00IEND\xaeB`\
\x82\
"
qt_resource_name = b"\
\x00\x03\
\x00\x00p7\
\x00i\
\x00m\x00g\
\x00\x08\
\x0aaB\x7f\
\x00i\
\x00c\x00o\x00n\x00.\x00i\x00c\x00o\
"
qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01\x86\x0d, J\
"
def qInitResources():
QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
def qCleanupResources():
QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
qInitResources()

BIN
gui/img/docxuntraceog.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 KiB

BIN
gui/img/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

0
gui/modules/__init__.py Normal file
View File

View File

133
gui/modules/core/blur.py Normal file
View File

@@ -0,0 +1,133 @@
# source: https://github.com/Opticos/GWSL-Source/blob/master/blur.py,
# https://www.cnblogs.com/zhiyiYo/p/14659981.html ,
# https://github.com/ifwe/digsby/blob/master/digsby/src/gui/vista.py
import platform
import ctypes
if platform.system() == 'Windows':
from ctypes.wintypes import DWORD, BOOL, HRGN, HWND
user32 = ctypes.windll.user32
dwm = ctypes.windll.dwmapi
class ACCENTPOLICY(ctypes.Structure):
_fields_ = [
("AccentState", ctypes.c_uint),
("AccentFlags", ctypes.c_uint),
("GradientColor", ctypes.c_uint),
("AnimationId", ctypes.c_uint)
]
class WINDOWCOMPOSITIONATTRIBDATA(ctypes.Structure):
_fields_ = [
("Attribute", ctypes.c_int),
("Data", ctypes.POINTER(ctypes.c_int)),
("SizeOfData", ctypes.c_size_t)
]
class DWM_BLURBEHIND(ctypes.Structure):
_fields_ = [
('dwFlags', DWORD),
('fEnable', BOOL),
('hRgnBlur', HRGN),
('fTransitionOnMaximized', BOOL)
]
class MARGINS(ctypes.Structure):
_fields_ = [("cxLeftWidth", ctypes.c_int),
("cxRightWidth", ctypes.c_int),
("cyTopHeight", ctypes.c_int),
("cyBottomHeight", ctypes.c_int)
]
SetWindowCompositionAttribute = user32.SetWindowCompositionAttribute
SetWindowCompositionAttribute.argtypes = (HWND, WINDOWCOMPOSITIONATTRIBDATA)
SetWindowCompositionAttribute.restype = ctypes.c_int
def ExtendFrameIntoClientArea(hwnd):
margins = MARGINS(-1, -1, -1, -1)
dwm.DwmExtendFrameIntoClientArea(hwnd, ctypes.byref(margins))
def Win7Blur(hwnd, Acrylic):
if not Acrylic:
DWM_BB_ENABLE = 0x01
bb = DWM_BLURBEHIND()
bb.dwFlags = DWM_BB_ENABLE
bb.fEnable = 1
bb.hRgnBlur = 1
dwm.DwmEnableBlurBehindWindow(hwnd, ctypes.byref(bb))
else:
ExtendFrameIntoClientArea(hwnd)
def HEXtoRGBAint(HEX: str):
alpha = HEX[7:]
blue = HEX[5:7]
green = HEX[3:5]
red = HEX[1:3]
gradient_color = alpha + blue + green + red
return int(gradient_color, base=16)
def blur(hwnd, hex_color=False, acrylic=False, dark=False):
accent = ACCENTPOLICY()
accent.AccentState = 3 # Default window Blur #ACCENT_ENABLE_BLURBEHIND
gradient_color = 0
if hex_color:
gradient_color = HEXtoRGBAint(hex_color)
accent.AccentFlags = 2 # Window Blur With Accent Color #ACCENT_ENABLE_TRANSPARENTGRADIENT
if acrylic:
accent.AccentState = 4 # UWP but LAG #ACCENT_ENABLE_ACRYLICBLURBEHIND
if not hex_color: # UWP without color is translucent
accent.AccentFlags = 2
gradient_color = HEXtoRGBAint('#12121240') # placeholder color
accent.GradientColor = gradient_color
data = WINDOWCOMPOSITIONATTRIBDATA()
data.Attribute = 19 # WCA_ACCENT_POLICY
data.SizeOfData = ctypes.sizeof(accent)
data.Data = ctypes.cast(ctypes.pointer(accent), ctypes.POINTER(ctypes.c_int))
SetWindowCompositionAttribute(int(hwnd), data)
if dark:
data.Attribute = 26 # WCA_USEDARKMODECOLORS
SetWindowCompositionAttribute(int(hwnd), data)
def BlurLinux(WID): # may not work in all distros (working in Deepin)
import os
c = "xprop -f _KDE_NET_WM_BLUR_BEHIND_REGION 32c -set _KDE_NET_WM_BLUR_BEHIND_REGION 0 -id " + str(WID)
os.system(c)
def GlobalBlur(hwnd, hex_color=False, acrylic=False, dark=False):
release = platform.release()
system = platform.system()
if system == 'Windows':
if release == 'Vista':
Win7Blur(hwnd, acrylic)
else:
release = int(float(release))
if release == 10 or release == 8 or release == 11:
blur(hwnd, hex_color, acrylic, dark)
else:
Win7Blur(hwnd, acrylic)
if system == 'Linux':
BlurLinux(hwnd)

26
gui/modules/core/popup.py Normal file
View File

@@ -0,0 +1,26 @@
import ctypes
def qtpopup(title, text):
"""
Popup using Qt
:param title: Title of popup
:param text: Text
:return: None
"""
from PySide6 import QtWidgets
QtWidgets.QMessageBox.information(None, title, text)
def popup(title, text, style=0):
"""
Styles:
0 : OK
1 : OK | Cancel
2 : Abort | Retry | Ignore
3 : Yes | No | Cancel
4 : Yes | No
5 : Retry | Cancel
6 : Cancel | Try Again | Continue
"""
return ctypes.windll.user32.MessageBoxW(0, text, title, style)

View File

View File

@@ -0,0 +1,8 @@
from PySide6.QtWidgets import QMainWindow
from gui.gui import Ui_MainWindow
from gui.modules.core.blur import GlobalBlur
from gui.modules.initialize import styles
def on_load(ui: Ui_MainWindow, MainWindow: QMainWindow):
pass

View File

@@ -0,0 +1,598 @@
centralwidget_b = """
QWidget {
background-color: rgba(30, 30, 30, 0);
color: rgba(255, 255, 255, 1);
font: 10pt "Segoe UI";
}
QScrollBar:vertical,
QScrollBar:horizontal {
border: none;
background: rgba(30, 30, 30, 0);
width: 10px;
margin: 15px 0 15px 0;
border-radius: 0px;
}
QScrollBar::handle:vertical,
QScrollBar::handle:horizontal {
background-color: rgba(139, 139, 139, 0);
min-height: 30px;
border-radius: 5px;
}
QScrollBar::handle:vertical:hover,
QScrollBar::handle:vertical:pressed,
QScrollBar::handle:horizontal:hover,
QScrollBar::handle:horizontal:pressed {
background-color: rgba(149, 149, 149, 0);
}
QScrollBar::sub-line:vertical,
QScrollBar::add-line:vertical,
QScrollBar::up-arrow:vertical,
QScrollBar::down-arrow:vertical {
height: 0px;
}
QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical,
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical,
QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal,
QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
background: none;
}
QPushButton {
color: white;
border-width: 1px;
border-radius:6px;
border-style: solid;
border-color: rgba(48, 48, 48, 0.5);
background-color: rgba(44, 45, 46, 0.2);
}
QPushButton:hover {
border-width: 2px;
background-color: rgba(50, 50, 50, 0.7);
}
QPushButton:pressed {
background-color: rgba(38, 39, 40, 0.7);
}
QPushButton:disabled {
background-color: rgba(67, 67, 67, 0.7);
border-color: rgba(0, 0, 0, 0.7);
}
QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
border-width: 1px;
border-radius: 5px;
border-style: solid;
border-color: rgba(48, 48, 48);
background-color: rgba(36, 36, 36, 0);
font: 10pt "Segoe UI";
}
QListWidget, QListView, QTreeView {
border-width: 1px;
border-radius: 15px;
border-style: solid;
border-color: rgba(48, 48, 48);
padding: 10px;
background-color: rgba(100, 100, 100, 0);
font: 10pt "Segoe UI";
}
QListWidget:item, QListView:item, QTreeView:item {
background-color: rgba(36, 36, 36, 0);
selection-color: white;
}
QListWidget:item:hover, QListView:item:hover, QTreeView:item:hover {
background-color: rgba(50, 50, 50, 0);
}
QListWidget:item:selected, QListView:item:selected, QTreeView:item:selected {
background-color: rgba(119, 119, 119, 1);
}
QTreeView::branch:has-children:closed {
image: url(":/img/img/down.svg");
}
QTreeView::branch:has-children:open {
image: url(":/img/img/up.svg");
}
QComboBox
{
border-width: 1px;
border-radius:6px;
border-style: solid;
border-color: rgba(48, 48, 48);
background-color: rgba(44, 45, 46, 0);
color: white;
}
QComboBox::disabled
{
background-color: rgba(67, 67, 67, 0);
color: rgba(101, 101, 101, 1);;
border-color: rgba(67, 67, 67);
}
QComboBox:hover
{
background-color: rgba(50, 50, 50, 0);
}
QComboBox:on
{
background-color: rgba(67, 67, 67, 0);
}
QComboBox QAbstractItemView
{
background-color: rgba(67, 67, 67, 0);
color: white;
selection-background-color: rgba(119, 119, 119, 0);
selection-color: white;
outline: 0;
}
QComboBox::drop-down
{
subcontrol-origin: padding;
subcontrol-position: top right;
border-radius: 6px;
}
QTabBar::tab
{
background-color: rgba(44, 45, 46, 0);
color: white;
border-style: solid;
border-width: 1px;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
border-color: rgba(48, 48, 48);
padding: 5px;
}
QTabBar::tab:disabled
{
background-color: rgba(101, 101, 101, 0);
color: rgba(101, 101, 101, 1);;
}
QTabWidget::pane
{
background-color: rgba(160, 160, 160, 0);
color: white;
border: 3px solid;
border-radius: 15px;
border-color: rgba(28, 28, 28);
}
QTabBar::tab:selected
{
background-color: rgba(38, 39, 40, 0);
color: white;
border-style: solid;
border-width: 1px;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
border-color: rgba(48, 48, 48);
padding: 5px;
}
QTabBar::tab:selected:disabled
{
background-color: rgba(64, 64, 64, 0);
color: rgba(101, 101, 101, 1);
}
QTabBar::tab:!selected
{
background-color: rgba(38, 38, 38, 0);
}
QTabBar::tab:!selected:hover
{
background-color: rgba(50, 50, 50, 0);
}
QTabBar::tab:top:!selected
{
margin-top: 3px;
}
QTabBar::tab:bottom:!selected
{
margin-bottom: 3px;
}
QTabBar::tab:top, QTabBar::tab:bottom
{
min-width: 8ex;
margin-right: -1px;
padding: 5px 10px 5px 10px;
}
QTabBar::tab:top:selected
{
border-bottom-color: none;
}
QTabBar::tab:bottom:selected
{
border-top-color: none;
}
QTabBar::tab:top:last, QTabBar::tab:bottom:last,
QTabBar::tab:top:only-one, QTabBar::tab:bottom:only-one
{
margin-right: 0;
}
QTabBar::tab:left:!selected
{
margin-right: 3px;
}
QTabBar::tab:right:!selected
{
margin-left: 3px;
}
QTabBar::tab:left, QTabBar::tab:right
{
min-height: 8ex;
margin-bottom: -1px;
padding: 10px 5px 10px 5px;
}
QTabBar::tab:left:selected
{
border-left-color: none;
}
QTabBar::tab:right:selected
{
border-right-color: none;
}
QTabBar::tab:left:last, QTabBar::tab:right:last,
QTabBar::tab:left:only-one, QTabBar::tab:right:only-one
{
margin-bottom: 0;
}
QSpinBox {
border-width: 1px;
border-radius: 5px;
border-style: solid;
border-color: rgba(48, 48, 48);
background-color: rgba(36, 36, 36, 0);
font: 10pt "Segoe UI";
}
QSpinBox::up-button {
border: none;
background: none;
}
QSpinBox::down-button {
border: none;
background: none;
}
QToolBox::tab {
border-style: solid;
border-width: 1px;
border-radius: 5px;
border-color: rgba(48, 48, 48, 0);
}
QSlider::groove:horizontal {
border-radius: 1px;
height: 10px;
margin: 0px;
background-color: rgba(36, 36, 36, 0);
}
QSlider::groove:horizontal:hover {
background-color: rgba(48, 48, 48, 0);
}
QSlider::handle:horizontal {
background-color: white;
border: none;
width: 5px;
border-radius: 40px;
}
QSlider::handle:horizontal:hover {
background-color: rgba(191, 191, 191, 0);
}
QSlider::handle:horizontal:pressed {
background-color: rgba(191, 191, 191, 0);
}
QProgressBar {
text-align: center;
color: white;
border-width: 1px;
border-radius: 10px;
border-color: rgba(58, 58, 58, 0.5);
border-style: inset;
background-color: rgba(32, 32, 32, 0.5);
}
QProgressBar::chunk {
background-color: rgba(132, 132, 132, 0.5);
border-radius: 5px;
}
"""
centralwidget_g = """
QWidget {
background-color: #1e1e1e;
color: white;
font: 10pt "Segoe UI";
}
QScrollBar:vertical,
QScrollBar:horizontal {
border: none;
background: #1e1e1e;
width: 10px;
margin: 15px 0 15px 0;
border-radius: 0px;
}
QScrollBar::handle:vertical,
QScrollBar::handle:horizontal {
background-color: #8b8b8b;
min-height: 30px;
border-radius: 5px;
}
QScrollBar::handle:vertical:hover,
QScrollBar::handle:vertical:pressed,
QScrollBar::handle:horizontal:hover,
QScrollBar::handle:horizontal:pressed {
background-color: #959595;
}
QScrollBar::sub-line:vertical,
QScrollBar::add-line:vertical,
QScrollBar::up-arrow:vertical,
QScrollBar::down-arrow:vertical {
height: 0px;
}
QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical,
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical,
QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal,
QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
background: none;
}
QPushButton {
color: white;
border-width: 1px;
border-radius:6px;
border-style: solid;
border-color: #303030;
background-color: #2c2d2e;
}
QPushButton:hover {
border-width: 2px;
background-color: #323232;
}
QPushButton:pressed {
background-color: #262728;
}
QPushButton:disabled {
background-color: #434343;
border-color: #0000;
}
QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
border-width: 1px;
border-radius: 5px;
border-style: solid;
border-color: #303030;
background-color: #242424;
font: 10pt "Segoe UI";
}
QListWidget, QListView, QTreeView {
border-width: 1px;
border-radius: 15px;
border-style: solid;
border-color: #303030;
padding: 10px;
background-color: #242424;
font: 10pt "Segoe UI";
}
QListWidget:item, QListView:item, QTreeView:item {
background-color: #242424;
selection-color: white;
}
QListWidget:item:hover, QListView:item:hover, QTreeView:item:hover {
background-color: #323232;
}
QListWidget:item:selected, QListView:item:selected, QTreeView:item:selected {
background-color: #777777;
}
QTreeView::branch:has-children:closed {
image: url(":/img/img/down.svg");
}
QTreeView::branch:has-children:open {
image: url(":/img/img/up.svg");
}
QComboBox
{
border-width: 1px;
border-radius:6px;
border-style: solid;
border-color: #303030;
background-color: #2c2d2e;
color: white;
}
QComboBox::disabled
{
background-color: #434343;
color: #656565;
border-color: #434343;
}
QComboBox:hover
{
background-color: #323232;
}
QComboBox:on
{
background-color: #434343;
}
QComboBox QAbstractItemView
{
background-color: #434343;
color: white;
selection-background-color: #777777;
selection-color: white;
outline: 0;
}
QComboBox::drop-down
{
subcontrol-origin: padding;
subcontrol-position: top right;
border-radius: 6px;
}
QTabBar::tab
{
background-color: #2c2d2e;
color: white;
border-style: solid;
border-width: 1px;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
border-color: #303030;
padding: 5px;
}
QTabBar::tab:disabled
{
background-color: #656565;
color: #656565;
}
QTabWidget::pane
{
background-color: #a0a0a0;
color: white;
border: 3px solid;
border-radius: 15px;
border-color: #1c1c1c;
}
QTabBar::tab:selected
{
background-color: #262728;
color: white;
border-style: solid;
border-width: 1px;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
border-color: #303030;
padding: 5px;
}
QTabBar::tab:selected:disabled
{
background-color: #404040;
color: #656565;
}
QTabBar::tab:!selected
{
background-color: #262626;
}
QTabBar::tab:!selected:hover
{
background-color: #323232;
}
QTabBar::tab:top:!selected
{
margin-top: 3px;
}
QTabBar::tab:bottom:!selected
{
margin-bottom: 3px;
}
QTabBar::tab:top, QTabBar::tab:bottom
{
min-width: 8ex;
margin-right: -1px;
padding: 5px 10px 5px 10px;
}
QTabBar::tab:top:selected
{
border-bottom-color: none;
}
QTabBar::tab:bottom:selected
{
border-top-color: none;
}
QTabBar::tab:top:last, QTabBar::tab:bottom:last,
QTabBar::tab:top:only-one, QTabBar::tab:bottom:only-one
{
margin-right: 0;
}
QTabBar::tab:left:!selected
{
margin-right: 3px;
}
QTabBar::tab:right:!selected
{
margin-left: 3px;
}
QTabBar::tab:left, QTabBar::tab:right
{
min-height: 8ex;
margin-bottom: -1px;
padding: 10px 5px 10px 5px;
}
QTabBar::tab:left:selected
{
border-left-color: none;
}
QTabBar::tab:right:selected
{
border-right-color: none;
}
QTabBar::tab:left:last, QTabBar::tab:right:last,
QTabBar::tab:left:only-one, QTabBar::tab:right:only-one
{
margin-bottom: 0;
}
QSpinBox {
border-width: 1px;
border-radius: 5px;
border-style: solid;
border-color: #303030;
background-color: #242424;
font: 10pt "Segoe UI";
}
QSpinBox::up-button {
border: none;
background: none;
}
QSpinBox::down-button {
border: none;
background: none;
}
QToolBox::tab {
border-style: solid;
border-width: 1px;
border-radius: 5px;
border-color: #303030;
}
QSlider::groove:horizontal {
border-radius: 1px;
height: 10px;
margin: 0px;
background-color: #242424;
}
QSlider::groove:horizontal:hover {
background-color: #303030;
}
QSlider::handle:horizontal {
background-color: white;
border: none;
width: 5px;
border-radius: 40px;
}
QSlider::handle:horizontal:hover {
background-color: #bfbfbf;
}
QSlider::handle:horizontal:pressed {
background-color: #bfbfbf;
}
QProgressBar {
text-align: center;
color: white;
border-width: 1px;
border-radius: 10px;
border-color: #3a3a3a;
border-style: inset;
background-color: #202020;
}
QProgressBar::chunk {
background-color: #848484;
border-radius: 5px;
}
"""

0
modules/__init__.py Normal file
View File

3
requirements.txt Normal file
View File

@@ -0,0 +1,3 @@
wheel
PySide6
pyinstaller