commit 3b5c60491b54e70a4bfc7a59b46e47b5aecb6c40 Author: cysamurai Date: Sat Oct 7 16:46:11 2023 +0800 首次提交 diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..c3aa378 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,25 @@ +{ + // 使用 IntelliSense 了解相关属性。 + // 悬停以查看现有属性的描述。 + // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + + { + "name": "call client", + "type": "python", + "request": "launch", + "program": "callclient/main.py", + "console": "integratedTerminal", + "justMyCode": true + }, + { + "name": "tv client", + "type": "python", + "request": "launch", + "program": "tvclient/main.py", + "console": "integratedTerminal", + "justMyCode": true + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..5c80254 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "[python]": { + "editor.defaultFormatter": "ms-python.autopep8" + }, + "python.formatting.provider": "none" +} diff --git a/assets/__pycache__/caller_src_rc.cpython-38.pyc b/assets/__pycache__/caller_src_rc.cpython-38.pyc new file mode 100644 index 0000000..110e91d Binary files /dev/null and b/assets/__pycache__/caller_src_rc.cpython-38.pyc differ diff --git a/assets/btn_call_hover.png b/assets/btn_call_hover.png new file mode 100644 index 0000000..ad9bc04 Binary files /dev/null and b/assets/btn_call_hover.png differ diff --git a/assets/btn_call_normal.png b/assets/btn_call_normal.png new file mode 100644 index 0000000..f07f068 Binary files /dev/null and b/assets/btn_call_normal.png differ diff --git a/assets/btn_call_t_hover.png b/assets/btn_call_t_hover.png new file mode 100644 index 0000000..6e54acf Binary files /dev/null and b/assets/btn_call_t_hover.png differ diff --git a/assets/btn_call_t_normal.png b/assets/btn_call_t_normal.png new file mode 100644 index 0000000..b257795 Binary files /dev/null and b/assets/btn_call_t_normal.png differ diff --git a/assets/caller_icon.png b/assets/caller_icon.png new file mode 100644 index 0000000..836b2bc Binary files /dev/null and b/assets/caller_icon.png differ diff --git a/assets/caller_src.qrc b/assets/caller_src.qrc new file mode 100644 index 0000000..d12cae6 --- /dev/null +++ b/assets/caller_src.qrc @@ -0,0 +1,9 @@ + + + caller_icon.png + minest_normal.png + exit_normal.png + btn_call_t_normal.png + btn_call_t_hover.png + + \ No newline at end of file diff --git a/assets/caller_src_rc.py b/assets/caller_src_rc.py new file mode 100644 index 0000000..0e1bec4 --- /dev/null +++ b/assets/caller_src_rc.py @@ -0,0 +1,927 @@ +# -*- coding: utf-8 -*- + +# Resource object code +# +# Created by: The Resource Compiler for PyQt5 (Qt v5.15.2) +# +# WARNING! All changes made in this file will be lost! + +from PyQt5 import QtCore + +qt_resource_data = b"\ +\x00\x00\x00\x7f\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x39\x49\x44\x41\x54\x38\x4f\x63\x64\xa0\x10\x30\x52\xa8\x9f\x61\ +\xd4\x00\x86\x61\x1b\x06\x41\x41\x41\x76\xff\xfe\xfd\x73\x44\x4e\ +\x23\x4c\x4c\x4c\xfb\xd7\xad\x5b\x77\x08\x3d\xdd\x60\x4d\x07\x14\ +\x1b\x40\x4a\xea\x1c\x4d\x89\x0c\x0c\x00\x69\x20\x10\x11\x72\x5e\ +\xb1\x5e\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x0c\x5a\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x50\x00\x00\x00\x1e\x10\x06\x00\x00\x00\xeb\xd3\x45\xf2\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x2e\x23\x00\x00\x2e\x23\ +\x01\x78\xa5\x3f\x76\x00\x00\x06\x79\x69\x54\x58\x74\x58\x4d\x4c\ +\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00\x00\ +\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\ +\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\x57\x35\x4d\ +\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\x4e\x54\x63\ +\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\x6d\x70\x6d\ +\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\x61\x64\x6f\ +\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\x78\x3a\x78\ +\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\x4d\x50\x20\ +\x43\x6f\x72\x65\x20\x35\x2e\x36\x2d\x63\x31\x34\x38\x20\x37\x39\ +\x2e\x31\x36\x34\x30\x33\x36\x2c\x20\x32\x30\x31\x39\x2f\x30\x38\ +\x2f\x31\x33\x2d\x30\x31\x3a\x30\x36\x3a\x35\x37\x20\x20\x20\x20\ +\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x20\ +\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\ +\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\ +\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\x3a\x44\x65\ +\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\x3a\x61\x62\ +\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\ +\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\ +\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\ +\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x4d\x4d\x3d\x22\x68\x74\x74\ +\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ +\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x6d\x6d\x2f\x22\x20\x78\x6d\ +\x6c\x6e\x73\x3a\x73\x74\x45\x76\x74\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\ +\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\x79\x70\x65\x2f\x52\x65\x73\ +\x6f\x75\x72\x63\x65\x45\x76\x65\x6e\x74\x23\x22\x20\x78\x6d\x6c\ +\x6e\x73\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3d\x22\x68\x74\ +\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\ +\x6d\x2f\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x2f\x31\x2e\x30\x2f\ +\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\x74\x74\x70\ +\x3a\x2f\x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x65\ +\x6c\x65\x6d\x65\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\x20\x78\x6d\ +\x70\x3a\x43\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\ +\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x32\ +\x31\x2e\x30\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\x78\ +\x6d\x70\x3a\x43\x72\x65\x61\x74\x65\x44\x61\x74\x65\x3d\x22\x32\ +\x30\x32\x33\x2d\x30\x38\x2d\x30\x38\x54\x31\x31\x3a\x35\x38\x3a\ +\x33\x39\x2b\x30\x38\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x65\ +\x74\x61\x64\x61\x74\x61\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x33\ +\x2d\x30\x38\x2d\x30\x38\x54\x31\x31\x3a\x35\x38\x3a\x33\x39\x2b\ +\x30\x38\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x6f\x64\x69\x66\ +\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x33\x2d\x30\x38\x2d\x30\ +\x38\x54\x31\x31\x3a\x35\x38\x3a\x33\x39\x2b\x30\x38\x3a\x30\x30\ +\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\ +\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x35\x30\x38\x62\ +\x65\x36\x31\x32\x2d\x65\x35\x38\x33\x2d\x61\x37\x34\x30\x2d\x38\ +\x64\x30\x37\x2d\x65\x37\x63\x65\x35\x35\x30\x63\x33\x62\x31\x66\ +\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\x74\ +\x49\x44\x3d\x22\x61\x64\x6f\x62\x65\x3a\x64\x6f\x63\x69\x64\x3a\ +\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x35\x35\x39\x30\x35\x36\ +\x65\x32\x2d\x36\x33\x37\x37\x2d\x32\x31\x34\x63\x2d\x61\x63\x33\ +\x63\x2d\x36\x35\x64\x66\x38\x38\x32\x39\x32\x36\x38\x31\x22\x20\ +\x78\x6d\x70\x4d\x4d\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\ +\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\ +\x64\x3a\x65\x32\x33\x38\x34\x36\x63\x30\x2d\x66\x65\x38\x39\x2d\ +\x63\x65\x34\x32\x2d\x62\x33\x37\x38\x2d\x66\x37\x38\x36\x31\x61\ +\x31\x65\x33\x36\x34\x38\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\ +\x70\x3a\x43\x6f\x6c\x6f\x72\x4d\x6f\x64\x65\x3d\x22\x33\x22\x20\ +\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x49\x43\x43\x50\x72\x6f\ +\x66\x69\x6c\x65\x3d\x22\x73\x52\x47\x42\x20\x49\x45\x43\x36\x31\ +\x39\x36\x36\x2d\x32\x2e\x31\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\ +\x61\x74\x3d\x22\x69\x6d\x61\x67\x65\x2f\x70\x6e\x67\x22\x3e\x20\ +\x3c\x78\x6d\x70\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\ +\x3c\x72\x64\x66\x3a\x53\x65\x71\x3e\x20\x3c\x72\x64\x66\x3a\x6c\ +\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\ +\x63\x72\x65\x61\x74\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\ +\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\ +\x69\x64\x3a\x65\x32\x33\x38\x34\x36\x63\x30\x2d\x66\x65\x38\x39\ +\x2d\x63\x65\x34\x32\x2d\x62\x33\x37\x38\x2d\x66\x37\x38\x36\x31\ +\x61\x31\x65\x33\x36\x34\x38\x22\x20\x73\x74\x45\x76\x74\x3a\x77\ +\x68\x65\x6e\x3d\x22\x32\x30\x32\x33\x2d\x30\x38\x2d\x30\x38\x54\ +\x31\x31\x3a\x35\x38\x3a\x33\x39\x2b\x30\x38\x3a\x30\x30\x22\x20\ +\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\ +\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\ +\x73\x68\x6f\x70\x20\x32\x31\x2e\x30\x20\x28\x57\x69\x6e\x64\x6f\ +\x77\x73\x29\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\ +\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\ +\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\ +\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x35\x30\ +\x38\x62\x65\x36\x31\x32\x2d\x65\x35\x38\x33\x2d\x61\x37\x34\x30\ +\x2d\x38\x64\x30\x37\x2d\x65\x37\x63\x65\x35\x35\x30\x63\x33\x62\ +\x31\x66\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\ +\x32\x30\x32\x33\x2d\x30\x38\x2d\x30\x38\x54\x31\x31\x3a\x35\x38\ +\x3a\x33\x39\x2b\x30\x38\x3a\x30\x30\x22\x20\x73\x74\x45\x76\x74\ +\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\ +\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\ +\x32\x31\x2e\x30\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\ +\x73\x74\x45\x76\x74\x3a\x63\x68\x61\x6e\x67\x65\x64\x3d\x22\x2f\ +\x22\x2f\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x53\x65\x71\x3e\x20\x3c\ +\x2f\x78\x6d\x70\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\ +\x3c\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x54\x65\x78\x74\x4c\ +\x61\x79\x65\x72\x73\x3e\x20\x3c\x72\x64\x66\x3a\x42\x61\x67\x3e\ +\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x70\x68\x6f\x74\x6f\x73\x68\ +\x6f\x70\x3a\x4c\x61\x79\x65\x72\x4e\x61\x6d\x65\x3d\x22\xe5\x91\ +\xbc\xe5\x8f\xab\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\ +\x4c\x61\x79\x65\x72\x54\x65\x78\x74\x3d\x22\xe5\x91\xbc\xe5\x8f\ +\xab\x22\x2f\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x42\x61\x67\x3e\x20\ +\x3c\x2f\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x54\x65\x78\x74\ +\x4c\x61\x79\x65\x72\x73\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x44\x65\ +\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x20\x3c\x2f\x72\x64\x66\ +\x3a\x52\x44\x46\x3e\x20\x3c\x2f\x78\x3a\x78\x6d\x70\x6d\x65\x74\ +\x61\x3e\x20\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x65\x6e\x64\ +\x3d\x22\x72\x22\x3f\x3e\x0b\x3e\xad\x27\x00\x00\x05\x87\x49\x44\ +\x41\x54\x78\x9c\xed\xdb\x7d\x6c\x13\x65\x1c\x07\xf0\xde\x36\xd8\ +\x48\x46\x68\x8c\x51\x32\x8c\x9b\xc9\x04\x0d\x23\x56\xd8\x98\x32\ +\x0c\x1d\x59\x0c\x4b\xd4\xe1\xcb\x82\xc6\xe0\xb6\x84\x6d\x04\x7c\ +\xa9\xe0\x1f\x8a\xca\x4a\x50\x86\x2f\xd9\xa6\x59\xd0\x29\x66\x83\ +\xb8\x39\x70\x83\x4d\x8c\x0a\x01\xd7\x39\xc4\x4d\xd4\x55\x90\xa8\ +\xa0\xd0\x85\x08\x18\x13\xed\x88\x92\xe9\x5e\xea\x1f\xdf\xef\xf3\ +\x47\xcf\xde\xee\x4a\x9f\xeb\x55\xbd\xef\x3f\x1f\xae\xf7\xdc\x73\ +\x4f\xb3\x5f\x9f\xde\x3d\x57\x94\x50\x28\x14\x0a\x85\x1c\x76\xec\ +\x58\x92\x24\xab\x07\x60\xe7\xff\x1d\xbb\x00\xed\x58\x1a\xbb\x00\ +\xed\x58\x1a\xbb\x00\xed\x58\x1a\xab\x0a\xd0\x0d\xe6\x5f\x05\xb7\ +\x5c\x07\xfb\xba\xe1\xc9\x4c\x38\x70\x02\x1e\xfe\x19\xd6\xad\x80\ +\x8b\xf7\xc0\x29\x77\x99\x3a\x4a\x3b\xa6\x27\xce\x05\x98\x73\x11\ +\xb6\x1e\x87\x07\x59\x68\xf9\x57\xc0\x2f\x17\xc2\xf6\x7e\xb8\x97\ +\x05\x39\x98\x02\xb3\x59\x70\xfb\xfb\x60\xe7\x8f\x30\xef\x65\x73\ +\xc6\x6b\xc7\xf4\x88\x65\x18\x73\x7d\x30\x17\x9e\x1b\x84\xad\x25\ +\xf0\xa6\xad\x30\xf9\x60\x74\xfd\x15\x34\xc0\x77\x53\xe1\xaf\x0a\ +\xac\xe8\x8f\xcf\xfb\x89\x55\x27\x75\xd3\x72\xda\x0c\x42\x67\xa8\ +\x37\x41\xc6\xeb\x51\x29\xaf\xff\x14\x73\xcb\x7b\xe5\x2a\xb8\xf3\ +\x4d\xf8\xc8\x4a\xd8\xc8\x99\xcd\xd1\xfd\x8f\x43\x0c\xe5\x53\x0f\ +\xe5\xf6\xaa\x6d\x70\x9b\x02\x87\x39\x93\xee\xf9\xfc\xf2\xfa\xd7\ +\x4b\x39\x2d\xd3\x58\x41\xf5\xd3\x21\x8e\xa7\x5e\x67\xa5\x35\xa0\ +\x72\x87\x12\xbe\xdf\x49\x83\x3a\xe3\x72\xa9\xda\x6b\xc5\x6f\xb0\ +\x3f\x91\x12\x8e\xbf\x57\x99\xbc\x5d\xf4\x31\xa9\x00\xe7\x34\xc0\ +\xa6\x21\xb8\x61\x06\x6c\xbc\x68\xce\xf9\xb6\xaf\x81\xd3\x59\x78\ +\xcd\x15\xf0\x34\xaf\x31\xfd\xef\xcb\x3d\x5f\x16\x75\xd2\xc7\xf9\ +\x87\x11\x05\xe9\x12\xaf\x53\x3f\xf7\x07\x1c\xe1\xf6\xa8\xfe\xb0\ +\xde\x18\xc7\x25\x0a\x5d\x8c\x2f\xa0\xda\xef\xa6\x85\x3c\x9f\x8f\ +\xdb\xe2\x51\x84\x78\x1f\x0d\x31\x8e\xc3\x78\x24\x5f\x03\x26\xaf\ +\x83\xf5\xe7\xa1\x2f\x08\x6b\x63\x2d\xbc\x8f\xc0\x92\x2d\x70\x29\ +\x3f\x38\xc9\x23\xe1\xcd\xea\x39\xe3\xf5\x2e\x87\xcf\xde\x0d\x95\ +\x35\x31\x9e\x5f\x23\x41\xea\xa3\x43\x1a\x33\x97\x4b\xb5\xad\x17\ +\x2f\xdd\x1b\x8a\xee\x38\x11\x31\x83\x16\xaa\xd4\x8b\x3f\xca\xf3\ +\xc4\x1e\xc9\x05\x98\xbf\x11\x2e\xbb\x06\xd6\x9c\x32\x76\x5c\x1a\ +\x0b\x29\xf5\x77\x38\xd5\x0d\x4b\xfe\x82\xdd\x79\xd0\xf7\x14\xdc\ +\xbd\x19\x66\x2c\x8c\xdc\xdf\x56\x7e\x37\x17\xf3\x03\x51\x30\xdb\ +\xd8\x38\x64\x27\x48\x1f\x63\x21\xb9\x0d\x1e\x27\xbe\xf2\xc4\xf1\ +\x41\x8d\x76\xff\xfe\x48\x2e\xc0\xd2\x07\xe0\xa1\x3a\x38\xd8\x10\ +\xb9\x5d\x2a\x0b\xee\xad\x42\xf8\x05\x97\x57\x06\x6e\x85\x47\x5f\ +\xe3\xfe\x6a\x38\xea\x82\xf7\xef\x82\x23\x6d\x70\xaa\xc6\x25\xc4\ +\xc0\x43\xf0\x33\xce\x88\xcb\xcb\x8c\x8c\xde\xbc\xf8\x68\x89\xce\ +\xb5\x60\x16\x75\xd1\x57\xa4\x5f\x73\x25\x5a\x24\x5f\x03\xe6\xe5\ +\xc2\xaf\xd2\xe1\x58\x6e\xe4\x76\xb3\x72\x60\xe9\x7a\x58\xfb\x0e\ +\xfc\x6e\x1c\xa6\xb1\x90\xcf\x04\x61\xff\x59\x38\xfb\x08\x0c\x3d\ +\xc7\x8e\xd6\x46\xee\x7f\xfc\x12\x1c\xf0\xc0\x45\x4f\x1a\x18\xbc\ +\x89\xf9\x9a\x85\xe4\xd4\x29\xc0\xe5\xb4\x8b\xfa\x4d\x19\x4d\x22\ +\x45\x72\x01\x3a\xfd\xf0\x54\xef\xe4\xed\x94\x2b\xe1\x30\x67\xb2\ +\x8e\x7a\x1e\xa7\x51\xb0\x22\x69\xec\x5f\x69\xe2\x0b\xa3\x93\xb7\ +\x1f\xee\x84\xd3\x3a\x27\x6f\x67\x56\xb2\x68\x83\x50\x67\x46\xd3\ +\x6a\x27\xfa\x09\xc4\x3c\xa2\x44\x8b\xe4\xaf\xe0\x94\x0e\x98\xde\ +\xae\xd3\xf0\x18\x50\xee\xa0\x6d\x72\xc7\x21\x32\xe1\x83\xd3\x6f\ +\x37\xa7\x7f\x27\x75\xd3\x4c\xd5\x0c\x57\x4e\xc5\x5d\xa6\x5a\x71\ +\x5c\x8d\xc6\x7e\x61\xf3\x7f\xf6\x07\x73\x92\x0b\xf0\x02\x9f\x48\ +\xa4\x0f\xeb\x34\xdc\x09\x92\x5d\xf0\xce\x2a\x78\xcf\x7c\xb8\x82\ +\x5f\xd1\x73\x8f\x85\x1f\x36\x32\x13\x86\x76\xf3\x85\x8c\xc9\x4f\ +\x93\xf1\x0b\x0c\x48\x5e\x86\x11\xc9\xa2\x35\x1a\x37\x19\x5e\xaa\ +\x28\x91\xf5\x71\xff\x26\x8d\xfd\x4a\x94\x77\xb1\x22\x62\x39\xa8\ +\x47\xa5\x5e\x5c\xd4\xeb\x08\x3f\xce\x1d\xdd\xe9\xa3\x88\xe4\x02\ +\x3c\x92\x06\x97\xf0\x26\x24\xad\x25\x72\xbb\x9f\x3e\x81\xfb\xf8\ +\x68\xad\x8c\x8f\xd4\x36\x16\xc3\x0d\x5c\xb8\x3e\x50\x09\x77\x95\ +\xc2\x05\xcf\xc0\x24\xb1\xc0\x7c\x38\x72\xff\x4e\x5e\x83\x16\x7c\ +\x00\x07\x8a\x8d\x8c\x3e\xfa\xf8\xa9\x28\x10\xf5\x02\xb2\x55\xf1\ +\x51\x51\xd8\x9b\x34\xc6\xe5\x56\x6d\x8b\x0f\x92\x98\xc9\xc5\xfb\ +\xf1\x4b\x1b\x99\x3a\x92\xaf\x01\xdb\x0e\xc1\xaa\x1f\xe0\x0d\x27\ +\xa1\x5f\xd5\x6e\xe4\x55\xb6\xe3\xf6\xb4\xa7\xe1\xc4\x01\xbe\xc0\ +\xe5\x93\xa2\x3f\xe1\xda\xd3\xec\x7f\x1e\x3c\xcb\x85\xed\x3f\x6a\ +\x22\x8f\x23\x9b\x85\x99\xfb\x12\xac\xec\x32\x34\xfc\x98\xe3\x15\ +\xff\xb0\xb8\x10\x87\x54\x33\xac\x88\x28\xc4\x80\x23\xdc\x0a\xbe\ +\xde\xa2\xd1\x9f\x89\x8b\x08\x72\x9f\xed\x25\x89\x67\x9a\xe7\xe1\ +\xbe\x1b\xe5\xf4\x3b\x25\x05\x96\xac\x86\xc5\x33\xa1\xd2\x18\xb9\ +\xfd\xfe\x6a\xd8\x3e\x08\x93\xef\x93\xfb\x3e\xb3\xa8\x2b\xc6\x7e\ +\x7a\x80\xb4\x67\xbe\xe2\x99\xb2\x5b\x52\x7f\x66\x8d\xd3\xb4\x67\ +\xc1\x13\xf4\xc5\x56\xf8\x21\xaf\xe5\xaa\x76\xc0\x37\x34\x16\x8e\ +\xf5\x32\x3a\x06\xbb\x5f\x57\xed\x78\x38\x7c\x73\xdd\xb5\x30\x97\ +\x0b\xcf\x8b\x16\xc0\xf1\x09\x87\xd4\x04\x2e\xf3\x38\x0f\x75\x52\ +\x17\xd5\x59\x34\x30\x9c\x16\x49\xfd\xc4\x2f\x26\xfd\x1c\xeb\xdb\ +\x27\xe0\xea\x54\x58\xcb\x6b\xb0\xf5\x17\xcc\x39\x9f\xa7\x11\xbe\ +\x70\x2f\xac\xe6\x43\xd8\xef\x25\x17\x5e\xac\x71\x52\x71\xad\x15\ +\xe4\x76\x57\xdc\x47\x12\x5d\x9c\x74\x86\xf4\xbb\x71\x45\x4c\x85\ +\xe6\x66\xd9\x62\xd8\x74\x3d\xf4\x39\x61\xdd\x1c\xf8\x4d\x36\x1c\ +\x2f\x32\xd6\x5f\x01\x7f\xfd\xe2\x61\xa1\x15\xf1\xa6\xa4\x92\x4f\ +\x50\x3a\xd4\x33\x65\x82\xc4\xa9\xda\x0e\x5a\x30\x86\xc4\x4a\x9c\ +\x0a\x50\x64\x9e\x07\x3e\xcf\x9b\x83\x02\x1f\xf4\xf3\x49\xc5\x71\ +\x2e\x97\x88\xdf\x2e\x5c\x6a\x86\xb3\x58\x68\x99\x3c\x7e\x29\x97\ +\x7b\x3e\xbe\x05\x6e\xbe\x19\x1e\x7d\x5b\xee\x78\xed\x98\x9d\x38\ +\x17\xa0\x88\xf8\x29\x7d\xce\x76\x58\x9a\x0f\x6f\x6b\x80\x57\x3f\ +\x0a\x7f\xe3\x32\xca\x18\x2f\x15\xfa\x78\xdb\xdc\x3e\x17\x9e\x38\ +\x07\x47\xdf\x33\x6d\xa8\x76\x4c\x8d\x45\x05\x68\xc7\x0e\x62\xff\ +\xaf\x38\x3b\x96\xc6\x2e\x40\x3b\x96\xc6\x2e\x40\x3b\x96\xc6\x2e\ +\x40\x3b\x96\xe6\x6f\x77\x87\x2e\xf7\x0a\x9d\x2e\x80\x00\x00\x00\ +\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x12\x63\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x50\x00\x00\x00\x1e\x10\x06\x00\x00\x00\xeb\xd3\x45\xf2\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x2e\x23\x00\x00\x2e\x23\ +\x01\x78\xa5\x3f\x76\x00\x00\x09\x38\x69\x54\x58\x74\x58\x4d\x4c\ +\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00\x00\ +\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\ +\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\x57\x35\x4d\ +\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\x4e\x54\x63\ +\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\x6d\x70\x6d\ +\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\x61\x64\x6f\ +\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\x78\x3a\x78\ +\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\x4d\x50\x20\ +\x43\x6f\x72\x65\x20\x35\x2e\x36\x2d\x63\x31\x34\x38\x20\x37\x39\ +\x2e\x31\x36\x34\x30\x33\x36\x2c\x20\x32\x30\x31\x39\x2f\x30\x38\ +\x2f\x31\x33\x2d\x30\x31\x3a\x30\x36\x3a\x35\x37\x20\x20\x20\x20\ +\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x20\ +\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\ +\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\ +\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\x3a\x44\x65\ +\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\x3a\x61\x62\ +\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\ +\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\ +\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\ +\x78\x6d\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\ +\x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x65\x6c\x65\ +\x6d\x65\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\x20\x78\x6d\x6c\x6e\ +\x73\x3a\x78\x6d\x70\x4d\x4d\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ +\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\ +\x2f\x31\x2e\x30\x2f\x6d\x6d\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\ +\x73\x74\x45\x76\x74\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\ +\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\ +\x2e\x30\x2f\x73\x54\x79\x70\x65\x2f\x52\x65\x73\x6f\x75\x72\x63\ +\x65\x45\x76\x65\x6e\x74\x23\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x73\ +\x74\x52\x65\x66\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\ +\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\ +\x30\x2f\x73\x54\x79\x70\x65\x2f\x52\x65\x73\x6f\x75\x72\x63\x65\ +\x52\x65\x66\x23\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x70\x68\x6f\x74\ +\x6f\x73\x68\x6f\x70\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\ +\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x70\x68\x6f\x74\x6f\ +\x73\x68\x6f\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x3a\x43\ +\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ +\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x32\x31\x2e\x30\ +\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\x78\x6d\x70\x3a\ +\x43\x72\x65\x61\x74\x65\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x33\ +\x2d\x30\x38\x2d\x30\x38\x54\x31\x32\x3a\x30\x30\x3a\x35\x38\x2b\ +\x30\x38\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x65\x74\x61\x64\ +\x61\x74\x61\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x33\x2d\x30\x38\ +\x2d\x30\x38\x54\x31\x32\x3a\x30\x36\x3a\x32\x32\x2b\x30\x38\x3a\ +\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x6f\x64\x69\x66\x79\x44\x61\ +\x74\x65\x3d\x22\x32\x30\x32\x33\x2d\x30\x38\x2d\x30\x38\x54\x31\ +\x32\x3a\x30\x36\x3a\x32\x32\x2b\x30\x38\x3a\x30\x30\x22\x20\x64\ +\x63\x3a\x66\x6f\x72\x6d\x61\x74\x3d\x22\x69\x6d\x61\x67\x65\x2f\ +\x70\x6e\x67\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\ +\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x36\ +\x34\x66\x36\x37\x38\x33\x64\x2d\x37\x31\x62\x32\x2d\x64\x36\x34\ +\x36\x2d\x62\x37\x32\x66\x2d\x33\x39\x38\x66\x66\x39\x37\x35\x66\ +\x63\x64\x38\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\ +\x65\x6e\x74\x49\x44\x3d\x22\x61\x64\x6f\x62\x65\x3a\x64\x6f\x63\ +\x69\x64\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x32\x30\x63\ +\x62\x32\x63\x38\x61\x2d\x32\x66\x61\x33\x2d\x39\x61\x34\x33\x2d\ +\x39\x35\x62\x61\x2d\x35\x64\x30\x32\x62\x63\x30\x62\x30\x61\x37\ +\x39\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x4f\x72\x69\x67\x69\x6e\x61\ +\x6c\x44\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\ +\x2e\x64\x69\x64\x3a\x36\x63\x36\x38\x31\x31\x64\x66\x2d\x30\x36\ +\x64\x31\x2d\x65\x64\x34\x38\x2d\x61\x61\x35\x65\x2d\x64\x61\x36\ +\x61\x37\x61\x62\x39\x35\x65\x30\x65\x22\x20\x70\x68\x6f\x74\x6f\ +\x73\x68\x6f\x70\x3a\x43\x6f\x6c\x6f\x72\x4d\x6f\x64\x65\x3d\x22\ +\x33\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x49\x43\x43\ +\x50\x72\x6f\x66\x69\x6c\x65\x3d\x22\x73\x52\x47\x42\x20\x49\x45\ +\x43\x36\x31\x39\x36\x36\x2d\x32\x2e\x31\x22\x3e\x20\x3c\x78\x6d\ +\x70\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\x3c\x72\x64\ +\x66\x3a\x53\x65\x71\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\ +\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x63\x72\x65\ +\x61\x74\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\ +\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\ +\x36\x63\x36\x38\x31\x31\x64\x66\x2d\x30\x36\x64\x31\x2d\x65\x64\ +\x34\x38\x2d\x61\x61\x35\x65\x2d\x64\x61\x36\x61\x37\x61\x62\x39\ +\x35\x65\x30\x65\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\x6e\ +\x3d\x22\x32\x30\x32\x33\x2d\x30\x38\x2d\x30\x38\x54\x31\x32\x3a\ +\x30\x30\x3a\x35\x38\x2b\x30\x38\x3a\x30\x30\x22\x20\x73\x74\x45\ +\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\x74\ +\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\ +\x70\x20\x32\x31\x2e\x30\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\ +\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\x76\ +\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\x22\ +\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\ +\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x36\x61\x64\x34\x61\ +\x34\x33\x64\x2d\x62\x36\x33\x30\x2d\x61\x63\x34\x37\x2d\x38\x66\ +\x64\x62\x2d\x35\x62\x61\x63\x37\x38\x66\x62\x37\x33\x37\x64\x22\ +\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\x32\ +\x33\x2d\x30\x38\x2d\x30\x38\x54\x31\x32\x3a\x30\x36\x3a\x32\x32\ +\x2b\x30\x38\x3a\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\x6f\ +\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\x6f\ +\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x32\x31\x2e\ +\x30\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\ +\x76\x74\x3a\x63\x68\x61\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\ +\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\x76\x74\x3a\x61\ +\x63\x74\x69\x6f\x6e\x3d\x22\x63\x6f\x6e\x76\x65\x72\x74\x65\x64\ +\x22\x20\x73\x74\x45\x76\x74\x3a\x70\x61\x72\x61\x6d\x65\x74\x65\ +\x72\x73\x3d\x22\x66\x72\x6f\x6d\x20\x61\x70\x70\x6c\x69\x63\x61\ +\x74\x69\x6f\x6e\x2f\x76\x6e\x64\x2e\x61\x64\x6f\x62\x65\x2e\x70\ +\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x74\x6f\x20\x69\x6d\x61\x67\ +\x65\x2f\x70\x6e\x67\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\ +\x20\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x64\ +\x65\x72\x69\x76\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x70\x61\ +\x72\x61\x6d\x65\x74\x65\x72\x73\x3d\x22\x63\x6f\x6e\x76\x65\x72\ +\x74\x65\x64\x20\x66\x72\x6f\x6d\x20\x61\x70\x70\x6c\x69\x63\x61\ +\x74\x69\x6f\x6e\x2f\x76\x6e\x64\x2e\x61\x64\x6f\x62\x65\x2e\x70\ +\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x74\x6f\x20\x69\x6d\x61\x67\ +\x65\x2f\x70\x6e\x67\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\ +\x20\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x73\ +\x61\x76\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\ +\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\ +\x36\x34\x66\x36\x37\x38\x33\x64\x2d\x37\x31\x62\x32\x2d\x64\x36\ +\x34\x36\x2d\x62\x37\x32\x66\x2d\x33\x39\x38\x66\x66\x39\x37\x35\ +\x66\x63\x64\x38\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\x6e\ +\x3d\x22\x32\x30\x32\x33\x2d\x30\x38\x2d\x30\x38\x54\x31\x32\x3a\ +\x30\x36\x3a\x32\x32\x2b\x30\x38\x3a\x30\x30\x22\x20\x73\x74\x45\ +\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\x74\ +\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\ +\x70\x20\x32\x31\x2e\x30\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\ +\x22\x20\x73\x74\x45\x76\x74\x3a\x63\x68\x61\x6e\x67\x65\x64\x3d\ +\x22\x2f\x22\x2f\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x53\x65\x71\x3e\ +\x20\x3c\x2f\x78\x6d\x70\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\ +\x3e\x20\x3c\x78\x6d\x70\x4d\x4d\x3a\x44\x65\x72\x69\x76\x65\x64\ +\x46\x72\x6f\x6d\x20\x73\x74\x52\x65\x66\x3a\x69\x6e\x73\x74\x61\ +\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x36\ +\x61\x64\x34\x61\x34\x33\x64\x2d\x62\x36\x33\x30\x2d\x61\x63\x34\ +\x37\x2d\x38\x66\x64\x62\x2d\x35\x62\x61\x63\x37\x38\x66\x62\x37\ +\x33\x37\x64\x22\x20\x73\x74\x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\ +\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x36\ +\x63\x36\x38\x31\x31\x64\x66\x2d\x30\x36\x64\x31\x2d\x65\x64\x34\ +\x38\x2d\x61\x61\x35\x65\x2d\x64\x61\x36\x61\x37\x61\x62\x39\x35\ +\x65\x30\x65\x22\x20\x73\x74\x52\x65\x66\x3a\x6f\x72\x69\x67\x69\ +\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\ +\x6d\x70\x2e\x64\x69\x64\x3a\x36\x63\x36\x38\x31\x31\x64\x66\x2d\ +\x30\x36\x64\x31\x2d\x65\x64\x34\x38\x2d\x61\x61\x35\x65\x2d\x64\ +\x61\x36\x61\x37\x61\x62\x39\x35\x65\x30\x65\x22\x2f\x3e\x20\x3c\ +\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x54\x65\x78\x74\x4c\x61\ +\x79\x65\x72\x73\x3e\x20\x3c\x72\x64\x66\x3a\x42\x61\x67\x3e\x20\ +\x3c\x72\x64\x66\x3a\x6c\x69\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\ +\x70\x3a\x4c\x61\x79\x65\x72\x4e\x61\x6d\x65\x3d\x22\xe5\x91\xbc\ +\xe5\x8f\xab\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x4c\ +\x61\x79\x65\x72\x54\x65\x78\x74\x3d\x22\xe5\x91\xbc\xe5\x8f\xab\ +\x22\x2f\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x42\x61\x67\x3e\x20\x3c\ +\x2f\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x54\x65\x78\x74\x4c\ +\x61\x79\x65\x72\x73\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\ +\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\ +\x52\x44\x46\x3e\x20\x3c\x2f\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\ +\x3e\x20\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\ +\x22\x72\x22\x3f\x3e\x07\x63\xa7\xb4\x00\x00\x08\xd1\x49\x44\x41\ +\x54\x78\x9c\xed\x9b\x7f\x70\x54\xd5\x15\xc7\x3f\x67\x89\x88\x14\ +\x64\x87\xc9\x50\x06\x2c\x30\x8c\xad\xbf\xd0\x86\x4d\x0c\x58\x68\ +\x03\x94\xd2\x40\x91\x22\x82\x3f\xaa\x82\x32\x9a\x5d\xb0\x62\x88\ +\x48\x99\x90\x4a\x50\x40\x1b\x52\x49\xd1\x21\x9b\x40\xe5\x47\x31\ +\x63\x11\x35\x2a\xa6\x36\x45\x09\x18\x11\x52\xd8\xac\x31\x46\xab\ +\x48\x43\xb4\x4a\x2d\xc5\x98\xd2\x10\x62\x78\xa7\x7f\xec\x7d\x31\ +\x3f\xd8\x26\xc0\x4b\x02\xed\x7e\xfe\x39\x73\xf7\xfe\x38\xe7\xee\ +\xfb\xee\xb9\xef\xdd\x77\x57\x54\x55\x55\x89\x10\xa1\x4b\x70\x75\ +\x75\x00\x11\xfe\xbf\x89\x08\x30\x42\x97\x12\x11\x60\x84\x2e\x25\ +\x22\xc0\x08\x5d\x4a\x54\x67\x3b\x14\xd9\x3f\xd2\x77\x3f\x63\xc0\ +\xb5\x82\x4f\x3d\x15\xc0\x1e\x9d\x30\xfd\x1b\x40\xa1\xc6\x7f\x3f\ +\x0b\x34\x57\x32\xbe\x39\x0f\x70\x53\xfd\x45\x01\x48\xa6\xa6\x7c\ +\x15\x0d\xfa\xb9\x54\x95\xcc\x03\x4d\x95\xe2\xe7\x6f\x06\xa9\xb1\ +\xac\xbd\x1b\x54\x3d\x71\xb9\xeb\xbf\x7a\xa9\xb3\xe7\x11\xc1\x19\ +\x3a\x2d\x03\x8a\x04\x57\x7b\xd7\x0f\xab\x01\xd9\xa7\x0b\x9e\x7e\ +\x07\xb4\xaf\xf6\xd8\x3e\x18\xf4\x55\x6e\x19\xd1\x17\x74\x81\xe4\ +\xef\x8f\x07\xd9\xaa\xd3\x9f\xd9\x03\xd2\x53\x6b\x5f\x78\x11\xd8\ +\x25\x93\x4a\xa3\x40\x8e\x8a\xef\xd2\x29\x20\x95\x7a\xe4\x8f\x6f\ +\x00\x41\xe6\x3e\xf7\x91\x48\x69\xd0\x37\xe7\xda\xcc\xce\x9a\x47\ +\x04\x67\x91\x8e\xde\x86\x11\xd9\x3f\xcf\x77\xfc\xb6\x38\x70\xd5\ +\xea\xdd\x2b\xd7\x82\x3e\x4c\xe5\x8e\x74\xe0\x18\x43\x33\xae\x03\ +\x4d\x91\x15\xe5\x71\xaa\xb1\xdb\xfc\xdf\x3a\x39\xbe\xed\xf1\x4a\ +\xfd\xbe\x3e\xa3\xb2\x80\xd5\xba\x3b\xf9\x17\x40\x25\xc1\x1f\xd6\ +\x83\xe6\x32\xfb\x81\xb7\x54\x3d\xb7\xe7\x9c\x58\x3f\xb2\xe3\x66\ +\x74\x76\x88\x04\x02\x5e\xaf\xdb\x94\x62\x8c\x1d\x62\x6c\x82\xb9\ +\x12\x63\x4c\x79\xa3\xa8\x7a\x3c\x39\x39\xe9\x9d\x12\xdb\xa9\x08\ +\xc5\x9b\xdc\x58\x0e\xc5\x93\xe5\xdc\xf8\x1d\x25\x40\x91\x40\xba\ +\xef\xf8\x1d\x77\x03\xf5\x3a\x6f\xd3\x5a\xd0\x12\x49\xbe\xef\x0e\ +\xd5\xd8\xed\xfe\xab\x9e\xdc\xec\x9c\x9f\xe0\x20\xdf\x2b\x77\xaf\ +\x01\x2b\x53\x9f\x7a\x22\x16\xd8\x27\x4f\xdd\x76\x9f\xaa\x27\xc3\ +\xdf\xe7\xf9\x12\xa7\xfc\x7c\xed\x2f\x10\xf0\x7a\xef\x34\xa5\x59\ +\x61\xbe\xb9\xa0\xb1\x87\x24\x64\x57\xb5\xf1\x0d\x57\xb6\xb0\x3b\ +\xa5\x79\x7d\x96\xb9\xf0\xd5\x6d\xc4\x15\x63\x4a\xee\xff\xee\x8e\ +\x60\x9b\xe3\x35\x1f\x77\x87\xda\x71\x39\xfd\x83\x70\xfc\x1e\x50\ +\xa4\xb4\xc6\xfb\xc4\x65\x59\x20\x07\xd8\x93\x73\x08\xac\x63\x92\ +\x9c\xda\xc7\x08\xaf\xc6\x69\x7f\xaa\x31\x55\xfe\x9f\xac\x9b\x2b\ +\x12\x48\xf5\xf5\xed\x1d\x0f\xa4\xe8\x82\xf5\x77\x89\x04\xaa\xe6\ +\x6c\x3e\xd8\x4f\xd5\x33\x28\xfb\x78\x70\x9b\xb3\x5e\x87\x18\xeb\ +\x36\x76\xbe\x11\x8c\x2d\xc8\x18\x73\x81\xe7\x9b\x0b\x18\x34\xf5\ +\x95\xe6\xf3\xca\x0e\xba\xb0\xb6\xd0\xed\xf8\x2a\x5b\xd4\x8f\x31\ +\x76\xac\x89\xa7\xc8\xc4\x61\xa7\xa0\xf9\xe2\x74\x86\x6b\x0b\xc7\ +\xee\x01\x45\x02\x53\x93\x9e\xed\x96\x02\x5a\xa6\xc7\x56\x7d\x06\ +\x3a\x53\xb6\x16\x55\xab\xc6\xe6\xfb\xaf\x7d\xf4\x8c\x85\x27\x12\ +\xf8\xc0\x7b\x03\xaf\x8a\x04\x66\x7b\x77\x26\xac\x10\xd9\xbf\xcf\ +\xf7\xee\xb8\x28\x91\xc0\x36\xdf\xf2\x6e\x75\x76\x3b\x55\xcf\x0a\ +\xff\x75\xab\x4a\x00\x0b\xcf\xce\xa9\xa0\x05\x3a\xf2\x97\x37\x88\ +\xec\x4b\x9e\xb3\x58\xe6\x3a\x31\xc7\xd6\x54\x1b\x41\x15\x99\xf2\ +\xa1\xc6\xcc\x75\xea\xa5\xd6\x4d\x5b\x84\xfa\xa5\x1b\xfb\x82\x36\ +\x1f\xa7\xbd\xd8\x4b\xf7\xd8\x46\xdb\xbe\x7e\xc1\xd3\xf4\x73\xf6\ +\x38\x98\x01\xad\x75\xdd\x36\x8f\x78\x08\x5c\x95\xd6\x98\xc4\xdf\ +\x01\x95\x8c\x1b\xf1\x66\x5b\xbd\x44\xde\x8e\x9e\xb3\xa3\x47\x1d\ +\xe8\x01\x4a\xb4\x01\xa8\xa2\x4a\x27\x83\x15\x6d\x45\x4f\x2c\x04\ +\x8e\xe0\x9e\xfd\x2f\xc0\xc7\x86\x29\x3f\x06\xd7\x54\xad\xff\xa7\ +\x00\x03\x38\x3c\x3c\x1e\x98\xcc\xe2\x8f\x9b\x8c\xe8\x5a\x23\xe3\ +\x1f\x7b\x13\xac\xc9\x9a\xb1\x3d\x05\xf8\xb9\x54\x8f\x5a\x0a\x64\ +\xb1\xbc\xd8\xb9\xe9\xb6\x81\xbd\xc4\x85\x04\x74\xbf\xbd\x04\x1b\ +\x21\x04\xdb\xe8\xfd\x53\xb5\xdb\xb5\x77\xa9\x3c\x5f\x71\x50\x80\ +\xae\x2c\x6b\xe8\x8c\x5b\x41\x6a\xa4\xf0\xb5\xf7\x41\x26\xc9\xa2\ +\xd2\x67\x4d\x65\x9c\xdd\x4a\x24\x50\x95\xf4\xa3\x0b\xeb\x40\x86\ +\x49\xf9\x9a\x89\xc0\x95\x04\x46\xdc\x0c\x8c\xe7\xe2\x86\x83\x40\ +\x3d\xf5\xb2\x05\xd8\xcc\xe6\x81\x5e\xa0\x3b\x51\x45\xdb\x81\x23\ +\x0c\xb8\x65\x25\x30\x5a\xa7\xff\x3a\x0f\x64\x97\x0e\xed\x7e\x41\ +\xeb\x38\x4e\xae\x93\xb2\xbd\x33\x41\x56\x10\xf5\x56\x29\xc8\xeb\ +\xd6\xf8\xa9\xfd\x42\x75\xc5\xc9\xce\xcd\xf7\x74\x28\x32\xd6\x16\ +\x56\x56\xab\x8c\x14\x12\xea\x10\x53\x8a\x31\xf6\xae\x76\x66\xae\ +\xf3\x17\x07\xb7\x61\xa4\x4a\x3d\xd7\xc6\x01\x37\xe9\x25\xef\xc5\ +\xa9\xc6\x24\x66\x27\x34\xc4\x9d\xa2\x5d\x77\xfa\x0e\x1c\x06\x8c\ +\xd4\xe2\x19\x37\x81\xce\x25\xed\xe9\x2f\x40\x97\xb1\x6c\xe9\x49\ +\xd0\x4c\x32\x1f\xbb\x15\x68\xa0\x61\xf2\x0e\x55\x4f\x5c\xce\xda\ +\xe9\x1f\x03\x2e\x1a\x4a\x77\x03\xb5\x44\xeb\x32\xd0\x12\x99\xc9\ +\xe7\x2d\x47\x57\x8d\x3d\x9c\x7d\xe3\xc9\x5a\xe0\x25\x9d\xb9\x37\ +\x19\x24\xa0\x9e\xb8\x32\xe7\xe6\x79\x26\xbc\x6d\x84\x54\xdd\x46\ +\xbb\xa9\xc6\xe6\x9b\xcc\x17\xec\xb0\x88\xce\x15\x1c\xcc\x80\x9a\ +\x22\x55\xee\x20\xc8\xcf\x88\xff\x70\x27\x50\x11\xa6\x61\x3d\x0d\ +\x12\x0d\xf4\xa0\xe7\x97\x79\x40\x7f\xfa\x6f\x5d\xa5\xea\x99\x90\ +\xf3\xdb\x0f\x4f\x21\xd8\xa6\xf4\x08\x86\xac\xe4\x00\x16\xf0\x55\ +\xf8\xb6\x12\xaf\x55\x5f\x3e\x07\x7a\x8d\x94\x5f\xf4\x1c\x00\xb7\ +\x9e\xc6\x74\xce\x12\x3b\xa3\x35\xbf\xa9\x6f\x9d\xf9\x6c\xc2\xb5\ +\x6b\x3e\x4e\x65\x87\xc5\xdb\x55\x38\xf9\x14\xec\xa6\x3c\x6a\x2b\ +\x90\xaf\x97\xf4\x7a\xcd\x7c\x36\x29\x4c\x5b\x93\x91\x64\x89\xb1\ +\x79\x0e\xc6\x61\xd0\xa3\xae\xe7\xad\x22\xa0\x4e\x6f\xef\x3d\x01\ +\x18\xe4\xbc\x0f\xb7\x11\xc8\x18\x53\x1e\xdc\x62\xbb\xe5\x4e\x53\ +\xbf\xa4\x8d\x6d\x98\x31\xe6\x61\x63\x49\x98\xfa\x22\x63\xdb\xfb\ +\x30\x71\xfe\xe0\xa0\x00\x25\x43\xa7\x1c\xce\x04\x4d\x94\x8a\x5e\ +\x43\x81\xef\x84\x69\xd8\x9d\x28\x36\x01\x75\xd4\x76\xeb\x0d\x1c\ +\xe6\xf0\xf5\x83\x45\x02\xaf\x7a\x6f\xfc\x6b\x11\xe0\xe2\x93\x0b\ +\xea\x81\x68\x4d\x2f\xcf\x53\xf5\x78\x72\x27\xbe\x7b\x4d\xa8\x6b\ +\x5d\xff\x90\xd5\x2d\x00\xb8\xb8\xd7\x8c\xf9\xc9\x29\xfc\x1c\x53\ +\x06\xfc\x03\xa8\x66\x51\xa5\xc3\xdb\x30\x36\x43\x8c\x5d\xd2\x6a\ +\xfb\xa3\xf9\xb6\x4a\x7a\x98\x7b\xbe\x8e\xda\x5f\x9b\x65\x04\x9d\ +\x70\x9a\xfd\x62\x5a\xfc\xa0\x5a\x6e\x8c\xef\x74\x24\xba\xa6\x38\ +\xf9\x2a\xae\x41\x02\xbb\x7b\x80\x26\xca\xfb\x09\x8f\x8b\xec\x2b\ +\x9e\xb3\xa3\xc7\x86\xd6\xcd\x14\x8e\xfe\x6d\x17\xb0\x47\x46\xbf\ +\x3c\x05\x64\x0d\xcb\x66\x7d\x04\x92\x46\xea\x43\x13\x41\x16\x92\ +\x95\xba\x16\xa8\x95\xd5\x85\xf7\x88\x04\x0a\xbd\x33\x7e\x3f\x03\ +\x70\x11\x15\x9b\x06\xf4\xa4\xd6\x55\x02\x72\x25\x55\xb4\x7a\xac\ +\x15\x09\x94\x25\xbd\xe8\xee\x05\x40\xbf\x51\x05\x20\x3e\x7a\xee\ +\x9d\xe8\xe0\x3c\x9b\x60\x3f\xa5\xda\x99\x69\xe3\x39\x92\xa1\x8a\ +\x8c\x5d\x2a\xcd\xed\xd7\x34\x17\x9a\x8d\xfd\x43\xb2\x33\xf9\xc6\ +\x76\x3e\xb5\x9f\x39\x4e\x66\xc0\x54\xd7\xea\xbc\xd7\xc0\x35\xda\ +\x1a\x90\x74\x00\x34\x8d\x35\x97\x7f\x00\xc0\xd8\x60\x63\x2b\x55\ +\x4f\xff\xdc\x3f\xd5\xad\x06\x6a\x20\x29\xb4\x0d\xb3\xf3\xa2\xc5\ +\xa0\x07\xd8\x63\x15\x02\x65\x94\x93\x02\xa4\x5b\xfe\xf1\x27\x80\ +\x06\x6a\xef\x3d\x08\x7a\x27\xa9\x79\x57\x03\x05\x32\xed\xe3\x3e\ +\xa0\x89\xfa\xf0\xbf\x4f\xb5\x66\x05\x5d\xc5\x97\x16\x03\x1e\x9d\ +\x19\xb7\x12\x64\xb3\xeb\xf2\x7b\xf2\x01\xf8\xcc\xb9\xd9\xb6\xa4\ +\x45\x06\xeb\x62\x21\x1e\x92\xe6\xfb\x93\xb6\xe0\x96\x86\xd9\x10\ +\xbf\xcb\xb4\xdf\xd0\x6a\xa4\x50\xfd\xac\x0e\x8b\xd4\x41\x01\x9e\ +\x4c\x64\x6e\x45\x01\x50\x40\xfa\xcb\x9f\x81\x14\xe8\xe7\x8f\x8c\ +\x0b\xd5\x5d\x1f\xb6\x97\xea\x77\x8f\x64\x27\x1c\x0f\x02\x90\x40\ +\x3f\xe0\x07\xa6\x6a\x3b\xbc\x82\x48\x69\x85\xef\xc1\xc2\x28\x90\ +\x63\x54\x4c\x9a\x03\xba\xc9\xca\xaf\xcf\x07\x32\xa4\xfc\xef\x69\ +\xa6\xed\x86\x26\x43\xd6\xe9\xec\xe5\xd9\xa0\x07\x65\xc2\x96\x05\ +\x70\x32\x09\x5f\xf9\x72\xe0\xb0\x73\x73\xb5\xdd\xe5\x9f\x23\x19\ +\xcf\x66\x63\xa3\xc0\x5a\x12\x6e\x89\x0f\x27\xbc\xce\xc2\xf1\x77\ +\xc1\x22\xa5\x97\xfb\xde\xbc\x22\x13\x38\xa8\xc9\x7f\xd8\x0b\x9a\ +\xe7\x2a\x5b\xf1\xa0\xaa\x67\x7a\xf6\x89\xdc\x78\xe7\x3c\xb5\xf4\ +\x1b\xa8\xf2\xed\x4f\x19\x04\x32\x4d\x7d\x8b\xef\x07\x6a\x25\xe3\ +\x7b\x0f\xaa\x0e\xaf\xf0\x8f\xfd\x8b\xd5\x51\x7e\x4f\x23\xbe\x26\ +\x2f\xf5\xdd\xc6\xda\x1b\xd4\xbf\xe9\xf2\x43\x07\xe1\xe8\xe8\x77\ +\xc1\x8e\x1f\xc7\x52\x1d\xfe\xbe\x7f\xd4\x7b\x0b\x40\xa6\xc9\x6e\ +\xdf\x85\x20\x69\xd6\x93\x8f\x4e\x14\x09\x1c\xf3\xf6\x7e\xc0\xc1\ +\x2c\x14\x42\x64\x7f\x91\xef\xe5\xe4\x27\x81\x28\xcd\xfd\xd5\x8d\ +\xa0\x23\x65\xb7\x77\xfe\xb9\x22\xbc\xe6\xb8\x8d\xb5\xef\xb5\xaa\ +\x4d\x39\xbf\xd3\x23\x39\x3d\xdc\xc6\xf6\x71\xfc\xd8\x4a\x27\x1c\ +\xc7\x0a\xde\xe4\x3b\x91\x38\x1a\x74\xbb\x4e\xcd\xf9\x36\xe8\x2e\ +\xa2\x8b\xdc\x40\x14\xd6\xe3\x97\x81\x2e\x92\x8c\xf2\x4b\x55\x63\ +\xf3\xfd\x03\xdb\x75\x1c\x2b\xc3\x77\xc5\xa8\x35\x40\xae\x6e\x49\ +\x9e\x0f\x7c\xca\x33\xe3\x4b\xc0\x9a\x2e\x0b\xef\xc9\x56\x8d\xdd\ +\xe4\xef\xb3\xd5\xdf\x71\x33\x3a\x33\x5a\xbe\xd3\xfd\x5f\x7f\xc5\ +\xd6\x5e\x3a\x5c\x80\x8d\x8e\x24\x38\xcd\x9b\x73\x75\x32\x58\x8f\ +\x69\xaf\xe5\x2b\x81\xa3\x52\x3c\xaa\x08\x58\x48\x46\x70\x11\xb0\ +\x90\xc7\xdf\xd9\x06\x52\xa6\xd7\xd4\x00\xcc\x63\x75\xed\x7a\x60\ +\x82\xec\x1e\x38\x1f\x70\x0b\x83\x93\x41\x7d\x9a\x38\x2e\x13\x38\ +\xaa\x69\xaf\x8f\x04\x99\xe6\x4a\x79\x64\xb8\xea\xf0\x8b\xfd\x6f\ +\xfc\xd9\xb1\x63\x5e\x11\x3a\x87\x4e\x13\x60\xa3\x43\x09\x14\x24\ +\xc5\x5e\x30\x05\xa4\xc1\x15\x3f\x6c\x1d\x50\xae\x9e\x19\x23\x08\ +\x7f\x24\x3f\x49\x53\x1a\x5c\x80\x25\x55\x6f\x24\x01\x73\xa5\xf8\ +\x99\xab\x40\x83\x96\xf5\xee\xa7\xaa\x9e\x45\x91\x23\xf9\xe7\x2f\ +\x9d\x2e\xc0\x08\x11\x9a\x12\xf9\x57\x5c\x84\x2e\x25\x22\xc0\x08\ +\x5d\x4a\x44\x80\x11\xba\x94\x88\x00\x23\x74\x29\xff\x01\x99\x98\ +\x0a\xf9\x66\x56\x34\xd4\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ +\x60\x82\ +\x00\x00\x01\x04\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\xbe\x49\x44\x41\x54\x38\x4f\xad\x93\xe1\x11\xc2\x30\x08\x85\x61\ +\x93\xba\x49\xdd\x80\x6c\xa0\xa3\x38\x49\xbb\x01\x6c\xd0\x51\xcc\ +\x26\x78\x78\x8d\x47\x52\x12\xef\xac\xfd\x93\xeb\x01\x1f\x8f\x17\ +\x82\x70\xf2\xc3\x93\xf5\x50\x01\x88\xe8\x26\x22\xeb\x08\x4a\x44\ +\x93\xc5\x45\x24\xdb\xf9\x01\x58\x00\x11\x9f\xaa\xba\x8a\xc8\x3d\ +\x82\xec\x39\x8b\xaa\xe6\x92\x73\x50\x80\x88\x96\x70\x80\x94\x62\ +\x00\x98\x98\xf9\x52\x1a\x1c\x3c\xb0\x31\x5a\x48\xaf\xb8\x1a\xc1\ +\x4b\xf6\x10\x00\x78\x18\xb0\xed\xdc\x55\x50\x02\x05\xb2\xff\x67\ +\x2f\xdb\x37\xeb\x5e\xa3\x93\x3d\x8f\x8c\x0d\x01\x7e\x66\x55\x7d\ +\x8f\xd0\x83\x44\x26\xda\x75\x56\x33\x47\xc6\x86\x1e\x8c\xdc\xee\ +\x41\x2a\x05\x29\xa5\xad\xe7\xb6\x75\x8c\x20\xed\x26\x2e\xcc\x7c\ +\xfd\xb2\xca\xb3\x35\x29\x2b\xff\xdf\xc7\xf4\xcb\xcb\x7c\x01\x0c\ +\xe7\x7e\x11\x00\xde\x38\xf7\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ +\x42\x60\x82\ +\x00\x00\x14\x0c\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\xc8\x00\x00\x00\xc8\x08\x06\x00\x00\x00\xad\x58\xae\x9e\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x13\ +\xc6\x49\x44\x41\x54\x78\x5e\xed\x9d\x41\x8f\x1c\x47\x15\xc7\xab\ +\x7a\x8d\x50\x4e\x80\x37\x48\x20\x90\xb2\xde\x05\xce\x91\xe0\x02\ +\x1c\x6c\xdf\x91\xc8\x09\x71\x00\xd9\x7b\xe1\x0b\x20\x21\x32\x8e\ +\xe4\xac\x14\xaf\x73\xc8\x37\xc8\xc1\xeb\xe4\x80\x84\xc4\x21\x9f\ +\xc0\x63\xb8\x70\x00\x45\xe2\x84\xc0\xde\x9d\x1c\x80\x03\x99\x28\ +\x12\x12\x07\xe4\xe9\x42\xd5\xd3\x3d\xee\x9d\x9d\x99\x7a\xef\xd5\ +\xab\xea\xaa\xea\xb7\x97\x75\xb2\xd5\xd5\x55\xff\x7a\xbf\x7a\xef\ +\x55\x57\x57\x6b\x25\x3f\xa2\x80\x28\xb0\x55\x01\x2d\xda\x88\x02\ +\xa2\xc0\x76\x05\x04\x10\xb1\x0e\x51\x60\x87\x02\x02\x88\x98\x87\ +\x28\x20\x80\x88\x0d\x88\x02\x34\x05\xc4\x83\xd0\x74\x93\xab\x46\ +\xa2\x80\x00\x32\x92\x81\x96\x6e\xd2\x14\x10\x40\x68\xba\xc9\x55\ +\x23\x51\x40\x00\x19\xc9\x40\x4b\x37\x69\x0a\x08\x20\x34\xdd\xe4\ +\xaa\x91\x28\x20\x80\x8c\x64\xa0\xa5\x9b\x34\x05\x04\x10\x9a\x6e\ +\x72\xd5\x48\x14\x10\x40\x46\x32\xd0\xd2\x4d\x9a\x02\x02\x08\x4d\ +\x37\xe7\x55\xaf\x7e\xeb\xad\x5b\xc6\xd4\x07\xca\xa8\x9b\xab\xc2\ +\xc6\x1c\x34\xff\xd6\x7a\xf9\x7b\xf9\xd3\xff\xf7\xac\xf9\x3f\xc6\ +\x2c\x7f\x2f\xcb\x36\xff\x36\x4a\xcd\xaa\xaa\x7a\x6a\xff\xfd\xe2\ +\xc5\x8b\xd9\xe7\xb3\x77\x5f\x96\x71\xb6\x46\x0a\x50\x15\x10\x40\ +\xa8\xca\xb5\xd7\xed\x1f\x4d\xee\x1a\xa3\x5e\xd3\x4b\x43\xbf\xb5\ +\xc1\xe8\x3d\xef\xb0\xf5\xf2\x59\x03\x92\xd6\xb3\x0e\x1e\x01\x87\ +\x5f\x6a\x01\x04\xa9\xa9\x05\xa2\xf5\x0a\x16\x86\xfe\xec\x8f\xac\ +\x29\x50\x71\x63\xa6\x46\xeb\xa9\xf5\x36\x02\x8c\xbf\xc6\x02\x88\ +\x43\xc3\xe4\x81\x70\xd9\x80\x00\xe3\x52\x68\xe7\xdf\x05\x90\x0d\ +\xf2\xf4\xa0\xb8\xeb\xa5\x6e\x9a\x17\x9f\xe9\xaa\x7a\xfc\xe9\xb3\ +\x77\xa6\x69\x36\x2f\xad\x56\x09\x20\xbd\x5c\xa2\x0d\x9d\x4a\x84\ +\xe2\xaa\xd5\xb5\x9e\xa5\xae\xeb\xc7\x92\xf0\x6f\x87\x72\xd4\x80\ +\x7c\xf9\xe0\xd7\x07\x7b\x55\x75\xbf\x4d\xae\xd3\xcb\x27\x62\x4d\ +\xa6\xc6\x4c\x55\xa5\x1f\x2f\x16\xf5\x54\x60\xb9\x2c\xfa\x28\x01\ +\x69\x96\x60\xeb\xfa\x8e\x52\x6a\x1c\xde\x02\x01\x9a\x51\xea\x6d\ +\xf1\x2a\x2f\x05\x1b\x15\x20\x0d\x18\x8b\xc5\x7d\xa5\x75\xb7\x1c\ +\x8b\x30\x9d\xd1\x15\x3d\x5b\xd4\xf5\xc9\xd8\x3d\xca\x28\x00\x69\ +\x92\xee\xda\xdc\x11\x30\x48\x90\x8f\x1a\x94\xa2\x01\x11\x8f\x41\ +\x02\x62\xdb\x45\xa3\x04\xa5\x58\x40\xf6\x6f\xbc\xf9\x44\x3c\x06\ +\x2b\x20\xcb\xca\xb4\x3a\x1e\x53\x32\x5f\x1c\x20\xed\x33\x8c\x47\ +\x01\x4c\x23\x54\x95\x9b\xf6\x54\xa5\xbd\xa2\x66\xcc\x74\x61\xcc\ +\xf1\x18\xf2\x93\x62\x00\x49\x2e\x9c\xb2\x4b\xa7\xed\x3e\x29\xad\ +\xd5\x27\x76\xd6\xed\x08\x83\x1a\x96\x5d\x86\xb6\xd7\x5c\xbb\x76\ +\xad\xf9\x5d\xd7\xf5\x4d\x6d\xcc\x72\x81\x61\xb9\xe1\x71\x68\x90\ +\x8a\x0f\xbb\x8a\x00\x24\x81\x70\xea\x4c\x69\xf5\x54\xeb\x6a\x16\ +\x73\xff\x93\x05\xc8\xc2\xb3\x02\x67\x28\x68\xb4\x3a\x9e\x3f\x3f\ +\x3d\x0b\xe5\x62\x87\xac\x37\x6b\x40\xda\xe7\x19\x36\x9c\x8a\x3d\ +\x93\x9e\x75\x3b\x68\x53\xdb\xb2\x61\x35\x19\x08\x98\x22\xbd\x49\ +\xb6\x80\x5c\x3f\x9c\xdc\xd7\x4a\xbd\x1d\x71\x76\x69\xbc\x44\x6e\ +\x33\x65\x2f\xf4\x8c\x11\x92\xcd\x16\x75\x7d\x1b\x1a\x42\x46\x1c\ +\x3b\xf2\xad\xb2\x03\xa4\xd9\x1e\xa2\xf5\xa3\x28\x2b\x54\x85\x6d\ +\xc1\x88\xf6\x3c\xa8\xa0\x90\x2b\x2b\x40\xda\x90\xea\x09\x79\x3a\ +\x80\x5f\x58\x64\xb8\xd0\x75\x7f\x15\x86\x2d\xb7\xda\x84\x0a\x4f\ +\x8b\xd0\x30\x1b\x40\x62\x84\x54\x76\x1f\xd2\x67\xe7\xa7\x27\x70\ +\x8e\xf2\x2f\xd9\x2e\x8b\xdb\x0d\x9b\x21\x40\xc9\x3e\xe4\xca\x02\ +\x90\xe0\xab\x54\x05\x85\x04\x54\x64\x83\x82\x92\xb1\xbe\x49\x03\ +\x12\x3c\xdf\xc8\x78\xe0\xa8\x20\xb8\xae\x0b\x06\x4a\xa6\x5a\x27\ +\x0b\x48\xfb\xae\x86\xcd\x37\xd8\x5d\xff\x18\x43\x29\x17\x18\xeb\ +\x7f\x6f\x43\x5a\xd6\x1c\x25\x47\xdd\x93\x04\x24\x58\x32\x6e\xcc\ +\x54\xef\xed\x9d\xa4\xf6\xec\x02\x6b\xbc\xb1\xca\x87\xf0\xe0\xb9\ +\x41\x92\x1c\x20\xa1\xe0\xd0\x55\x75\x5b\xc0\xa0\xa1\xc5\xfd\x40\ +\x36\xa7\x97\xb2\x92\x02\x24\xc8\x46\x43\x63\xa6\xf3\x8b\x87\xb7\ +\x69\xa6\x21\x57\xf5\x15\xd8\x3f\x9c\xd8\x5d\x0b\x3c\x6f\x61\x66\ +\xb2\xe1\x31\x19\x40\x42\x78\x0e\xf1\x1a\xfc\x80\x73\x26\xf1\x39\ +\x78\x92\x24\x00\x09\x00\xc7\x4c\x57\xd5\xb1\x84\x54\xfc\x80\xd8\ +\x1a\x39\x17\x50\x52\xcf\x49\x06\x07\x84\x1d\x0e\x09\xa9\xc2\x50\ +\xb1\xa1\x56\xae\x87\xb7\x29\x43\x32\x28\x20\xed\x4c\x74\xc1\x35\ +\xa2\x12\x52\x71\x29\x09\xaf\x87\x2b\x81\x4f\x15\x92\xc1\x00\x11\ +\x38\xe0\x46\x98\x7a\xc9\x92\x21\x19\x04\x10\xce\x18\x56\x29\x25\ +\xf9\x46\x02\x04\x71\x8d\x69\x6a\x51\xc0\x20\x80\x30\xee\xad\x12\ +\x38\x12\x80\xa3\x6b\x02\x17\x24\x8b\xba\xbe\x91\xca\x3b\x25\xd1\ +\x01\xe1\x4a\xec\xac\xe7\x98\x9f\x9f\xde\x48\xc8\x3e\xa4\x29\xad\ +\x02\xfb\x87\x13\x9b\x57\xfa\x6c\x11\x4a\x66\x17\x70\x54\x40\xd8\ +\x56\xac\x64\xa5\x2a\x79\x18\x7d\xa3\x84\x54\x92\xf6\x68\x80\x30\ +\x26\xe5\xe2\x39\x92\xc7\x63\xd9\x40\x5f\x4f\x92\x02\x24\xd1\x00\ +\xf1\x9d\x51\x5a\x9b\x28\x0a\x0e\x3b\x69\x54\x55\x75\xa7\x39\xca\ +\xc7\x7e\x8b\x30\xc3\x77\xde\x77\xb1\xca\x91\x93\x0c\x9d\x8f\x44\ +\x01\x84\x2b\xef\x48\x6d\x85\x83\x3a\x91\xf7\x3e\xbb\xb0\x69\x5f\ +\x53\x32\xf1\x37\xb5\x7f\xfd\xeb\x18\x20\x19\x54\x8f\xe0\x80\x70\ +\xe5\x1d\xa5\xc0\xd1\x84\x1e\xee\x63\x51\x07\x35\x0a\x0e\x30\x38\ +\x21\x19\x32\xd4\x0a\x0e\x88\x6f\x1c\x6a\x85\x2e\x09\x0e\xb0\x37\ +\x2d\x6c\x21\xc2\xf7\x61\xe2\x50\xa1\x56\x50\x40\xc0\xc6\xb0\x63\ +\xca\x1a\x72\xf6\xe0\x9e\x49\xdb\xc4\xd5\x00\xeb\x2d\x2a\xdf\xb2\ +\x7d\xf6\xb4\x87\x41\xbc\x6a\x30\x40\x58\x56\xad\xca\x9c\x45\xc1\ +\xc7\x16\x95\xe4\x39\xbb\x49\x01\x10\x5e\x6e\x9d\x3f\x86\x98\x2c\ +\x83\x01\xe2\x23\x44\x89\x2b\x56\xb6\x4f\xd8\x7c\xac\x44\x40\x7c\ +\x97\x7f\x63\x87\x5a\x41\x00\xc1\x1a\xc2\xa6\x29\xa3\x44\xe3\xc0\ +\xea\x52\xa2\x06\x76\xac\x7d\x56\xb6\x62\x7b\x91\x20\x80\xf8\x26\ +\xe6\xb1\x45\x00\xe6\x04\xde\xc5\x04\x90\x97\x12\xfa\xe4\x23\x31\ +\xbd\x08\x3b\x20\x3e\x1d\x2f\x35\xb4\xea\xcc\x42\x00\xb9\x3c\xc7\ +\x78\x84\xe1\xd1\x12\x76\x56\x40\x38\x12\xf3\x52\xc3\x0a\xc9\x41\ +\xae\x3a\xe0\x1c\x42\x2d\x56\x40\x7c\xbd\x47\xa9\xa1\x95\x78\x90\ +\xed\xd1\xa9\x87\xcd\x44\xf1\x22\xac\x80\xec\x1f\x4e\xa0\x6b\xfc\ +\x9b\x14\x2b\x6e\xdd\x7f\xbd\x93\x12\x62\x6d\x06\x85\x9c\xb3\x46\ +\x38\xce\x94\x0d\x10\x8f\x99\xa0\x51\xad\x74\xef\x21\x21\x56\x9e\ +\x5e\x84\x0d\x10\xf2\x2c\xb0\xd4\xad\x78\xef\x21\x80\xec\x5e\x04\ +\x24\x1f\x4a\x17\xd8\x8b\xb0\x00\xe2\xeb\x3d\x4a\x4e\xcc\xfb\x66\ +\x21\x21\xd6\x76\x48\xc8\x09\x7b\xe0\xdd\x16\x2c\x80\x78\x79\x8f\ +\xc0\x1d\xf4\x7e\x78\xd1\x56\xb0\xf6\xee\x46\xf7\x3a\xe9\x74\x51\ +\xd7\x27\xd0\xf7\xa7\x43\x02\xf2\x95\xa3\x37\x7f\xb8\x67\xd4\xb1\ +\x51\xfa\x47\x4a\xa9\x57\x94\xd2\xbf\x57\x46\xfd\x76\x7e\xf1\xe0\ +\x43\x2e\x0d\x42\xd7\x93\xa2\x17\xf1\x06\xc4\x77\x69\x37\xe6\x43\ +\x1f\xea\x00\x3b\xce\x0c\x9e\x19\xa5\xce\x20\x5f\xa6\x0a\x05\xc8\ +\x2e\xc3\xd2\x4a\xfd\x45\x57\xf5\xdd\x7f\x3f\x7b\xf7\x63\x6a\xff\ +\x63\x5d\x47\xb6\xa5\x80\x93\xac\x37\x20\x9e\xe1\x55\xf2\xb9\x07\ +\xd0\xa8\x41\xa7\xab\x00\xeb\x5a\xd9\x23\x24\xf4\xbc\x7e\x34\x79\ +\x4f\x1b\xf5\xcb\xdd\x46\xac\xff\x3c\x3f\x7f\xf0\xbd\x58\x86\xee\ +\x73\x1f\xaa\x17\x09\x35\xd1\x7a\x03\xe2\xb3\xb4\x0b\x31\x00\x1f\ +\xb1\x39\xae\x45\x3c\xed\x75\xc2\xce\x0d\xc8\x57\x0f\xdf\xfa\x76\ +\xad\xea\xbf\x81\xfa\x59\xe9\x37\xe6\xcf\x1e\x7c\x04\x2a\x3b\x60\ +\x21\xac\x46\x5d\x53\x43\xad\x82\x7a\x01\x52\xba\xf7\xb0\xe2\x63\ +\x26\x80\xf9\xf9\xe9\x4e\x3d\xb1\x83\xef\x9a\x40\x50\xfa\x1b\xf5\ +\xc1\xfc\xe2\xf4\xce\x80\xb6\x0f\xbe\x35\xd1\x8b\x38\x27\x28\x70\ +\x03\x7a\x05\xbd\x00\x21\x76\x64\x79\xfb\xc0\xcb\x73\x14\x31\xd6\ +\xaf\xe1\x36\x68\xee\xfa\x10\xde\xcd\x76\xed\xef\xf3\xf3\xd3\xef\ +\x70\xe8\x12\xba\x0e\xac\x4e\x5d\x7b\x42\x84\x59\x64\x40\xc8\x09\ +\xd5\xb2\x37\x41\x68\xe7\x1e\x38\xec\x40\xb9\x66\x7c\xee\xfa\xf6\ +\x0f\xef\xfd\x4b\x29\xf3\x35\x50\xbf\x8d\x59\xcc\x2f\x1e\x5e\x03\ +\x95\x4d\xa0\x10\x65\x65\x34\x44\x98\x45\x06\x04\xe5\xde\xd7\x04\ +\x0f\xd1\x91\x10\x63\xca\x6d\xd0\xdc\xf5\xed\x1f\xde\xfb\x93\x52\ +\xe6\xbb\xd0\xbe\xbb\x42\x40\x68\x3d\x31\xca\x51\xed\x8b\xdb\x8b\ +\x90\x01\x41\xba\xf7\x4b\x9a\x72\x77\x22\xd4\x80\x71\x1b\x34\x77\ +\x7d\x28\x40\xb4\xfa\xe7\xfc\xf9\xe9\x37\x42\x69\xc5\x5d\x2f\x39\ +\x42\x61\x0e\xdd\x49\x80\x90\x1b\x9f\x51\x78\x65\x9b\xca\x6d\xd0\ +\xdc\xf5\x95\x0c\x48\xb3\x40\xe2\x3e\x1e\x69\x13\x97\x67\xf3\xf3\ +\xd3\x63\x2e\x60\x49\x80\x60\x07\xba\xdf\xd8\x5c\xc2\x2b\x01\x84\ +\xcb\xc4\xe8\xf5\x50\x3f\xea\xca\x19\x4a\x92\x00\xa1\xc6\x87\x56\ +\x2a\xce\xc6\xd3\xa5\x87\x5d\x89\x9d\x08\x06\x48\xd2\xe1\x39\x48\ +\x66\x21\x56\x37\x42\x94\x64\x9d\x33\x84\x27\x01\x42\x74\x7d\xb6\ +\xcf\xac\xee\x0f\x66\xe6\xf4\x52\x02\x08\x5d\x3b\xae\x2b\x49\x8f\ +\x12\x18\xf3\x10\x34\x20\x3e\xf9\x47\x4e\xe1\x95\x84\x58\x5c\x26\ +\xee\x57\x0f\x31\xcc\x62\x9b\x88\xd1\x80\x60\x67\xd5\xbe\x3c\x39\ +\x85\x57\x02\x88\x9f\x61\x73\x5d\x4d\xb5\x37\xae\x30\x0b\x0d\x88\ +\x47\xfe\x11\xfd\xe1\x60\xb7\x45\xdd\x0e\x96\xd6\xea\x13\xad\xab\ +\x19\xe6\xdb\xe9\xd8\xc1\x29\x2d\x07\xf1\xd5\x8f\x0b\x92\x21\xf3\ +\x10\x34\x20\xd4\xfc\x23\x66\x78\xd5\x84\x81\x5a\x3f\x52\x5a\xdf\ +\xda\x30\x48\xe0\x97\xfd\xc7\x0a\xc8\x2e\xfd\x62\x8e\x63\x2f\x51\ +\x7f\xa4\x94\xda\xf4\xa9\x88\xed\x0c\x32\xe5\x21\x78\x40\x88\x07\ +\x33\xc4\x14\x16\x30\xe3\x80\x20\x19\x2b\x20\x10\xfd\x62\x7e\x1f\ +\x92\x94\x87\x30\xbd\x23\x82\x02\xc4\x27\x41\x8f\x95\x7f\x80\x57\ +\x3d\x00\x02\x8e\x11\x10\xb0\x7e\x91\x57\x24\x31\xbb\xaa\x5b\xb7\ +\xc2\x12\xd2\xa3\x00\xc1\x1a\x4c\xcf\xff\xb1\x34\x16\x12\xd3\x62\ +\x84\x74\x41\x8b\xed\x6f\x09\x39\x08\x42\xbf\x68\x63\xda\x3c\x55\ +\x27\x7c\x39\x97\x23\x51\x47\x01\xe2\x91\xa0\xb3\x2d\xbb\xed\x82\ +\x04\xeb\xe1\x62\x1b\x34\x37\x70\xdc\x5b\x4d\xb8\xf5\x83\x4c\x68\ +\xd0\x32\x08\xcf\xb6\xaa\x32\x1b\x40\x62\xe5\x1f\x58\x03\x74\xbd\ +\x93\x82\xad\x2f\x36\x70\xdc\x80\x60\xfb\xeb\xd2\x0f\x6a\xfc\x90\ +\x72\x14\x40\x38\xda\x87\xf2\x20\xd4\x15\x2c\x8e\x86\x42\x44\xe4\ +\x1e\x60\x6c\x7d\x02\x08\x64\x94\x68\x65\x48\x89\x3a\xc3\x4a\x16\ +\x0e\x10\x42\x1c\xd8\x3c\x83\xa8\xaa\xdb\x98\xe7\x0f\x34\x09\xf1\ +\xbb\x6f\x5d\xe0\x0a\x20\x8e\x91\x60\x30\x40\xe8\x58\x63\xc7\xa2\ +\xad\xd7\x3b\xb4\xc7\x02\x42\x3a\x7b\xd7\x95\x0c\x43\x45\x72\x95\ +\x43\x8b\xe8\x18\x60\x6c\x7d\xae\x89\x80\xbb\xbe\x31\x85\x58\x6d\ +\xa2\x8e\xb3\x3f\xc0\x4a\xa5\xcb\xa6\xc0\x80\x60\x13\xb8\x21\x56\ +\xb0\xb0\x06\x28\x1e\xe4\xb2\x79\x70\xeb\xe7\x32\x3e\xec\xdf\x29\ +\x2b\x59\xbe\x93\x33\x18\x10\xb4\x78\x5d\xef\x19\x28\x86\x0a\x89\ +\x6e\xa3\x78\x90\x4b\xd2\x72\xeb\x07\x1d\x37\x68\x39\x4a\x0e\xec\ +\xbb\x92\x15\x1c\x90\x58\x2b\x58\x56\x64\xee\x01\xc6\xd6\x27\x21\ +\x16\xd4\xd4\x69\xe5\x28\x2b\x59\xd1\x00\x21\xad\x22\x44\xfe\xac\ +\x01\xd6\xa0\x25\xc4\xca\x2e\xc4\x42\xef\xc9\x12\x40\x7a\x63\x2c\ +\x80\xec\x98\x99\x01\x6f\x14\x72\xeb\x47\xf3\x13\xdb\xaf\xa2\x78\ +\x10\x97\x57\x77\xb5\x11\x1c\x62\x89\x07\x71\x49\xe9\x5e\xce\xc6\ +\x1a\xa0\x6b\x70\xc7\xb6\x8a\x45\xd9\xc9\xe1\xd2\xd0\x35\xaa\x60\ +\x40\x28\x8d\x6b\x6e\x9e\xf2\x5a\xb9\x24\xe9\x59\x25\xe9\x24\x1b\ +\xf4\xb4\x3f\x01\xe4\xf9\xe9\xd9\xb6\x59\x84\x7b\xc6\xe7\xae\x6f\ +\x6c\x1e\x84\x14\xc5\xa4\x0e\x88\xaf\x8b\x73\xb9\xc0\xfe\xdf\xb1\ +\x06\xe8\xf2\x6e\xd8\xfa\x5c\x7d\xe5\xae\x4f\x00\x01\x58\x47\x2c\ +\x40\x28\x09\x52\x13\x61\x45\xda\x66\x22\xcb\xbc\x0e\x63\x29\x20\ +\x49\xc7\x4e\x30\x56\x11\xdf\xc7\x0c\xe0\x10\x4b\x00\x71\xcf\x56\ +\xae\xc9\x00\x3b\xc0\xae\xfa\xc4\x83\xb8\xc7\x24\x1a\x20\xa4\x04\ +\x49\x3c\x88\x57\x12\x2c\x80\x5c\x06\x80\x92\x83\x44\x03\x84\xd2\ +\x38\x59\xc5\xf2\x7b\x10\x27\x80\x5c\xd6\x8f\x34\x49\x47\xcb\x41\ +\x8e\x26\x77\x95\x51\xf6\x49\x26\xee\xc7\xb3\x81\x98\x9b\x61\x43\ +\x18\x49\xd2\xfd\x00\x76\xe9\x87\x19\x3b\x48\x59\x01\x04\xa2\xd2\ +\x8e\x32\x02\xc8\x0e\x71\x0a\x48\xd2\x29\x80\xb8\xbc\xb0\xcb\xe4\ +\xc0\x49\x3a\xda\xf8\xda\x3b\xfb\xc6\x80\xae\x0e\xc8\x32\x2f\xf0\ +\x03\x3a\x05\x00\x42\x59\x28\x12\x40\x7a\x84\xa0\x21\x96\x27\xe9\ +\x5e\x8b\x08\xb1\x43\x2c\xca\x76\xf7\xe4\x01\x89\x79\xa2\xbb\x00\ +\x52\x76\x88\x45\x79\x61\x2a\xda\x6e\x5e\xf2\x1b\x85\xf2\xc2\xd4\ +\xca\x6a\xb1\x00\xbb\x66\xbf\xd1\x3d\x07\x21\x9c\xea\x19\xed\x8d\ +\x42\x3b\xca\x14\x82\x63\x7e\xd1\x16\x0b\xb1\x6b\x76\xe1\x36\x68\ +\xee\xfa\xb8\x01\xc1\xea\xe7\x02\x18\x93\x3f\xee\x2a\xdb\xb4\x6b\ +\xaf\xba\x45\x58\x45\xf5\x3e\xdc\x0e\x9c\xa4\x7b\x00\xa2\x5c\x86\ +\xc8\x25\x64\xdb\x46\xf0\x8b\xfd\xae\xd9\x85\xdb\xa0\xb9\xeb\xe3\ +\x06\x04\xab\x5f\xc8\x71\x6d\x9e\xbb\xd5\xe6\xce\x96\x03\xc8\x61\ +\x26\xc3\x10\xbd\x60\x01\x41\xbf\xd1\x65\x7b\x12\x52\xc8\x75\xa5\ +\xa0\x4b\x81\x90\xd5\x35\x6e\x83\xe6\xae\x2f\x04\x20\x50\xfd\x14\ +\x83\xf1\xad\x8f\x5d\xeb\xc1\xee\xa3\x4f\x72\xdf\x8e\x4b\xf4\x63\ +\x7f\x48\x80\xc4\x5c\xed\x70\x7c\xfa\xa0\x93\x12\xe4\x7a\xb9\x0d\ +\x9a\xbb\xbe\x10\x80\x70\xea\x07\x9b\xe6\x97\xa5\xc0\x60\x22\x2a\ +\x85\x4c\x82\xae\xea\x70\x1e\x24\x83\xa7\xe9\xb6\xc3\xdd\x87\x5f\ +\xb4\x52\x6f\xaf\x0b\x80\x11\x8d\xdb\xa0\xb9\xeb\x0b\x01\x08\xa7\ +\x7e\x2e\xe3\xeb\xee\xb5\xe3\x5b\x2e\x90\x2a\xb6\x96\xc1\x8c\xf5\ +\xb6\x4a\x50\x80\x60\x07\xb8\x77\x53\x6f\x57\x47\x51\x6a\x95\xdc\ +\x35\x5f\x98\xc2\x7d\x5d\xca\xde\x0f\xdb\x5f\x57\xd2\xca\x5d\x5f\ +\x28\x40\x3a\xad\x7d\xf5\x73\x8d\x19\x56\x0f\x57\x7d\x3e\x93\x21\ +\x0b\x20\xd8\x24\x6e\x75\xd3\x00\xf1\x2a\x56\x2c\x4a\x79\xec\x00\ +\x96\x06\x08\x45\x33\xe8\x35\xd8\x15\x33\x68\xbd\xdc\x90\xa0\x3c\ +\x48\x0b\xc8\x85\x52\xea\x00\xdb\xe0\x98\x89\x3a\xb6\x6d\xdb\xca\ +\x0b\x20\x5c\x4a\x5e\xae\xa7\x85\xe3\x09\xc5\x8e\x28\x2d\xf2\x09\ +\xb5\xf0\x80\xdc\x78\xf3\x09\x69\xe9\x2d\xe2\xae\x5e\x8a\x88\x9b\ +\xae\x11\x40\xb8\x94\xbc\x5c\x0f\x65\xcb\x88\x77\x4b\x88\xf6\x87\ +\x06\xc4\x63\xb5\x61\x90\x3c\xc4\x47\x58\x01\xc4\x47\xbd\xcd\xd7\ +\x92\xdf\x2b\xf2\x6f\x0a\xe8\xbb\x94\xeb\xb7\x41\x03\x82\x35\x9a\ +\x9c\xf3\x10\x6c\x5f\x25\x07\x71\x5b\x31\x71\x37\x86\xbb\x62\x40\ +\x09\x4a\xa8\x85\x06\x64\x4c\x79\x88\x00\x02\xb0\x3a\x44\x11\x8f\ +\xe8\x03\x71\x97\xdd\x45\xb1\xb9\x30\x0d\x90\x91\xe4\x21\x02\x08\ +\x9b\x5d\x36\x15\x0d\x92\x7b\x5c\x8d\x99\x8e\xe7\x3b\xce\x42\xf3\ +\x0e\xb1\x6c\x05\x1e\x33\x41\x56\x79\x88\x00\xc2\x07\x48\xac\x65\ +\x5d\x40\x8b\x51\x36\x48\xf2\x20\x58\xc3\xe9\x37\x1a\xeb\xe2\x00\ +\x1d\x0e\x56\x04\xdb\xcf\xf8\x39\xc8\xe4\x73\xa5\xd4\x97\xa0\x02\ +\xb8\x36\x67\x42\xeb\xa1\x94\xf3\x98\x54\x29\xb7\xdb\x79\x0d\x46\ +\x07\x12\x20\x3e\x79\x48\xcc\x7d\x59\xbe\xca\xa6\x0e\xc8\xf5\xc3\ +\xc9\xc7\x5a\xa9\xd7\x81\xfd\xfc\xc7\xfc\xfc\xf4\x9b\xc0\xb2\xec\ +\xc5\x52\x02\x04\x33\x49\xd3\x01\xa1\xe6\x21\x19\x3d\x55\xc7\x86\ +\x05\x2e\xe1\xb9\x81\xdb\x3f\xba\xf7\x81\x32\xe6\xe7\x20\x6b\x36\ +\xea\xa3\xf9\xc5\xe9\x1b\xa0\xb2\x01\x0a\x51\xde\x27\x0f\xd0\x8c\ +\xa6\x4a\xd7\x38\xf5\xef\x4b\x07\x84\xba\x71\x11\xd9\xc0\x50\x22\ +\x41\xeb\xdd\x47\xbc\xc5\xe6\x72\xdd\xec\x80\xdc\x98\xfc\x4c\x69\ +\xf5\x21\xa4\x2f\xda\x98\x5f\x7c\x7a\xf1\xf0\x7d\x48\xd9\x10\x65\ +\x92\x48\xd0\xdb\x8e\x45\x01\xc4\x27\xcc\xa2\xac\x47\x87\x18\x34\ +\x48\x9d\xd0\x07\x5b\x90\x3e\x71\x03\xd2\x8e\xc1\x7f\x95\x52\xaf\ +\x38\xfa\xb2\x98\x9f\xbf\xfe\x45\xa5\x7e\xb2\x80\xf4\x39\x44\x99\ +\x71\x02\x42\x0d\xb3\x94\x22\x3d\xd5\x0c\x31\x70\xae\x3a\x41\xef\ +\x47\x00\xc3\xc6\x10\x80\xbc\x7a\x34\xf9\xa9\x31\xea\x37\x3b\xfb\ +\x41\xdc\x66\xe1\xd2\x06\xf3\xf7\x94\x42\x2c\x97\xa7\x67\x09\xb1\ +\x9a\xd9\xcb\x23\xcc\xca\x29\x59\x4f\xf5\xfd\x92\x6e\x20\xaf\x1f\ +\xdd\xfb\x81\xae\xcd\xaf\x94\x56\x3f\x5e\x33\xda\xdf\x99\x5a\xbf\ +\xf7\xd9\xec\xc1\x1f\x31\xc6\x1c\xa2\xec\x28\x01\xf1\x09\xb3\x42\ +\xbc\xb2\x19\x62\x60\xfb\x75\x5a\x50\xec\x7f\xdb\x03\x04\x52\x78\ +\xbf\x64\xbd\xbf\xaf\xbe\x36\xf9\xba\xd9\x33\xdf\x57\x5a\xd5\xff\ +\xfb\x82\xfa\xc3\x7f\xfe\xfa\x70\x1e\x5a\x13\x68\xfd\x5e\x93\x29\ +\xf4\x26\xb0\x72\xa0\xb7\x49\xbb\xaa\xc8\x49\x7a\x57\x81\xd7\xcc\ +\x90\x80\xeb\x87\x69\xca\x53\x2a\x44\x88\xc5\xd3\xb2\xf0\xb5\x60\ +\xfb\x1e\xaa\x45\x90\x5c\x91\x2d\xc4\xf2\x0e\xb3\x80\xb1\x7b\x28\ +\xb1\x62\xd7\x8b\x35\x12\xd7\x83\xc7\xd8\xed\xf7\xbd\xdf\x90\x1b\ +\x15\x57\x1e\x01\xf9\x41\x27\x6f\x0f\xe2\x15\x66\x65\xb6\xe4\xeb\ +\x6b\x20\x02\xc8\x84\x76\xe8\x87\xaf\xf0\x2f\xaf\x47\x85\x57\xf6\ +\x32\x16\x40\xbc\x9e\x92\x8e\xc8\x8b\x8c\x1d\x90\xb6\xff\x16\x12\ +\xf4\x1b\xa9\x1c\x8c\x60\xc3\x2b\x36\x40\x7c\x5f\xa1\xc4\x3c\xb8\ +\xe1\x10\x6a\xa8\x3a\xc6\x0e\x48\x1b\x6d\x0c\xe5\x45\xd0\xde\x83\ +\x0d\x10\x86\x8e\x67\xf3\x5c\xc4\x07\x2e\x01\x64\x79\x24\xd3\x5e\ +\x55\x45\x7b\x1f\xbd\x1b\x2f\x8a\xf7\x60\x05\xc4\xb7\xe3\xd4\x0e\ +\xf8\x18\x6c\xec\x6b\x05\x90\xa5\xe2\x5e\x21\x39\x65\xd0\x3c\xc2\ +\x78\x96\x1c\xa4\x6b\xb3\xd7\x92\xef\x08\x12\x76\x01\xe4\xa5\x75\ +\x47\x84\x84\x14\x5a\xad\x56\xbd\x28\x40\x6e\xbb\x06\x6b\x00\xeb\ +\xf5\x94\xee\x45\xb0\xfa\x94\xb6\xcc\xbb\x3e\xde\xbe\x13\x2a\xc0\ +\x76\x67\xba\xaa\x8e\x3f\x7d\xf6\xce\x14\x50\x76\x63\x11\x56\x0f\ +\xc2\x90\x8b\xa8\x92\x8d\x82\x7b\xfb\x3c\x75\xd0\x53\xba\x2e\xa0\ +\x27\x61\xc9\x6b\xd9\x01\x61\x58\xca\x63\xe9\x58\x4a\x46\xd0\x6f\ +\x0b\xe7\xf6\xf9\x54\xfb\x88\x6d\x57\x0b\xc9\x5d\xc6\xe5\x5f\xd4\ +\x6b\xb5\xbb\xda\xcb\x0e\x08\x47\x12\x56\x72\xa8\x05\xdd\x93\x54\ +\xb2\x06\xdb\x0c\xb2\x0d\xb9\x6e\x91\x41\x31\x66\xaa\xf7\xf6\x4e\ +\x7c\x42\xaa\xf5\xb6\x05\x01\xc4\x77\x45\xcb\x36\xb2\x54\x03\xe1\ +\xdc\x3e\x8f\x9d\xa9\x73\x28\xbf\xda\x39\x6d\xcc\x2d\xa5\xb5\x7d\ +\xa0\x08\x79\xa8\x78\xa6\xab\xea\x31\x27\x18\x41\x92\xf4\xfe\x00\ +\x70\xc4\x96\xa5\x3e\x40\xe4\xda\x3e\x9f\x83\xc1\xfb\xb6\xb1\x09\ +\xd9\x4d\x7d\x60\x8c\x7a\x4d\x2b\x75\x60\x94\x9a\x69\xad\x3e\xb1\ +\xf5\x2e\x16\xf5\xf4\xf3\xd9\xbb\x33\xdf\x7b\x44\x0f\xb1\x7a\xcb\ +\xbe\xa4\x83\xae\x7b\x0d\x2e\x3a\x1f\xf1\xdd\x3e\x1f\xd2\x30\xa4\ +\xee\xa5\x02\x41\x42\xac\x4e\x5c\xec\xb2\xe6\xa6\x41\x29\x35\xd4\ +\x12\x03\xcc\x43\x81\xa0\x80\x70\x24\xec\x25\xe7\x23\x79\x98\xc8\ +\xb8\x5b\x19\x1c\x10\x8e\x84\x5d\x20\x19\xb7\x91\x0e\xd9\xfb\xe0\ +\x80\xd8\xce\xb5\x4b\x9b\xf6\xeb\xa5\x90\x15\x89\xed\x7a\x8c\xec\ +\x0d\xc4\x21\x0d\x43\xee\x1d\x21\x07\xe1\x5e\xd5\x6a\x56\x2e\xea\ +\xfa\x46\xe8\x95\x0b\x31\x0e\x51\xa0\x53\x20\x8a\x07\x61\x5c\xd5\ +\x6a\xaa\x12\x48\xc4\x80\x63\x29\x10\x15\x10\xae\x7c\x44\x65\x74\ +\xae\x56\xac\x81\x94\xfb\x84\x51\x20\x2a\x20\x5c\xab\x5a\x9d\x14\ +\xe2\x49\xc2\x18\x85\xd4\xfa\x52\x81\xe8\x80\x70\x43\x92\xd3\x01\ +\x74\x62\x78\xf9\x29\x30\x08\x20\xcd\xca\xd6\xe1\xc4\xf7\x29\xfb\ +\x4a\x6d\x79\x98\x98\x9f\xe1\xe5\xd2\xe2\xc1\x00\x11\x48\x72\x31\ +\x91\x71\xb7\x73\x50\x40\x18\x93\xf6\x6e\x14\xcf\x16\x75\x7d\x22\ +\xcb\xc0\xe3\x36\x6a\xce\xde\x0f\x0a\x88\xed\x48\x00\x48\x8a\xde\ +\xe0\xc8\x39\xf8\x52\x97\x5b\x81\xc1\x01\x09\x04\x89\xdd\x86\x89\ +\xfa\x9a\xa9\x5b\x2a\x29\x31\x46\x05\x92\x00\xc4\x0a\xcf\xf0\xaa\ +\xee\xa6\xf1\x93\x90\x6b\x8c\x56\xcd\xd8\xe7\x64\x00\xe9\x2d\xff\ +\x72\xbe\x9b\x6c\xab\xf5\x3e\xd9\x82\x51\x6f\xa9\x2a\x33\x05\x92\ +\x02\x24\xa0\x27\x51\xf6\x7b\x24\x0b\x63\x8e\x25\x81\xcf\xcc\x42\ +\x07\x6e\x6e\x72\x80\x04\x85\xc4\x56\xae\xd5\x71\x8c\x57\x35\x07\ +\x1e\x57\xb9\x3d\x93\x02\x49\x02\x12\x2c\x71\xef\x44\x0b\x70\xfa\ +\x05\xd3\x78\x48\x35\x89\x29\x90\x2c\x20\xc1\x21\xb1\x37\x10\x50\ +\x12\x33\xc7\xf4\x9a\x93\x34\x20\x9d\x5c\x9c\xdb\x52\x36\x0e\x81\ +\x80\x92\x9e\x65\x26\xd2\xa2\x2c\x00\xb1\x5a\x45\x38\xc7\x75\xe5\ +\x51\x5e\xbc\x78\x31\x93\x64\x3e\x11\x0b\x1d\xb8\x19\xd9\x00\x12\ +\x70\x19\xf8\xea\x10\x18\x33\x35\x5a\x4f\xeb\xba\x7e\x5c\x22\x28\ +\xed\x2b\xd0\x37\x95\x52\xb7\x16\x75\x7d\xbb\xc4\x3e\x72\x71\x95\ +\x15\x20\xc1\x57\xb8\x36\xa9\x6a\xcc\x54\x55\xfa\x71\xee\x2b\x5f\ +\x3d\x28\xec\x73\xa6\xd5\x8f\xec\x84\xde\x8d\x52\x76\x80\xf4\xf2\ +\x92\xf8\x9f\xf2\x6a\x73\x95\x5c\x42\xb0\x6d\x50\xac\x9b\x84\xbc\ +\x78\xb6\x1d\x92\x6c\x01\x89\x1a\x72\x6d\xf3\x2c\xf6\xb1\xca\xde\ +\xde\x49\x2a\xc0\xf4\x43\x27\xd4\x09\x32\xb2\x6f\x6d\x2b\x21\x59\ +\x03\x32\x48\xc8\xb5\x4d\x4a\x1b\x8a\x69\x3d\xb3\x67\xc7\x56\x55\ +\xf5\xd4\x42\x63\x8b\x86\x88\xef\x9b\x1d\xd0\x7b\x95\x3d\x05\xdd\ +\x9e\xf2\xdd\xe4\x12\x28\x20\xae\xf6\x81\xed\x73\x01\x5c\xb1\x7f\ +\x2a\xf5\x64\x0f\x48\x27\x64\x80\x6f\x4c\x70\x8d\xd1\x4c\x19\x33\ +\xeb\xe0\xb1\x95\x76\x87\x2f\x6b\x5d\x5d\x39\x78\xd9\x1e\xd4\xdc\ +\xdd\xd8\x1e\xd8\xdc\x94\xb7\xe7\x89\x19\x73\x80\x38\xed\x1c\xdd\ +\x76\x09\xb3\x36\x4b\x56\x0c\x20\xb6\x7b\xed\xbb\x25\xf6\x80\xba\ +\x4b\x89\x28\xda\x5a\x46\x78\x81\x24\xeb\x23\x00\xa4\xeb\x62\xa0\ +\xad\xf3\x65\x63\xe3\xf1\x25\xd8\x92\x85\x29\xca\x83\xac\x0f\x14\ +\xdb\x91\xa7\x25\x5b\x40\xaf\x6f\x12\x66\x5d\x1d\xe8\xa2\x01\x59\ +\x5b\x12\xf6\x4d\x64\xc7\x80\x89\x24\xeb\x6b\xa3\x3c\x0a\x40\x56\ +\xa0\x1c\x4d\xee\x2a\xa3\xfc\x0f\xd1\x2e\x18\x15\xf1\x22\x97\x07\ +\x77\x54\x80\x08\x28\x00\xb2\xe5\x99\xc8\x25\x91\x46\x09\xc8\xa5\ +\x64\x7e\xb1\xb8\xaf\xb4\x5e\x3e\x53\x18\xf9\x8f\x5d\xc9\x2a\x75\ +\xff\x19\x75\x68\x47\x0d\x48\x1f\x94\xba\xae\x6f\xea\xe5\xf2\xb0\ +\xdf\x37\x4c\xa8\x23\x31\xdc\x75\xc1\xbe\x10\x3b\x5c\x97\xf8\xee\ +\x2c\x80\xac\x69\x69\x97\x88\x47\x00\x8b\x9c\xf6\x02\x64\x48\x00\ +\xd9\x21\xd4\x0a\x16\xdc\x37\xbb\x81\xd2\x47\x2d\x76\xa6\xb4\x7a\ +\x9a\xfb\x8e\xe4\xa8\x8a\xb5\x37\x13\x40\x10\xaa\x67\x04\xcc\x59\ +\xf7\x3d\xf1\xf9\xf3\xd3\x33\x44\x17\xa5\xe8\x98\x97\x79\xb9\x47\ +\xff\x12\x30\xb6\x72\xad\x6d\xfe\x12\x37\x87\x69\x37\x49\x8a\x87\ +\xe0\x1e\xdd\x65\x7d\xe2\x41\x02\xe8\x6a\xc1\xb1\xd5\x36\xb9\x8c\ +\x0d\xcf\xba\x9f\x25\x40\xfd\x9f\x6d\x30\xbd\xdc\xc4\xd8\x6e\x74\ +\x6c\x47\xeb\xa9\xfd\x2d\xa1\x52\x80\x41\xdb\x52\xa5\x00\x12\x4f\ +\xeb\xad\x77\xb2\x9b\x2c\x43\x6c\x8b\x4f\xa0\x6b\xd9\x37\x41\x00\ +\xc9\x7e\x08\xa5\x03\x21\x15\x10\x40\x42\xaa\x2b\x75\x67\xaf\x80\ +\x00\x92\xfd\x10\x4a\x07\x42\x2a\x20\x80\x84\x54\x57\xea\xce\x5e\ +\x01\x01\x24\xfb\x21\x94\x0e\x84\x54\x40\x00\x09\xa9\xae\xd4\x9d\ +\xbd\x02\x02\x48\xf6\x43\x28\x1d\x08\xa9\x80\x00\x12\x52\x5d\xa9\ +\x3b\x7b\x05\x04\x90\xec\x87\x50\x3a\x10\x52\x01\x01\x24\xa4\xba\ +\x52\x77\xf6\x0a\x08\x20\xd9\x0f\xa1\x74\x20\xa4\x02\x02\x48\x48\ +\x75\xa5\xee\xec\x15\xf8\x3f\xae\x88\x95\xc8\x78\x9e\xfd\xc0\x00\ +\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +" + +qt_resource_name = b"\ +\x00\x11\ +\x06\x63\xe9\x47\ +\x00\x6d\ +\x00\x69\x00\x6e\x00\x65\x00\x73\x00\x74\x00\x5f\x00\x6e\x00\x6f\x00\x72\x00\x6d\x00\x61\x00\x6c\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x15\ +\x0f\xcc\xb8\x47\ +\x00\x62\ +\x00\x74\x00\x6e\x00\x5f\x00\x63\x00\x61\x00\x6c\x00\x6c\x00\x5f\x00\x74\x00\x5f\x00\x6e\x00\x6f\x00\x72\x00\x6d\x00\x61\x00\x6c\ +\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x14\ +\x0d\x0f\x9d\xa7\ +\x00\x62\ +\x00\x74\x00\x6e\x00\x5f\x00\x63\x00\x61\x00\x6c\x00\x6c\x00\x5f\x00\x74\x00\x5f\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\ +\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x02\x32\x49\xa7\ +\x00\x65\ +\x00\x78\x00\x69\x00\x74\x00\x5f\x00\x6e\x00\x6f\x00\x72\x00\x6d\x00\x61\x00\x6c\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x00\x38\xf9\x47\ +\x00\x63\ +\x00\x61\x00\x6c\x00\x6c\x00\x65\x00\x72\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ +" + +qt_resource_struct_v1 = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x01\ +\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x01\x00\x00\x20\x50\ +\x00\x00\x00\x86\x00\x00\x00\x00\x00\x01\x00\x00\x1f\x48\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x00\x58\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xe1\ +\x00\x00\x00\x28\x00\x00\x00\x00\x00\x01\x00\x00\x00\x83\ +" + +qt_resource_struct_v2 = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x01\x00\x00\x20\x50\ +\x00\x00\x01\x88\xc3\x36\x00\xe9\ +\x00\x00\x00\x86\x00\x00\x00\x00\x00\x01\x00\x00\x1f\x48\ +\x00\x00\x01\x89\x72\x85\xd3\xe4\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01\x89\x72\x85\x01\xa4\ +\x00\x00\x00\x58\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xe1\ +\x00\x00\x01\x89\xd3\x53\x11\x01\ +\x00\x00\x00\x28\x00\x00\x00\x00\x00\x01\x00\x00\x00\x83\ +\x00\x00\x01\x89\xd3\x4c\x07\xb7\ +" + +qt_version = [int(v) for v in QtCore.qVersion().split('.')] +if qt_version < [5, 8, 0]: + rcc_version = 1 + qt_resource_struct = qt_resource_struct_v1 +else: + rcc_version = 2 + qt_resource_struct = qt_resource_struct_v2 + +def qInitResources(): + QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/assets/exit_normal.png b/assets/exit_normal.png new file mode 100644 index 0000000..8477e7a Binary files /dev/null and b/assets/exit_normal.png differ diff --git a/assets/minest_normal.png b/assets/minest_normal.png new file mode 100644 index 0000000..c2d89e5 Binary files /dev/null and b/assets/minest_normal.png differ diff --git a/callclient/__pycache__/app.cpython-38.pyc b/callclient/__pycache__/app.cpython-38.pyc new file mode 100644 index 0000000..99d0f0e Binary files /dev/null and b/callclient/__pycache__/app.cpython-38.pyc differ diff --git a/callclient/app.py b/callclient/app.py new file mode 100644 index 0000000..b401998 --- /dev/null +++ b/callclient/app.py @@ -0,0 +1,12 @@ +from PyQt5.QtWidgets import QApplication +from controllers.login import Login +from controllers.assembly.tray_icon import TrayIcon + +# 启动程序方法,启动时初始化login界面 +def run(): + app = QApplication([]) + window = Login() + # tray = TrayIcon(app) + window.show() + # tray.show() + app.exec_() \ No newline at end of file diff --git a/callclient/controllers/__pycache__/caller_main.cpython-38.pyc b/callclient/controllers/__pycache__/caller_main.cpython-38.pyc new file mode 100644 index 0000000..c103152 Binary files /dev/null and b/callclient/controllers/__pycache__/caller_main.cpython-38.pyc differ diff --git a/callclient/controllers/__pycache__/login.cpython-38.pyc b/callclient/controllers/__pycache__/login.cpython-38.pyc new file mode 100644 index 0000000..13ff457 Binary files /dev/null and b/callclient/controllers/__pycache__/login.cpython-38.pyc differ diff --git a/callclient/controllers/__pycache__/win_selector.cpython-38.pyc b/callclient/controllers/__pycache__/win_selector.cpython-38.pyc new file mode 100644 index 0000000..5cf62c3 Binary files /dev/null and b/callclient/controllers/__pycache__/win_selector.cpython-38.pyc differ diff --git a/callclient/controllers/assembly/__pycache__/tray_icon.cpython-38.pyc b/callclient/controllers/assembly/__pycache__/tray_icon.cpython-38.pyc new file mode 100644 index 0000000..60e1e84 Binary files /dev/null and b/callclient/controllers/assembly/__pycache__/tray_icon.cpython-38.pyc differ diff --git a/callclient/controllers/assembly/tray_icon.py b/callclient/controllers/assembly/tray_icon.py new file mode 100644 index 0000000..ce007a7 --- /dev/null +++ b/callclient/controllers/assembly/tray_icon.py @@ -0,0 +1,33 @@ +from PyQt5 import QtWidgets +from PyQt5.QtGui import QPixmap, QIcon +import caller_src_rc + + +class TrayIcon(QtWidgets.QSystemTrayIcon): + def __init__(self, MainWindow, parent=None): + super(TrayIcon, self).__init__(parent) + self.ui = MainWindow + # 需要设置图标才能正常显示 + self.setIcon(QIcon(":/caller_icon.png")) + self.creatMenu() + # 触发单击右键显示菜单 + self.activated.connect(self.trayIconClicked) + + def creatMenu(self): + # 托盘图标创建右键菜单 + self.menu = QtWidgets.QMenu() + self.menu.addAction(QtWidgets.QAction( + "居中显示", self, triggered=self.showInMidScreen)) + self.menu.addAction(QtWidgets.QAction( + "退出", self, triggered=self.exitApp)) + self.setContextMenu(self.menu) + + def showInMidScreen(): + print('居中显示') + + def exitApp(): + print('退出') + + def trayIconClicked(self, reason): + if reason == 1: + self.menu.exec_() diff --git a/callclient/controllers/caller_main.py b/callclient/controllers/caller_main.py new file mode 100644 index 0000000..91c7667 --- /dev/null +++ b/callclient/controllers/caller_main.py @@ -0,0 +1,60 @@ +from PyQt5.QtGui import * +from PyQt5.QtCore import * +from PyQt5.QtWidgets import * + +from views.Ui_caller_main import Ui_caller_main +from controllers.assembly.tray_icon import TrayIcon +import caller_src_rc + + +class CallerMain(QWidget): + def __init__(self): + super().__init__() + + self.ui = Ui_caller_main() + self.ui.setupUi(self) + + # 去除边框 + self.setWindowFlag(Qt.FramelessWindowHint) + self.setAttribute(Qt.WA_TranslucentBackground) # 将界面属性设置为半透明 + # 设定一个阴影:半径为10 颜色为#444 定位为0,0 + self.shadow = QGraphicsDropShadowEffect() + self.shadow.setBlurRadius(10) + self.shadow.setColor(QColor('#444')) + self.shadow.setOffset(0, 0) + self.ui.f_caller_main.setGraphicsEffect(self.shadow) + + # 动态添加右键菜单 1打开右键菜单策略 2绑定事件 + self.ui.f_caller_main.setContextMenuPolicy(Qt.CustomContextMenu) + self.ui.f_caller_main.customContextMenuRequested.connect( + self.show_context_menu) + + # 显示右下角托盘 + self.tray = TrayIcon(self) + self.tray.show() + + # 重写鼠标按下事件 左键按下时获取鼠标坐标,按下右键取消 + def mousePressEvent(self, event): + if event.button() == Qt.LeftButton: + self.m_flag = True + self.m_Position = event.globalPos() - self.pos() + event.accept() + elif event.button() == Qt.RightButton: + self.m_flag = False + + # 重写鼠标移动事件 在按下左键移动是根据坐标移动界面 + def mouseMoveEvent(self, QMouseEvent): + if Qt.LeftButton and self.m_flag: + self.move(QMouseEvent.globalPos() - self.m_Position) + QMouseEvent.accept() + + # 重写鼠标释放事件 当鼠标按键释放时 取消移动 + def mouseReleaseEvent(self, QMouseEvent): + self.m_flag = False + + # 创建右键菜单方法 + def show_context_menu(self, pos): + menu = QMenu(self) + action = menu.addAction('方法1') + action = menu.addAction('退出') + menu.exec_(QCursor.pos()) diff --git a/callclient/controllers/login.py b/callclient/controllers/login.py new file mode 100644 index 0000000..43e949c --- /dev/null +++ b/callclient/controllers/login.py @@ -0,0 +1,72 @@ +from PyQt5.QtGui import * +from PyQt5.QtCore import * +from PyQt5.QtWidgets import * + +from controllers.caller_main import CallerMain +from views.Ui_login import Ui_win_Login + +# login界面controller类 +# 需要继承QWidget 如果是主窗体需要继承QMainWindow + + +class Login(QWidget): + def __init__(self): + # 这句一定要调用父类构造函数 + super().__init__() + # 动态加载UI文件 + self.ui = Ui_win_Login() + self.ui.setupUi(self) + + self.setWindowFlag(Qt.FramelessWindowHint) # 去除边框 + self.setAttribute(Qt.WA_TranslucentBackground) # 将界面属性设置为半透明 + # 设定一个阴影:半径为10 颜色为#444 定位为0,0 + self.shadow = QGraphicsDropShadowEffect() + self.shadow.setBlurRadius(10) + self.shadow.setColor(QColor('#444')) + self.shadow.setOffset(0, 0) + self.ui.f_login_main.setGraphicsEffect(self.shadow) + + # 注册登录按钮事件 + self.ui.btn_login.clicked.connect(self.login_action) + # 注册关闭程序按钮事件 + self.ui.btn_close.clicked.connect(self.exit_action) + # 注册最小化窗口按钮事件 + self.ui.btn_min.clicked.connect(self.min_action) + + # 登录按钮事件 + def login_action(self): + # 创建窗口选择界面对象 + self.callerMain = CallerMain() + # 显示窗口选择界面 + self.callerMain.show() + # 关闭登录界面 + self.close() + # print('login success') + + # 关闭按钮事件 + def exit_action(): + app = QApplication.instance() + app.quit() + + # 最小化事件 + def min_action(self): + self.showMinimized() + + # 重写鼠标按下事件 左键按下时获取鼠标坐标,按下右键取消 + def mousePressEvent(self, event): + if event.button() == Qt.LeftButton: + self.m_flag = True + self.m_Position = event.globalPos() - self.pos() + event.accept() + elif event.button() == Qt.RightButton: + self.m_flag = False + + # 重写鼠标移动事件 在按下左键移动是根据坐标移动界面 + def mouseMoveEvent(self, QMouseEvent): + if Qt.LeftButton and self.m_flag and self.ui.f_title.underMouse(): + self.move(QMouseEvent.globalPos() - self.m_Position) + QMouseEvent.accept() + + # 重写鼠标释放事件 当鼠标按键释放时 取消移动 + def mouseReleaseEvent(self, QMouseEvent): + self.m_flag = False diff --git a/callclient/main.py b/callclient/main.py new file mode 100644 index 0000000..11a25f8 --- /dev/null +++ b/callclient/main.py @@ -0,0 +1,6 @@ +import sys +import app + +# 程序入口文件 +if __name__ == '__main__': + sys.exit(app.run()) diff --git a/callclient/views/Ui_caller_main.py b/callclient/views/Ui_caller_main.py new file mode 100644 index 0000000..65e52bb --- /dev/null +++ b/callclient/views/Ui_caller_main.py @@ -0,0 +1,221 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'f:\workspace\python\jgzy_queuingsystem\callclient\views\caller_main.ui' +# +# Created by: PyQt5 UI code generator 5.15.9 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_caller_main(object): + def setupUi(self, caller_main): + caller_main.setObjectName("caller_main") + caller_main.resize(600, 70) + caller_main.setMinimumSize(QtCore.QSize(600, 70)) + caller_main.setMaximumSize(QtCore.QSize(600, 70)) + self.f_caller_main = QtWidgets.QFrame(caller_main) + self.f_caller_main.setGeometry(QtCore.QRect(0, 0, 601, 72)) + self.f_caller_main.setStyleSheet("#f_caller_main{\n" +" background-color: rgb(43, 43, 43);\n" +"}") + self.f_caller_main.setObjectName("f_caller_main") + self.verticalLayout = QtWidgets.QVBoxLayout(self.f_caller_main) + self.verticalLayout.setContentsMargins(0, 0, 0, 0) + self.verticalLayout.setObjectName("verticalLayout") + self.f_caller_btns = QtWidgets.QFrame(self.f_caller_main) + self.f_caller_btns.setStyleSheet("#f_caller_btns{\n" +" margin:0px;\n" +" padding-top:5px;\n" +"}") + self.f_caller_btns.setObjectName("f_caller_btns") + self.horizontalLayout = QtWidgets.QHBoxLayout(self.f_caller_btns) + self.horizontalLayout.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout.setObjectName("horizontalLayout") + self.btn_call = QtWidgets.QPushButton(self.f_caller_btns) + self.btn_call.setMinimumSize(QtCore.QSize(80, 30)) + self.btn_call.setMaximumSize(QtCore.QSize(80, 30)) + font = QtGui.QFont() + font.setFamily("新宋体") + font.setPointSize(14) + font.setBold(True) + font.setWeight(75) + self.btn_call.setFont(font) + self.btn_call.setStyleSheet("#btn_call{\n" +" background-color: rgba(255, 255, 255, 0);\n" +" background-image: url(:/btn_call_t_normal.png);\n" +" background-repeat:no-repeat;\n" +" background-position:center center;\n" +" background-size:70% 70%;\n" +"}\n" +"\n" +"#btn_call:hover{\n" +" background-color: rgba(255, 255, 255, 0.3);\n" +" background-image: url(:/btn_call_t_hover.png);\n" +"}") + self.btn_call.setText("") + self.btn_call.setIconSize(QtCore.QSize(24, 24)) + self.btn_call.setCheckable(False) + self.btn_call.setObjectName("btn_call") + self.horizontalLayout.addWidget(self.btn_call) + self.btn_abanden = QtWidgets.QPushButton(self.f_caller_btns) + self.btn_abanden.setMinimumSize(QtCore.QSize(80, 30)) + self.btn_abanden.setMaximumSize(QtCore.QSize(80, 30)) + font = QtGui.QFont() + font.setFamily("新宋体") + font.setPointSize(12) + font.setBold(True) + font.setWeight(75) + self.btn_abanden.setFont(font) + self.btn_abanden.setStyleSheet("#btn_abanden{\n" +" background-color: rgba(255, 255, 255, 0);\n" +" color: rgb(255, 255, 255);\n" +"}\n" +"\n" +"#btn_abanden:hover{\n" +" background-color: rgba(255, 255, 255, 0.3);\n" +" \n" +" color: rgb(0, 205, 102);\n" +"}") + self.btn_abanden.setObjectName("btn_abanden") + self.horizontalLayout.addWidget(self.btn_abanden) + self.btn_start = QtWidgets.QPushButton(self.f_caller_btns) + self.btn_start.setMinimumSize(QtCore.QSize(80, 30)) + self.btn_start.setMaximumSize(QtCore.QSize(80, 30)) + font = QtGui.QFont() + font.setFamily("新宋体") + font.setPointSize(12) + font.setBold(True) + font.setWeight(75) + self.btn_start.setFont(font) + self.btn_start.setStyleSheet("#btn_start{\n" +" background-color: rgba(255, 255, 255, 0);\n" +" color: rgb(255, 255, 255);\n" +"}\n" +"\n" +"#btn_start:hover{\n" +" background-color: rgba(255, 255, 255, 0.3);\n" +" \n" +" color: rgb(0, 205, 102);\n" +"}") + self.btn_start.setObjectName("btn_start") + self.horizontalLayout.addWidget(self.btn_start) + self.btn_pause = QtWidgets.QPushButton(self.f_caller_btns) + self.btn_pause.setMinimumSize(QtCore.QSize(80, 30)) + self.btn_pause.setMaximumSize(QtCore.QSize(80, 30)) + font = QtGui.QFont() + font.setFamily("新宋体") + font.setPointSize(12) + font.setBold(True) + font.setWeight(75) + self.btn_pause.setFont(font) + self.btn_pause.setStyleSheet("#btn_pause{\n" +" background-color: rgba(255, 255, 255, 0);\n" +" color: rgb(255, 255, 255);\n" +"}\n" +"\n" +"#btn_pause:hover{\n" +" background-color: rgba(255, 255, 255, 0.3);\n" +" \n" +" color: rgb(0, 205, 102);\n" +"}") + self.btn_pause.setObjectName("btn_pause") + self.horizontalLayout.addWidget(self.btn_pause) + self.line = QtWidgets.QFrame(self.f_caller_btns) + self.line.setMinimumSize(QtCore.QSize(0, 28)) + self.line.setMaximumSize(QtCore.QSize(16777215, 28)) + self.line.setFrameShape(QtWidgets.QFrame.VLine) + self.line.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line.setObjectName("line") + self.horizontalLayout.addWidget(self.line) + self.btn_taxer = QtWidgets.QPushButton(self.f_caller_btns) + self.btn_taxer.setMinimumSize(QtCore.QSize(100, 30)) + self.btn_taxer.setMaximumSize(QtCore.QSize(100, 30)) + font = QtGui.QFont() + font.setFamily("新宋体") + font.setPointSize(12) + font.setBold(True) + font.setWeight(75) + self.btn_taxer.setFont(font) + self.btn_taxer.setStyleSheet("#btn_taxer{\n" +" background-color: rgba(255, 255, 255, 0);\n" +" color: rgb(255, 255, 255);\n" +"}\n" +"\n" +"#btn_taxer:hover{\n" +" background-color: rgba(255, 255, 255, 0.3);\n" +" \n" +" color: rgb(0, 205, 102);\n" +"}") + self.btn_taxer.setObjectName("btn_taxer") + self.horizontalLayout.addWidget(self.btn_taxer) + self.line_2 = QtWidgets.QFrame(self.f_caller_btns) + self.line_2.setMinimumSize(QtCore.QSize(0, 28)) + self.line_2.setMaximumSize(QtCore.QSize(16777215, 28)) + self.line_2.setFrameShape(QtWidgets.QFrame.VLine) + self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_2.setObjectName("line_2") + self.horizontalLayout.addWidget(self.line_2) + self.btn_tkt_pool = QtWidgets.QPushButton(self.f_caller_btns) + self.btn_tkt_pool.setMinimumSize(QtCore.QSize(110, 30)) + self.btn_tkt_pool.setMaximumSize(QtCore.QSize(110, 30)) + font = QtGui.QFont() + font.setFamily("新宋体") + font.setPointSize(12) + font.setBold(True) + font.setWeight(75) + self.btn_tkt_pool.setFont(font) + self.btn_tkt_pool.setStyleSheet("#btn_tkt_pool{\n" +" background-color: rgba(255, 255, 255, 0);\n" +" color: rgb(255, 255, 255);\n" +"}\n" +"\n" +"#btn_tkt_pool:hover{\n" +" background-color: rgba(255, 255, 255, 0.3);\n" +" \n" +" color: rgb(0, 205, 102);\n" +"}") + self.btn_tkt_pool.setObjectName("btn_tkt_pool") + self.horizontalLayout.addWidget(self.btn_tkt_pool) + self.verticalLayout.addWidget(self.f_caller_btns) + self.f_caller_info = QtWidgets.QFrame(self.f_caller_main) + self.f_caller_info.setStyleSheet("#f_caller_info{\n" +" margin:0px\n" +"}") + self.f_caller_info.setObjectName("f_caller_info") + self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.f_caller_info) + self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.lb_info = QtWidgets.QLabel(self.f_caller_info) + self.lb_info.setMinimumSize(QtCore.QSize(590, 32)) + self.lb_info.setMaximumSize(QtCore.QSize(590, 32)) + font = QtGui.QFont() + font.setFamily("黑体") + font.setPointSize(14) + font.setBold(False) + font.setWeight(50) + self.lb_info.setFont(font) + self.lb_info.setStyleSheet("#lb_info{\n" +" \n" +" color: rgb(255, 255, 255);\n" +"}") + self.lb_info.setObjectName("lb_info") + self.horizontalLayout_2.addWidget(self.lb_info) + self.verticalLayout.addWidget(self.f_caller_info) + + self.retranslateUi(caller_main) + QtCore.QMetaObject.connectSlotsByName(caller_main) + + def retranslateUi(self, caller_main): + _translate = QtCore.QCoreApplication.translate + caller_main.setWindowTitle(_translate("caller_main", "Form")) + self.btn_abanden.setText(_translate("caller_main", "弃号")) + self.btn_start.setText(_translate("caller_main", "开始")) + self.btn_pause.setText(_translate("caller_main", "暂停")) + self.btn_taxer.setText(_translate("caller_main", "办税员")) + self.btn_tkt_pool.setText(_translate("caller_main", "叫号记录")) + self.lb_info.setText(_translate("caller_main", "待机中...")) +import caller_src_rc diff --git a/callclient/views/Ui_login.py b/callclient/views/Ui_login.py new file mode 100644 index 0000000..c0b7dce --- /dev/null +++ b/callclient/views/Ui_login.py @@ -0,0 +1,363 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'f:\workspace\python\jgzy_queuingsystem\callclient\views\login.ui' +# +# Created by: PyQt5 UI code generator 5.15.9 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +import caller_src_rc +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_win_Login(object): + def setupUi(self, win_Login): + win_Login.setObjectName("win_Login") + win_Login.resize(600, 750) + win_Login.setMinimumSize(QtCore.QSize(600, 750)) + win_Login.setMaximumSize(QtCore.QSize(600, 750)) + self.horizontalLayout_5 = QtWidgets.QHBoxLayout(win_Login) + self.horizontalLayout_5.setObjectName("horizontalLayout_5") + self.f_login_main = QtWidgets.QFrame(win_Login) + self.f_login_main.setStyleSheet("#f_login_main{\n" + "background-color:rgb(255,255,255);\n" + "border:5px, white;\n" + "margin:0px;\n" + "padding:0px;\n" + "}") + self.f_login_main.setObjectName("f_login_main") + self.verticalLayout = QtWidgets.QVBoxLayout(self.f_login_main) + self.verticalLayout.setContentsMargins(0, 0, 0, 0) + self.verticalLayout.setObjectName("verticalLayout") + self.f_win_btn = QtWidgets.QFrame(self.f_login_main) + self.f_win_btn.setMaximumSize(QtCore.QSize(582, 30)) + self.f_win_btn.setStyleSheet("#f_win_btn{\n" + " margin:0px;\n" + " padding:0px;\n" + "}") + self.f_win_btn.setObjectName("f_win_btn") + self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.f_win_btn) + self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout_6.setObjectName("horizontalLayout_6") + spacerItem = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_6.addItem(spacerItem) + self.btn_min = QtWidgets.QPushButton(self.f_win_btn) + self.btn_min.setMinimumSize(QtCore.QSize(30, 30)) + self.btn_min.setMaximumSize(QtCore.QSize(30, 30)) + font = QtGui.QFont() + font.setPointSize(12) + font.setBold(True) + font.setWeight(75) + self.btn_min.setFont(font) + self.btn_min.setStyleSheet("#btn_min{\n" + " margin:0px;\n" + " padding:0px;\n" + " background-image:url(:/minest_normal.png);\n" + " background-repeat:no-repeat;\n" + " background-position:center;\n" + " border:none;\n" + " color:gray;\n" + " padding:5px\n" + "}\n" + "#btn_min:hover{\n" + " background-color:#CCCCCC;\n" + "}") + self.btn_min.setText("") + self.btn_min.setObjectName("btn_min") + self.horizontalLayout_6.addWidget(self.btn_min) + self.btn_close = QtWidgets.QPushButton(self.f_win_btn) + self.btn_close.setMinimumSize(QtCore.QSize(30, 30)) + self.btn_close.setMaximumSize(QtCore.QSize(30, 30)) + font = QtGui.QFont() + font.setPointSize(12) + font.setBold(True) + font.setWeight(75) + self.btn_close.setFont(font) + self.btn_close.setStyleSheet("#btn_close{\n" + " background-image: url(:/exit_normal.png);\n" + " background-repeat:no-repeat;\n" + " background-position:center;\n" + " margin:0px;\n" + " padding:0px;\n" + " border:none;\n" + " color:gray;\n" + "}\n" + "#btn_close:hover{\n" + " \n" + " background-color:#CCCCCC;\n" + "}") + self.btn_close.setText("") + self.btn_close.setObjectName("btn_close") + self.horizontalLayout_6.addWidget(self.btn_close) + self.verticalLayout.addWidget(self.f_win_btn) + self.f_title = QtWidgets.QFrame(self.f_login_main) + self.f_title.setMaximumSize(QtCore.QSize(582, 100)) + self.f_title.setStyleSheet("#f_title{\n" + " margin:0px;\n" + " padding:0px;\n" + "}") + self.f_title.setObjectName("f_title") + self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.f_title) + self.horizontalLayout_4.setObjectName("horizontalLayout_4") + spacerItem1 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_4.addItem(spacerItem1) + self.lb_title = QtWidgets.QLabel(self.f_title) + self.lb_title.setMaximumSize(QtCore.QSize(280, 62)) + font = QtGui.QFont() + font.setFamily("黑体") + font.setPointSize(24) + font.setBold(True) + font.setWeight(75) + self.lb_title.setFont(font) + self.lb_title.setObjectName("lb_title") + self.horizontalLayout_4.addWidget(self.lb_title) + spacerItem2 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_4.addItem(spacerItem2) + self.verticalLayout.addWidget(self.f_title) + self.f_login_type_2 = QtWidgets.QFrame(self.f_login_main) + self.f_login_type_2.setStyleSheet("#f_login_type_2{\n" + " margin:0px;\n" + " padding:0px;\n" + "}") + self.f_login_type_2.setObjectName("f_login_type_2") + self.f_login_type = QtWidgets.QHBoxLayout(self.f_login_type_2) + self.f_login_type.setObjectName("f_login_type") + spacerItem3 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_login_type.addItem(spacerItem3) + self.rb_custom_user = QtWidgets.QRadioButton(self.f_login_type_2) + font = QtGui.QFont() + font.setPointSize(16) + self.rb_custom_user.setFont(font) + self.rb_custom_user.setObjectName("rb_custom_user") + self.f_login_type.addWidget(self.rb_custom_user) + spacerItem4 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_login_type.addItem(spacerItem4) + self.rb_zh_user = QtWidgets.QRadioButton(self.f_login_type_2) + font = QtGui.QFont() + font.setPointSize(16) + self.rb_zh_user.setFont(font) + self.rb_zh_user.setObjectName("rb_zh_user") + self.f_login_type.addWidget(self.rb_zh_user) + spacerItem5 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_login_type.addItem(spacerItem5) + self.f_login_type.setStretch(2, 1) + self.f_login_type.setStretch(3, 1) + self.f_login_type.setStretch(4, 3) + self.verticalLayout.addWidget(self.f_login_type_2) + self.f_account = QtWidgets.QFrame(self.f_login_main) + self.f_account.setStyleSheet("#f_account{\n" + " margin:0px;\n" + " padding:0px;\n" + "}") + self.f_account.setObjectName("f_account") + self.f_username = QtWidgets.QHBoxLayout(self.f_account) + self.f_username.setObjectName("f_username") + spacerItem6 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_username.addItem(spacerItem6) + self.lb_account = QtWidgets.QLabel(self.f_account) + font = QtGui.QFont() + font.setPointSize(18) + self.lb_account.setFont(font) + self.lb_account.setObjectName("lb_account") + self.f_username.addWidget(self.lb_account) + spacerItem7 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_username.addItem(spacerItem7) + self.edt_account = QtWidgets.QLineEdit(self.f_account) + self.edt_account.setMinimumSize(QtCore.QSize(0, 50)) + self.edt_account.setMaximumSize(QtCore.QSize(16777215, 50)) + font = QtGui.QFont() + font.setPointSize(20) + font.setBold(True) + font.setWeight(75) + self.edt_account.setFont(font) + self.edt_account.setObjectName("edt_account") + self.f_username.addWidget(self.edt_account) + spacerItem8 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_username.addItem(spacerItem8) + self.f_username.setStretch(3, 4) + self.f_username.setStretch(4, 1) + self.verticalLayout.addWidget(self.f_account) + self.f_pwd_2 = QtWidgets.QFrame(self.f_login_main) + self.f_pwd_2.setStyleSheet("#f_pwd_2{\n" + " margin:0px;\n" + " padding:0px;\n" + "}") + self.f_pwd_2.setObjectName("f_pwd_2") + self.f_pwd = QtWidgets.QHBoxLayout(self.f_pwd_2) + self.f_pwd.setObjectName("f_pwd") + spacerItem9 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_pwd.addItem(spacerItem9) + self.lb_pwd = QtWidgets.QLabel(self.f_pwd_2) + font = QtGui.QFont() + font.setPointSize(18) + self.lb_pwd.setFont(font) + self.lb_pwd.setObjectName("lb_pwd") + self.f_pwd.addWidget(self.lb_pwd) + spacerItem10 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_pwd.addItem(spacerItem10) + self.edt_pwd = QtWidgets.QLineEdit(self.f_pwd_2) + self.edt_pwd.setMinimumSize(QtCore.QSize(0, 50)) + self.edt_pwd.setMaximumSize(QtCore.QSize(16777215, 50)) + font = QtGui.QFont() + font.setPointSize(20) + font.setBold(True) + font.setWeight(75) + self.edt_pwd.setFont(font) + self.edt_pwd.setStyleSheet("") + self.edt_pwd.setObjectName("edt_pwd") + self.f_pwd.addWidget(self.edt_pwd) + spacerItem11 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_pwd.addItem(spacerItem11) + self.f_pwd.setStretch(3, 4) + self.f_pwd.setStretch(4, 1) + self.verticalLayout.addWidget(self.f_pwd_2) + self.f_unitname_2 = QtWidgets.QFrame(self.f_login_main) + self.f_unitname_2.setObjectName("f_unitname_2") + self.f_unitname = QtWidgets.QHBoxLayout(self.f_unitname_2) + self.f_unitname.setContentsMargins(9, 9, 9, 9) + self.f_unitname.setObjectName("f_unitname") + spacerItem12 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_unitname.addItem(spacerItem12) + self.lb_unitname = QtWidgets.QLabel(self.f_unitname_2) + self.lb_unitname.setMinimumSize(QtCore.QSize(480, 0)) + self.lb_unitname.setMaximumSize(QtCore.QSize(480, 16777215)) + font = QtGui.QFont() + font.setPointSize(12) + self.lb_unitname.setFont(font) + self.lb_unitname.setObjectName("lb_unitname") + self.f_unitname.addWidget(self.lb_unitname) + spacerItem13 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_unitname.addItem(spacerItem13) + self.f_unitname.setStretch(0, 1) + self.f_unitname.setStretch(1, 8) + self.f_unitname.setStretch(2, 1) + self.verticalLayout.addWidget(self.f_unitname_2) + self.f_winselector_2 = QtWidgets.QFrame(self.f_login_main) + self.f_winselector_2.setObjectName("f_winselector_2") + self.f_winselector = QtWidgets.QHBoxLayout(self.f_winselector_2) + self.f_winselector.setContentsMargins(9, 9, 9, 9) + self.f_winselector.setObjectName("f_winselector") + spacerItem14 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_winselector.addItem(spacerItem14) + self.lb_win = QtWidgets.QLabel(self.f_winselector_2) + font = QtGui.QFont() + font.setPointSize(18) + self.lb_win.setFont(font) + self.lb_win.setObjectName("lb_win") + self.f_winselector.addWidget(self.lb_win) + spacerItem15 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_winselector.addItem(spacerItem15) + self.cb_win = QtWidgets.QComboBox(self.f_winselector_2) + self.cb_win.setMinimumSize(QtCore.QSize(0, 50)) + self.cb_win.setMaximumSize(QtCore.QSize(16777215, 50)) + font = QtGui.QFont() + font.setPointSize(20) + self.cb_win.setFont(font) + self.cb_win.setObjectName("cb_win") + self.f_winselector.addWidget(self.cb_win) + spacerItem16 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_winselector.addItem(spacerItem16) + self.f_winselector.setStretch(3, 4) + self.f_winselector.setStretch(4, 1) + self.verticalLayout.addWidget(self.f_winselector_2) + self.f_save = QtWidgets.QFrame(self.f_login_main) + self.f_save.setStyleSheet("#f_save{\n" + " margin:0px;\n" + " padding:0px;\n" + "}") + self.f_save.setObjectName("f_save") + self.f_save_info = QtWidgets.QHBoxLayout(self.f_save) + self.f_save_info.setObjectName("f_save_info") + spacerItem17 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_save_info.addItem(spacerItem17) + self.ckb_save_account = QtWidgets.QCheckBox(self.f_save) + font = QtGui.QFont() + font.setPointSize(16) + self.ckb_save_account.setFont(font) + self.ckb_save_account.setObjectName("ckb_save_account") + self.f_save_info.addWidget(self.ckb_save_account) + self.f_save_info.setStretch(0, 7) + self.f_save_info.setStretch(1, 3) + self.verticalLayout.addWidget(self.f_save) + self.f_login_btn_2 = QtWidgets.QFrame(self.f_login_main) + self.f_login_btn_2.setStyleSheet("#f_login_btn_2{\n" + " margin:0px;\n" + " padding:0px;\n" + "}") + self.f_login_btn_2.setObjectName("f_login_btn_2") + self.f_login_btn = QtWidgets.QHBoxLayout(self.f_login_btn_2) + self.f_login_btn.setObjectName("f_login_btn") + spacerItem18 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_login_btn.addItem(spacerItem18) + self.btn_login = QtWidgets.QPushButton(self.f_login_btn_2) + self.btn_login.setMinimumSize(QtCore.QSize(280, 48)) + self.btn_login.setMaximumSize(QtCore.QSize(280, 48)) + font = QtGui.QFont() + font.setPointSize(20) + font.setBold(True) + font.setWeight(75) + self.btn_login.setFont(font) + self.btn_login.setStyleSheet("#btn_login{\n" + " color:rgb(255,255,255);\n" + " background-color:rgb(0, 170, 255);\n" + " border:none;\n" + "}\n" + "#btn_login:hover{\n" + " background-color:rgb(140, 170, 255)\n" + "}") + self.btn_login.setObjectName("btn_login") + self.f_login_btn.addWidget(self.btn_login) + spacerItem19 = QtWidgets.QSpacerItem( + 40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.f_login_btn.addItem(spacerItem19) + self.f_login_btn.setStretch(0, 2) + self.f_login_btn.setStretch(1, 4) + self.f_login_btn.setStretch(2, 2) + self.verticalLayout.addWidget(self.f_login_btn_2) + self.verticalLayout.setStretch(0, 1) + self.verticalLayout.setStretch(1, 3) + self.verticalLayout.setStretch(2, 2) + self.verticalLayout.setStretch(3, 2) + self.verticalLayout.setStretch(4, 2) + self.verticalLayout.setStretch(5, 1) + self.verticalLayout.setStretch(6, 2) + self.verticalLayout.setStretch(7, 2) + self.verticalLayout.setStretch(8, 4) + self.horizontalLayout_5.addWidget(self.f_login_main) + + self.retranslateUi(win_Login) + QtCore.QMetaObject.connectSlotsByName(win_Login) + + def retranslateUi(self, win_Login): + _translate = QtCore.QCoreApplication.translate + win_Login.setWindowTitle(_translate("win_Login", "Form")) + self.lb_title.setText(_translate("win_Login", "呼号客户端 登录")) + self.rb_custom_user.setText(_translate("win_Login", "自建用户")) + self.rb_zh_user.setText(_translate("win_Login", "综合管理系统用户")) + self.lb_account.setText(_translate("win_Login", "账号")) + self.lb_pwd.setText(_translate("win_Login", "密码")) + self.lb_unitname.setText(_translate("win_Login", "请先输入账号再选择窗口!")) + self.lb_win.setText(_translate("win_Login", "窗口")) + self.ckb_save_account.setText(_translate("win_Login", "保存密码")) + self.btn_login.setText(_translate("win_Login", "登录")) diff --git a/callclient/views/__pycache__/Ui_caller_main.cpython-38.pyc b/callclient/views/__pycache__/Ui_caller_main.cpython-38.pyc new file mode 100644 index 0000000..6234fc9 Binary files /dev/null and b/callclient/views/__pycache__/Ui_caller_main.cpython-38.pyc differ diff --git a/callclient/views/__pycache__/Ui_login.cpython-38.pyc b/callclient/views/__pycache__/Ui_login.cpython-38.pyc new file mode 100644 index 0000000..6f9b5bb Binary files /dev/null and b/callclient/views/__pycache__/Ui_login.cpython-38.pyc differ diff --git a/callclient/views/__pycache__/Ui_win_selector.cpython-38.pyc b/callclient/views/__pycache__/Ui_win_selector.cpython-38.pyc new file mode 100644 index 0000000..1f9f122 Binary files /dev/null and b/callclient/views/__pycache__/Ui_win_selector.cpython-38.pyc differ diff --git a/callclient/views/caller_main.ui b/callclient/views/caller_main.ui new file mode 100644 index 0000000..8cbdb09 --- /dev/null +++ b/callclient/views/caller_main.ui @@ -0,0 +1,425 @@ + + + caller_main + + + + 0 + 0 + 600 + 70 + + + + + 600 + 70 + + + + + 600 + 70 + + + + Form + + + + + 0 + 0 + 601 + 72 + + + + #f_caller_main{ + background-color: rgb(43, 43, 43); +} + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + #f_caller_btns{ + margin:0px; + padding-top:5px; +} + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 80 + 30 + + + + + 80 + 30 + + + + + 新宋体 + 14 + 75 + true + + + + #btn_call{ + background-color: rgba(255, 255, 255, 0); + background-image: url(:/btn_call_t_normal.png); + background-repeat:no-repeat; + background-position:center center; + background-size:70% 70%; +} + +#btn_call:hover{ + background-color: rgba(255, 255, 255, 0.3); + background-image: url(:/btn_call_t_hover.png); +} + + + + + + + 24 + 24 + + + + false + + + + + + + + 80 + 30 + + + + + 80 + 30 + + + + + 新宋体 + 12 + 75 + true + + + + #btn_abanden{ + background-color: rgba(255, 255, 255, 0); + color: rgb(255, 255, 255); +} + +#btn_abanden:hover{ + background-color: rgba(255, 255, 255, 0.3); + + color: rgb(0, 205, 102); +} + + + 弃号 + + + + + + + + 80 + 30 + + + + + 80 + 30 + + + + + 新宋体 + 12 + 75 + true + + + + #btn_start{ + background-color: rgba(255, 255, 255, 0); + color: rgb(255, 255, 255); +} + +#btn_start:hover{ + background-color: rgba(255, 255, 255, 0.3); + + color: rgb(0, 205, 102); +} + + + 开始 + + + + + + + + 80 + 30 + + + + + 80 + 30 + + + + + 新宋体 + 12 + 75 + true + + + + #btn_pause{ + background-color: rgba(255, 255, 255, 0); + color: rgb(255, 255, 255); +} + +#btn_pause:hover{ + background-color: rgba(255, 255, 255, 0.3); + + color: rgb(0, 205, 102); +} + + + 暂停 + + + + + + + + 0 + 28 + + + + + 16777215 + 28 + + + + Qt::Vertical + + + + + + + + 100 + 30 + + + + + 100 + 30 + + + + + 新宋体 + 12 + 75 + true + + + + #btn_taxer{ + background-color: rgba(255, 255, 255, 0); + color: rgb(255, 255, 255); +} + +#btn_taxer:hover{ + background-color: rgba(255, 255, 255, 0.3); + + color: rgb(0, 205, 102); +} + + + 办税员 + + + + + + + + 0 + 28 + + + + + 16777215 + 28 + + + + Qt::Vertical + + + + + + + + 110 + 30 + + + + + 110 + 30 + + + + + 新宋体 + 12 + 75 + true + + + + #btn_tkt_pool{ + background-color: rgba(255, 255, 255, 0); + color: rgb(255, 255, 255); +} + +#btn_tkt_pool:hover{ + background-color: rgba(255, 255, 255, 0.3); + + color: rgb(0, 205, 102); +} + + + 叫号记录 + + + + + + + + + + #f_caller_info{ + margin:0px +} + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 590 + 32 + + + + + 590 + 32 + + + + + 黑体 + 14 + 50 + false + + + + #lb_info{ + + color: rgb(255, 255, 255); +} + + + 待机中... + + + + + + + + + + + + + + diff --git a/callclient/views/login.ui b/callclient/views/login.ui new file mode 100644 index 0000000..bc9da1c --- /dev/null +++ b/callclient/views/login.ui @@ -0,0 +1,770 @@ + + + win_Login + + + + 0 + 0 + 600 + 750 + + + + + 600 + 750 + + + + + 600 + 750 + + + + Form + + + + + + #f_login_main{ +background-color:rgb(255,255,255); +border:5px, white; +margin:0px; +padding:0px; +} + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 582 + 30 + + + + #f_win_btn{ + margin:0px; + padding:0px; +} + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 30 + 30 + + + + + 30 + 30 + + + + + 12 + 75 + true + + + + #btn_min{ + margin:0px; + padding:0px; + background-image:url(:/minest_normal.png); + background-repeat:no-repeat; + background-position:center; + border:none; + color:gray; + padding:5px +} +#btn_min:hover{ + background-color:#CCCCCC; +} + + + + + + + + + + + 30 + 30 + + + + + 30 + 30 + + + + + 12 + 75 + true + + + + #btn_close{ + background-image: url(:/exit_normal.png); + background-repeat:no-repeat; + background-position:center; + margin:0px; + padding:0px; + border:none; + color:gray; +} +#btn_close:hover{ + + background-color:#CCCCCC; +} + + + + + + + + + + + + + + 582 + 100 + + + + #f_title{ + margin:0px; + padding:0px; +} + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 280 + 62 + + + + + 黑体 + 24 + 75 + true + + + + 呼号客户端 登录 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + #f_login_type_2{ + margin:0px; + padding:0px; +} + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 16 + + + + 自建用户 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 16 + + + + 综合管理系统用户 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + #f_account{ + margin:0px; + padding:0px; +} + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 18 + + + + 账号 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 50 + + + + + 16777215 + 50 + + + + + 20 + 75 + true + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + #f_pwd_2{ + margin:0px; + padding:0px; +} + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 18 + + + + 密码 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 50 + + + + + 16777215 + 50 + + + + + 20 + 75 + true + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + 9 + + + 9 + + + 9 + + + 9 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 480 + 0 + + + + + 480 + 16777215 + + + + + 12 + + + + 请先输入账号再选择窗口! + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + 9 + + + 9 + + + 9 + + + 9 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 18 + + + + 窗口 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 50 + + + + + 16777215 + 50 + + + + + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + #f_save{ + margin:0px; + padding:0px; +} + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 16 + + + + 保存密码 + + + + + + + + + + #f_login_btn_2{ + margin:0px; + padding:0px; +} + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 280 + 48 + + + + + 280 + 48 + + + + + 20 + 75 + true + + + + #btn_login{ + color:rgb(255,255,255); + background-color:rgb(0, 170, 255); + border:none; +} +#btn_login:hover{ + background-color:rgb(140, 170, 255) +} + + + 登录 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + + diff --git a/tvclient/__pycache__/app.cpython-38.pyc b/tvclient/__pycache__/app.cpython-38.pyc new file mode 100644 index 0000000..0fd2a66 Binary files /dev/null and b/tvclient/__pycache__/app.cpython-38.pyc differ diff --git a/tvclient/app.py b/tvclient/app.py new file mode 100644 index 0000000..55bb7a0 --- /dev/null +++ b/tvclient/app.py @@ -0,0 +1,14 @@ +from PyQt5.QtWidgets import QApplication +from controllers.tvclient_main import TvclientMain + +# 启动程序方法,启动时初始化login界面 + + +def run(): + app = QApplication([]) + + window = TvclientMain() + + window.show() + + app.exec_() diff --git a/tvclient/controllers/__pycache__/tvclient_main.cpython-38.pyc b/tvclient/controllers/__pycache__/tvclient_main.cpython-38.pyc new file mode 100644 index 0000000..278ad1d Binary files /dev/null and b/tvclient/controllers/__pycache__/tvclient_main.cpython-38.pyc differ diff --git a/tvclient/controllers/tvclient_main.py b/tvclient/controllers/tvclient_main.py new file mode 100644 index 0000000..bad236a --- /dev/null +++ b/tvclient/controllers/tvclient_main.py @@ -0,0 +1,16 @@ +from PyQt5.QtGui import * +from PyQt5.QtCore import * +from PyQt5.QtWidgets import * + +from views.Ui_tvclient_main import Ui_tvclient_main +# login界面controller类 +# 需要继承QWidget 如果是主窗体需要继承QMainWindow + + +class TvclientMain(QWidget): + def __init__(self): + # 这句一定要调用父类构造函数 + super().__init__() + # 动态加载UI文件 + self.ui = Ui_tvclient_main() + self.ui.setupUi(self) diff --git a/tvclient/main.py b/tvclient/main.py new file mode 100644 index 0000000..11a25f8 --- /dev/null +++ b/tvclient/main.py @@ -0,0 +1,6 @@ +import sys +import app + +# 程序入口文件 +if __name__ == '__main__': + sys.exit(app.run()) diff --git a/tvclient/views/Ui_tvclient_main.py b/tvclient/views/Ui_tvclient_main.py new file mode 100644 index 0000000..2fc79dd --- /dev/null +++ b/tvclient/views/Ui_tvclient_main.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'f:\workspace\python\jgzy_queuingsystem\tvclient\views\tvclient_main.ui' +# +# Created by: PyQt5 UI code generator 5.15.9 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_tvclient_main(object): + def setupUi(self, tvclient_main): + tvclient_main.setObjectName("tvclient_main") + tvclient_main.resize(400, 300) + self.label = QtWidgets.QLabel(tvclient_main) + self.label.setGeometry(QtCore.QRect(80, 80, 171, 41)) + self.label.setObjectName("label") + + self.retranslateUi(tvclient_main) + QtCore.QMetaObject.connectSlotsByName(tvclient_main) + + def retranslateUi(self, tvclient_main): + _translate = QtCore.QCoreApplication.translate + tvclient_main.setWindowTitle(_translate("tvclient_main", "Form")) + self.label.setText(_translate("tvclient_main", "综合屏客户端")) diff --git a/tvclient/views/__pycache__/Ui_tvclient_main.cpython-38.pyc b/tvclient/views/__pycache__/Ui_tvclient_main.cpython-38.pyc new file mode 100644 index 0000000..99b1e28 Binary files /dev/null and b/tvclient/views/__pycache__/Ui_tvclient_main.cpython-38.pyc differ diff --git a/tvclient/views/tvclient_main.ui b/tvclient/views/tvclient_main.ui new file mode 100644 index 0000000..a3bf861 --- /dev/null +++ b/tvclient/views/tvclient_main.ui @@ -0,0 +1,32 @@ + + + tvclient_main + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + 80 + 80 + 171 + 41 + + + + 综合屏客户端 + + + + + + diff --git a/utils/__pycache__/file_handler.cpython-38.pyc b/utils/__pycache__/file_handler.cpython-38.pyc new file mode 100644 index 0000000..60293b6 Binary files /dev/null and b/utils/__pycache__/file_handler.cpython-38.pyc differ diff --git a/utils/file_handler.py b/utils/file_handler.py new file mode 100644 index 0000000..29834f2 --- /dev/null +++ b/utils/file_handler.py @@ -0,0 +1,7 @@ +import os + +def GET_UI_PATH(): + absPath = os.path.abspath('callclient/assets') + print("absPath=" + absPath) + filePath = os.path.dirname(os.path.abspath('./assets')) + print("Path=" + filePath) \ No newline at end of file