├── .gitignore
├── Bilibili
├── __init__.py
├── advanced_setting.py
├── check.py
├── core.py
├── decode.py
├── download.py
├── login.py
└── settings.py
├── MainGUI.ui
├── README.md
├── TerraHistoricus
└── __init__.py
├── main.py
├── main.spec
├── setting.py
├── source
├── main.ico
├── main.qrc
└── main_rc.py
├── ui_MainGUI.py
└── upx.exe
/.gitignore:
--------------------------------------------------------------------------------
1 | /venv/
2 | /B站漫画下载/
3 | /.idea/
4 | /build/
5 | /dist/
6 | /version.txt
7 | /Bilibili漫画下载器.exe.spec
8 |
--------------------------------------------------------------------------------
/Bilibili/__init__.py:
--------------------------------------------------------------------------------
1 | def download_bilibili(manga_id: int, manga_range: str):
2 | pass
3 |
--------------------------------------------------------------------------------
/Bilibili/advanced_setting.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Randark-JMT/Bilibili_manga_download/fc56084d03e74b6d62c2cbb6d0a3ede416858d0c/Bilibili/advanced_setting.py
--------------------------------------------------------------------------------
/Bilibili/check.py:
--------------------------------------------------------------------------------
1 | def check_manga_id(manga_id: int):
2 | pass
3 |
4 |
5 | def check_manga_range(manga_range: str):
6 | pass
7 |
--------------------------------------------------------------------------------
/Bilibili/core.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Randark-JMT/Bilibili_manga_download/fc56084d03e74b6d62c2cbb6d0a3ede416858d0c/Bilibili/core.py
--------------------------------------------------------------------------------
/Bilibili/decode.py:
--------------------------------------------------------------------------------
1 | import json
2 | import numpy as np
3 | import zipfile
4 | import io
5 | from Bilibili.settings import url_ImageToken
6 | import requests
7 |
8 | from Bilibili.settings import headers
9 |
10 |
11 | def decode_index_data(season_id: int, episode_id: int, buf):
12 | u = [66, 73, 76, 73, 67, 79, 77, 73, 67]
13 | length = len(u)
14 | e = buf[length:]
15 | # print(buf)
16 | _e = []
17 | for i in range(len(e)):
18 | _e.append(e[i])
19 | e = np.uint8(_e)
20 | # print(e)
21 | n = [0, 0, 0, 0, 0, 0, 0, 0]
22 | n = np.array(n, dtype='uint8')
23 | n[0] = episode_id
24 | n[1] = episode_id >> 8
25 | n[2] = episode_id >> 16
26 | n[3] = episode_id >> 24
27 | n[4] = season_id
28 | n[5] = season_id >> 8
29 | n[6] = season_id >> 16
30 | n[7] = season_id >> 24
31 | # print(n)
32 | _n = 0
33 | r = len(e)
34 | while _n < r:
35 | e[_n] = e[_n] ^ n[_n % 8]
36 | _n = _n + 1
37 | # print("解密后:")
38 | # print(e)
39 | ret = bytes(e)
40 | # print(ret)
41 | z = zipfile.ZipFile(io.BytesIO(ret), 'r')
42 | j = z.read('index.dat')
43 | # print(j)
44 | # pprint(json.loads(j)['pics'])
45 | return json.loads(j)['pics']
46 |
47 |
48 | # 单文件链接解析
49 | def get_image_url(img_url):
50 | # url = str('https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken?device=pc&platform=web')
51 | # 获取图片token
52 | res = requests.post(url_ImageToken, json.dumps({"urls": json.dumps([img_url])}), headers=headers)
53 | data = json.loads(res.text)['data'][0]
54 | url = data['url'] + '?token=' + data['token']
55 | return url
56 |
--------------------------------------------------------------------------------
/Bilibili/download.py:
--------------------------------------------------------------------------------
1 | import json
2 | import os
3 | import requests
4 | import traceback
5 | from Bilibili.decode import decode_index_data, get_image_url
6 | from Bilibili.settings import headers, url_ComicDetail, download_path, url_GetEpisode, url_GetImageIndex, get_cookie
7 |
8 |
9 | # TODO 加入代理设置
10 |
11 |
12 | def get_data(url, data, headers_user, log_out): # 网络数据获取
13 | try:
14 | res = requests.post(url, data, headers=headers_user)
15 | except Exception:
16 | log_out("0x00", "--+--+--+-- 错误 网络通信时出错 --+--+--+--")
17 | errmsg = traceback.format_exc(limit=3).split("\n")[-2].split(": ")
18 | log_out(errmsg[0] + "-" + errmsg[1])
19 | if errmsg[0] == "requests.exceptions.SSLError":
20 | log_out("0x00", "请检查网络连接情况,并尝试关闭网络代理")
21 | return None
22 | return res
23 |
24 |
25 | def get_purchase_status(comic_id: int, log_out): # 购买情况查询
26 | # cookie 数据读取
27 | get_cookie()
28 | data_rt = []
29 | # 数据解析
30 | data_re = get_data(url_ComicDetail, json.dumps({"comic_id": comic_id}), headers, log_out)
31 | if data_re is None:
32 | return None
33 | try:
34 | data = json.loads(data_re.text)['data']
35 | except Exception:
36 | log_out("0x00", "--*--*--*-- 错误 漫画数据解析时出错 --*--*--*--\n请检查输入的数据是否正确")
37 | return None
38 | data_rt.append([data['id'], data['title']])
39 | manga_list = data['ep_list']
40 | manga_list.reverse()
41 | ep_order: int = 1
42 | for ep in manga_list:
43 | data_rt_per = []
44 | if ep['short_title'].isnumeric():
45 | data_rt_per.append("#" + str(ep_order).rjust(3, "0") + "# " + '第' + ep['short_title'].rjust(3, '0') + '话—' + ep['title'])
46 | if ep['is_locked']:
47 | data_rt_per.append(':未购买')
48 | else:
49 | data_rt_per.append(':已购买')
50 | else:
51 | data_rt_per.append("#" + str(ep_order).rjust(3, "0") + "# " + ep['short_title'] + '—' + ep['title'])
52 | if ep['is_locked']:
53 | data_rt_per.append(':未购买')
54 | else:
55 | data_rt_per.append(':已购买')
56 | data_rt.append(data_rt_per)
57 | ep_order += 1
58 | return data_rt
59 |
60 |
61 | def download_manga_episode(episode_id: int, root_path: str, log_out): # ID-索引下载漫画模块
62 | data_re = get_data(url_GetEpisode, json.dumps({"id": episode_id}), headers, log_out)
63 | data = json.loads(data_re.text)
64 | short_title = data['data']['short_title']
65 | title = short_title + '_' + data['data']['title']
66 | comic_id = data['data']['comic_id']
67 | log_out("0x00", '正在下载:' + title)
68 | # 获取索引文件cdn位置
69 | res = requests.post(url_GetImageIndex, json.dumps({"ep_id": episode_id}), headers=headers)
70 | data = json.loads(res.text)
71 | index_url = 'https://manga.hdslb.com' + data['data']['path']
72 | # log_out('获取索引文件cdn位置:' + index_url)
73 | # 获取索引文件
74 | res = requests.get(index_url)
75 | # 解析索引文件
76 | pics = decode_index_data(comic_id, episode_id, res.content)
77 | # 文件储存
78 | ep_path = os.path.join(root_path, str(title).replace(" ", ""))
79 | if not os.path.exists(ep_path):
80 | os.makedirs(ep_path)
81 | for i, e in enumerate(pics):
82 | url = get_image_url(e)
83 | res = requests.get(url)
84 | with open(os.path.join(ep_path, str(i + 1).rjust(3, '0') + '.jpg'), 'wb+') as f:
85 | f.write(res.content)
86 | pass
87 | if i % 4 == 0 and i != 0:
88 | # time.sleep(1)
89 | pass
90 | log_out("0x00", '第' + str(i + 1).rjust(3, "0") + '页 "下载成功" ' + e)
91 | log_out("0x00", "")
92 |
93 |
94 | def download_main(comic_id: int, download_range: str, log_out): # 主下载模块
95 | # cookie 数据读取
96 | from Bilibili.settings import get_cookie
97 | get_cookie()
98 | data_re = get_data(url_ComicDetail, json.dumps({"comic_id": comic_id}), headers, log_out)
99 | comic_info = json.loads(data_re.text)['data']
100 | log_out("0x00", "正在下载 " + str(comic_info['id']) + "-" + str(comic_info['title']))
101 | download_range = download_range.replace(',', ',') # 防呆设计
102 | download_range = download_range.replace('—', '-')
103 | download_range = download_range.replace(" ", "")
104 | if download_range == '0':
105 | data = json.loads(data_re.text)['data']
106 | comic_title = data['title']
107 | # 漫画下载目录检查&创建
108 | root_path = os.path.join(download_path, comic_title)
109 | if not os.path.exists(root_path):
110 | os.makedirs(root_path)
111 | manga_list = data['ep_list']
112 | manga_list.reverse()
113 | # TODO 全部下载的进度条
114 | for ep in manga_list:
115 | # 检查付费章节是否购买
116 | if not ep['is_locked']:
117 | # log_out('正在下载第:' + ep['short_title'] + ep['title'])
118 | download_manga_episode(ep['id'], root_path, log_out)
119 | else:
120 | log_out("0x00", '第' + data['short_title'].rjust(3, '0') + '话—' + data['title'] + " 未购买,已跳过")
121 | continue
122 | log_out("0xe3", "--*--*--*-- 下载任务已完成 --*--*--*--")
123 | return None
124 | # 对用户输入的章节数据进行读取
125 | download_range = download_range.split(",")
126 | for chunk in download_range:
127 | chunk = chunk.split("-")
128 | if len(chunk) == 2:
129 | if not chunk[0].isnumeric() or not chunk[1].isnumeric():
130 | log_out("0xe3", "下载范围输入错误,请检查输入")
131 | return None
132 | elif int(chunk[0]) >= int(chunk[1]):
133 | log_out("0xe3", "下载范围输入错误,请检查输入")
134 | return None
135 | else:
136 | section = int(chunk[0])
137 | while section <= int(chunk[1]):
138 | download_manga_each(comic_id, section, log_out)
139 | section += 1
140 | elif chunk[0] == "":
141 | continue
142 | else:
143 | download_manga_each(comic_id, int(chunk[0]), log_out)
144 | log_out("0xe3", "--*--*--*-- 下载任务已完成 --*--*--*--")
145 | return None
146 |
147 |
148 | def download_manga_each(comic_id: int, section: int, log_out):
149 | res = requests.post(url_ComicDetail, json.dumps({"comic_id": comic_id}), headers=headers)
150 | data = json.loads(res.text)['data']
151 | comic_title = data['title']
152 | # 漫画下载目录检查&创建
153 | root_path = os.path.join(download_path, comic_title)
154 | if not os.path.exists(root_path):
155 | os.makedirs(root_path)
156 | manga_list = data['ep_list']
157 | manga_list.reverse()
158 | manga_section = manga_list[section - 1]
159 | if not manga_section['is_locked']: # 检查付费章节是否购买
160 | # TODO 单章下载的进度条
161 | download_manga_episode(manga_section['id'], root_path, log_out)
162 | else:
163 | log_out("0x00", '第' + data['short_title'].rjust(3, '0') + '话—' + data['title'] + " 未购买,已跳过")
164 |
--------------------------------------------------------------------------------
/Bilibili/login.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | import qrcode
3 | from threading import Thread
4 | import time
5 | import requests
6 | from io import BytesIO
7 | from PIL import Image
8 | import json
9 |
10 | import setting
11 | import settings
12 |
13 | requests.packages.urllib3.disable_warnings()
14 |
15 |
16 | class showpng(Thread):
17 | def __init__(self, data):
18 | Thread.__init__(self)
19 | self.data = data
20 |
21 | def run(self):
22 | img = Image.open(BytesIO(self.data))
23 | img.show()
24 |
25 |
26 | def islogin(log_out):
27 | from setting import properties_global
28 | settings.headers["Cookie"] = "SESSDATA=" + str(settings.property_bilibili_get("cookie", properties_global))
29 | loginurl = requests.get("https://api.bilibili.com/x/web-interface/nav", verify=False, headers=settings.headers).json()
30 | if loginurl['code'] == 0:
31 | log_out('Cookies值有效,' + loginurl['data']['uname'] + ',已登录!')
32 | return True
33 | else:
34 | log_out('Cookies值已经失效,请重新扫码登录!')
35 | return False
36 |
37 |
38 | def bzlogin(log_out):
39 | from setting import properties_global
40 | status = islogin(log_out)
41 | if not status:
42 | getlogin = requests.get('https://passport.bilibili.com/qrcode/getLoginUrl', headers=settings.headers).json()
43 | loginurl = requests.get(getlogin['data']['url'], headers=settings.headers).url
44 | oauthKey = getlogin['data']['oauthKey']
45 | qr = qrcode.QRCode()
46 | qr.add_data(loginurl)
47 | img = qr.make_image()
48 | a = BytesIO()
49 | img.save(a, 'png')
50 | png = a.getvalue()
51 | a.close()
52 | t = showpng(png)
53 | t.start()
54 | tokenurl = 'https://passport.bilibili.com/qrcode/getLoginInfo'
55 | while 1:
56 | qrcodedata = requests.post(tokenurl, data={'oauthKey': oauthKey, 'gourl': 'https://www.bilibili.com/'}, headers=settings.headers_login)
57 | if qrcodedata.json()['data'] == -4:
58 | log_out('二维码未失效,请扫码!')
59 | elif qrcodedata.json()['data'] == -5:
60 | log_out('已扫码,请确认!')
61 | elif qrcodedata.json()['data'] == -2:
62 | log_out('二维码已失效,请重新运行!')
63 | elif qrcodedata.json()['status']:
64 | log_out('已确认,登入成功!')
65 | log_out(requests.get(qrcodedata.json()['data']['url'], headers=settings.headers))
66 | sessdata = str(qrcodedata.cookies.get_dict(".Bilibili.com")["SESSDATA"])
67 | log_out(sessdata)
68 | settings.property_bilibili_put("cookie", sessdata, properties_global)
69 | break
70 | else:
71 | log_out('其他:', qrcodedata.text)
72 | time.sleep(1)
73 | log_out("请关闭二维码窗口")
74 |
75 |
76 | if __name__ == '__main__':
77 | text = setting.settintfile_read()
78 | if len(text) > 0:
79 | setting.properties_global = json.loads(text)
80 |
81 |
82 | def log_out_test(message, code=None):
83 | if code is None:
84 | print(message)
85 |
86 |
87 | bzlogin(log_out_test)
88 |
--------------------------------------------------------------------------------
/Bilibili/settings.py:
--------------------------------------------------------------------------------
1 | version = "v1.4.4"
2 | download_path = '../B站漫画下载'
3 | setting_file = 'setting.json'
4 | url_ImageToken = 'https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken?device=pc&platform=web'
5 | url_GetImageIndex = 'https://manga.bilibili.com/twirp/comic.v1.Comic/GetImageIndex?device=pc&platform=web'
6 | url_GetEpisode = 'https://manga.bilibili.com/twirp/comic.v1.Comic/GetEpisode?device=pc&platform=web'
7 | url_ComicDetail = "https://manga.bilibili.com/twirp/comic.v2.Comic/ComicDetail?device=pc&platform=web"
8 | headers = {
9 | "accept": "application/json, text/plain, */*",
10 | "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
11 | "content-type": "application/json;charset=UTF-8",
12 | "origin": 'https://manga.bilibili.com',
13 | "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) "
14 | "Chrome/83.0.4103.61 Safari/537.36",
15 | "cookie": "",
16 | 'Referer': "https://www.bilibili.com/"
17 | }
18 | headers_login = {
19 | 'User-Agent': "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36",
20 | 'Host': 'passport.Bilibili.com',
21 | 'Referer': "https://passport.bilibili.com/login"
22 | }
23 | headers_cdn = {
24 | 'Host': 'manga.hdslb.com',
25 | 'Origin': 'https://manga.bilibili.com',
26 | }
27 |
28 |
29 | def property_bilibili_put(key, value, properties):
30 | """
31 | 在bilibili域内,保存一个属性。如果key不存在,则创建;存在,则覆盖。
32 | """
33 | from setting import property_put
34 | property_put(key, value, properties, domain="Bilibili")
35 |
36 |
37 | def property_bilibili_get(key, properties):
38 | """
39 | 在bilibili域内,获取一个属性。如果不存在,则返回default。
40 | """
41 | from setting import property_get
42 | return property_get(key, properties, domain="Bilibili")
43 |
44 | def get_cookie():
45 | return None
--------------------------------------------------------------------------------
/MainGUI.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 1360
10 | 786
11 |
12 |
13 |
14 |
15 | 770
16 | 610
17 |
18 |
19 |
20 |
21 | 5
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | :/main.ico:/main.ico
30 |
31 |
32 | /**
33 | * @file: list.h
34 | * @details: qt style sheet css example
35 | * @author: chenwen(chenwen1126@tom.com)
36 | * @datetime: 2017-7-25
37 | * @history: V1.0 first edition
38 | */
39 | /*/////////////////////////////////////////////////QDialog///////////////////////////////////////////*/
40 | QWidget, QFrame,QDialog
41 | {
42 | background:#f2f2f2;
43 | }
44 |
45 | QMainWindow
46 | {
47 | background:#f2f2f2;
48 | }
49 |
50 | QWebView
51 | {
52 | background:#fefefe;
53 | }
54 |
55 | /*/////////////////////////////////////////////////QStatusBar///////////////////////////////////////////*/
56 | QStatusBar
57 | {
58 | border-top:1px solid #aaaaaa;
59 | min-height:20px;
60 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0.2 #f4f4f4, stop:1 #e4e4e4);/*渐变背景色*/
61 | }
62 |
63 | /*/////////////////////////////////////////////////工具栏及窗口边框///////////////////////////////////////////*/
64 | /*窗口边框,可*/
65 | QFrame#window
66 | {
67 | padding:0px;
68 | border-width:2px;/*边框宽度*/
69 | border-style:solid;/*边框类型*/
70 | /*用渐变色可以营造光晕边框效果*/
71 | border-color:qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #999999, stop:1 #ffffff)/*上边框渐变色*/
72 | qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #999999, stop:1 #ffffff)/*右边框渐变色*/
73 | qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #999999, stop:1 #ffffff)/*下边框渐变色*/
74 | qlineargradient(x1:1, y1:0, x2:0, y2:0, stop:0 #999999, stop:1 #ffffff);/*左边框渐变色*/
75 | }
76 |
77 | QFrame#dialog,QFrame#messagebox
78 | {
79 | padding:12px;/*设置透明阴影留出的padding空间,通过源码绘制透明阴影 注意在代码中设置QSSDIALOG_SHADOW_WIDTH为12*/
80 | border:0px solid #ff0000;/*指定边框为0,实际边框时绘制阴影时直接画de直线,边框颜色也是在代码中指定的*/
81 | }
82 |
83 | /*标题栏*/
84 | QWidget#titlebar
85 | {
86 | min-height:25px;/*用min-height设置标题栏高度*/
87 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0.2 #e4e4e4, stop:1 #d4d4d4);/*渐变背景色*/
88 | border-bottom:1px solid #aaaaaa;
89 | }
90 |
91 | QWidget:active#titlebar
92 | {
93 | min-height:25px;/*用min-height设置标题栏高度*/
94 |
95 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0.2 #f4f4f4, stop:1 #e4e4e4);/*渐变背景色*/
96 | border-bottom:1px solid #aaaaaa;
97 | }
98 |
99 | /*标题栏图标*/
100 | QPushButton#titlebaricon
101 | {
102 | min-width:24px;/*覆盖QPushButton中设置*/
103 | min-height:24px;/*覆盖QPushButton中设置*/
104 | width:24px;/*宽度*/
105 | height:24px;
106 | padding:0px;
107 | padding-left:2px;
108 | padding-right:-2px;
109 | background:transparent;/*无背景无边框*/
110 | border:none;
111 | }
112 |
113 | /*标题栏标题*/
114 | QLabel#titlebartitle
115 | {
116 | padding-left:2px;
117 | font-weight:bold;
118 | font-size:10pt;
119 | color:#222222;
120 | background:transparent;
121 | }
122 |
123 | /*标题栏关闭按钮*/
124 | QPushButton#titlebarclosebtn
125 | {
126 | padding:0px;
127 | padding-right:3px;
128 | min-width:39px;
129 | min-height:19px;
130 | width:39px;
131 | height:19px;
132 | outline:none;
133 | border: none;
134 | background:transparent;/*无背景无边框*/
135 | image:url(:/qss/icon/btn_close_highlight.png);/*btn_close_normal*/
136 | }
137 |
138 | QPushButton#titlebarclosebtn:hover
139 | {
140 | min-width:39px;
141 | min-height:19px;
142 | width:39px;
143 | height:19px;
144 | image:url(:/qss/icon/btn_close_highlight.png);
145 | }
146 |
147 | QPushButton#titlebarclosebtn:pressed
148 | {
149 | min-width:39px;
150 | min-height:19px;
151 | width:39px;
152 | height:19px;
153 | image:url(:/qss/icon/btn_close_down.png);
154 | }
155 |
156 | /*标题栏最小化按钮*/
157 | QPushButton#titlebarminbtn
158 | {
159 | padding:0px;
160 | min-width:28px;
161 | min-height:19px;
162 | width:28px;
163 | height:19px;
164 | outline:none;
165 | border: none;
166 | background:transparent;
167 | image:url(:/qss/icon/btn_mini_normal.png);
168 | }
169 |
170 | QPushButton#titlebarminbtn:hover
171 | {
172 | min-width:28px;
173 | min-height:19px;
174 | width:28px;
175 | height:19px;
176 | image:url(:/qss/icon/btn_mini_highlight.png);
177 | }
178 |
179 | QPushButton#titlebarminbtn:pressed
180 | {
181 | min-width:28px;
182 | min-height:19px;
183 | width:28px;
184 | height:19px;
185 | image:url(:/qss/icon/btn_mini_down.png);
186 | }
187 |
188 | /*标题栏最大化按钮*/
189 | QPushButton#titlebarmaxbtn
190 | {
191 | padding:0px;
192 | padding-bottom:3px;/*因为图表资源尺寸不对,做的微调*/
193 | border: none;
194 | min-width:25px;
195 | min-height:18px;
196 | width:25px;
197 | height:18px;
198 | outline:none;
199 | background:transparent;
200 | image:url(:/qss/icon/btn_max_normal.png);
201 | }
202 |
203 | QPushButton#titlebarmaxbtn:hover
204 | {
205 | min-width:28px;
206 | min-height:19px;
207 | width:28px;
208 | height:19px;
209 | image:url(:/qss/icon/btn_max_highlight.png);
210 | }
211 |
212 | QPushButton#titlebarmaxbtn:pressed
213 | {
214 | min-width:28px;
215 | min-height:19px;
216 | width:28px;
217 | height:19px;
218 | image:url(:/qss/icon/btn_max_down.png);
219 | }
220 |
221 | /*标题栏还原按钮*/
222 | QPushButton#titlebarrestorebtn
223 | {
224 | padding:0px;
225 | padding-bottom:3px;/*因为图表资源尺寸不对,做的微调*/
226 | border: none;
227 | min-width:25px;
228 | min-height:18px;
229 | width:25px;
230 | height:18px;
231 | outline:none;
232 | background:transparent;
233 | image:url(:/qss/icon/btn_restore_normal.png);
234 | }
235 |
236 | QPushButton#titlebarrestorebtn:hover
237 | {
238 | min-width:28px;
239 | min-height:20px;
240 | width:28px;
241 | height:20px;
242 | image:url(:/qss/icon/btn_restore_highlight.png);
243 | }
244 |
245 | QPushButton#titlebarrestorebtn:pressed
246 | {
247 | min-width:28px;
248 | min-height:20px;
249 | width:28px;
250 | height:20px;
251 | image:url(:/qss/icon/btn_restore_down.png);
252 | }
253 |
254 | /*/////////////////////////////////////////////////QPushButton///////////////////////////////////////////*/
255 | /*为QPushButton设置通用属性*/
256 | QPushButton
257 | {
258 | padding:0px 4px;/*上下padding为0px 左右未6px {1,4}为上右下左*/
259 | min-width:80;
260 | min-height:24;
261 | border: 1px solid #aaaaaa;/*边框*/
262 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
263 | outline:none;/*表示foucs状态时取消虚线框*/
264 | }
265 |
266 | QPushButton::disabled
267 | {
268 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/
269 | border: 1px solid #dddddd;/*边框*/
270 | }
271 |
272 | /*为hover状态QPushButton设置属性,注意hover伪状态设置一定要在pressed伪状态之前!!!!!!!!!!*/
273 | QPushButton:hover
274 | {
275 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/
276 | }
277 |
278 | /*为pressed状态QPushButton设置属性*/
279 | QPushButton:pressed
280 | {
281 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/
282 | }
283 |
284 | /*按钮为默认按钮时(不管焦点直接接收键盘回车输入的按钮),一般对话框ok按钮为默认按钮*/
285 | .QPushButton:default
286 | {
287 | border-width:2px;/*边框宽度*/
288 | border-style:solid;/*边框类型*/
289 | /*用渐变色可以营造光晕边框效果*/
290 | border-color:qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #64bff0, stop:1 #bae3f7)/*上边框渐变色*/
291 | qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #64bff0, stop:1 #bae3f7)/*右边框渐变色*/
292 | qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #64bff0, stop:1 #bae3f7)/*下边框渐变色*/
293 | qlineargradient(x1:1, y1:0, x2:0, y2:0, stop:0 #64bff0, stop:1 #bae3f7);/*左边框渐变色*/
294 | }
295 |
296 | /*为focus状态QPushButton设置属性,QPushButtond的子类,如QCommandLinkButton不设置该属性*/
297 | .QPushButton:focus
298 | {
299 | border-width:2px;/*边框宽度*/
300 | border-style:solid;/*边框类型*/
301 |
302 | /*用渐变色可以营造光晕边框效果*/
303 | border-color:qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #f9b158, stop:1 #ffe189)/*上边框渐变色*/
304 | qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #f9b158, stop:1 #ffe189)/*右边框渐变色*/
305 | qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f9b158, stop:1 #ffe189)/*下边框渐变色*/
306 | qlineargradient(x1:1, y1:0, x2:0, y2:0, stop:0 #f9b158, stop:1 #ffe189);/*左边框渐变色*/
307 | }
308 |
309 | /*为QCommandLinkButton设置通用属性*/
310 | QCommandLinkButton
311 | {
312 | border: none;/*边框*/
313 | background: none;
314 | }
315 |
316 | /*/////////////////////////////////////////////////QCheckBox///////////////////////////////////////////*/
317 | /*QCheckBox的公用属性设置*/
318 | QCheckBox
319 | {
320 | spacing:5px;/*指示器与文字之间的距离*/
321 | outline:none;/*表示foucs状态时取消虚线框*/
322 | }
323 |
324 | /*QCheckBox指示器subcontrol属性设置*/
325 | QCheckBox::indicator
326 | {
327 | width:15px;/*设置固定宽度,width height设置的宽高为content区宽高*/
328 | height:15px;/*设置固定高度*/
329 | }
330 |
331 | /*QCheckBox指示器选中时属性设置*/
332 | QCheckBox::indicator:checked
333 | {
334 | image:url(:/qss/icon/checkbox_p.png);/*图片*/
335 | }
336 |
337 | /*QCheckBox指示器未选中时属性设置*/
338 | QCheckBox::indicator:unchecked
339 | {
340 | image:url(:/qss/icon/checkbox.png);/*图片*/
341 | }
342 |
343 | /*QCheckBox指示器未选中时且hover时属性设置*/
344 | QCheckBox::indicator:unchecked:hover
345 | {
346 | image:url(:/qss/icon/checkbox_h.png);/*图片*/
347 |
348 | }
349 |
350 | /*/////////////////////////////////////////////////QRadioButton///////////////////////////////////////////*/
351 | /*QRadioButton公用属性设置*/
352 | QRadioButton
353 | {
354 | spacing:5px;/*指示器与文字之间的距离*/
355 | outline:none;/*表示foucs状态时取消虚线框*/
356 | }
357 |
358 | /*QRadioButton指示器选中时属性设置*/
359 | QRadioButton::indicator
360 | {
361 | width:15px;/*设置固定宽度,width height设置的宽高为content区宽高*/
362 | height:15px;/*设置固定宽度*/
363 | }
364 |
365 | /*QRadioButton指示器选中时属性设置*/
366 | QRadioButton::indicator:checked
367 | {
368 | image:url(:/qss/icon/radio_p.png);/**/
369 | }
370 |
371 | /*QRadioButton指示器未选中时属性设置*/
372 | QRadioButton::indicator:unchecked
373 | {
374 | image:url(:/qss/icon/radio.png);/**/
375 | }
376 |
377 | /*QRadioButton指示器未选中掠过时属性设置*/
378 | QRadioButton::indicator:unchecked:hover
379 | {
380 | image:url(:/qss/icon/radio_h.png);/**/
381 |
382 | }
383 |
384 | /*/////////////////////////////////////////////////QLineEdit///////////////////////////////////////////*/
385 | /*QLineEdit公用属性设置*/
386 | QLineEdit
387 | {
388 | padding:1px;
389 | padding-left:4px;
390 | border: 1px solid #aaaaaa;
391 | background: white;
392 | selection-background-color: #3399ff;
393 | }
394 |
395 |
396 | /*QLineEdit获得焦点时的属性设置,主要为光晕边框
397 | 这里带了.,所以该属性仅对QLineEdit直接类对象生效,这样做的目的在于,可编辑QTableWidget编辑item时的编辑框不带边框*/
398 | .QLineEdit:focus1
399 | {
400 | padding:0px;/*padding,这里边框为2px为了不引起content尺寸变化padding设置为0*/
401 | padding-left:3px;
402 | border-width:2px;/*边框宽度*/
403 | border-style:solid;/*边框类型*/
404 | /*用渐变色可以营造光晕边框效果*/
405 | border-color:qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #f9b158, stop:1 #ffe189)/*上边框渐变色*/
406 | qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #f9b158, stop:1 #ffe189)/*右边框渐变色*/
407 | qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f9b158, stop:1 #ffe189)/*下边框渐变色*/
408 | qlineargradient(x1:1, y1:0, x2:0, y2:0, stop:0 #f9b158, stop:1 #ffe189);/*左边框渐变色*/
409 | }
410 |
411 | QLineEdit:read-only
412 | {
413 | color: #787878;
414 | }
415 |
416 | /*/////////////////////////////////////////////////QPlainTextEdit///////////////////////////////////////////*/
417 | QPlainTextEdit
418 | {
419 | padding:0px;
420 | border: 1px solid #aaaaaa;
421 | background: white;
422 | selection-background-color: #3399ff;
423 | }
424 |
425 | QPlainTextEdit:read-only
426 | {
427 | color: #787878;
428 | }
429 |
430 | /*/////////////////////////////////////////////////QTextEdit///////////////////////////////////////////*/
431 | QTextEdit
432 | {
433 | padding:0px;
434 | border: 1px solid #aaaaaa;
435 | background: white;
436 | selection-background-color: #3399ff;
437 | }
438 |
439 |
440 | /*/////////////////////////////////////////////////QComboBox///////////////////////////////////////////*/
441 | /*QComboBox设置公用属性*/
442 | QComboBox
443 | {
444 | border: 1px solid #aaaaaa;/*边框*/
445 | padding:2px 18px 2px 3px;/*内边距,有偏移18px为drop-down按钮留出空间,所以subcontrol-origin属性须设为padding*/
446 | min-width:36px;/*最小宽度为6em em和px一样为长度单位。em表示对应字体M的宽度。M为大写字母的最大宽度*/
447 | }
448 |
449 | /*QLineEdit获得焦点时的属性设置,设置边框为光晕边框*/
450 | QComboBox:focus1
451 | {
452 | padding:1px 17px 1px 2px;/*padding,这里边框为2px为了不引起content尺寸变化padding均减1*/
453 | border-width:2px;
454 | border-style:solid;
455 | border-color:qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #64bff0, stop:1 #bae3f7)/*上边框渐变色*/
456 | qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #64bff0, stop:1 #bae3f7)/*右边框渐变色*/
457 | qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #64bff0, stop:1 #bae3f7)/*下边框渐变色*/
458 | qlineargradient(x1:1, y1:0, x2:0, y2:0, stop:0 #64bff0, stop:1 #bae3f7);/*左边框渐变色*/
459 | }
460 |
461 | /*设置drop-down按钮上的箭头图片*/
462 | QComboBox::down-arrow
463 | {
464 | image:url(:/qss/icon/downarrow.png);
465 | }
466 |
467 | /*设置drop-down按钮属性,自定义combox的重头戏。必须设置*/
468 | QComboBox::drop-down {
469 | width:15px;/*drop-down按钮宽度*/
470 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*drop-down按钮渐变背景色*/
471 | subcontrol-origin: padding;/*drop-down按钮绘制位置依据父控件设置的padding决定*/
472 | subcontrol-position: right top;/*drop-down按钮相对父控件位置*/
473 | border-left:1px solid #aaaaaa;/*drop-down左边框*/
474 | }
475 |
476 | /*设置QComboBox的:下拉时的视图属性。注意这不是设置的视图项,而是视图项主城的视图
477 | 子孙窗口部件,用空格隔开。*/
478 | QComboBox QAbstractItemView
479 | {
480 | border: 1px solid #aaaaaa;/*边框*/
481 | selection-background-color: #73c5f1;/*选中背景*/
482 | outline:none;/*去掉选中时的虚线框*/
483 | }
484 |
485 | /*/////////////////////////////////////////////////QGroupBox///////////////////////////////////////////*/
486 | /*QGroupBox公用属性设置*/
487 | QGroupBox {
488 | background: none;/*背景透明*/
489 | border: 1px solid #aaaaaa;/*边框*/
490 | border-radius: 5px;/*边框圆角*/
491 | margin-top: 2ex; /* 为title绘制留出空间,以下title子控制器的subcontrol-origin设置为margin */
492 | }
493 |
494 | /*QGroupBox title子控制器属性设置*/
495 | QGroupBox::title
496 | {
497 | color:#3399ff;/*文本颜色*/
498 | left:10px;/*子控制器相对于父控件的精确定位*/
499 | subcontrol-origin: margin;/*子控制器绘制起始区域*/
500 | subcontrol-position: top left; /*子控制器于父控件的相对位置*/
501 | padding: 0px 2px;/*title文字左右padding设置使边框线条与title文字有间隔距离*/
502 | background: none;/*背景透明*/
503 | }
504 |
505 | /*/////////////////////////////////////////////////QProgressBar///////////////////////////////////////////*/
506 | /*QProgressBar公用属性设置*/
507 | QProgressBar
508 | {
509 | border: 1px solid #aaaaaa;/*边框*/
510 | background: white;/*qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eeeeee, stop:1 #ffffff);渐变背景*/
511 | border-radius: 4px;/*边框圆角*/
512 | text-align:center;/*文本对齐*/
513 | }
514 |
515 | /*chunk子控制器,指进度条内一块块依次向右的进度小块*/
516 | QProgressBar::chunk
517 | {
518 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #73c5f1, stop:0.6 #bde4f8, stop:1 #73c5f1); /*进度小块背景*/
519 | width: 6px;/*进度小块宽度*/
520 | margin: 0.5px;/*进度小块margin设置为0.5px以上可以隔开进度小块。隔开距离为2*margin 。设置为0.5以下进度小块连在一起*/
521 | }
522 |
523 | /*/////////////////////////////////////////////////QSlider///////////////////////////////////////////*/
524 | /*QSlider水平凹槽属性设置,未设置背景因为它反正会被add-page subControl覆盖*/
525 | QSlider::groove:horizontal
526 | {
527 | border: 1px solid #aaaaaa;/*边框*/
528 | height: 6px; /*水平凹槽高度*/
529 | }
530 |
531 | /*QSlider水平滑块属性设置*/
532 | QSlider::handle:horizontal
533 | {
534 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:1 #666666, stop:0.5 #dddddd);/*渐变背景*/
535 | border: 1px solid #5c5c5c;/*边框*/
536 | width: 6px;/*滑块宽度*/
537 | margin: -6px 0;/*通过设置margin上下margin为-6px,使得滑块高度比凹槽高度高12px。*/
538 | border-radius: 4px;/*圆角边框*/
539 | }
540 |
541 | /*通过add-page subControl设置未划过部分的背景*/
542 | QSlider::add-page:horizontal
543 | {
544 | border: 1px solid #aaaaaa;
545 | background: white;/*qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eeeeee, stop:1 #ffffff);*/
546 | }
547 |
548 | /*通过sub-page subControl设置划过部分的背景*/
549 | QSlider::sub-page:horizontal
550 | {
551 | border: 1px solid #aaaaaa;
552 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #73c5f1, stop:0.6 #bde4f8, stop:1 #73c5f1);
553 | }
554 |
555 | /*垂直滑动条:大同小异*/
556 | QSlider::groove:vertical
557 | {
558 | border: 1px solid #aaaaaa;
559 | width: 6px;
560 | }
561 |
562 | QSlider::handle:vertical
563 | {
564 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:1 #666666, stop:0.4 #dddddd);/*渐变背景*/
565 | border: 1px solid #5c5c5c;
566 | height: 6px;
567 | margin: 0px -6px;
568 | border-radius: 4px;
569 | }
570 |
571 | QSlider::add-page:vertical
572 | {
573 | border: 1px solid #aaaaaa;
574 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #73c5f1, stop:0.6 #bde4f8, stop:1 #73c5f1);
575 | }
576 |
577 | QSlider::sub-page:vertical
578 | {
579 | border: 1px solid #aaaaaa;
580 | background: white;/*qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #eeeeee, stop:1 #ffffff);*/
581 | }
582 |
583 |
584 | /*/////////////////////////////////////////////////QScrollBar///////////////////////////////////////////*/
585 | /*水平滚动条公用属性设置*/
586 | QScrollBar:horizontal
587 | {
588 | border-top: 1px solid #aaaaaa;/*边框*/
589 | /*background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);渐变背景,也是滑轨背景*/
590 | background:white;
591 | height: 16px;/*水平滚动条高度*/
592 | margin: 0px 16px 0 16px;/*水平滚动条margin,左右留出空间给add-line按钮和sub-line按钮*/
593 | }
594 |
595 | /*水平滚动条滑块公用属性设置*/
596 | QScrollBar::handle:horizontal
597 | {
598 | /*background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #73c5f1, stop:0.6 #bde4f8, stop:1 #73c5f1);背景*/
599 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
600 | min-width: 20px;/*最小宽度,滑块宽度自动调整但须设置一个最小宽度*/
601 | border-radius: 0px;/**/
602 | border-left:1px solid #aaaaaa;
603 | border-right:1px solid #aaaaaa;
604 | }
605 |
606 | /*水平滚动条滑块被掠过时*/
607 | QScrollBar::handle:horizontal:hover
608 | {
609 | /*background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #90d9fe, stop:0.6 #e2f3fc, stop:1 #90d9fe);渐变背景*/
610 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0.2 #eeeeee, stop:1 #ffffff);/*渐变背景色*/
611 | }
612 |
613 | /*水平滚动条滑块被按压时*/
614 | QScrollBar::handle:horizontal:pressed
615 | {
616 | /*background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #60c8fd, stop:0.6 #bde4f8, stop:1 #60c8fd);渐变背景*/
617 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
618 | }
619 |
620 | /*水平滚动条sub-line(增加一行)按钮*/
621 | QScrollBar::add-line:horizontal
622 | {
623 | border-top: 1px solid #aaaaaa;/*边框*/
624 | border-left: 1px solid #aaaaaa;/*边框*/
625 | border-right: 1px solid #aaaaaa;/*边框*/
626 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景*/
627 | width: 16px;/*宽度,跟父控件margin匹配*/
628 | subcontrol-position: right;/*sub-line按钮相对于父控件位置设置*/
629 | subcontrol-origin: margin;/*sub-line按钮绘制空间,之前父控件设置了margin为sub-line留出了控件*/
630 | }
631 |
632 | /*水平滚动条add-line(增加一行)按钮被掠过时*/
633 | QScrollBar::add-line:horizontal:hover
634 | {
635 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0.4 #ffffff, stop:1 #eeeeee);/*渐变背景*/
636 | }
637 |
638 | /*水平滚动条add-line(增加一行)按钮被按压时*/
639 | QScrollBar::add-line:horizontal:pressed
640 | {
641 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.4 #eeeeee);/*渐变背景*/
642 | }
643 |
644 | /*水平滚动条sub-line(减少一行)按钮*/
645 | QScrollBar::sub-line:horizontal
646 | {
647 | border-top: 1px solid #aaaaaa;/*边框*/
648 | border-right: 1px solid #aaaaaa;/*边框*/
649 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景*/
650 | width: 16px;/*宽度,跟父控件margin匹配*/
651 | subcontrol-position: left;/*sub-line按钮相对于父控件位置设置*/
652 | subcontrol-origin: margin;/*sub-line按钮绘制空间,之前父控件设置了margin为sub-line留出了控件*/
653 | }
654 |
655 | /*水平滚动条sub-line(减少一行)按钮hover时*/
656 | QScrollBar::sub-line:horizontal:hover
657 | {
658 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0.4 #ffffff, stop:1 #eeeeee);/*渐变背景*/
659 | }
660 |
661 | /*水平滚动条sub-line(减少一行)按钮被按压时*/
662 | QScrollBar::sub-line:horizontal:pressed
663 | {
664 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.4 #eeeeee);/*渐变背景*/
665 | }
666 |
667 | /*水平滚动条左箭头设置图像(在add-line中居中显示)*/
668 | QScrollBar:left-arrow:horizontal
669 | {
670 | image:url(:/qss/icon/hor_scroll_left_arrow.png);/*箭头图像*/
671 | }
672 |
673 | /*水平滚动条右箭头设置图像(在sub-line中居中显示)*/
674 | QScrollBar::right-arrow:horizontal
675 | {
676 | image:url(:/qss/icon/hor_scroll_right_arrow.png);/*箭头图像*/
677 | }
678 |
679 | /*水平滚动条add-page,sub-page指单击滑轨时滚动一页。可以为add-page,sub-page设置hover,pressed的背景 */
680 | QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal
681 | {
682 | background: none;/*不设置add-page,sub-page背景*/
683 | }
684 |
685 |
686 | /*垂直滚动条,大同小异*/
687 | QScrollBar:vertical
688 | {
689 | border-left: 1px solid #aaaaaa;
690 | /*background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #eeeeee, stop:0.8 #ffffff);*/
691 | background:white;
692 | width: 16px;
693 | margin: 16px 0px 16px 0px;
694 | }
695 |
696 | QScrollBar::handle:vertical
697 | {
698 | /*background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #73c5f1, stop:0.6 #bde4f8, stop:1 #73c5f1);渐变背景色*/
699 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
700 | min-height: 20px;
701 | border-radius: 0px;
702 | border-top:1px solid #aaaaaa;
703 | border-bottom:1px solid #aaaaaa;
704 | }
705 |
706 | QScrollBar::handle:vertical:hover
707 | {
708 | /*background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #90d9fe, stop:0.6 #e2f3fc, stop:1 #90d9fe);渐变背景*/
709 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0.2 #eeeeee, stop:1 #ffffff);/*渐变背景色*/
710 | }
711 |
712 | QScrollBar::handle:vertical:pressed
713 | {
714 | /*background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #60c8fd, stop:0.6 #bde4f8, stop:1 #60c8fd);渐变背景色*/
715 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
716 | }
717 |
718 | QScrollBar::add-line:vertical
719 | {
720 | border-left: 1px solid #aaaaaa;
721 | border-top: 1px solid #aaaaaa;
722 | border-bottom: 1px solid #aaaaaa;
723 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);
724 | height: 16px;
725 | subcontrol-position: bottom;
726 | subcontrol-origin: margin;
727 | }
728 |
729 | QScrollBar::add-line:vertical:hover
730 | {
731 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0.4 #ffffff, stop:1 #eeeeee);
732 | }
733 |
734 | QScrollBar::add-line:vertical:pressed
735 | {
736 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #ffffff, stop:0.4 #eeeeee);
737 | }
738 |
739 | QScrollBar::sub-line:vertical
740 | {
741 | border-left: 1px solid #aaaaaa;
742 | border-bottom: 1px solid #aaaaaa;
743 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);
744 | height: 16px;
745 | subcontrol-position: top;
746 | subcontrol-origin: margin;
747 | }
748 |
749 | QScrollBar::sub-line:vertical:hover
750 | {
751 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0.4 #ffffff, stop:1 #eeeeee);
752 | }
753 |
754 | QScrollBar::sub-line:vertical:pressed
755 | {
756 | background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #ffffff, stop:0.4 #eeeeee);
757 | }
758 |
759 | QScrollBar::down-arrow:vertical
760 | {
761 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png);
762 | }
763 |
764 | QScrollBar::up-arrow:vertical
765 | {
766 | image:url(:/qss/icon/ver_scroll_top_arrow.png);
767 | }
768 |
769 | QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical
770 | {
771 | background: none;
772 | }
773 |
774 | /*
775 | 一种更为简洁的滚动条
776 | QScrollBar:horizontal
777 | {
778 | background: #f2f2f2;
779 | height: 12px;
780 | }
781 |
782 | QScrollBar::handle:horizontal
783 | {
784 | background: #dddddd;
785 | min-width: 20px;
786 | border-radius: 6px;
787 | }
788 |
789 | QScrollBar::handle:horizontal:hover
790 | {
791 | background: #d0d0d0;
792 | }
793 |
794 | QScrollBar::handle:horizontal:pressed
795 | {
796 | background: #d0d0d0;
797 | }
798 |
799 | QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal
800 | {
801 | background: none;
802 | }
803 | QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal
804 | {
805 | background: none;
806 | }
807 |
808 |
809 | QScrollBar:vertical
810 | {
811 | background: #f2f2f2;
812 | width: 12px;
813 | }
814 |
815 | QScrollBar::handle:vertical
816 | {
817 | background: #dddddd;
818 | min-height: 20px;
819 | border-radius: 6px;
820 | }
821 |
822 | QScrollBar::handle:vertical:hover
823 | {
824 | background: #d0d0d0;
825 | }
826 |
827 | QScrollBar::handle:vertical:pressed
828 | {
829 | background: #d0d0d0;
830 | }
831 |
832 | QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical
833 | {
834 | background: none;
835 | }
836 | QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical
837 | {
838 | background: none;
839 | }
840 |
841 | */
842 |
843 | /*/////////////////////////////////////////////////QTabWidget///////////////////////////////////////////*/
844 | /*QTabWidget由子控制器pane和tab-bar组成。pane为tab页所在区域,tab-bar为tab标签栏所在区域*/
845 | /*QTabWidget pane子控制器属性设置*/
846 | QTabWidget::pane
847 | {
848 | border: 0px solid #aaaaaa; /*tab有边框pane就不要边框了*/
849 | margin-top:-1px;/*设置margin-top为-1是为了让tab-bar遮掉pane的上边框*/
850 | }
851 |
852 | /*QTabWidget tab-bar子控制器属性设置*/
853 | QTabWidget::tab-bar
854 | {
855 | left: 3px; /*left表示子控制器距父控件左边的距离定位*/
856 | }
857 |
858 | /*tab-bar子控制器(tab标签栏)又由tab标签组成,子控制器tab表示tab标签*/
859 | QTabBar::tab
860 | {
861 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #dddddd);/*渐变背景色*/
862 | border-left: 1px solid #aaaaaa;/*边框,不设置标签底部边框*/
863 | border-right: 1px solid #aaaaaa;/**/
864 | border-top: 1px solid #aaaaaa;/**/
865 | border-top-left-radius: 6px;/**/
866 | border-top-right-radius: 6px;/**/
867 | min-width: 18ex;/**/
868 | padding: 4px;/**/
869 | }
870 |
871 | /*tab标签被选中或掠过时*/
872 | QTabBar::tab:selected, QTabBar::tab:hover
873 | {
874 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
875 | }
876 |
877 | /*tab标签被选中时*/
878 | QTabBar::tab:selected
879 | {
880 | border-bottom: 3px solid #73c5f1;/*设置底部边框*/
881 | margin-left: -4px;/*设置margin-top为-4px是为了扩大选中标签宽度,使得选中标签宽度大于未选中标签*/
882 | margin-right: -4px;/**/
883 | }
884 |
885 | /*tab标签未被选中时*/
886 | QTabBar::tab:!selected
887 | {
888 | border-bottom: 1px solid #aaaaaa;/*设置底部边框*/
889 | margin-top: 2px;/*设置margin-top为了压缩标签大小,使得未选中标签高度小于选中标签*/
890 | }
891 |
892 | /*第一个tab标签被选中时*/
893 | QTabBar::tab:first:selected
894 | {
895 | margin-left: 0px; /*左边不扩大宽度*/
896 | }
897 |
898 | /*最后一个tab标签被选中时*/
899 | QTabBar::tab:last:selected
900 | {
901 | margin-right: 0px;/*右边不扩大宽度*/
902 | }
903 |
904 | /*只有一个tab标签时*/
905 | QTabBar::tab:only-one
906 | {
907 | margin: 0px;/*不使用margin对标签大小作改变*/
908 | }
909 |
910 | /*QTabBar上标签过多时出现的左右箭头QToolButton按钮属性设置*/
911 | QTabBar QToolButton
912 | {
913 | border-radius: 6px;
914 | }
915 |
916 | /*QTabBar上标签过多时出现的左右箭头按钮箭头图片*/
917 | QTabBar QToolButton::right-arrow
918 | {
919 | image:url(:/qss/icon/hor_scroll_right_arrow.png);/*箭头图像*/
920 | }
921 |
922 | /*QTabBar上标签过多时出现的左右箭头按钮箭头图片*/
923 | QTabBar QToolButton::left-arrow
924 | {
925 | image:url(:/qss/icon/hor_scroll_left_arrow.png);/*箭头图像*/
926 | }
927 |
928 |
929 | /*/////////////////////////////////////////////////QCalendarWidget日历控件///////////////////////////////////////////*/
930 | QCalendarWidget QToolButton
931 | {
932 | color:Black;
933 | }
934 |
935 | /*QCalendarWidget上左右箭头按钮箭头图片*/
936 | QCalendarWidget QToolButton::right-arrow
937 | {
938 | image:url(:/qss/icon/hor_scroll_right_arrow.png);/*箭头图像*/
939 | }
940 |
941 | /*QCalendarWidget上左右箭头按钮箭头图片*/
942 | QCalendarWidget QToolButton::left-arrow
943 | {
944 | image:url(:/qss/icon/hor_scroll_left_arrow.png);/*箭头图像*/
945 | }
946 |
947 | /*/////////////////////////////////////////////////QListView/QListWidget///////////////////////////////////////////*/
948 | /*QListView公用属性设置*/
949 | QListView
950 | {
951 | border:1px solid #aaaaaa;/*边框*/
952 | selection-background-color: #73c5f1;/*选中背景*/
953 | alternate-background-color:#e9e9e9;/*交替行背景色,代码中设置了交替行背景设有效时生效*/
954 | outline:none;/*去掉选中时的虚线框*/
955 | }
956 |
957 | QListView::item
958 | {
959 | min-height:24px;/*调整项高度*/
960 | margin-left:40px;
961 | }
962 |
963 | /*/////////////////////////////////////////////////QTableView/QTableWidget///////////////////////////////////////////*/
964 | /*QTableView公用属性设置*/
965 | QTableView
966 | {
967 | border:1px solid #aaaaaa;/*边框*/
968 | background:#ffffff;/*背景*/
969 | selection-background-color: #73c5f1;/*选中背景*/
970 | alternate-background-color:#e9e9e9;/*交替行背景色,代码中设置了交替行背景设有效时生效*/
971 | }
972 |
973 | /*QTableView的CornerButton区域设置*/
974 | QTableView QTableCornerButton::section
975 | {
976 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
977 | border: 1px outset #aaaaaa;/*边框 outset类型边框指右底边框比左上边框颜色深,可参见w3c border-style属性*/
978 | }
979 |
980 | /*QTableView表头设置,设置表头所有位置的背景,而不是仅仅为section部分,包括垂直和水平表头*/
981 | QTableView QHeaderView
982 | {
983 | background: #eeeeee;/*QHeaderView背景色*/
984 | }
985 |
986 | /*QTableView表头section部分设置,包括垂直和水平表头*/
987 | QTableView QHeaderView::section
988 | {
989 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
990 | border: 1px outset #aaaaaa;/**/
991 | padding:4px;/*调整表头高度*/
992 | }
993 |
994 | QTableView::item
995 | {
996 | min-height:24px;/*调整项高度*/
997 | }
998 |
999 | /*/////////////////////////////////////////////////QTreeView/QTreeWidget///////////////////////////////////////////*/
1000 | /*QTreeView公用属性设置*/
1001 | QTreeView
1002 | {
1003 | border:1px solid #aaaaaa;/*边框*/
1004 | show-decoration-selected: 1;
1005 | background:#ffffff;/*背景*/
1006 | selection-background-color: #73c5f1;/*选中背景*/
1007 | alternate-background-color:#e9e9e9;/*交替行背景色,代码中设置了交替行背景设有效时生效*/
1008 | }
1009 |
1010 | /*QTreeView表头设置,设置表头所有位置的背景,而不是仅仅为section部分,包括垂直和水平表头*/
1011 | QTreeView QHeaderView
1012 | {
1013 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
1014 | }
1015 |
1016 | /*QTreeView表头section部分设置,包括垂直和水平表头*/
1017 | QTreeView QHeaderView::section
1018 | {
1019 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
1020 | border: 1px outset #aaaaaa;/**/
1021 | padding:4px;/*调整表头高度*/
1022 | }
1023 |
1024 | /*QTreeView item子控制器属性设置*/
1025 | QTreeView::item
1026 | {
1027 | min-height:30px;/*调整项高度*/
1028 | }
1029 |
1030 | /*QTreeView item子控制器掠过时属性设置*/
1031 | QTreeView::item:hover
1032 | {
1033 | background: #c5e7f9;
1034 | }
1035 |
1036 | /*QTreeView item子控制器选中时属性设置*/
1037 | QTreeView::item:selected
1038 | {
1039 | border: 0px solid #aaaaaa;
1040 | }
1041 |
1042 | /*QTreeView item子控制器选中且有焦点(此时字体颜色为白)时属性设置*/
1043 | QTreeView::item:selected:active
1044 | {
1045 | background: #73c5f1;
1046 | }
1047 |
1048 | /*QTreeView item子控制器选中且无焦点(此时字体颜色为黑)时属性设置*/
1049 | QTreeView::item:selected:!active
1050 | {
1051 | background: #73c5f1;
1052 | }
1053 |
1054 | /*branch没有合适的素材,暂时先不定制
1055 | QTreeView::branch {
1056 | background: palette(base);
1057 | }
1058 |
1059 | QTreeView::branch:has-siblings:!adjoins-item {
1060 | background: cyan;
1061 | }
1062 |
1063 | QTreeView::branch:has-siblings:adjoins-item {
1064 | background: red;
1065 | }
1066 |
1067 | QTreeView::branch:!has-children:!has-siblings:adjoins-item {
1068 | background: blue;
1069 | }
1070 |
1071 | QTreeView::branch:closed:has-children:has-siblings {
1072 | background: pink;
1073 | }
1074 |
1075 | QTreeView::branch:has-children:!has-siblings:closed {
1076 | background: gray;
1077 | }
1078 |
1079 | QTreeView::branch:open:has-children:has-siblings {
1080 | background: magenta;
1081 | }
1082 |
1083 | QTreeView::branch:open:has-children:!has-siblings {
1084 | background: green;
1085 | }
1086 |
1087 | QTreeView::branch:has-siblings:!adjoins-item {
1088 | border-image: url(vline.png) 0;
1089 | }
1090 |
1091 | QTreeView::branch:has-siblings:adjoins-item {
1092 | border-image: url(branch-more.png) 0;
1093 | }
1094 |
1095 | QTreeView::branch:!has-children:!has-siblings:adjoins-item {
1096 | border-image: url(branch-end.png) 0;
1097 | }
1098 |
1099 | QTreeView::branch:has-children:!has-siblings:closed,
1100 | QTreeView::branch:closed:has-children:has-siblings {
1101 | border-image: none;
1102 | image: url(branch-closed.png);
1103 | }
1104 |
1105 | QTreeView::branch:open:has-children:!has-siblings,
1106 | QTreeView::branch:open:has-children:has-siblings {
1107 | border-image: none;
1108 | image: url(branch-open.png);
1109 | }
1110 | */
1111 |
1112 | /*/////////////////////////////////////////////////QMenuBar///////////////////////////////////////////*/
1113 | /*菜单栏公用属性设置*/
1114 | QMenuBar
1115 | {
1116 | border-bottom:1px solid #aaaaaa;
1117 | /*background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0.2 #dddddd, stop:1 #ffffff);渐变背景色*/
1118 | background:#f2f2f2;
1119 | }
1120 |
1121 | /*菜单栏item子控制器(菜单项)属性设置*/
1122 | QMenuBar::item
1123 | {
1124 | spacing: 3px; /* 设置菜单项之间空隙*/
1125 | padding: 2px 10px;/*通过padding设置菜单项之间空隙和菜单栏高度*/
1126 | background: transparent;/* 菜单项目本身背景透明*/
1127 | border-radius: 1px;/*菜单项的圆角边框 */
1128 | }
1129 |
1130 | /* 菜单栏item子控制器(菜单项)被选中时(菜单中的被选中即为被掠过,此时不弹出菜单项目列表) */
1131 | QMenuBar::item:selected
1132 | {
1133 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #cccccc);/*渐变背景色*/
1134 | }
1135 |
1136 | /* 菜单栏item子控制器(菜单项)被按压时(此时弹出菜单项目列表) */
1137 | QMenuBar::item:pressed
1138 | {
1139 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #dddddd, stop:0.8 #bbbbbb);/*渐变背景色*/
1140 | }
1141 |
1142 |
1143 | /*/////////////////////////////////////////////////QMenu///////////////////////////////////////////*/
1144 | /*菜单项目列表(就是那个下拉列表)属性设置*/
1145 | QMenu
1146 | {
1147 | background-color: white; /* 背景色 */
1148 | border: 1px solid #aaaaaa;/* 边框 */
1149 | }
1150 |
1151 | /*菜单项目列表item子控制器(菜单项目列表中菜单项目,注意item子控制器不包括图表和指示器,所以该子控制器影响的只有)属性设置*/
1152 | QMenu::item
1153 | {
1154 | background-color: transparent;/*背景色透明*/
1155 | padding:4px 26px 4px 26px;/*通过菜单项目padding属性调整菜单项目中文字位置*/
1156 | }
1157 |
1158 | /*菜单项目列表item子控制器被选中(菜单中的被选中即为被掠过)时属性设置*/
1159 | QMenu::item:selected
1160 | {
1161 | background-color: #73c5f1;/*设置背景色*/
1162 | }
1163 |
1164 | /*菜单项目列表separator子控制器属性设置,即对菜单项目列表中的分隔条设置*/
1165 | QMenu::separator
1166 | {
1167 | height: 1px;
1168 | background: #AAAAAA;
1169 | margin-left: 25px;/*左右留空*/
1170 | margin-right: 5px;
1171 | }
1172 |
1173 | /*菜单项目列表right-arrow子控制器属性设置,即对菜单项目列表中的二级菜单的箭头设置*/
1174 | QMenu::right-arrow
1175 | {
1176 | right:5px;/*调整箭头位置*/
1177 | image:url(:/qss/icon/hor_scroll_right_arrow.png);/*箭头图像*/
1178 | }
1179 |
1180 | /*菜单项目列表icon子控制器属性设置,即对菜单项目中图标的设置,但好像很多属性都不起作用如边框、背景、大小等,何解?*/
1181 | QMenu::icon
1182 | {
1183 | position:relative;/*position指示:调整subcontrol位置的属性top left bottom right设置距离为相对subcontrol自身(relative)还是相对父控件(absolut)。默认为relative*/
1184 | left: 5px;/*调整图表位置*/
1185 | }
1186 |
1187 |
1188 | /*菜单项目列表indicator子控制器属性设置,即对菜单项目中指示器(包括checkable menu item前面的复选框、
1189 | exclusive checkable menu item前面的那个单选框)的设置,但好像很多属性都不起作用如边框、背景、大小等,何解?*/
1190 | QMenu::indicator
1191 | {
1192 | position:relative;/*position指示:调整subcontrol位置的属性top left bottom right设置距离为相对subcontrol自身(relative)还是相对父控件(absolut)。默认为relative*/
1193 | left: 5px;/*调整指示器位置*/
1194 | }
1195 |
1196 | /*菜单项目非排他指示器即复选框为选中时的属性设置*/
1197 | QMenu::indicator:non-exclusive:unchecked
1198 | {
1199 | image: url(:/qss/icon/checkbox.png);
1200 | }
1201 |
1202 | /*菜单项目非排他指示器即复选框为选中被掠过时的属性设置*/
1203 | QMenu::indicator:non-exclusive:unchecked:selected
1204 | {
1205 | image: url(:/qss/icon/checkbox_h.png);
1206 | }
1207 |
1208 | /*菜单项目非排他指示器即复选框为选中时的属性设置*/
1209 | QMenu::indicator:non-exclusive:checked
1210 | {
1211 | image: url(:/qss/icon/checkbox_p.png);
1212 | }
1213 |
1214 | /*菜单项目非排他指示器即复选框为选中被掠过时的属性设置*/
1215 | QMenu::indicator:non-exclusive:checked:selected
1216 | {
1217 | image: url(:/qss/icon/checkbox_p.png);
1218 | }
1219 |
1220 |
1221 | /* 菜单项目排他指示器属性设置,大同小异 */
1222 | QMenu::indicator:exclusive:unchecked
1223 | {
1224 | image: url(:/qss/icon/radio.png);
1225 | }
1226 |
1227 | QMenu::indicator:exclusive:unchecked:selected
1228 | {
1229 | image: url(:/qss/icon/radio_h.png);
1230 | }
1231 |
1232 | QMenu::indicator:exclusive:checked
1233 | {
1234 | image: url(:/qss/icon/radio_p.png);
1235 | }
1236 |
1237 | QMenu::indicator:exclusive:checked:selected
1238 | {
1239 | image: url(:/qss/icon/radio_p.png);
1240 | }
1241 |
1242 |
1243 | /*/////////////////////////////////////////////////QToolButton///////////////////////////////////////////*/
1244 | /*QToolButton:工具栏上按钮或单独的工具按钮(单独工具按钮可弹出popupmenu)*/
1245 | /**/
1246 | /*QToolButton公用属性设置*/
1247 | QToolButton
1248 | {
1249 | min-height:20px;/*最小宽度*/
1250 | border: 1px solid #aaaaaa;/*边框*/
1251 | border-radius: 4px;/*QToolButton与QPushButton基本一致,但这里设置的边框圆角不一致*/
1252 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
1253 | outline:none;/*表示foucs状态时取消虚线框*/
1254 | }
1255 |
1256 | /*QToolButton类型为DelayPopup时为menu-indicator子控制器留出空间
1257 | DelayPopup表示持续按压按钮可弹出菜单*/
1258 | QToolButton[popupMode="0"]
1259 | {
1260 | padding-right: 4px; /*用padding留出空间,初始subcontrol-origin属性要为padding*/
1261 | }
1262 |
1263 | /*QToolButton类型为MenuButtonPopup时为menu-button子控制器留出空间
1264 | MenuButtonPopup表示点击menu-button子控制器可弹出菜单*/
1265 | QToolButton[popupMode="1"]
1266 | {
1267 | padding-right: 18px; /*用padding留出空间,初始subcontrol-origin属性要为padding*/
1268 | }
1269 |
1270 | /*QToolButton类型为InstantPopup时为menu-indicator子控制器留出空间
1271 | MenuButtonPopup表示点击QToolButton即可立即弹出菜单,Instant表示立即意思*/
1272 | QToolButton[popupMode="2"]
1273 | {
1274 | padding-right: 4px;/*用padding留出空间,初始subcontrol-origin属性要为padding*/
1275 | }
1276 |
1277 | /*QToolButton pressed伪状态时属性设置,注意hover伪状态设置一定要在pressed伪状态之前!!!!!!!!!!*/
1278 | QToolButton:hover
1279 | {
1280 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/
1281 | }
1282 |
1283 | /*QToolButton pressed伪状态时属性设置,注意hover伪状态设置一定要在pressed伪状态之前!!!!!!!!!!*/
1284 | QToolButton:pressed
1285 | {
1286 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/
1287 | }
1288 |
1289 | /*QToolButton menu-button子控制器属性设置
1290 | menu-button子控制器仅对MenuButtonPopup类型QToolButton生效*/
1291 | QToolButton::menu-button
1292 | {
1293 | border-left: 1px solid #aaaaaa;/*设置左边边框即可*/
1294 | border-top-right-radius: 4px;/*设置右上边框圆角,与QToolButton自身圆角保持一致*/
1295 | border-bottom-right-radius: 4px;/*设置右小边框圆角,与QToolButton自身圆角保持一致*/
1296 | width: 16px;/*设置menu-button宽度,注意与QToolButton的padding-right属性值匹配*/
1297 | }
1298 |
1299 | /*QToolButton menu-arrow子控制器属性设置
1300 | menu-arrow子控制器仅对MenuButtonPopup类型QToolButton生效,它为menu-button箭头*/
1301 | QToolButton::menu-arrow
1302 | {
1303 | position:relative;/*position指示:调整subcontrol位置的属性top left bottom right设置距离为相对subcontrol自身(relative)还是相对父控件(absolut)。默认为relative*/
1304 | top: 1px; /*顶部相对偏移1px,调整menu-arrow相对父控件位置*/
1305 | right: 1px; /*右边相对偏移1px,调整menu-arrow相对父控件位置*/
1306 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png);/*箭头图片*/
1307 | }
1308 |
1309 | /*QToolButton menu-arrow子控制器在菜单展开式的属性设置
1310 | menu-arrow子控制器仅对MenuButtonPopup类型QToolButton生效,它为menu-button箭头*/
1311 | QToolButton::menu-arrow:open
1312 | {
1313 | top: 2px; /*顶部偏移1px,让箭头有下沉效果*/
1314 | }
1315 |
1316 | /*QToolButton menu-indicator子控制器属性设置
1317 | menu-indicator子控制器仅对MenuButtonPopup和InstantPopup类型QToolButton生效,它表示按钮拥有菜单的指示*/
1318 | QToolButton::menu-indicator
1319 | {
1320 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png);/*箭头图片*/
1321 | width:7px;/*menu-indicator宽度*/
1322 | height:7px;/*menu-indicator高度*/
1323 | padding:0px 2px;/*调整menu-indicator位置*/
1324 | }
1325 |
1326 | /*/////////////////////////////////////////////////QToolBar///////////////////////////////////////////*/
1327 | /*QToolBar公用属性设置*/
1328 | QToolBar
1329 | {
1330 | spacing:2px;/*调整工具栏按钮间距离*/
1331 | background:#f2f2f2;/*设置背景色与主窗口背景一致,这样在拖动时就不会露出原来背景色*/
1332 | }
1333 |
1334 | /*QToolBar handle子控制器(就是那个工具栏拖动按钮)属性设置 */
1335 | QToolBar::handle
1336 | {
1337 | /*保存默认即可*/
1338 | }
1339 |
1340 | /*QToolBar separator子控制器(就是工具栏之间风格条)属性设置 */
1341 | QToolBar::separator
1342 | {
1343 | /*保存默认即可*/
1344 | }
1345 |
1346 | /*由于QToolButton的属性对QToolBar上button属性的影响不知道怎么分离,
1347 | 所以QToolBar上按钮效果要完全自己定制,其实qt本身实现的XP系统上玻璃覆盖效果不错*/
1348 | /*QToolBar上按钮属性设置*/
1349 | QToolBar QToolButton
1350 | {
1351 | margin-bottom:2px;/*调整按钮大小,防止QToolButton hover时遮住QToolBar自身边框*/
1352 | border: none;/*去掉边框*/
1353 | background:transparent;/*设置normal状态下背景色为透明色*/
1354 | border-radius: 4px;/*边框圆角*/
1355 | }
1356 |
1357 | /*/////////////////////////////////////////////////QToolTip///////////////////////////////////////////*/
1358 | /*QToolTip(提示条)公用属性设置*/
1359 | QToolTip
1360 | {
1361 | /*background:#f4f4f4;*/
1362 | border: 1px solid #aaaaaa;/*边框*/
1363 | padding: 1px;/*调整大小*/
1364 | border-radius: 0px;/*边框圆角*/
1365 | background:#fafafa;
1366 | opacity: 240;/*不透明度,255时不透明*/
1367 | }
1368 |
1369 | /*/////////////////////////////////////////////////QSpinBox///////////////////////////////////////////*/
1370 | QSpinBox
1371 | {
1372 | min-height:20px;
1373 | padding-right: 15px;
1374 | border: 1px solid #aaaaaa;/*边框*/
1375 | min-width:1em;/*最小宽度为6em em和px一样为长度单位。em表示对应字体M的宽度。M为大写字母的最大宽度*/
1376 | background:white;
1377 | }
1378 |
1379 | QSpinBox::up-button
1380 | {
1381 | subcontrol-origin: padding;
1382 | subcontrol-position: top right;
1383 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
1384 | width: 15px;
1385 | border-left: 1px solid #aaaaaa;
1386 | border-bottom: 0px solid #aaaaaa;
1387 | }
1388 |
1389 | QSpinBox::up-button:hover
1390 | {
1391 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/
1392 | }
1393 |
1394 | QSpinBox::up-button:pressed
1395 | {
1396 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/
1397 | }
1398 |
1399 | QSpinBox::up-arrow
1400 | {
1401 | image:url(:/qss/icon/ver_scroll_top_arrow.png);
1402 | width: 9px;
1403 | height: 9px;
1404 | }
1405 |
1406 | QSpinBox::up-arrow:disabled, QSpinBox::up-arrow:off
1407 | {
1408 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/
1409 | border: 0px solid #dddddd;/*边框*/
1410 | }
1411 |
1412 | QSpinBox::down-button
1413 | {
1414 | subcontrol-origin: padding;
1415 | subcontrol-position: bottom right;
1416 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
1417 | width: 15px;
1418 | border-left: 1px solid #aaaaaa;
1419 | border-top: 0px solid #aaaaaa;
1420 | }
1421 |
1422 | QSpinBox::down-button:hover
1423 | {
1424 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/
1425 | }
1426 |
1427 | QSpinBox::down-button:pressed
1428 | {
1429 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/
1430 | }
1431 |
1432 | QSpinBox::down-arrow
1433 | {
1434 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png);
1435 | width: 9px;
1436 | height: 9px;
1437 | }
1438 |
1439 | QSpinBox::down-arrow:disabled,
1440 | QSpinBox::down-arrow:off
1441 | {
1442 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/
1443 | border: 0px solid #dddddd;/*边框*/
1444 | }
1445 |
1446 |
1447 | /*/////////////////////////////////////////////////QDoubleSpinBox///////////////////////////////////////////*/
1448 | QDoubleSpinBox
1449 | {
1450 | min-height:20px;
1451 | padding-right: 15px;
1452 | border: 1px solid #aaaaaa;/*边框*/
1453 | min-width:4em;/*最小宽度为6em em和px一样为长度单位。em表示对应字体M的宽度。M为大写字母的最大宽度*/
1454 | }
1455 |
1456 | QDoubleSpinBox::up-button
1457 | {
1458 | subcontrol-origin: padding;
1459 | subcontrol-position: top right; /* position at the top right corner */
1460 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
1461 | width: 15px;
1462 | border-left: 1px solid #aaaaaa;
1463 | border-bottom: 0px solid #aaaaaa;
1464 | }
1465 |
1466 | QDoubleSpinBox::up-button:hover
1467 | {
1468 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/
1469 | }
1470 |
1471 | QDoubleSpinBox::up-button:pressed
1472 | {
1473 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/
1474 | }
1475 |
1476 | QDoubleSpinBox::up-arrow
1477 | {
1478 | image:url(:/qss/icon/ver_scroll_top_arrow.png);
1479 | width: 9px;
1480 | height: 9px;
1481 | }
1482 |
1483 | QDoubleSpinBox::up-arrow:disabled,
1484 | QSpinBox::up-arrow:off
1485 | {
1486 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/
1487 | border: 1px solid #dddddd;/*边框*/
1488 | }
1489 |
1490 | QDoubleSpinBox::down-button
1491 | {
1492 | subcontrol-origin: padding;
1493 | subcontrol-position: bottom right;
1494 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
1495 | width: 15px;
1496 | border-left: 1px solid #aaaaaa;
1497 | border-top: 0px solid #aaaaaa;
1498 | }
1499 |
1500 | QDoubleSpinBox::down-button:hover
1501 | {
1502 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/
1503 | }
1504 |
1505 | QDoubleSpinBox::down-button:pressed
1506 | {
1507 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/
1508 | }
1509 |
1510 | QDoubleSpinBox::down-arrow {
1511 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png);
1512 | width: 9px;
1513 | height: 9px;
1514 | }
1515 |
1516 | QDoubleSpinBox::down-arrow:disabled,
1517 | QDoubleSpinBox::down-arrow:off
1518 | {
1519 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/
1520 | border: 1px solid #dddddd;/*边框*/
1521 | }
1522 |
1523 | /*/////////////////////////////////////////////////QTimeEdit///////////////////////////////////////////*/
1524 | QTimeEdit
1525 | {
1526 | min-height:20px;
1527 | padding-right: 15px;
1528 | border: 1px solid #aaaaaa;/*边框*/
1529 | min-width:8em;/*最小宽度为6em em和px一样为长度单位。em表示对应字体M的宽度。M为大写字母的最大宽度*/
1530 | }
1531 |
1532 | QTimeEdit::up-button
1533 | {
1534 | subcontrol-origin: padding;
1535 | subcontrol-position: top right; /* position at the top right corner */
1536 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
1537 | width: 15px;
1538 | border-left: 1px solid #aaaaaa;
1539 | border-bottom: 0px solid #aaaaaa;
1540 | }
1541 |
1542 | QTimeEdit::up-button:hover
1543 | {
1544 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/
1545 | }
1546 |
1547 | QTimeEdit::up-button:pressed
1548 | {
1549 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/
1550 | }
1551 |
1552 | QTimeEdit::up-arrow
1553 | {
1554 | image:url(:/qss/icon/ver_scroll_top_arrow.png);
1555 | width: 9px;
1556 | height: 9px;
1557 | }
1558 |
1559 | QTimeEdit::up-arrow:disabled,
1560 | QTimeEdit::up-arrow:off
1561 | {
1562 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/
1563 | border: 1px solid #dddddd;/*边框*/
1564 | }
1565 |
1566 | QTimeEdit::down-button
1567 | {
1568 | subcontrol-origin: padding;
1569 | subcontrol-position: bottom right;
1570 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
1571 | width: 15px;
1572 | border-left: 1px solid #aaaaaa;
1573 | border-top: 0px solid #aaaaaa;
1574 | }
1575 |
1576 | QTimeEdit::down-button:hover
1577 | {
1578 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/
1579 | }
1580 |
1581 | QTimeEdit::down-button:pressed
1582 | {
1583 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/
1584 | }
1585 |
1586 | QTimeEdit::down-arrow
1587 | {
1588 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png);
1589 | width: 9px;
1590 | height: 9px;
1591 | }
1592 |
1593 | QTimeEdit::down-arrow:disabled,
1594 | QTimeEdit::down-arrow:off
1595 | {
1596 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/
1597 | border: 1px solid #dddddd;/*边框*/
1598 | }
1599 |
1600 |
1601 | /*/////////////////////////////////////////////////QDateEdit///////////////////////////////////////////*/
1602 | QDateEdit
1603 | {
1604 | min-height:20px;
1605 | padding-right: 15px;
1606 | border: 1px solid #aaaaaa;/*边框*/
1607 | min-width:10em;/*最小宽度为6em em和px一样为长度单位。em表示对应字体M的宽度。M为大写字母的最大宽度*/
1608 | }
1609 |
1610 | QDateEdit::up-button
1611 | {
1612 | subcontrol-origin: padding;
1613 | subcontrol-position: top right; /* position at the top right corner */
1614 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
1615 | width: 15px;
1616 | border-left: 1px solid #aaaaaa;
1617 | border-bottom: 0px solid #aaaaaa;
1618 | }
1619 |
1620 | QDateEdit::up-button:hover
1621 | {
1622 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/
1623 | }
1624 |
1625 | QDateEdit::up-button:pressed
1626 | {
1627 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/
1628 | }
1629 |
1630 | QDateEdit::up-arrow
1631 | {
1632 | image:url(:/qss/icon/ver_scroll_top_arrow.png);
1633 | width: 9px;
1634 | height: 9px;
1635 | }
1636 |
1637 | QDateEdit::up-arrow:disabled,
1638 | QDateEdit::up-arrow:off
1639 | {
1640 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/
1641 | border: 1px solid #dddddd;/*边框*/
1642 | }
1643 |
1644 | QDateEdit::down-button
1645 | {
1646 | subcontrol-origin: padding;
1647 | subcontrol-position: bottom right;
1648 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
1649 | width: 15px;
1650 | border-left: 1px solid #aaaaaa;
1651 | border-top: 0px solid #aaaaaa;
1652 | }
1653 |
1654 | QDateEdit::down-button:hover
1655 | {
1656 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/
1657 | }
1658 |
1659 | QTimeEdit::down-button:pressed
1660 | {
1661 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/
1662 | }
1663 |
1664 | QDateEdit::down-arrow
1665 | {
1666 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png);
1667 | width: 9px;
1668 | height: 9px;
1669 | }
1670 |
1671 | QDateEdit::down-arrow:disabled,
1672 | QDateEdit::down-arrow:off
1673 | {
1674 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/
1675 | border: 1px solid #dddddd;/*边框*/
1676 | }
1677 |
1678 | /*/////////////////////////////////////////////////QDateTimeEdit///////////////////////////////////////////*/
1679 | QDateTimeEdit
1680 | {
1681 | min-height:20px;
1682 | padding-right: 15px;
1683 | border: 1px solid #aaaaaa;/*边框*/
1684 | background:white;
1685 | }
1686 |
1687 | QDateTimeEdit::up-button
1688 | {
1689 | subcontrol-origin: padding;
1690 | subcontrol-position: top right; /* position at the top right corner */
1691 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
1692 | width: 15px;
1693 | border-left: 1px solid #aaaaaa;
1694 | border-bottom: 0px solid #aaaaaa;
1695 | }
1696 |
1697 | QDateTimeEdit::up-button:hover
1698 | {
1699 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/
1700 | }
1701 |
1702 | QDateTimeEdit::up-button:pressed
1703 | {
1704 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/
1705 | }
1706 |
1707 | QDateTimeEdit::up-arrow
1708 | {
1709 | image:url(:/qss/icon/ver_scroll_top_arrow.png);
1710 | width: 9px;
1711 | height: 9px;
1712 | }
1713 |
1714 | QDateTimeEdit::up-arrow:disabled,
1715 | QDateTimeEdit::up-arrow:off
1716 | {
1717 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/
1718 | border: 1px solid #dddddd;/*边框*/
1719 | }
1720 |
1721 | QDateTimeEdit::down-button
1722 | {
1723 | subcontrol-origin: padding;
1724 | subcontrol-position: bottom right;
1725 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #eeeeee);/*渐变背景色*/
1726 | width: 15px;
1727 | border-left: 1px solid #aaaaaa;
1728 | border-top: 0px solid #aaaaaa;
1729 | }
1730 |
1731 | QDateTimeEdit::down-button:hover
1732 | {
1733 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #eeeeee, stop:0.8 #ffffff);/*渐变背景色*/
1734 | }
1735 |
1736 | QDateTimeEdit::down-button:pressed
1737 | {
1738 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.8 #dddddd);/*渐变背景色*/
1739 | }
1740 |
1741 | QDateTimeEdit::down-arrow
1742 | {
1743 | image:url(:/qss/icon/ver_scroll_bottom_arrow.png);
1744 | width: 9px;
1745 | height: 9px;
1746 | }
1747 |
1748 | QDateTimeEdit::down-arrow:disabled,
1749 | QDateTimeEdit::down-arrow:off
1750 | {
1751 | background: qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 #ffffff, stop:0.6 #eeeeee);/*渐变背景色*/
1752 | border: 1px solid #dddddd;/*边框*/
1753 | }
1754 |
1755 | /*/////////////////////////////////////////////////QGraphicsView///////////////////////////////////////////*/
1756 | QGraphicsView
1757 | {
1758 | border:none;
1759 | }
1760 | /*/////////////////////////////////////////////////QSizeGrip///////////////////////////////////////////*/
1761 | QSizeGrip
1762 | {
1763 | image: url(:/qss/icon/sizegrip.png);
1764 | width: 15px;
1765 | height: 15px;
1766 | }
1767 |
1768 | /*/////////////////////////////////////////////////QDockWidget///////////////////////////////////////////*/
1769 | QDockWidget
1770 | {
1771 | border: 1px solid #aaaaaa;
1772 | background: #f2f2f2;
1773 | }
1774 |
1775 | QDockWidget::title {
1776 | text-align: left; /* align the text to the left */
1777 | background: #f0f0f0;
1778 | padding-left: 5px;
1779 | padding-right: 5px;
1780 | border-bottom:1 solid #aaaaaa;
1781 | }
1782 |
1783 | QMainWindow::separator
1784 | {
1785 | width:0px;
1786 | height:0px;
1787 | border-width: 1px;
1788 | border-color:#f2f2f2 #f2f2f2 #aaaaaa #aaaaaa ;
1789 | border-style:solid;
1790 | }
1791 |
1792 | /*/////////////////////////////////////////////////QLCDNumber///////////////////////////////////////////*/
1793 | QLCDNumber
1794 | {
1795 | /*background:white;*/
1796 | }
1797 |
1798 |
1799 |
1800 |
1801 | 25
1802 | 25
1803 |
1804 |
1805 |
1806 |
1807 | -
1808 |
1809 |
1810 |
1811 | 900
1812 | 300
1813 |
1814 |
1815 |
1816 |
1817 | 16777215
1818 | 16777215
1819 |
1820 |
1821 |
1822 | 日志输出
1823 |
1824 |
1825 |
1826 |
1827 | 40
1828 | 40
1829 | 841
1830 | 191
1831 |
1832 |
1833 |
1834 |
1835 | 10
1836 |
1837 |
1838 | 10
1839 |
1840 |
1841 | 10
1842 |
1843 |
1844 | 10
1845 |
1846 |
-
1847 |
1848 |
1849 |
1850 | 90
1851 | 26
1852 |
1853 |
1854 |
1855 |
1856 | 10
1857 |
1858 |
1859 |
1860 | 清空日志
1861 |
1862 |
1863 |
1864 | -
1865 |
1866 |
1867 |
1868 | 90
1869 | 26
1870 |
1871 |
1872 |
1873 |
1874 | 10
1875 |
1876 |
1877 |
1878 | 滑至日志底部
1879 |
1880 |
1881 |
1882 | -
1883 |
1884 |
1885 |
1886 | 10
1887 |
1888 |
1889 |
1890 |
1891 | -
1892 |
1893 |
1894 | 仅保留最近30条记录
1895 |
1896 |
1897 |
1898 |
1899 |
1900 |
1901 |
1902 | -
1903 |
1904 |
1905 |
1906 | 200
1907 | 0
1908 |
1909 |
1910 |
1911 | 动作控制
1912 |
1913 |
1914 |
1915 |
1916 | 20
1917 | 20
1918 | 281
1919 | 161
1920 |
1921 |
1922 |
1923 |
-
1924 |
1925 |
1926 |
1927 | 90
1928 | 26
1929 |
1930 |
1931 |
1932 |
1933 | 10
1934 |
1935 |
1936 |
1937 | 停止下载
1938 |
1939 |
1940 |
1941 | -
1942 |
1943 |
1944 |
1945 | 90
1946 | 26
1947 |
1948 |
1949 |
1950 |
1951 | 16777215
1952 | 16777215
1953 |
1954 |
1955 |
1956 |
1957 | 12
1958 |
1959 |
1960 |
1961 | 查询购买情况
1962 |
1963 |
1964 |
1965 | -
1966 |
1967 |
1968 |
1969 | 90
1970 | 26
1971 |
1972 |
1973 |
1974 |
1975 | 16777215
1976 | 16777215
1977 |
1978 |
1979 |
1980 |
1981 | 12
1982 |
1983 |
1984 |
1985 | 开始下载
1986 |
1987 |
1988 |
1989 |
1990 |
1991 |
1992 |
1993 | -
1994 |
1995 |
1996 | 身份验证
1997 |
1998 |
1999 |
2000 |
2001 | 20
2002 | 50
2003 | 160
2004 | 84
2005 |
2006 |
2007 |
2008 |
-
2009 |
2010 |
2011 |
2012 | 59
2013 | 50
2014 |
2015 |
2016 |
2017 |
2018 | 12
2019 |
2020 |
2021 |
2022 | Qt::LeftToRight
2023 |
2024 |
-
2025 |
2026 | B站扫码登录
2027 |
2028 |
2029 | -
2030 |
2031 | B站输入SESSDATA
2032 |
2033 |
2034 |
2035 |
2036 | -
2037 |
2038 |
2039 |
2040 | 90
2041 | 26
2042 |
2043 |
2044 |
2045 |
2046 | 16777215
2047 | 70
2048 |
2049 |
2050 |
2051 |
2052 | 12
2053 |
2054 |
2055 |
2056 | 开始身份验证
2057 |
2058 |
2059 |
2060 |
2061 |
2062 |
2063 |
2064 | -
2065 |
2066 |
2067 |
2068 | 0
2069 | 600
2070 |
2071 |
2072 |
2073 |
2074 | 16777215
2075 | 16777215
2076 |
2077 |
2078 |
2079 | 下载目标
2080 |
2081 |
2082 |
2083 |
2084 | 20
2085 | 230
2086 | 657
2087 | 70
2088 |
2089 |
2090 |
2091 | Qt::Horizontal
2092 |
2093 |
2094 |
2095 |
2096 | 12
2097 |
2098 |
2099 |
2100 | 下载范围:
2101 |
2102 |
2103 | Qt::AlignCenter
2104 |
2105 |
2106 |
2107 |
2108 |
2109 | 50
2110 | 0
2111 |
2112 |
2113 |
2114 |
2115 | 12
2116 |
2117 |
2118 |
2119 | Qt::DefaultContextMenu
2120 |
2121 |
2122 | Qt::LeftToRight
2123 |
2124 |
2125 | 漫画ID:
2126 |
2127 |
2128 | Qt::AlignCenter
2129 |
2130 |
2131 |
2132 |
2133 |
2134 | 0
2135 | 60
2136 |
2137 |
2138 |
2139 |
2140 | 16777215
2141 | 70
2142 |
2143 |
2144 |
2145 |
2146 | 10
2147 |
2148 |
2149 |
2150 |
2151 |
2152 |
2153 | 16777215
2154 | 70
2155 |
2156 |
2157 |
2158 |
2159 | 10
2160 |
2161 |
2162 |
2163 | QFrame::NoFrame
2164 |
2165 |
2166 | QFrame::Plain
2167 |
2168 |
2169 |
2170 |
2171 |
2172 |
2173 |
2174 |
2175 |
2176 |
2177 |
2178 |
2179 |
2180 |
2181 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Bilibili漫画 下载器
2 | 哔哩哔哩漫画下载工具, 支持范围下载
3 |
4 | **各位也都看到了,这个项目仅仅是因为一个截图火起来的,本身作为Python爬虫项目,代码已经停留在两年前了,根据我的观察,项目原本使用的Bilibili Login API已经失效了,Bilibili Mnaga部分的API不确定是否出现更改,还请各位刷梗就好,如果项目代码有问题建议暂时另外开一个issue反馈,不要乱搞**
5 |
6 | ## 项目特点
7 | 1:拥有图形界面(易用程度大幅度提升)
8 | 2:支持多样的下载范围自定义
9 | 3:支持付费漫画下载(前提是已经购买的漫画)
10 |
11 | ## 使用说明
12 | 漫画id内填入B漫的id,如链接为`https://manga.bilibili.com/detail/mc28241` ,则id为`28241`
13 | 漫画范围,填`0`则是会尝试下载所有章节,`14-16`表示下载14到16,`58`表示下载序号为58,可用逗号隔开不同的下载范围
14 |
15 | ## TODO
16 | > 就目前而言,请使用release中的二进制版本,仓库中的代码还在进行开发,并非最终版本。预计未来会加上其他平台的支持,如鹰角网络
17 | - 增加高级设置,如手动输入SESSDATA和网络代理
18 | - 优化扫码登录的方案
19 | - 整合设置数据为json对象,并生成设置文件
20 | - 尝试引入双线程下载加速
21 | - 写使用说明
22 |
23 | ## 其他项目引用
24 | 图片解析部分来自 https://github.com/flaribbit/bilibili-manga-spider
25 | 下载逻辑参考 https://github.com/xuruoyu/bilibili_manga_downloader
26 |
--------------------------------------------------------------------------------
/TerraHistoricus/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Randark-JMT/Bilibili_manga_download/fc56084d03e74b6d62c2cbb6d0a3ede416858d0c/TerraHistoricus/__init__.py
--------------------------------------------------------------------------------
/main.py:
--------------------------------------------------------------------------------
1 | import os
2 | import sys
3 | import time
4 | from PySide6.QtWidgets import *
5 | from PySide6.QtCore import Slot, QThread, Signal
6 | import setting
7 | from ui_MainGUI import Ui_MainWindow
8 | import json
9 |
10 |
11 | class Thread_Login(QThread):
12 | """
13 | 扫码登录线程
14 | """
15 | signal = Signal(str)
16 |
17 | def __init__(self):
18 | super().__init__()
19 |
20 | def run(self):
21 | from Bilibili.login import bzlogin
22 | bzlogin(self.signal.emit)
23 |
24 |
25 | class Thread_Download(QThread):
26 | """
27 | 下载线程,传入漫画ID和下载范围
28 | """
29 | signal = Signal(str)
30 |
31 | def __init__(self, comic_id, comic_range):
32 | super().__init__()
33 | self.comic_id = comic_id
34 | self.comic_range = comic_range
35 |
36 | def run(self):
37 | from Bilibili.download import download_main
38 | download_main(self.comic_id, self.comic_range, self.signal.emit)
39 |
40 |
41 | class MainWindow(QMainWindow, Ui_MainWindow):
42 |
43 | @Slot()
44 | def datafile_check(self):
45 | """
46 | 检查数据文件可访问性
47 | """
48 | from Bilibili.settings import download_path
49 | if not os.path.exists(download_path):
50 | os.makedirs(download_path)
51 | if not os.path.exists(setting.setting_file):
52 | f = open(setting.setting_file, 'a+')
53 | f.close()
54 | text = setting.settintfile_read()
55 | if len(text) > 0:
56 | properties = json.loads(text)
57 |
58 | @Slot()
59 | def manga_id_get(self) -> int:
60 | """
61 | 链接解析
62 | """
63 | from urllib.parse import urlparse
64 | url = str(self.textEdit_2.toPlainText())
65 | url = urlparse(url)
66 | if url.netloc == 'manga.Bilibili.com':
67 | if str(url.path).find('mc') == -1:
68 | self.textBrowser.append("未检测到漫画信息")
69 | return -1
70 | else:
71 | self.textBrowser.append("链接输入错误,非B漫链接")
72 | return -1
73 | return int(str(url.path).split("/")[2][2:])
74 |
75 | @Slot()
76 | def purchase_staus_check(self): # 检查购买情况
77 | from Bilibili.download import get_purchase_status
78 | manga_id = self.manga_id_get()
79 | if manga_id == -1:
80 | self.textBrowser.append("漫画ID输入错误,请核对后再次执行")
81 | return None
82 | data_re = get_purchase_status(manga_id, self.textBrowser.append)
83 | if data_re is None:
84 | return None
85 | # TODO 做个防呆,避免用户非法输入
86 | self.textBrowser.append("查询 " + str(data_re[0][0]) + "-" + data_re[0][1])
87 | self.textBrowser.append("查询时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
88 | for data in data_re[1:]:
89 | self.textBrowser.append(data[0] + data[1])
90 |
91 | @Slot()
92 | def manga_download(self): # 下载
93 | self.pushButton_3.setEnabled(False)
94 | if self.textEdit_2.toPlainText() == "" or not self.textEdit_2.toPlainText().isnumeric():
95 | self.textBrowser.append("漫画ID输入错误,请检查输入")
96 | self.pushButton_3.setEnabled(True)
97 | return None
98 | if self.textEdit_3.toPlainText() == "":
99 | self.textBrowser.append("下载范围输入错误,请检查输入")
100 | self.pushButton_3.setEnabled(True)
101 | return None
102 | self.thread_download = Thread_Download(self.textEdit_2.toPlainText(), self.textEdit_3.toPlainText())
103 | self.thread_download.signal.connect(self.log_append)
104 | self.thread_download.start()
105 |
106 | @Slot()
107 | def login_qrcode(self): # 登录
108 | self.thread_login = Thread_Login()
109 | self.thread_login.signal.connect(self.log_append)
110 | self.pushButton.setEnabled(False)
111 | self.thread_login.start()
112 |
113 | @Slot()
114 | def download_manga_stop(self): # 下载中断
115 | self.thread_download.terminate()
116 | self.textBrowser.append("下载任务已被中断")
117 | self.pushButton_3.setEnabled(True)
118 |
119 | @Slot(str)
120 | def log_append(self, status, message): # 日志输出,用槽函数接受信号
121 | if status == "0xe1":
122 | self.pushButton.setEnabled(True)
123 | if status == "0xe2":
124 | self.pushButton_2.setEnabled(True)
125 | if status == "0xe3":
126 | self.pushButton_3.setEnabled(True)
127 | self.textBrowser.append(message)
128 |
129 | @Slot()
130 | def log_scroll_down(self): # 日志下滑
131 | self.textBrowser.moveCursor(self.textBrowser.textCursor().End)
132 |
133 | @Slot()
134 | def log_clear(self): # 日志清空
135 | self.textBrowser.setText("")
136 |
137 | def __init__(self, parent=None):
138 | super(MainWindow, self).__init__(parent)
139 | self.thread_login = None
140 | self.thread_download = None
141 | self.setupUi(self)
142 | from Bilibili.settings import version
143 | self.setWindowTitle("Bilibili漫画下载器 " + version)
144 | self.datafile_check()
145 | # 漫画信息窗口-初始化
146 |
147 | self.pushButton_2.clicked.connect(self.purchase_staus_check) # 检查购买按钮
148 | self.pushButton.clicked.connect(self.login_qrcode) # 扫码登录按钮
149 | self.pushButton_3.clicked.connect(self.manga_download) # 开始下载按钮
150 | self.pushButton_6.clicked.connect(self.download_manga_stop) # 下载终止按钮
151 | self.pushButton_5.clicked.connect(self.log_scroll_down) # 日志框下滑按钮
152 | self.pushButton_4.clicked.connect(self.log_clear) # 日志清零
153 |
154 |
155 | if __name__ == "__main__":
156 | app = QApplication()
157 | window = MainWindow()
158 | window.show()
159 | sys.exit(app.exec())
160 |
--------------------------------------------------------------------------------
/main.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python ; coding: utf-8 -*-
2 |
3 |
4 | block_cipher = None
5 |
6 |
7 | a = Analysis(['main.py'],
8 | pathex=[],
9 | binaries=[],
10 | datas=[],
11 | hiddenimports=[],
12 | hookspath=[],
13 | hooksconfig={},
14 | runtime_hooks=[],
15 | excludes=["pyinstaller","whell","setuptools","pyinstaller-hooks-contrib","pip","PySide6.QtNetwork","_tkinter"],
16 | win_no_prefer_redirects=False,
17 | win_private_assemblies=False,
18 | cipher=block_cipher,
19 | noarchive=False)
20 | pyz = PYZ(a.pure, a.zipped_data,
21 | cipher=block_cipher)
22 |
23 | exe = EXE(pyz,
24 | a.scripts,
25 | a.binaries,
26 | a.zipfiles,
27 | a.datas,
28 | [],
29 | name='main',
30 | debug=False,
31 | bootloader_ignore_signals=False,
32 | strip=False,
33 | upx=True,
34 | upx_exclude=[],
35 | runtime_tmpdir=None,
36 | console=False,
37 | disable_windowed_traceback=False,
38 | target_arch=None,
39 | codesign_identity=None,
40 | entitlements_file=None , icon='D:\\_Code\\Bilibili_manga_download\\main.ico')
41 |
--------------------------------------------------------------------------------
/setting.py:
--------------------------------------------------------------------------------
1 | import json
2 |
3 | setting_file = "setting.json"
4 | properties_global = {}
5 |
6 |
7 | def settintfile_read():
8 | """
9 | 读取设置文件所有内容
10 | """
11 | f = open(setting_file, 'r')
12 | json_text = f.read()
13 | f.close()
14 | return json_text
15 |
16 |
17 | def settingfile_write(json_text):
18 | """
19 | 所有内容覆盖到设置文件中。
20 | """
21 | try:
22 | f = open(setting_file, 'w')
23 | f.write(json_text)
24 | f.close()
25 | return True
26 | except Exception:
27 | return False
28 |
29 |
30 | def property_put(key, value, properties, domain=None):
31 | """
32 | 保存一个属性。如果key不存在,则创建;存在,则覆盖。
33 | """
34 | properties[domain][key] = value
35 | json_text = json.dumps(properties)
36 | settingfile_write(json_text)
37 | return properties
38 |
39 |
40 | def property_get(key, properties, default=None, domain=None):
41 | """
42 | 获取一个属性。如果不存在,则返回default。
43 | """
44 | if key in properties[domain]:
45 | return properties[domain][key]
46 | else:
47 | return default
48 |
--------------------------------------------------------------------------------
/source/main.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Randark-JMT/Bilibili_manga_download/fc56084d03e74b6d62c2cbb6d0a3ede416858d0c/source/main.ico
--------------------------------------------------------------------------------
/source/main.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | main.ico
4 |
5 |
--------------------------------------------------------------------------------
/source/main_rc.py:
--------------------------------------------------------------------------------
1 | # Resource object code (Python 3)
2 | # Created by: object code
3 | # Created by: The Resource Compiler for Qt version 6.2.3
4 | # WARNING! All changes made in this file will be lost!
5 |
6 | from PySide6 import QtCore
7 |
8 | qt_resource_data = b"\
9 | \x00\x00S\xd6\
10 | \x00\
11 | \x04 >x\x9c\xed]\x05\x5cT\xd9\xf7\x7fC\x97t\
12 | \xa8\x80(vw+`\xa04\x12\x8aHw(v\xb7\
13 | \x98\xd8\xae\xdb\xe1\x96k\xbbvwwl\xfe\xf7\xb7\xdd\
14 | a\xec\xaa0\xf3jf\xee\xff\x9e\xf7f\x10a\x86P\
15 | \xe0\x0dr\xbf\xfb\xf9\xee\x08w\x98\xb9\xef\xbd{\xce=\
16 | \xe7\xdcs\xcf\xa5(\x19\xfe\x0f \xa3\x9aRm\x9a\x9a\
17 | P\xae\xf8\xdfm\xc4_P\x94\x91\xf8{\x01\xb8\x8d\x80\
18 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\
19 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\
20 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\
21 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\
22 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\
23 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\
24 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\
25 | \x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\
26 | \x80\x80\x80\x80\x80\x80\x80\xe0\xb9 \xc34\xc14\xc74\
27 | \x96\xb8/\x04\x04\x045\x0b\x90sO\xcc03\x13\xa3\
28 | \x156\xe6f;\xdd\x1d\x1a\x9cv\xb5\xb3\xbeeke\
29 | ~\xb0\x81\x85\xd9\x87FF\xd4L\xdc\xde\x09\xd3R\xda\
30 | \xae\x12\x10\x10\xbc \x8c0\xed0\xbbc\xb9\x9e\xd7\xd0\
31 | \xde\xe6|\xd7f\x8d~\xcd\x0b\xec]\xb4)7\x92\xde\
32 | 7c\x0csqI\x06\x7f\x01\xf3\xc4\xfc\x14\xd5\xd1\xb9\
33 | \x89\xfc\x9a\xe4\xe1\x5c\x9cO\xa7\xc2\xa6.\xf6w\xb1\x8e\
34 | \x98\x83\xff\xb6\x19%\xda\x09\x04\x04\x04\xb5\x03\xb0\xc9m\
35 | 0\xed1\x1d0\x1d5\xff\x06Y\xb6\xa6\x9e\xda\xea2\
36 | \xcd\xbfM1\xad0\xdd(q\xee\x1e\x86\x99men\
37 | \xb6\xa3\xa9\x8b\xc37\xfe\x9d\x9b\xffW\x10\xefO\x9f\x9a\
38 | \x9f\xcc\xdd,\xc8V\xdeY\x9d\xa3\xbe\xb52\x07\xdd\xc4\
39 | \xbcU\x82\xda\x9f\xef\xac\xceU_Y\x96\xc9\xbf\x99\x11\
40 | \xca\x0eh\xd3\xe4\x0fS\x13\xa3\xd5\xf8\xf3\xdaR\xa2>\
41 | ! \x10e\xcf\x82\x12\xe5\x0ed\xd4\x19\xb3\x15f\
42 | {\xcc\x0e\x98\x031\x031\x830#030\xb31\
43 | s1\xf31W\x95\xe2Jx\xc5\x02\xb6\xca\xdc\xc4x\
44 | \x17\x9e{?736\xfa\x15\xf3/Sc\xa3\xbf\xf1\
45 | \xeb\x1f\x98?Y\x9a\x9a\xdc\xb4\xb10\xdd\x8c\x7f\xf7\x9a\
46 | \x99\xa9\xf1\xfb\x96f&;\xf0\xcf\xa7\x9dm\xac\xee\xb6\
47 | l\xe4\xf8\xa3O\xdb\xa6\x8f#{\xb7+\x9c\x16>\x80\
48 | \xdb6i\x94\x12\xe6\xf7\xdb+sUwV\x892\xff\
49 | \x1cT~\x98\x17\xc9\x84\xf6h\xf3\xb7\x95\x99\xe9&J\
50 | \xd4/D\x0f\x10\xd4Ehc]0\x87\xc2\x5cj\xab\
51 | yu\xc7lN\x89c\xbb\x17%\xcan\x08f\xe8\xd2\xb4\xd1C\x9f\
67 | \xb6^\xf7\x87un\xf10\xb0k\xab\xc2\xa8>\xed\xd9\
68 | x\x9f\xce\x5c\xfa\x90n\xcc\xb4\xb0\xfe\xf4\x8a\xf8a\xf2\
69 | U\x89\xc3\xe5\x1f\x8c\x8d\x90o\x1e\x1fM\x1f\x9a\x9d\xc0\
70 | \x1e\x9f\x97\xc4_Z\x92\xc9_[\x96\xa5\xbaU\x90\xa3\
71 | \xba\xbd2[#{\x98\xabD\xe2\x9fQ1W>\xa5\
72 | \xd6\xd6~QV\xa7|W\x867\x05\xdf G}`\
73 | f\x1c\x9f>\xa4\x07\xdd\xa2\x91\xd3M\xac\x0f\xa7S\xa2\
74 | \xcdcU\xc9g\x04\xb6C\x0b\xcc5\x96f\xa6?\xe1\
75 | g!\x1f\xda\xb9\xb9\xa2\xa3\xa7[\x91\xab\xad\xf5C\xfc\
76 | \xfb\xd71[R$\xe6@P9\x98av\xc4\x9c`\
77 | l,\xdb\xefjk\xf5]\xef\x96\x1e\x8f\x12}:\xcb\
78 | \xf1\x5c\xcb\xbc\x9a\x16\xc2b;\x98;<;\x81\xb9\xb4\
79 | $\x83\xb9\xb1\x22\x9b\xbf\xbe\x22K\x85_U\xd8\x17\x16\
80 | eV\x94U<_\xc2\xcf\xe2\xefn?\xbf\xbd\xfc\xd2\
81 | \x13\xf4\x00\xe8\xb4\xcbK3\xf8\x8d\xf8\xfeb]\xf9_\
82 | kw\xe7\xcf\xb0M\x04\xb2\x9b\x83\x19@\x89:\xb8\x11\
83 | \xa6\x07fcJ\xd4\x11\xd9X_ln\xec\xd8\xe0\xaf\
84 | x\x9fN\x85\x1f\xe7E\xc9\xb1\xcd\xa2\xfclu\xae\xea\
85 | \xd6\xaa\x1c\x0e\xe2\x13SB\xfb3\xee\x0e\x0d\xee\xe1\xf7\
86 | \xce\xa5D]N@P\x1a\xe0w\x83\x8f=\xd5\xc4X\
87 | v\xde\xdb\xcd\xfe^\x92og\xfa\xbd\xec\x11\xec\xd9E\
88 | \xa9\xd8\xdf\xcdQ\xdd!2\x5ck\xbc\x8b}\x8d\x9b\x05\
89 | 9\xfc\x9e\xe9c\xb8\xf5)\x81\xdc\xb8\xc0\xdelt\xdf\
90 | \xf6\xff\x0e\xeb\xdc\xfc/\xdfvM\x1f\xf9\xb4mz/\
91 | \xa8k\xab\x7f'\x05\xf7c^O\x0f\x11\x9e\xd1]\x90\
92 | y=\x9fu~Q*\x9b6\xb8[\xa1\x95\x99\xe9u\
93 | \xfc\x8c\x87P\xc4'\xa8\x8f\x90i\x08\xfe:\xc4\xd6\xba\
94 | `\xc6a\xae551\xbe\xd1\xd8\xd1\xf6\xf1\xa8\xbe\xed\
95 | \xe9\xf7rF(\xae-\xcfd\x89\xac\x1b\x0e\xc16\x00\
96 | 9\xbe+\xc4!\xc0\xbe\xcaU\xc1\xbf\xe1\xf7U\xf8\x0c\
97 | \xf5\x87\xe3\xa2\xd8.\xcd\x1a\x16b\x9b\xe1c\xfc\xdc\xbd\
98 | )\xe2\x13\xd4%@\x8c\x0d\xd6\x8c\xc0\x0f\x9fh\x04\xf1\
99 | 3#\xa3\xd7\xb1/\xfe\xae\x99\xb1\xd1v3c\xe3O\
100 | 0w\x99\x99\x1ao\xc3s\xf8.\xfc\xef\x8f\x8c\x8d\x8c\
101 | 6c~\x80\xb9\x1d\xffn'\xe6I\xec#\xdeql\
102 | `\xf9c\x8b\x86\x8e\x8f\x87wn\xc1\xe4\x05\xf6Q|\
103 | <>J\x8emy\x1e\xc6\x16\x91\xfb\x97\x97\xf0l\xaf\
104 | ,\xcbTN\x0f\x1fX\xe4lc\xf5;\x1eGk1\
105 | ;S\xa2\xcfG`x\x00;\x0db7\x8b\xad\xcdM\
106 | \xbf\xe9\xe0\xe9\xfao\xdc\xc0N\x8a%\xa3\x87\xd0\xaf\xa5\
107 | \x07\xd3\x1f\x8c\x8b\xa4?\x9d\x1e\xcb\xee\xc1<8+^\
108 | \x01\xaf\xfbf\xc4q\xbb\xa7\xc5\xd2\xbb\xa6\x8e\xa6\xb7M\
109 | \x1a\xc9`\x9f\x90\xdd?\x8d\x03\xbb\x1c\xcf\xd7\
119 | \x92\x8f\x17\xc2\x97\x93\xda\xd8\xee\xd5\xe5\x99\xdc\xfe\x19c\
120 | \x98WR\x83\x15\xb9\xc3{\x16\x0dn\xdf\x8cn\xd9\xc8\
121 | \xa9\xb0\x81\x85\xf9=\x13\x99\xec.\x1e\x97[1\xc7c\
122 | \xf6\xa4\xc4|Jb#T?\x9a\x9b\x9a\x18}\x931\
123 | \xb4{\xe1\x8d\x82l\xa5\xd4c\x83\xb0\xfe\xb18\xe7I\
124 | \xd0\x09Y\xfc\x89\x05\xc9\xec\xc7\xe3\xa3\x98\x99#|\x8a\
125 | \x86t\xf2Vx:\xda>2\x92\xc9\xbe\xc1c\xf5\x03\
126 | J\xcc\xe9\x82\xbc#\xa2\x0b^\x1c\x90\xff\xb5gd\x9f\
127 | \xf6E\xb0\x9e.\xf58 $,ImN\xc7\xc5%\
128 | \xe9\xdc'\xe3G\xd2\x93C\xfb)\xfa\xb4\xf2(\xb2\xb5\
129 | 4\xfb\x0f\x8f\xdb+\x98\xb31\xdbQD\x17\x92\
130 | =\x9d\xed\x14\xa7\x16\xa4\xb0R?kB\xc2\x8a(\xe8\
131 | \x83\x82\x1c\xd59\xec\xa3b\x9f\xa10\xa0k\x0b\x85\xbd\
132 | \xb5\xc5cJ\xd4\x05\x131\xbd(\xa2\x0b*\x0bw\x13\
133 | #\xd9\xff\x96\xc7\xf9\x17i\xf7\x93\x11\x12\xd6%\xc2\xb8\
134 | \xbd\x90\x9f\xc6\x16\xc4\x0fS\xf4k\xedYhaj\xfc\
135 | /\x1e\xd7\x9fb\x86Q\x95\xcfg\xae\x8f\x80u\xbe%\
136 | =\x9b\xbb+\xae\xaf\xc8\xe6\xa5~\x8e\x84\xd5CM.\
137 | \x85`3\xc3<)\x10~\xd6\xe4DK\xdd\xbf\x9a$\
138 | \xacU\x1d\x9a\x15\xcf\xe4\x0c\xebU\xd8\xd8\xd1F\x81\xc7\
139 | \xf7\xd7\x983(1w\x99\xe0Y\x0c271\xbe\xff\
140 | vv\xb8\xfc\x05\xf6\x95\x12J\xc4\xa7\xb2\x9c-\xc8\xfa\
141 | \xcd\x15\xd9\xaak\xcb3\x95\x17\xf2\xd3\x95\xa7\xe7\xa6(\
142 | O\xccNV\x1e\x9b\x99\xa4<\x8aylV\x92\xf0\xf3\
143 | \xf9Ei\xca\xab\xcb2\xb5:A\xf2k\xa8)\xde\x11\
144 | s\x8e\xb85I\x01\xf2\xee\xde\x8d\xe52\x19\x05{\x11\
145 | \xd6Qb^\x0b\x01E5\xc5\x0e\xd2\xed\x11\xbd\xda\x16\
146 | \xe1\xfbU\xc7\xe3\xfd\xe2<-^\x8du\x82\x0a\x7f\xbe\x12\xf4\x85\xa8\
156 | ?\xa4~\x865\xc8\x82l\xd5\xfbc#\xe4\x03\xdaz\
157 | \xc9\x8d\x8dd\x103|\x93\x12\xf3\x90\xeb# \xe7\x12\
158 | \xf6u\xdd\xe8\xe1\xddXqqqZ\x9d\x8d\xf9\xc1^\
159 | \xdd\xcbK3\x84\xb9\xee\xc8\x8c$\xd5!<\xae\x0fM\
160 | \x8dW\x1f\x9c*\x8esA\x0e4<\x8c\x7f>2=\
161 | A}\x14\xbf\xef\xb88\x17\xaaN\xcdMU\x9d\x99\x97\
162 | \xc6cYS\x9d_\x94\x8e\xe7\xcd4\xe5\xa5\xc5\xe9\xea\
163 | K\xa0?\x16g\x08\xff\xbe\xbc8\x83\x17~\xb78\x1d\
164 | \xeb\x94\x0c\x15\xcc\xadX\xfeT \x93\xf8\xef@\xfe\xd0\
165 | \xb9\x85\xa9j\xfc\xca\xe1~\xa8O\xcdMA\x02\xe7$\
166 | \xabO\xccIf\x8f\xcdJV\xe19\x18\x1d\x9d\x91\x88\
167 | \x8eLOD\x87A\x06q\xff\xa0?\xb8\x8f\xaa\x83\xf8\
168 | g\xe8\xaf\x96\xd0\xef\x83S\xe3\x91\x96%dY]\x92\
169 | b[|\xc96}\xf2\xae\x9fSE]\x00v\x01\xbe\
170 | 6\x1e\xeb)\xd1O0\x80g[#\xe3\x05\xfb\x06\x1f\
171 | \xe5E\xc9\xfb\xb6\xf6\x94\x1b\xc9d\x0f\xb0\x0c,\xa3\xc4\
172 | \x9aL/3 w\x0ar& \x87?\x1ds\xb7\x99\
173 | \x89\xf1\xa3\x90n\xad\x8b\x8e\xcdMb\xa4~&\xcf\xcb\
174 | \x9bX\xf6\xcf-HU\x1e~\xde\xb1_\xe2\xef\x0e\x96\
175 | \x90\x87g(\xfc.\xbe\xf8gA>\xa7j\xe4O\xf3\
176 | ~\x8d\xccj\xe4\xb6\x8c,\xd7\x05\x16_'\xd8\x0fg\
177 | \xe6\xa5*!W\x1f\xf6TK\xfd\x8ckN\x0f\xe4(\
178 | _M\x0b\x96{\xbb9\xd0X\x1e\xbe\xc7\x1cM\xbd<\
179 | {\x13a-\x1f\xf6V$a\xbe\x82y\x14\xdb\xf9_\
180 | Y\x98\x9a0\x801\xf1\xfc\
190 | \x848\xe1\xd6I#\x15-\x1b9\xc1Z\xc1\x0f\x94X\
191 | 3\xae.\xc1\x89\x82z\x932\xd9?m=\x5c\xe8y\
192 | Q\xber\xa8\x91\x039\xbc/_L?[}\x16\x8f\
193 | \xc1\x17\xb0\xf9\x09_H\x1f\x88\xbe\x10\xc4\x18O\xccN\
194 | \xe2\xcf\xcdO\x83\xf8\xa5\xf2\xe6K\x10?\xbc\xb44\x83\
195 | \x0b\xee\xd6\xaa\x10\xcb\x12\xe4\x11\xa5H,\xd3\x95\x05\xd4\
196 | \xb9\xbc\xed\xee\xd0\x80\x85\xdav\xd7\x96g\xf1\x10w~\
197 | \x19\xf7\xdb\x81\x0d\x8a}S\x22\xfb\x86D1\xfe(\xe8\
198 | \x82K\x8b\x8b\xe3\x87\x92\x8f\x95\xe7&\xf6\x89\xd3\x87t\
199 | /\x94\xc9(\x88\x0b\x8c\xa3\x0c;\x87\x10\xea\xdb\xfe\xd4\
200 | \xafu\x13\xc5\x89\xf9\xc9\x86]7\xa7 Gu}y\
201 | \x96\xf2R~&\xafY\xc3\xc2\xcc\xe0/.\xceP\xc2\
202 | \xfa\x1c\xd6[\xca\x9b\xe2\xbe\x03\x95v-[\xb3n\xa6\
203 | \x86\xb5;x?\xc4\xec\x0f=\x8d\x7fK?\xf6\x09\xb5\
204 | \x14\x9f\x09\xd6\x05\xc7\xb1\x1e\xb8\xb24\x8b\xaf\xcb\xeb\x89\
205 | P7rl@\xaf\x22,\xf8\xa0\x03\xe2\xa4\x16r=\
206 | \x80:\xd7_\x0el\xe3\xa5\xb8\xb08\xdd\x80\xf3\xf6\xb2\
207 | \xd5\x17\xf3\xd3\xb9\xe3\xb3\x12\xf9C\xd3\x13\xb4\xeb\xd2\x9a\
208 | x\xb36\xce.\xce!`SB\xfcY\x9b\xab\x02\xf1\
209 | \xa7O'\xc7k\xd6\xb3\xe3\xd5u(\x9e^\xaf\x09\xcf\
210 | \x0b\xdbi\xdc\xf5\x15Yu6\xbe\x0cu'\xa3\xfb\xb6\
211 | \x97c\x19{D\x89\xf5\xea\x0c\x09`\x93\xbc\xee\xe1h\
212 | \xcb\x9e\x98\x9b\xc4I}\xaf\xca\x93\xfd\xf3\x0b\xd2X\x8d\
213 | |Wi\xde\xde?%\x1e\xcd\x8f\x1a\x8e\x86\xf6\xee\x87\
214 | \xb6\x8c\x8b\x91|L\xeb\x22\xac\xbf\xef\x994\x06\xed\xc8\
215 | \x8bA\x9b2#\xd0\xf4\x90\x01(\xd9\xa7+\x1a7\xac\
216 | 7\xda\x90\x18\x84\xb6\x8d\x1b\x85vM\x18\x8d\xaf%\xee\
217 | \xe9\xfab\xfd\xa1\xfa\xd8\xccD\xf0\x09\xb8\xbaj\x0b\xc0\
218 | \xb9I\xad\x1a;\x83\x0dp\x81\x12k\x90\x18\x0a\xdac\
219 | \xff\xe4\xbfec\x86\xd2\x06l\xf3\xab/\xe5\xa7\xb3U\
220 | \x95{\x90\xa9\xd5\xf1\xa1h\xf8\xd0\x004\xe2\x9d\x1d(\
221 | \xfe\xd4m\x94\xe1\xef[\xab\xf2\x03}8\x80\xf9\xe9\xc4\
222 | X\xf4AV$Z\x9f\x10\x84f\x85\xf9\xa04\xbfn\
223 | (\xa2G[4\xa0\xb5\x17\xea\xe0\xe1\x8a\x9a\xba\xd8\xa3\
224 | F\xf66\xc8\xd1\xda\x12\xd9X\x98!K3\x13da\
225 | j\x82,1\xad\xcdM\x91\x9d\x95\x05ri`\x8d\xdc\
226 | \x1dlQ\x0b7G\xd4\xc5\xab!\xf2m\xdb\x14\x7fF\
227 | ;\x94\x82\xf5\xc4\xd4\xe0\xfehe\xec0\xf4vz8\
228 | \xda2v$\xda\x07zB\x9b\xf3#\xbd\xfcV\x13\xe3\
229 | \xd5\xa7\xe7\xa5\x96\x5c/\x90z\x5cV\x89\xef\x8f\x8d\xa4\
230 | \x8d\x8ddJ,sQR\x0b\xbd\x06\x90\xcb3\xdd\x13\
231 | \xcf\xfdW\x85\xbcM\xe9\xef\x91.\xc2\xd9t\xc7f$\
232 | qU\x91\xb9w2\xa2\xd0\x08\xbfA(p\xd9\xab(\
233 | \xf3\x87G(\xebwV\xa0_b\x0e\xda\x9e7\xbaF\
234 | \xc7\xe9\xf6\xbcQhm|\xa00w\x07wm\x8d:\
235 | z\xba!W[kA\x9e-\xb0\x5c7th\x80\xda\
236 | y\xba\xa2A\x1d\xbdQ\xcc\xc0\xce('\xb0\x0f\x9a\x19\
237 | =\x08\xadL\x09Bo\xe4F\xa0\x0f'\x8dB[\xa6\
238 | \x8eF\xdb\xa7\x8fA[\xa7\xc5\xa2\x8f&\xc7\xa0\xf7\xc6\
239 | G\xa3\x0d\x19\xa1hi\xc2p4e\xc4@\x941\xac\
240 | \x17\x1a\xd9\xbf#\xfe\x8c\xe6\xa8\x83\x97\x1b\xf2t\xb6C\
241 | \x0d,\xcd\x91\xa9\xb1\x11j`a\x8e\xb0=\x87\xba5\
242 | m\x8c\xc2\xbb\xb7Ac\xfd{c\xdd0\x1c}\x9c\x13\
243 | -\xe8\x22\xe9\xe5\xf8\xb9)\xe8\x7f\xec\x13(\xcf/J\
244 | \xe7\xeaZN\x11\xac\x95\xf7h\xee\x0e6\xc0\x09\xa9\x05\
245 | _\x03X\xeb\xdb\x87}\x13\xc6\x90kh^Y\x92\xc1\
246 | \x95\xc8M-\x97\x9b\xc7\xc6\xa0\xf8\xc1\xbeh\xc8\xe4\x05\
247 | (\xed\xcb\xbf\x8a\xe5^\xcb1'n\xa2\xec\xe1\x83\xaa\
248 | mL\x82\xae\x01\xdb|\xf1\xc8!hT\xef\x0e\xa8\x9d\
249 | \xbb\x0b\xb2\xc7s5\xcc\xe1-\x1a9!\xff.-P\
250 | nP\x1fA\xb6A\x9eO.\xc9@WV\x8fE\xb7\
251 | \xd6\x8fGw6L@\xb7\x81\xf8\xdf\xb7\xaaH\xf8\x1b\
252 | \xe1o7\x88?_[3\x0e\x9d[\x9e\x85\x0e\xccK\
253 | F\x9b\xb0\xaeX\x10;\x14\xa5c\x1d1\xb8Ss\xd4\
254 | \xda\xdd\x19\xd9Z\x99#[\xac\x1f\x9a8\xd9\xa1\xa1\x1d\
255 | \xbc\xd18\xac\x13^M\x0e\x11|\x8e:i#L\x85\
256 | <\xe3$\x1erP\xc4}\x11\xd2\x8f\xd3\xcapn\x94\
257 | \x1f\xe4\x06\xc1~bW\x89e\x1f\xd0\x06\xf3\xdb)\xa1\
258 | \xfd\xf8\xaa\xd4`\xafmB\xdeXE\xe3a\xd7\x84X\
259 | \x94\x1b0\x18\xf9%\xe5\xa2\xa4+\xffCY\x7f\xb0e\
260 | d_\xcbA\xb1ih\xc7\xf8\xd8\x17\x96\xf9\x19\xa1\x03\
261 | \x05\xfb\xdd\x01\xdb\xec`\x9f\xf7j\xe9\x89r\x83\xfb\x0a\
262 | s\xf8\x89\xc5\xe9\xe8\xc6\xba\xb4W;\xb4.=D\x90\xaf\x92\xf3\xb1\xa1\xf2\xb6\
272 | F/\xdcX;\x0e\xed\x9b\x9b\x88\xe6\x8c\x1a\x8c\xfa\xb6\
273 | \xf1\x12\xec\x15oW\x074!\xa0\xaf\x10\xab\x90Z\xae\
274 | \xabD\xac\x03.\xe6\xa7\x1b\xf6\x9a\xb5\x86\xc7\xe6&\xf0\
275 | \xe6\xa6& \xff\xfeR\x0b?%\xda\xffGF\xf6i\
276 | O\x1b\xb2\xfd\x7fz~\xaa\xaa\xf43\x07?v\xd9\xe8\
277 | `4tx\x08\x8a\xfc\xf8\x00\xca\xfa\x8d\xa9P\xee\x8b\
278 | \x89u\x84\xdf\xc8$\xb4\xab\x0a\xe3|+\x9e\xefG`\
279 | \xb9\x079\xe9\xd4\xb4\xa1\xe0\x87\x9f_\x91-\xd9\xdc^\
280 | \x9d\xfa\x00\xf4\xd6\xe1\x05)(+\xa07rj`\x85\
281 | Z7rF\xaf$\x06\xd7\x95u\x06!&ptf\
282 | \x22\x7f\xb3\x0e\xd4\x9a\xdc6i\xa4v\xfe\xef&\xb5\xf0\
283 | S\xe2\xda\xdf\xfc\xe6\x0d\x1d\xd8k\x06\xbc\xbe\x0a\xfbc\
284 | \xb5\xeb\xf50\x07\xbf\x96\x12\x81B\x06\x0dE\xc1k\xdf\
285 | C\x99?\x15V^\xeeK0f\xff\x0541\xa8r\
286 | 6\xc0{\x19#P3\x17\x07\xd4\xcc\xcd\x01\xadO\x0f\
287 | \x15\xeci\xa9\xe5\xb6\xbaySc\x17\x80\xdf\x12\xd8\xbd\
288 | \xb5\x10+\x80\x98F]\x89\x0d@\xfd\x81\x9bu\xa0\x06\
289 | \xc9\xbch\x83\xf2\xff\x01]\x8c\x8dd\x8a72Bi\
290 | \xa9\xef\x8d>B\xce\x1e\xf8y\x1f\xe5\x8cT\xc7\x0c\xf2\
291 | E\xfe\xb3\x97\xa3\xf4o\xee?\x97\xdc\x17\x13\xdb\x0b\x83\
292 | \xa2`]\xae|\x9f\xf7\xd3I\xb1\xa8UC'\xd4\xbb\
293 | \x95\xa70\xdfK-\xa7\xb5\xa1\x07\xc0&\x00[\x00\xe2\
294 | \x98o\xa4\x84J.\xdb\x15\xce\xffS\x13\xd4\xb0\x97\xe8\
295 | \x96\x81\xef\x1f\x12\xe2\xff\xde\x8d!\xfe\x7f\x5cj\xa1/\
296 | \x01X\x03\xfc\xb4gsw\xdaPm\x80\xb3\xf9i\xea\
297 | \x9c\xa0!*\xbf\xcc\xc9(\xe5\xd6O/&\xf7%8\
298 | r\xe7I45th\xb9\xe3kR`?dom\
299 | !\xcc\x8b/\xe3\xbc\xafS\x07\xac\xc3\xaf\x1b\xc6\xa3 \
300 | l\x07\xf4i\xe1a\xa8k\x86\xe2Z &\xec\xe1\xaa\
301 | \x0bk\x81\x9b\xc6F(\x0cl\xfd_\x8b\xb62\x99\xec\
302 | \xfe\xccH\x9f\x22C\x8a\xa1\x5cY\x96\x89\x16b\x1f\x7f\
303 | \xc8\xe8d!w\xa72\xb1\xbd\xaa\x91A\x83\xc3c\xf0\
304 | \x1c\xaf\xdb\x06\x00\xdb\xb7G3wa\x9d\xbd\xae\xfb\xf9\
305 | \xcfc\x07\xec\x9d\x9b(\xack\xbc\x93\x1e.\xb5\xac\xeb\
306 | \x94{\xa83$\xac\xff\x19\xf8\xbc\xaf\x19\xcb|\x8b\x86\
307 | \x8e0\xf7\x9f\xa7\xc4\xb3\xab\x0d\x0d\x19\x96f&\x8a\xb7\
308 | \xb2\xc2\xe4R\xeb\x80\x1b\x05\xd9hCZ\x04\x1a\x1e\x16\
309 | \x85F\xee8^\x03r\xff\x94\xd1\xdb\x8e\xa2\x19\xe1\xfe\
310 | :\xc7\xda\xee\x89\xb1BN\xde\xf2\xa4\x80\x1a\x9771\
311 | \x0e\xf7t\xcdN\x1f\xe1=\xb75\xef\xaf\xf1>\xe1\xef\
312 | \x82\x1c\x86\xd9a>R\xcb|\xb1\xdc\x1f\x99\x91\xa8<\
313 | =/E\x055\x85\xea\xca\x9a\x1f\xe4\xffG\xf4n\x0b\
314 | {\x81\xa1V`G\xa9\x05]\x0fL0Wa\x9fO\
315 | \xf1Nv\xb8$:\x00\xeaZ~\x98\x17\x83\xc2\x02\x02\
316 | Q\xf8\x1b[P\xd6/\x8a\x1a\x93\xfb\xa7q\x00\x05\x1a\
317 | \x1c\x12\x85\xf6N\x8e+3\xe6v\x8c\x8f\x11\xe6\xbf7\
318 | s#\xaaE\x96nkl\x88\xcb\xabr\xd1\xb1Ei\
319 | h\xcb\xb4X\xf4z\xce\x08a-aj\xa4\x0fJ\xf3\
320 | \xef\x81\xc6\xf8vA\xd1\xd8\xde\x08\xed\xd5\x16\x05\xf7h\
321 | \x8dB0\xc3{\xb7\x13l\x10hK\x1e\xd2\x1dM\x08\
322 | \x1b\x80f\x8f\x1a\x8cV\xa7\x06\xa3\xb7\xc6F\xa2m\xd3\
323 | \xc7\xa0#\x0bS\xd1\xc5\x82\x1c\xc1G\xb9\xad\xcd+z\
324 | \xc1\xb5\xc8\xcf^\x99\x88\xba\xb7pG\xe3\x87\xf7\x91L\
325 | \xe6a\x9e?6+Iuv~\xaa\xea\xca\x92\x0c\x15\
326 | \xec\x09\x96z~\xaa\x0a\xef\xac\xcaQf\x0e\xed\xf1\x04\
327 | \xcb\x16\xd4\x03\x89\x91X\xc6+\x02\xd8%\x05v\x96\xe6\
328 | \xf2\x95\x09\xc3\x8bn\xaf\xac\x9dx*\xc8\xfd\xbe\x99\x89\
329 | (v\xf8P\x14\xb8x=\xca\xf8\xfe\xbf\x9a\x97\xfb\x12\
330 | \x8c\xfch?\x9a\x131\xac\xcc\xf8\x83\xfd6\xce\x0d\xac\
331 | \xd0\xfa\x8c\x90\xe7\x9a\xcb/\xaf\xcaA;g\xc6\xa1\x15\
332 | \xd8~H\x1f\xd6\x13\xf9wi\x89\xda\xb8\xbb g[\
333 | k\xd4\xc0\xd2\x02YYX g'G\xd4\xaae\x0b\
334 | \xd4\xa7wo\x148l\x18\x8a\x8e\x8aB\x09c\xc6\xa0\
335 | \x8c\xd4\x14\x94\x9d\x91\x8e\xb2\xd2\xd3QZJ2\x8a\x8b\
336 | \x8dE#\xa3\xa3QHP \x1a8`\x00\xea\xd6\xa5\
337 | 3\xf2j\xd2\x049\xda\xdb#+\xfcY\xf0y\x8e\xb8\
338 | \xafM\x5c\xec\x85Xe\x18\xd6\x19y!\xfd\xd0\xca\xe4\
339 | \xb4cF\x1c\xbaP\x90]\xac\x87\xaar-\xb0\xe6\
340 | 1\xabf\xe7\xff\x92{:\x84\x9a\x81PK\xf5\xdc\xc2\
341 | 4\x1e\xea.__\x91\xa5\xae+\xf3|\x99q\xbd2\
342 | [\x19?\xb0\xd3\x13\x19E\xc1\xde\xbfL\xa9\x85\xbb\x92\
343 | 0\xc5\x9cdfb\xfc_\xa6\x7f\x8f\x22\xf0[j\xfa\
344 | >\x9dZ\x90\x8a|\x07\x0eF\xa9\x9f\xff^\xabr_\
345 | \xcc_i44(\x02\xed+e\x03@n\x11\xc4\xfe\
346 | \xa7F\x0c,WF\xc0.\xbf\xbev\x1c:8?Y\
347 | \xc8\xf3\x8d\xf7\xeb\x8a\xbaz7\x12l\x87\x06\xd6V\xc8\
348 | \xd3\xc3\x03\x0d\x1d2\x18egf\xa0\xf5\xeb\xd6\xa2\xfd\
349 | {\xf7\xa2\xbbwn\xa3\x7f\xfe\xfe\x1b\xc9\xe5r\xc4\xb2\
350 | ,R*\x95H\xadV\x0bDz\xa8mW\xa9T\x88\
351 | \xe7y\xc4\xd04\x92\x17\x15\xe1\xcf\xf9\x0b}\xf5\xc5\xe7\
352 | \xe8\xc4\xb1c\xe8\x83\xf77\xa1\x05\xf3\xe7\xa1\xc4\xf8x\
353 | \xe4\x83\xf5\x84\xa7\xbb;\xb2\xb5\xb1A6\x16\xe6\xa8U\
354 | cgamoj\x84\x0fz7/\x0a\x9d^\x9aQ\
355 | \xdc\x7f]\xd7u\x18\xdb\x14\xb0\x0e\x08y\xc25$\xf3\
356 | B\xddp\xa8\xbdx1?]ymi&\xcc\xefB\
357 | \x1d\xf5\xba4\xc7\xeb\xe2\xf9\xc5\xe9\xcc\xa0\xf6\xcd\xb46\
358 | \x7f\xac\xc42]U@^\xc00\xfc\xbf/\xe1\xac\x83\
359 | \x1dSb\xe8\x9a\xae\xfd\xb5$.\x04Em>(\x8d\
360 | \xfcc\x8exo7Z\x10\x1dPf\xac\xfawh\x8e\
361 | \x02\xba\xb5Bw^\x99\xf0\xcc\xfc\x0e9\xfc\xbbf\xc5\
362 | \xa3\xb9\xd8\x0e\x07\x99\x82y\xd7\x1a\xcbX\xa3\x86n(\
363 | (0\x00-\xc42x`\xdf>\xf4\xfdw\xdf\x0a2\
364 | \xaa\xc2\xf2-\xc8q-\x01\xf4\x04\xe8\x14\xf8\xee_~\
365 | \xfa\x09\x9d:q\x02m\xdc\xb0\x1e\xa5c\xbb\xa2{\xd7\
366 | .\xc8\xc1^\xdc/\x04\xfb\x90F\x0d\xe8\x84m\x94@\
367 | A\xdeo\xac\xcd+\x8e-\xcc\x88\xf2\x13\xf6\x0b\xec\xad\
368 | \xbe\xbc`\xc1\x9e?\x8e\xe7\xf7\x0b\x8b\xd2\x85s\x14n\
369 | \x16d\xa9o\xd7\x81\xf8]e\x09\xe7\x0do\x1a\x1bQ\
370 | \xd8\xc4\xd9\x0eb}pV\x90!\xe4\xf9>/\x1aa\
371 | \xbe\xd1\xc0\xc2\xec\x11\xd41:\x9f\x9f\xc6\xd6\x94\x1e\xb8\
372 | \xb6<\x0b\xcbM\xc83{\xf5j\xd7\x06\x90#\xff\xe1\
373 | \xa1\xc2\xbe\xd9\x92c\x16\xf6\xd5\xba\xd9\xdb\x08\xfe\xf5\xbb\
374 | y\xd1hBh\x7f4\xb0}3\xc1\x86\xb707G\
375 | m\xdb\xb4A)\xc9I\xe8\xbdw\xdfA_|\xfe\xb9\
376 | 0'\xabkQ\xce\x9f\x07\xd0\xbf\xff\xfe}\x88._\
377 | \xba\x88\xd6\xacZ\x85\xa2##\x05_\xc2\xcc\xd4\x04y\
378 | 7tD1X\x1f\x80\xcf\xe3\xe9l\x8f\x92\x07v\xad\
379 | \x1e\xb9\x9f\x9e\x00uV\xc5\xfa\xbfu\xd4\x9e/\x8f`\
380 | \xaf\x5cX\x92\xc1\xc4\x0f\xec\xfc\xc4\xd4\xd8\x08d\xff\x0d\
381 | J\xcc\xaf\xad\xeb\x80:\xe6>\x98\xa7<\x9cl\x0bg\
382 | G\xfa\x16Bm\xc3\x9a\xd0\x03\x1f\xe4\xc5\xa0\x80Ek\
383 | %\xb3\x01\xc2\xde\xdc\x8a\xf2G\x05\x0ac\x16\xd6\xfe>\
384 | \xc9\x8dF\xb1};!|\xed\xc8\xca\xdc\x0c998\
385 | \xa0\x9e\xdd\xbb\xa3\x89\xe3\xf3\xd0\x8em\xdb\xd0\x8f\xdf\x7f\
386 | \x8fX\x861xy\xaf\x08\xd0\x7f\xb0\x13>\xbf{\x17\
387 | \xbd\xb2~\x1d\x0a\x0d\x0eF.\xce\xce\xc8\xd8\xc8\x08\xe5\
388 | \x0e\xed\x85v\x8e\x8fy\x9e\x5c`a\xae\x17\xce\x05\x9a\
389 | \x9f\xaa\xbc\xbe,Ku\xbb\x0e\xed\xd3\xab\x8a\xdc\xdf\x5c\
390 | \x99\xc3/\x1b3\xf4\x89\x9b\x9d5\xc8\xfd\x1d\xcc@\xca\
391 | \xb0k\xfd=\x0f\xe0\x1c\x80\x91\x98W\x9b\xb9\xd8\x17\xce\
392 | \x8d\xf6-\xba\xb0\xb8z\xed\x01\x88\x03&\x05\xfa\xa3\xe4\
393 | \x1b?H\x22\xff\x90K<\xcc?\x08\xbd\x9d\x16.\xec\
394 | \x9b\x07\xdf\xb7YS/\xb4|\xe9Rt\xe3\xfa5t\
395 | \xef\x9f\x7f\x04\xdf\xfbe\x07\xe8\x83\xfb\xf7\xee\xa1w\xdf\
396 | y\x1b\xf5\xe9\xd5\x0b\xb9\xda\xda\xa0\xe8^\xed\xd1[i\
397 | a\xba\xf2\x815\xf5\xfa\x9e\x9e\x8btlf\xa2\xfa\xd4\
398 | <\x88\xd7g\xaan\x14d\xd7\xd9\xf8]Er\x7f{\
399 | U.\xbf15\xa8\xa8\xad\xbb3\xc4\xf7~\xc3\x9c\x8c\
400 | i-\xa9\x94\xd6<\xe0\xec\x1f8\xdf\xe4\x9c\xbb\xa3\xed\
401 | \x93\x09A}\x8a\x8e\xceMd\xaa+^st^\x0a\
402 | \x1a\x92:N2\x1b p\xfd\x07\xc8\xa1\x81=\x1e\xf7\
403 | =\xd1'\x1f\x7f\x84\x8a\x0a\x0bk\xd5o74p\x1c\
404 | \x87\xae]\xb9,\xc4\x0d\x1a\xb9\xba\xa0\xbe-<\xd1\xb2\
405 | \x91C\xd5\xfb&\xc5\x09\xb2~xF\xa2\x0a\xce$\x83\
406 | \xb3\xca.,JSA\x0c\xefF\x81\x18\xb3\x7f\xd9\xe6\
407 | \xfb\x9b\xa2\xdc\xa3\xeb+\xb2\xb8\x82\xf8a\x85\x1d\x9b\xb8\
408 | \xc19\xa0\x7faYXH\x19N>\x7fm\x01\xec\x81\
409 | \xe1\x98;\x1dl,\xefG\xf6j[\xb4y|\xb4p\
410 | \xee\xf7\x8b\xea\x829#\x03Q\xcc\xa7g$\x91\xff\xf4\
411 | \x1f\x9f\xa0\xa0\xe8\x04\xa4\x90\xcb\xa5\x16=\x83\x02\xd8\x04\
412 | \xbf\xff\xfa+\xb6\x85\x96\xa0\x96\xcd\xbdQ\xeb\xc6.\xea\
413 | \xb9\x91\xbe\xea\xf3\xf9i\xea\x9b/\xa1\xac?\xc3\x82\x1c\
414 | \xf4\xd9\xea\xb1\xaa\x13\xf3\x93\xe9\xc9\xa1\xfd\x9e\xc0\xb9W\
415 | \xd8\xb8\xff\x16\x8f\xfd\xe9\x98\x0d\xa5\x15C\xc9\x01yC\
416 | \x90\xd3\xb4\xd2\xdc\xd4\xe4\xdb\x1e\xde\x8d\x9f,\x19=T\
417 | .\xc4\x0aW?\x9f\x1e\x80\xbc\xdfa!#P\xe6\xcf\
418 | \xcf\xb7\xb7\xefE\x19\xba\xe1Ct\xf6\xccy\xa9E\xce\
419 | @\xa1FEE\x85\x82m\xd4\xbbgO\xd4\xcc\xcd\x11\
420 | M\x0f\x1f\x80\xce,L\x95^N\xab\x91\xda5H\xf0\
421 | q7\xa6\x05\x17\x0e\xed\xe4]dmn\x0ay<\xb0\
422 | w\x07\xec\xdf\x06\x92J\x9da\x02l\xa0x\xcccn\
423 | v6\x0fb\x07t,\xda2q\xa4\x02j7W\xd5\
424 | &x3;\x1a\x05\xafzK\x1a?\xe0\xc7\xc7(1\
425 | sB\xbd\xf0\xf5K\x03\xae\xb9\xb2\xf1L\x9aV\xa0\x83\
426 | \x07\xf6\xa1\xa1\x83\x07\xa1&\xae\x0ehJh\x7ftv\
427 | Q\xdd\xd4\x03\x10\xc7\xba\xbb*W\x05g\xde\xec\x9f\x19\
428 | G/\x8f\xf3/\x0a\xec\xd2\xaa\xd0\xa9\x81%\xac\xe1\x7f\
429 | \x81\xb9\x84\x12\xe79#)\x05\xac\x8e\x00l\x82\x0e\x98\
430 | \xf3\xcdL\x8c\xeevk\xd6\xe8\xc9\xbch\xbf\xa2S\x0b\
431 | S*]\xa3\x05b\x81\xb1\xc3\xfdQ\xeag\xbfI\xa2\
432 | \x03\x82\x0a\xdeD\xd7\xae^\xafai3,\x80\xdc+\
433 | \xe4\x0c\x92cr,Wi=\xc0\xf3\x1c:y\xfc\x18\
434 | \x1a2\xc8\x0fy\xb98\xc0\x1ewt\x19r\x8b\x0c@\
435 | \xae5s\xb90\x9fC\x8d\x1b8\xa7\x16\xce\xb2\xbb\xba\
436 | <\x93;>/\x89\xde19\x86\xc6\xf3\xbb|bp\
437 | \xdf'\x01]Z\xc8[6t*\xb443\xf9\x03\x8f\
438 | \xdd3\x98\xf9\x98=)\xc3\xdc\xafSW\x00\xf1P\xa8\
439 | u\xf4\xa6\xbd\x95\xc5\xaf\x01][\xca\xdf\xcc\x0a\x13\xe2\
440 | \x04w*\xc8\xf3:0+\x09\x0d\xc9\x9d&\x8d\xfc\xaf\
441 | |\x0b}\xf6\xd9\x175,q\x86\x07\x90\xe5\xc2\x22\x06\
442 | \x15\xcaY\xa4P\xd0H\xc9\xf3\x95\xd6\x03\x1c\xc7\xa2C\
443 | \x07\xf6c\xbf\xa0\x07j\xef\xe9\x86^K\x0f\x81XY\
444 | \xcd\xca\xf6J\xf1\x8c\x1d\xb01/`\x9f\xf3\xf0\xec\x84\
445 | \xa2\x8f\xc7G\x17\xc1y\xdc\x10\xa3[0j\xd0\xe3\x09\
446 | !}\x0b\xe3}:\x17\x05wk]\xd8\xaf\x8dga\
447 | [\x0f\x17\x85\x9b\xbdu\x91\xad\xa5\xf9}3c\xa3\x9f\
448 | \xf1\xd8\xbc\x89\xf91\xe6L\xcc`L\x0fJ\x9c\xc3\x08\
449 | \xaa\x0f\xb0\x1e\xea\x86\x19kb,\xdb\xd7\xcc\xcd\xe1\xc1\
450 | \xd8\x80\xde\xf2C\xb3\xcb_;\x98\x98s,LM\
475 | Ny:\xd9\xfd>\xa8}\xb3'y\x81\xbd\xe5\xbd{\
476 | \xf4U\xa6\xfd\xdf=\xf5\x0b\xc9\xf6\x1f\x5c\xa5\xde\xe7?\
477 | i\x01\xfa\xf7\xe1\xbf5,]u\x03\xa0\x03\x8a@\x07\
478 | `\xd9/\x04\x9f@x\xa5\x05\x9f@]\x85\xf5\x91\x9f\
479 | \x7f\xfc\x11\xf9\xf9\xf8 \x9f\xb6^\xe8\xcc\xc2\x94*\xcd\
480 | \xf7\xb0\x8fv\xd7\x94\xd1E\xa3\x07t,t\xb0\xb2(\
481 | \xc2\xe3\xe3.\xe6D\xcc&\x14\x99\xdb_V\xc0\xbe\x03\
482 | \x17\xccA\x98s-\xcd\xadv\xf4\xcf\x9b\xcba\x19\xae\
483 | \xba\x0e\xf8U\x81B\xd6\x7f\x80\xba\x06\xc5\xa0\x1e\x11\x89\
484 | (z\xcba\xfd5\x85~cPJ\xee\x94:\x9f\xd3\
485 | _\x9dPiu\x00\xd8\x00\x0aN\xd4\x01\x98\xe0\x13\xf0\
486 | \x5c\xe5}\x82\xc7\x8f\x1e\xa1\x91Q\x91\xa8Gswt\
487 | jAr\xb92\x0fv\xdf\xd9\xfcTf]r`\xd1\
488 | \xb0\xce-\x0a\xed\xac,\xa0f\xee5\xcct\xcd\xb8 \
489 | \xa8_\x905\xf1h\xbb~\xcc\xf9/\xd9\xaa\xca\xbf\xef\
490 | \xd8Y\xc8\xb3Q\x0b\xd4\xa6U\x17\xd4\xd2\xbb#\xf2l\
491 | \xdc\x12\xeb\x83\xf7u\xbe7\xe1\xec\x17\xe8\xf5W\xdf\xaa\
492 | a\x89\xaa{\x10t\x80\xbc\x84\x0e\x90\xb3\x1a\x9f\x80A\
493 | t\x15\xe2\x83\x90;\x14?&\x16um\xd6\x08\x9d^\
494 | \x98\x5c\xbc\xd7\x1f\xe6\xf8+\xcb2\xb8\xfd3\xe2\x14\xcb\
495 | \xc6\x0c-\x8a\xe8\xd5\xb6\xd0\xc3\xc9\xf6?\x13#\x19\xc4\
496 | \xf0\xde\xc1\x1c\x86i/\xf1\x18$\x90\x10\x1e\xb6\x1e\x8e\
497 | ]\xc2\x13~\xc1s\xb7\xaa\xb2\xb2\x1f\x7f\xfa\xae \xfb\
498 | \x19i\xb9\xe8\xf1\xe3\xc7\xe8\xef\xbf\xfeFC\x07\x07#\
499 | \xef\xe6\x9dQ\xc6\xff\x1e\x96y\x7f\xe0\xb2\xd7\xd0\xd7_\
500 | \x7fS\xc3\xd2T7\xf1\x8c\x0e\xc0\xf2\x0fz\xe0\x89\xd6\
501 | \x16\x10\xe3\x02\xea\xca\xd8\x02\xb4B\x81\xe2\xe3\xe2\xd4-\
502 | \x1a:)c\xfau\x94\x87\xf4h\xad\xe8\xd5\xd2\xe3I\
503 | SW\xfb\x87\x16f\xc6\xbf\xc9d\xd4\x15\xfc\xb8_\xc7\
504 | \x0c\xa5\xc4=\xe8d-\x8e@\x80\xa7\x9bwj\xd8\xfb\
505 | {\x99\xca\xca\x7f\xf8\x9b\xdb\x84\xf9~\xe7\x8eO\x8b\xc7\
506 | \xdf\xc2\x05K\x85\xdf\xc5\x9d\xbc\xfd\xcc{a\xdd/$\
507 | \xbd~\xe6\xfdU\x16BLP\x8c\x03\xa8\x05;\x00\xd6\
508 | \x08\x15\x9c\xfa\xbf\xc7r\xf5\xa3BZ\x8d\xf5\x80\xb22\
509 | J@.\x97\xabG\x8d\x1a\xc5\xe1G\xfa\x80\x12\xd7\xe4\
510 | \x221\xfba6\xa5\xc4=f\xc4\xaf'\xd0\x05\xd3V\
511 | \xdd}\xcfg\xfc\xf0\x98\xaf\x8c\xfc'h\xe6\xff\xcc\xf4\
512 | \xb1\xe2\xfc\xff\xf7?%\xe6\xff\x07\xcf\xbc7\xfd\xab\xbf\
513 | \xd1\x9c9\xf9\xb5!Fu\x1a<\xc7\xa1\xc7X\xfe\x1f\
514 | >*R\x17\xd1\xbc\xa0\x074\xaf,~e\x18NE\
515 | c\x05\xa0\xac\xe8s\x14\x0a\x852,,\x0c\xce\xc3\xd9\
516 | C\x89\xebt\x04\x04\x15\xc2\xcd\xc9}p\xffq\xb3\x95\
517 | \x19?>\xa9\x94\x0d\xe0\x933C\xf4\xff[vF-\
518 | \x9au\x10\xfd\xffu\x9b\xca\xbc/\xf2\xc3}\xe8\xd8\x91\
519 | \xe3\xb5!Bu\x1a0\xbd\xf3\xbc\x92\xc7\xb2\xcea\xd2\
520 | Z\x1d \xea\x01\x0e~O+X%\xa3R\xab\xf9\x8a\
521 | >\xab\xa8\xa8H\xe9\xe7\xe7\x07u3>\xa2\xc4\xda\x93\
522 | \x04\x04\xe5\x01\xe6\x89\xdd\xadZ\xb6\xe5\xc6\xa4\xe5\xa9\x83\
523 | V\xbc\x81\xd2\xbf\xfe\xa7\xfc3\x02~\xa5\x85\xf8\x7f\xf7\
524 | \xa0\x18\xd43\x22\x11u\xe8\xeb\x8f\xb2~)zj\xf7\
525 | \xff\xce\xa0\xe8\xadGPDR\x0ez\xf4\xe8qm\x88\
526 | \xd0K\x01\xa5J\x0d\xf3='/\xa5\x030U\xf8w\
527 | \x0a9\xa3d\xb1\x0e`+\xfa\x9c\x07\x0f\x1e\xf0]\xbb\
528 | v\x05;`9E\xec~\x02\xfd0\xc3\xfc\xd8\xd3\xd3\
529 | \x93\xfd\xfa\xeb\xafY\xf0\xd3o\xdd\xbc\x8d&L\x9e\x8d\
530 | \x86M\xcbG\xc9\xd7\xbe+W\x0f\x80\x7f\x0f\xf4\x9b8\
531 | \x0f\xcf\xf5{\x11\x9c\xff\x13\xb3\xfb\x14\x0aM\xcdC[\
532 | ?\xd9.\xaci\x13T\x09j\xac\x03h\x90s,\xff\
533 | l\x09\xf9\x07\x7f@\x05v\x80\x9c\xe1\xf1sRW\x98\
534 | H\xfd\xd3O?qM\x9a4\x01; \xbb\x9c\xe7\x0f\
535 | q@\x88\x07\xc2\xde\xb2\xa6\x98\x165?\xe4\x08\x0c\x04\
536 | \xb0\xefr\x9d\xb3\xb33w\xf7\xee\xdd2s\xca/\xbf\
537 | \xfc\x8a\x96.Y\x89\x86gOC\xb1\x07.\xa1\xecr\
538 | \xf4@\xf2\xb5oQ'\x9f \x14\x92>\x11}\xf8\xfe\
539 | fD+\xe8\x9a\x91\x8e\xfa\x015\xc7\xab`\xfe\x17l\
540 | \x81\x92:\x00S\x8d\xfd\x01Z\xb4\x03P\x85v\xc0\x8d\
541 | \x1b7X;;;\xd8c?\xa4\xd4\xb3\x87\x1c\xd1\x14\
542 | c\x99\xecjC\xfb\x06\x85\x1d<]\x8b\x9a\xb8\xd8\xcb\
543 | \xcdML`mp\x0e\xa6Cm\x0fF\x82Z\xc7D\
544 | \x1b\x1b\x1b\xf6\xf4\xe9\xd30I\xeb\x8d/?~\xfc\x04\
545 | \xbd\xf7\xce\x07hD\xfa\x04\x14\xb1i7\xca\xd2\xd6\x10\
546 | \xf9\x8d\x15tB\xec\xe1\xcb(8c\x12\x1a\xe2\x17\x88\
547 | \xae\x5c\xbeV\xad\x82P_\x01\xc7\x12\xb0\xbcJ\x01\xb1\
548 | ?\xb0\xfd\xcb\xea\x00\xd1\x0e\xc0\xef\xab\xc8\x0ePo\xdb\
549 | \xb6\x8d611\xf9\x9d\x12\xe7w@w\x13c\xd9\x0d\
550 | \xff\x8e\xcd\xe9O\xc6G17\x0b\xb2\x94wWe\xab\
551 | o\xaf\xccV\xed\x9f9\x86\x1d\xd5\xb7\x1dmfb\xf4\
552 | ?J\xcc\x13#x9\x11\x80\xc7\x84\xe2\xe3\x8f?\x86\
553 | \x89\xbaR\xc9f\x0c\xc3\xa0\xc3\x07\x8f\xa2\x84\xcc\x09\x08\
554 | b\x04\xb1\x07.\xa2\x00,\xf7\x90\xdb\xf3\xe4\xc9\x13t\
555 | \xec\xe8\x094m\xcal\x92\xe7W}P\xd2\xac\x92\x01\
556 | \xbf\x1fd\xbe\x8c\x0ePpBLP]AL\x10\xd6\
557 | \x0eg\xcd\x9a\xa5='\xd3\xdf\xd1\xc6\xf2\xfek\xe9\xc1\
558 | \x8cF\xe6Qi\xc2\xef\xdf\xcf\x1d\xc1\xd8Y[\xdc\xc3\
559 | \xefo/\xf18%\xa8~4\xc7\xfcc\xc6\x8c\x194\
560 | \xf6\xf7\xab,\xac \xdf\xb7n\xde\x11l\x82\x92\xb1=\
561 | \xc8Y\x1b\xe2\x17\x84\x8a\x0a\x8b\x9ec\xa8\x13\xe8\x02\xf8\
562 | \xf9\x9a5\x01\xa6\x94\xfc\x17\xc7\x03hQ\x07\x94\xbb6\
563 | \xc8\xb2\xacj\xc8\x90!\xb4\xb1\x91L\xfevV(s\
564 | G\x8f\xec\x17\xeb\x80\xd5\xd9\xeaY\x11\x03!~\xf8\xb6\
565 | \xd4\x83\x95\xa0Z\x01\xf1\xbe3x,\xe0\xe9\x9c\xa9\xf6\
566 | \xa4\x9c\xb9\xb3\x17\xa1\xc3\x87\x8eV\xf7\xc7\xd6g\xa89\
567 | \xa5\x18\x0b\xc02\xaf\xd4\xa1\x03\x94b~\x80\x92\xae(\
568 | G\xe8\xe7\x9f\x7f\xe6<\xdc\xdd\xd9WS\x83\xe8\xf2d\
569 | _\xcb\xa3s\x128\x0b3\x138o\x87\xd4\xeayy\
570 | 0\xdb\xcd\xcd\x8d\x83\xd8pM\x0c\xd6\xf3\xe7.\xa2I\
571 | \x13\xa6\xd7\xc4G\xd7g\xa8`\x8e\x87\xb9^\x87\x1f\x80\
572 | 4\xf6\x01\x0b1CT\x81/\xb7o\xdf>\xba\xb1\x83\
573 | -{fa\x0a_\x91\xfc_^\x9a\xaetn`\xf5\
574 | 7\x1e3\x8eR\x0fZ\x82jA'\x99L\xf6x\xeb\
575 | \xd6\xad\x95\xf6\xf9\xab\x0a\x9a\xa6\x91\xff\xe0`!V@\
576 | P}\x00?@X\x13Tpli\xf9\xd7\xe8\x00\xd0\
577 | \x0f\x1c\xf6\xe6\xca\xbd\xf1`#\xa4\xa6\xa6\xd2\xc1\xdd[\
578 | \xd1\xfa\xfc\x7f-O\xccK\xe4\xad\xccM\x7f\xa0^\xfe\
579 | \xf37\xea\x03`\x9d\xf7Txx8\xf3<>\x7fU\
580 | \x90\x9e\x9a\x8b>\xaf\x87u\xfej\x18\xda5A]\xeb\
581 | \x01B\xae\xb0\x10\x0fd \x16\x80\xca\x8d\x07\xde\xbbw\
582 | \x8fo\xd6\xd4\x8b}%5\x88\xd1'\xfb\x10\x1fX4\
583 | r\x10\xf8\xff[\xa5\x1e\xb8\x04\xd5\x82x[[[\xee\
584 | \xbb\xef\xbe\xab\xf1\x02|\x9b\xde\xfb\x10\xbd\xf5\xc6\xbb5\
585 | \xfd5\xf5\x0e\x90\xff\xaf\xd0\xf8\x01\xa5r\x03\x9f\x89\x07\
586 | \xc2^\x01T\x81}\xb7}\xfbv\xba\xa9\xab={y\
587 | I\xbaR\x97\xfc_Z\x9a\xa6l\xe2,\xe4\x0d\xf4\x95\
588 | z\xe0\x12\xbc0`\xef\xd7\xb7s\xe7\xce\xad1\xbb\xbf\
589 | $\xbe\xf8\xe2+l\x03\xe4\xd4\xf4\xd7\xd4K@n\xa0\
590 | &/\x88\xd7\xe3\x07@\xee0\xcb+U\xe5\xfa\x01<\
591 | \xcf\xab\x02\x02\x02\x98\xdc\xe1\xbd\xe8\xcfV?\xeb\x07\xdc\
592 | ]\x9d\xa3\x9e\x12\xda\x0f\xd6\x0b7Q$w\xf8e@\
593 | ^\xe3\xc6\x8d\xb9\x7f\xff\xfd\xb7\xc2\xbd#\xd5\x01\xb9\x5c\
594 | \x81\xfc\x87\x84\x08\xf5.\x09\xaa\x1d*\x9a\x13\xfc\x00}\
595 | 6\x80Z\xb3W\x88\xc5\x8a\xbe\xdc\xe7\x0d9\x9f\x0d\x1d\
596 | \xed\xd9\xe3s\x13\xb9g\xd7\xffsT\x9d\x9a\xb8A-\
597 | \xc0\x9eR\x0f\x5c\x82\x17\x86-\xe6\x0f+W\xae,7\
598 | \xc7\xaf\xba\x11\x1b\x93\x84~\xfa\xe9\x97\xda\xfa\xbaz\x05\
599 | \xd8#$\xd7\x9d\x1b\xfc\xd4\x0fPp\x0c\xcb)+\xb2\
600 | \xf7\xd4\xc9\xc9\xc9tl\xff\x0e\xf4\xddgl\x80,U\
601 | s7G\x90\xff\xd6R\x0f^\x82\x17F\x9a\x8b\x8bK\
602 | \xad\xcd\xfdZ,\xc9_\x81\x0e\x92z\xbf5\x055]\
603 | N\x1c@\xa3\x03Xa\x8f\x80\xaa\xfc\xbd\x82\xdf|\xf3\
604 | \x0d\xeb\xe6\xe4\xc0\x1e\x9d\x9dPl\x03|\x86\xed\x7fX\
605 | \x1f\xc0cg\x8a\xd4\x83\x97\xe0\x85\x00\xb9>\xb7!\xcf\
606 | \xaf\xb6\x06\xa6\x16\xbbw\xedEkVo\xa8\xed\xaf\xad\
607 | 7\xd0\xec\x13\x86\xb5@}q\x00\xc1\x0f\xa09%\xd8\
608 | }z\xf3\xbc`=011\x91I\x19\xd4\xf5\x19\x1b\
609 | `\xdf\xf4X\xce\xda\xc2\xecO<~<\xa5\x1e\xc4\x04\
610 | \xcf\x0d?KKK\xee\xdbo\xbf\xadp\x9fXu\x03\
611 | b\x80Y\x19\xe3j\xfbk\xeb\x13\xc4\x9c l\xe7\x97\
612 | c\x03@\xdd\x10\x16\xeb\x8arc\x817n\xdc`\x1a\
613 | ;\xd9\xb1\x97\x96\xa4\xf1\xb7J\xe4\xff\x8e\x0d\xe8\x056\
614 | \x00\xac\xff\x91Z\x81u\x13\x1f\x06\x05\x05\xd5\xf8z\xbf\
615 | .\xc0\xbe\x80\xe0\xc0HR\xf7\xaf\x06\x01r-\x17\xf3\
616 | \x01\xca\xe4\x05\x97\xd0\x01\x9a\x9c\x00\xb5\xde\x07\xa1T*\
617 | U}\xfb\xf6eV&\x0c{&\x1f\xe0\xfa\x8aL\xe5\
618 | \xc06B\xfd\x00\xa8\x15l+\xf5`&\xa8\x12\xe0\x0c\
619 | \xb6\x7fv\xee\xdc)I\x22\x1e\xcf\xf3h\xd8\xd0P\xc4\
620 | 0\xb5nz\xd4'\x14\xdb\x00\xfa\xe5\x9fSjl\x80\
621 | r}\xc0\x8d\x1b72\xbe\xed\x9a2\xe0\xfb\x97\xd4\x01\
622 | W\x97g(G\xf7\xef\x00\xfb\x81\xa1.\x00\xd4\x11!\
623 | u\x01\xea\x06\xe2 \xee\xf7\xf8\xf1\xe3Z\x8d\xfbi\x01\
624 | \xf3~\xe0\xf0\x11\xc2\xbe`\x82\x1a\x83vo\x10\xf8\x00\
625 | er\x02\x9f\xb1\x01\xd8\xf2\xe3\x00\xdf\x7f\xff=\xdb\xd8\
626 | \xd9\x81=\x9f\x9f\xc2\x95\xce\x05\x02_`\xfb\xa4\x91l\
627 | H\x8fV\xb4\x95\xb9PG`=%\xae\x0d\x1aK<\
628 | \xc6\x09t\x03r6\xf6&%%\xd5\xea\x9a_I\xc0\
629 | V\xb4\x88\xf0\xd1\xe8\x9f\x7f\xeeI\xf1\xf5\xf5\x06\xf8\xe1\
630 | r\x9a\xb5@\x9d\xfb\x024\xb5\xc4E\x1b@\xa9\xdf\x06\
631 | \x80|\xa0^\xbdz1\xebS\x02\xca\xcd\x09>5?\
632 | \x89\x9b\x12\xd2\x8fn\xe7\xe1\x22751\xfa\x12\x8f\xb3\
633 | \x95\x94X'\xc4\x8e\x22\xb9B\x86\x82\xc62\x99\xec\xe1\
634 | \xa1C\x87$\xdd\x843zT\x22\xfa\xfd\xb7?\xa4\xec\
635 | B}\x80\x9a-'\x1f\xe8\x99\xb5\x80\xf2m\x00\xf5\x82\
636 | \x05\x0b\xe8\x11=\xdb\x94\xf1\x01J\x12\xe2\x83wD\xaa\
637 | \xf6L\x1b\xcdN\x0e\xe9\xc7\xf4l\xde\x98\xb643\x81\
638 | \xb3\xc1\xf7aN\xa2D\xdb\x00\xea\x8b\x11} \x0dR\
639 | !\xdf\x0f\xdb\xde\x92&\xe0\x8d\x19\x9d\x8c~\xfd\xf57\
640 | )\xbbP/\x00q@MN\xb0\xde8`\xa1\xa28\
641 | \x0e\xa0wN\xb8v\xed\x1a\xeb\xe1b\xcf@\xdc\xefV\
642 | A\xc5\xf5\x01J\xda\x05\xe7\x17\xa5\xf2\xaf\xa7\x073I\
643 | ~\x9d\x99.^\x0d\x15\xb6\x96\xe6\x7fc\xe1?\x8a\xc7\
644 | b>%\x9e9\xe4E\x91\xda\xa2\xb5\x01\xd0\xb9\x07`\
645 | \x8f'\x92\xc8\xf6\xd7B\x98\xff\x7f'\xf3\x7fM\x03\xbb\
646 | ZJM\xbd`\xbdq@m\x1c\xa0\xbc\xbdApn\
647 | @\xcb\x96-\x99O&D\xb1\x95\x95}]\xb1\x02\xc8\
648 | \x1f>\x87\xf5\xc1\xa6\xdc\x11\xcc\xc4\xe0\xbe\xcc\xe0\x0e\xcd\
649 | \xe8F\x0e\x0d\x1eY\x98\x9a|\x85\xc7\xe6\x0e\xcci\x94\
650 | X\x8f\xb4!%\xe6\xa8\x10T\x1f\x1a\x19\x82\xed\x0f\x88\
651 | \x8a\x88E\xff\xfc\xfd\x8f\xd4\xdd\xa8\x0f\x80Z\xa1\xb4\x8e\
652 | 3\x03t\xd5\x09\xe1\xca9?@\x9d\x99\x99\xc9d\x0e\
653 | \xed^\xae\x0fP\x15b\xdb@\xc8'\xbcQ\x90\xa9<\
654 | 43\x8e[\x9f\x1c\xc0\xa4\x0d\xee\xca\xf4m\xe5\xc1\xb8\
655 | \xdaY\xffkb$\xbb\x85\xc7\xec\x87\x98c)q\xaf\
656 | \xa1\x13E\xfc\x86\x17A\x5c\xc3\x86\x0d%\x8b\xfb\x17\x0f\
657 | $<)\x85\x04F\xa2G\xff=\x92\xb2\x1b\xf5\x06\xaa\
658 | \xca\xf9\x00j\xd0\x11l96\xc0\xfe\xfd\xfb\x99v\x9e\
659 | \xae\xec\xe7\xabsU\xd5!\xff:m\x84U`#d\
660 | \xab\xaf-\xcfP\xee\x9b1\x86]\x950\x8cI\xf0\xe9\
661 | \xc4tm\xdaH\xeedc\xf9\xb7\xb1Lv\x89\x12\xd7\
662 | \x18b0[R\xc4o\xa8,@o\xeeJHH\x90\
663 | ,\xee\xaf\x85\xb0\xfe7,\x1c\xce\xa4\x94\xb2\x1b\xf5\x06\
664 | \x82\x0f \xca\x7f\xb9>\x00&+\xd4\x0d\xd7\xb37\x10\
665 | \xce\x0drqv\xe6\x22z\xb5\xa1wN\x1a\xc9\x80-\
666 | _Q\xad\xd0\x17\xa16\x9e\x086\x02\xa6\xea\xe2\xe24\
667 | ~\xeb\xc4hvv\xc4@&\xa0K\x0b\xa6\x89\xb3\xdd\
668 | #S\x13\xa3/\xf0\xb8~\x0f3\x91\x12\xf5\x019\xd3\
669 | L7\x5c\xb0\xed\xff\xf7\x9e={$\xb7\xfd!\xffg\
670 | \xb8\x7f\x18\xc9\xff\xa9=\xa8\x19\xae\xfc=AZ\x1b\x00\
671 | t\x04\xafT\xe9[\x0bT\x87\x86\x86B\xdd\x9f\xd3X\
672 | \xee\xeeto\xd6H\xbed\xf4`\xe6\xc2\xe2TN\xeb\
673 | \x13\xdc\xaa!]P\x9a\xf0}p6\xc1\xa1Yq\xec\
674 | \xb2\xd8!Lx\xcf\xd6tS\x17\xfb'\xb8_\xb7q\
675 | \xffVc\x0e\xa3H>RI\x8cptt\xe4@\x87\
676 | \xd7\xea\xc8\xd3\x01\xa8\x03\x18\x80\xe5\x9f\xd4\x00\xa8=\xf0\
677 | J\xc1\x07(7\x17H\x93\x13\xc8\x94\xb7\x16\xf8\xce;\
678 | \xef\x80\xfc\x1f\xa1\xc4s!\xfd17;b\xbb<\xa0\
679 | k\x0bzCJ s.?\x95\x13\xe2|\xabk\xce\
680 | .(i\x1fh\xff\xfd\xb9F\x1f\xec\x99>\x9a\x9d\x11\
681 | >\x80\xe9\xd3\xd2\x83\xb6\xb54\xff\x95\x12\xcf9\x0d\xc3\
682 | \xb4\x97P\xf6\x0c\x01\x9b@wW\xe6\xac\xf8\x9a\xc6\x83\
683 | \xfb\x0f\xd0\x88\xb0Q\xe4,\x90Z\x04\x9c\x03\xa2\xeb\xdc\
684 | @}k\x81*=k\x81?\xfc\xf0\x03gcc\xf3\
685 | \x80\x12\xe3\xf3Z\xb8a\xc6a~jke\xf1G\xef\
686 | \x16\x1e\xf4\xd8\xe1=\x198'\xe4\x02\xb6\xd9\x05\x9f^\
687 | \xa3\x0fj\xda>\xb8U\x90U\xec3\x9cY\x98\xcc\xad\
688 | \x183\x94\x19\xd8\xa6\x09cen\xfa#%\xc6\x0d\xba\
689 | R\xf5/7\x11\xf6g\xfc\xf4\xde{\xefIn\xfb\x03\
690 | \xbe\xfe\xea\xffPF\xdaX\xa9\xbbQ\xdf\xa0\xaeh?\
691 | @\xc9| F\xdc\x1b\x5cFAC.`\xff\xfe\xfd\
692 | a\xdf\xcf(=c\x0d\xe6Y\xc8\xf9\x9b/\xa3\xa8\xe3\
693 | X\x1f\xfc\xd5\xadY#E\xb2_\x17\x06\xec\x83\xa3s\
694 | \x12\xd8\x1bx\x9e\x86\xbabwV\xe5\xd4\x8a}\x00\xba\
695 | \xe0\xe4\xbc$njh?\xda\xdb\xd5\xa1P&\xa3\x8e\
696 | \xe3\xfe\x05R\xf5'V\xe0kmm\xcd\xd6T]\xff\
697 | \xaa\xe2\xf8\xb1\x93h\xe1\x82\xa5Rw\xa3\xde\x81\xe3U\
698 | \xfb\xc0\xf2b\x00H\xb3V\xc0\xea\xa9\x15\xac^\xba\
699 | t)\xc8\xffG\x95\x18wp\x86,\xf8\xe0\x03(1\
700 | \xf7o\xbb\x85\xa9\xc97\x9eN\xb6\x8f\x06wh\xc6\x8c\
701 | \x0f\xec\xc3@^\xd0\xf19\x09\x9cp\xce`\x0d\xfa\x0d\
702 | \x90\xb3\x04\x9f\x0d\xdf\xf3Jj \xd3\xd9\xab\xa1B&\
703 | \x93\x9d\xc1}\x1a\xac\xe9\xe7\xcb\x8c\x15\xfd\xfa\xf5ca\
704 | /g\xad\x0f:\x1dx\xff\xbd\x8f\xd0\xa6w?\x94\xba\
705 | \x1b\xf5\x0e\xc29\x01 \xdbz\xea\x82<[#\x8cg\
706 | 9=q@\xa8\x0dhll\xfc3\x1eW\x0d\x9ec\
707 | ,BN\x0f\xe4\xfb\x05c\xce\xc3\xdcmnj\xf2\xad\
708 | \xbb\xa3\xed\x7f\x03\xdbx1Y\xfe\xdd\x99u\xc9\x01\xcc\
709 | \xe1\xd9\xf1\xdc\x8d\x15\xa0\x13\xaa'\xd7\xa04\xb1\xed\xa1\
710 | \x82s\x0e[6r\x92\xe3>l\xd7\xf4\xe9e\x04\xd8\
711 | 8w\x97/_.\xf9\xba\x9f\x16\xf3\xe6,B'O\
712 | \x9e\x91\xba\x1b\xf5\x0e\xb0\xcf\x1f\xf6\xfbWb\x1d\x10\xf6\
713 | \x05\xe9\x8d\x03\xd24\xadj\xdd\xba5\xc4\x01\xfd\xaai\
714 | \x8cB\x0d\x91&\x94\x18O\x9c\x81\xb9\xcd\xc4H\xf6\xb5\
715 | \x87\xa3\xed#\xffN\xde\xcc\xecH\x1ff\xdf\x8cX\x16\
716 | \xcf\xdd\xaa\xea\xd6\x07`\x0fL\x0b\xebO7\xb04\xff\
717 | \x0b\x7fo2\xf5\xf2\xd9\x02\xedLMM\xe5\xb7o\xdf\
718 | 6\x98\xc56\xc8\xfd\xff\x99\xd4\xff\x94\x02j\x86Si\
719 | \xd7\x01\xca\xf5\x010\xf9\x22Z\xc9\xea\xc9\x07TO\x98\
720 | 0\x01|\x80u58nA'4\xc5\x8c\xc0\xdc\x80\
721 | \xf5\xc1\xe7M]\xed\x8b\xa0\xde\xc0\x9b\x99!\xcc\xa5%\
722 | \xe9|\xe9\xda\xe4\xcfK\x88O\x1e\x9c\x15\xc7vm\xda\
723 | \x10\xea\x9a\xbeO=\x9f]c\xa8\x18\x8fu5\x8bu\
724 | \xb6A,\xb6\xc1\xd9_C\x07\x07\x0b9\x00\x04\xb5\x0f\
725 | \xfeiM\x80\x8ab\x00j\xb1N\xb0J\xa7\xddx\xe6\
726 | \xcc\x19\x06\xfb\xcfp\xfegm\xe5\xdfA\xcc\xbe\x05%\
727 | \xd6\x199homqoX\xa7\xe6\xf4\x9a\xa4\xe1\x82\
728 | .\xa8\x8e\xb8\xc1\x8d\x15\x99\xca\xb8\x81\x1di\x99\x8c\x82\
729 | \x1cC\x8fZ\xba\xae\x9a\x04\xd82Grrr$\xdf\
730 | \xef\xa3\xc5\xf7\xdf\xfd\x80\xe2cS\xa5\xeeF\xbd\x05\xcc\
731 | \xe7\xe5\x9d\x11RJ\x070P\x1bD\xad\xc3\x07(,\
732 | ,Tzxx\xc0|\xd9C\xa2\xb1\x0d5\xac \x07\
733 | x\x97\xbd\xb5\xe5\x83\xc8\xdem\xe9O&D2wV\
734 | \xe6\xbcPn2\xe43\xce\x08\x1f@c{\x03\xea\x17\
735 | \xd4\xf5\x98\x00\xac\xd1\xde?x\xf0\xa0A\xac\xfb\x01\xb6\
736 | ~\xb2\x03\xad[\xb3Q\xean\xd4[@\x0c\xa0\xa2\x9a\
737 | %\xe4_[#T\xa7\x0f\x90\x9c\x9c\x0c1\x80\xf9\
738 | R\x0frJ\xcc?\xc86\x96\xc9\xaeul\xe2*_\
739 | \x990\x8c\xbe\xb52K\xe7\xd9e\x95\xf5\x07\xe6F\xf9\
740 | \xd2F2\x0ar\x09\x9d\xa5\xbe\xb8\x17@\xa4\x93\x93\x13\
741 | k\x089\x7fZ\xe4d\x8eG7\xae\xdf\x92\xba\x1b\xf5\
742 | \x19B\x1e\x80\x9cQ\xd2\x95\x90\x7f!\x17\x80\xd5sv\
743 | 8\xec\x07\xc2c\xec:e85\x80\xc1G\xf0\xc3\xdc\
744 | \xdf\xc2\xcd\xb1hCJ \x0d{\x14\x9e'\xe7\x08\xec\
745 | \x80,\xff\x1e\x10\xe3\xd8O\xd5\xdd}\xc8\xef\x04\x07\x07\
746 | KR\xe3W\x17`\xbf\x0f\x9c\xffM\xd3\x06c\x8e\xd4\
747 | K\xb0\x5c\xe5\xd6\x00\xb4>\x00\xec\x09\xc2\x7fV&~\
748 | \xf4\xf0\xe1C\xde\xc5\xc5\x05\xd6\xcfZJ=\xd0K\x01\
749 | \xfc\xde\x81\xd8\x8f?\xd7\xaf\x95'\xbdwz,[\xd1\
750 | y\xe6\xbas\x06\xb2T\x83;6\x03\x1fg\xa1\xc4\xd7\
751 | \xf3<\x80\xfc\xeco_\x7f\xfdu\x83Y\xf7;}\xea\
752 | ,\x9a6e\xb6\xd4\xdd\xa8\xf7\x80\xf3?5\xb5\xc1+\
753 | Z\x03\x00\xf9W\x0a{\x82T\xaa2>\x00\xe4\x92G\
754 | FF\x82\x0d0Q\xea\xc1\xae\x07\xb0\xf6\x9dbaf\
755 | \xfc\x0b\x9cW\x00y\x87U\xd5\x01P\xab\xc4\xc3\xc9\xb6\
756 | \x90\x12\xf3\x84\xea\x12zXZZ2\xdf|\xf3\x8dA\
757 | \xe4\xfc\x01\x16\xcc[\x82\x0e\x1d<*u7\xea=\xb4\
758 | 1\xc0\xc2r\xce\x06(\xe5\x030\xfa\xea\x02l\xd9\xb2\
759 | \x05\xe4\xff,\xa5{\xdd\xdcDC\xa9kv4\xc2\xdc\
760 | \xd2\xd3\xdb]\x01y\xc0U\xdd\xb3\xfcnv\x18cj\
761 | d\x04\xf5\x89\xec$\xbe\x8e\xaa`v\x97.]X\x8e\
762 | \xe3\x0c\x22\xe7\x0f\xf6\xfc\xc3\x99\x1f\x0f\x1e<\x94\xba+\
763 | \xf5\x1ex\xdaV\x0ay@\x0aN\xe7\x19\xa1:(\x9c\
764 | \x17\x88t\xf8\x00\xf7\xef\xdf\xe7\xed\xec\xec\x9e\xe0\xf1\xe6\
765 | ]b\xec\xf5\xc6\xfc\x18b\xe8\x9a8\xfaN\xcc4\xcc\
766 | \xe6\x94t\xba\x00b\x03\xe3\x1b94x\xbceB\x14\
767 | S\x15\x7f\x00\xd6\x16\xa3\xfa\xb45\x94Xge\x00\xd7\
768 | zn\xe6\xcc\x99\x06\xb3\xeew\xff\xfe\x03\x14\x1a\x14E\
769 | \xce\xfc1\x0c@\x1e`e\xea\x81<\xb3'\x10\xfb\x0d\
770 | :\xd7\x01BBB@6\xc6Q\xa2l\x8f\xf5p\xb4\
771 | }\x9c?z0}xv<{tN<\x0b\xf9\xbc\
772 | Q\xbd\xdb\xd2\x9eNv\x8fp\xfb\x1e\xcc6\x12\xca\xc6\
773 | pk\x0b\xb3?V&\xf8\xd3\x90KX\x99\xd8 \xbc\
774 | \x07\xce@\xb527\xf9\x03\xff\xbd\x8d\x84}\xaf,<\
775 | d2\xd9\x93s\xe7\xce\x19L\xa0\xed\xe4\x89\xd3h\xce\
776 | \xec\x85Rw\x83@\x84\xb6\x1eHec\x80\x1a\x1f@\
777 | \xf7\x9e\xc0\xf7\xdf\x7f\x1f\xe4\xff$f\x1a\xe4\xd3\x9f\x9c\
778 | \x97\xc8\x95\x9e_a\x0f\xde\xb5\xe5\x99\xfc\xbch_\x1a\
779 | \xcb\x1f\xd4\x03\xef)\xa1|t431\xfa\xbf\xfc\x98\
780 | Ate}\x01\xd0\x15~\xed\x9a\xc2uFH\xd8\xef\
781 | \xca\x22\xce\x10j|\x97\xc4\x9a\xd5\xaf\xa0\x9d\xdbwK\
782 | \xdd\x0d\x02\x0d\xf0d^\xd9<\xe0\x92>\x00\xc8\x7f\x99\
783 | 1\xf5\xd7_\x7fAM\x00\xda\xcd\xce\xe6\xc9\xb19\x09\
784 | e\xce\x08*-G\xaf\xa5\x05\xc1\x99a\xe0\x17HY\
785 | \x9f\xa7\xb9\xb9\xa9\xc9\xff6\xa6\x05U\xda\x17(\x88\x1f\
786 | \x0a\xf2\xff\x81\x84}\xae,\xb6\xc6\xc4\xc4\x18D\xad\x0f\
787 | -\xd2Ss\xd1W_~-u7\x084\x805\x00\
788 | M\x0c\xb0R\xf2\x0f\xeb\x00r\x86gt\xe5\x02\xc1\xfa\
789 | 2\x9c%;!\xa8\x0f]\xd9\xfc\x9a\xb0\x9e\xadam\
790 | =Ob9\xe9\xe6\xd4\xc0\xea\xde\xe1Y\xf1\x5cE~\
791 | \x00\xb4\x9f\x98\x97\xc8\x9ab\xbb\x812\xec|\x00\xa8\xbf\
792 | \xf0\xc7'\x9f|b0\xb6?\xf8\xfc\xc3\x86\x84\x92z\
793 | \x9f\x06\x04\x90c\x98\xd3+\xa8\x09\xack\x1d@\xa7\x0f\
794 | \xf0\xc1\x07\x1f0\xdd\xbc\x1b3\x95\xd9\x9f\x07\xb2\xf4Q\
795 | ^\x04k,\x93\x9d\xa5\xa4\xdfo\x97\xed\xd3\xd6Kq\
796 | wev\x85y\xc3\x90[\xdc\xc8\xde\xe6_\xca\xb0\xf7\
797 | \x06\xf8c[\x8c\xfd\xf3\xcf?\x0d&\xe7\xef\xdf\x87\xff\
798 | \xa2\x90\xa0(\xa9\xbbA\xf0,x\x8d\xff_\xe1>\x80\
799 | \xd2\xb9@PO\xb8\xf4\x87\xc1:\x80\xb3\x83=\x0b\xf6\
800 | \x7fe\xe6\xd2\x0b\xf9\xa9\xbc\x83\xb5\x05\xc4\x01\xa4^S\
801 | 3\xc7z\xe8\xdc[Y\xa1LE\xb1\x00\x88a\xf4m\
802 | )\xecy\x18(q\x9f\xcb\xc3\xfa\xc1\x83\x07\x1bL\xce\
803 | \x1f\xe0+\xa1\xdeW\xae\xd4\xdd x\x16*\x90\xe5\xca\
804 | \xec\x03(\xbd\x0e\xa0R\x97\xad\x0d\xa8\xcd\x05\x9a\x1e\xd6\
805 | \xbfR>\xc0\xb5\xe5\x99\x9c\xab\xad\xf5}\xca0\xf2\xeb\
806 | \xc3\x07\xb6\xf5\xa2?\xab\xe0\x5c\x03\xd0\x0f#\xfb\xb5\x87\
807 | \x18@\x0e\xa6\xb5\xd4\x9d\xd6\x01\xc8w\xfa~\xe3\xc6\x8d\
808 | \xe5\x9e\xe7^\xdb8r\xf8\x18Z\x92\xbfB\xean\x10\
809 | <\x0b\xb1\x1e \xcdW\xb8\x0f\xa0\xcc~\x00=\xeb\x00\
810 | \x9f~\xfa)\xd3\xce\xc3\x99\x85\x9c\xfb\x8a\xe4\xff\xec\xc2\
811 | d\xce\xd6\xd2\xfc\x17J\xacM)5l\xed,\xcd\x7f\
812 | \x83\xda\xc5\x15\xf5{\x5c@/\x90\xffw0=\xa5\xee\
813 | \xb4\x0e\xf4\xb2\xb4\xb4d\xbf\xfb\xee;\x83\xa9\xf5\x01x\
814 | \xfb\xadM\xe8\x83\xf77K\xdd\x0d\x82R`\xc5Z \
815 | \x95\x96\x7fA\x07(8F\xa1g\x1d\xe0\xc9\x93'|\
816 | \xe3F\x0d\xd9]Sb\xd8\xf2|\x00\x88\xffA-N\
817 | <^?\x96Z`4\x90a\x1f\xe0\xfc\xf6I#\x99\
818 | \x8a|\x97\xb9Q>\xd0o\xa8\x0f\xd0^\xeaN\xeb\xc0\
819 | \x8a\xbe}\xfb\x1aL\x9d?-\x16-X\x86\x8e\x1d=\
820 | )u7\x08J\x01\xea\x81Vq\x0dP\xdc\x13\xac\x10\
821 | \xea\x83\xeb\xcc\x05\xca\xc8\xc8\xa0S\xfc\xba\xd2w\xca\x91\
822 | \xa1\x8f\xf2\x22\x19K3\xd3\x9f\xf0xm&\xb5\xc0\x94\
823 | \xc0\xe6W\xd3\x82\xd9\x8a\xce6^4j\x90\x12\xbf\xf7\
824 | \x7f\x98\xdd\xa4\xeep)\x98c~\xbdf\xcd\x1a\x83\x89\
825 | \xfbk16g\x12\xfa\xec\xee\x17Rw\x83\xa0\x14\x94\
826 | J5\xa3Y\x03(\xf7L\x90rr\x81\xca\xe0\xe2\xc5\
827 | \x8b\x8c\xbb\xa3-\x0b\xe7\xf7\xe9\x92\x9f\xcf\xd7\xe4\xaa\xfd\
828 | :\x08{\xea\xa2\xa5\x16\x98Rxcu\xc20EE\
829 | \xf2\xbfp\xa4\x1f\x87\xdf\x0b{\x01\xbaJ\xdd\xe1R\x18\
830 | `jj\xca\xfe\xf8\xe3\x8f\x06\xb3\xdfG\x8b\x98\x91\x09\
831 | \xe8\xb7\xdf~\x97\xba\x1b\x04\xa5\x00k\x80\x90\xd7/\xa7\
832 | y\x85f-@YQ>\x806\x06\xa0`\x85\xfd\x00\
833 | e\xecL\xd8o\xd2\xb1cGvcj\x10\xa3O\xfe\
834 | \x87v\xf2\x06\xf9\x0f\x97Z`Ja\xf3\xeb\x19\xc1L\
835 | E\xf2?5T8\xfb\xe0\x10ex{\x9e_3\xb4\
836 | \xb8\xbf\x16\xe1!#\xd1C\xb2\xef\xc7\x10\xa1\x86< \
837 | \xc8\x05\xd6\x9c\x0d$\xfa\x03\xd8\xc7\x87s\xc04g\x82\
838 | \x97\xb1\x0d\xb4u\x81\xf4\x9d\x15\x8emPzP\xfbf\
839 | :\xd7\xd3\xc0/\x803}\xf1x\xddFI\xbf/P\
840 | \x0b\x133\x13\xa3;\x07f\x8e)7n\x01\xd7\x93\xe0\
841 | \xd3\x99\xc5\xef_@\x89g\x91\x1b\x0a \x86\xfa\xc7\xa6\
842 | M\x9b\x0c\xce\xf6\x07\xc0Y\xbf\x85\x85ERw\x83@\
843 | ?`\xce\xc0\xe6\x80\x9a\xe3\x95j\xa1\xde\x8f\x82U\xc1\
844 | Z\xbf6>\xa0\xad\x19*\xe8\x03\xad\x0f\xc0\xf1\xba\xcf\
845 | \x07\x80|`\xc8\x05\x80\xbc:]k\xffW\x96\xa6+\
846 | 5y4R\xee\x03*\x09\x9fv\x1e.\xf2\xdb\x05\xe5\
847 | \xe7\x00\xdd]\x95\x83\x06\xb4i\x02\xf3?\x9c-*u\
848 | \xdeRI\x8cquu\xe5\xa0\x1eK-\x8f\x9bJ\x01\
849 | \xea\xfd2\xa4\xe6O]\x02\xe8\x03\xac\x0e\x04}\xc0\x08\
850 | \xfa\x80Q\x0a5C\x8a\xc4x\x01\xbc*\xca9'T\
851 | \x1d\x1f\x1fOg\x0c\xedN\xeb\xca\xad\x87ytbp\
852 | \x1f\xb0\x01\xde\x94Zp0l\x8ce\xb2\xcb\x1bR\x02\
853 | *\xdc\x0b\x84m\x17UCQo5\x91\xba\xd3%\x00\
854 | {}\xcf\xe6\xe6\xe6\x1a\xcc^\xdf\x92\x80-\x08C\x07\
855 | \x05!\x965\xa8%I\x82\xaaA\xab\x0f\xb0\xbb\x00\xf6\
856 | \x81\x1a\xfc\x7f8\x1f\x04\xc6\x9c\xce\xb5\xa6K\x97.1\
857 | \x8d\x1dm\xd9\xcbx\xae\xd7%K\x97\x16\xa7\xf3\xcd\x5c\
858 | \x1c\xa0n@\x8c\x84\xb2\x03s\xf8F8;\xbc\x22\xd9\
859 | \x07\xbb\xe5\xd8\xdc\x04\xd6\xd4\xc8\x08j\x9e\x1bR\xfe\x7f\
860 | _SSS\xee\xcb/\xbf4H\x01\x13\xe5\x1f\xcf\xff\
861 | \x8cAv\x8f\xe0\xf9\xa1Bzd\x1f\x00k\xd0\x03\x06\
862 | \x0c`\x16\x8e\xf4\xd3\x9b\x0f\xb8oz,\xeb\xe9d\xf7\
863 | \x98\x12\xcf\x06\x94\xe2,\xce\xf1\x9d\x9a\xb8\xc9/-M\
864 | \xabT]\xb0U\x09\xfe\x86\xb6\xff\x0f\xe2';\x0d\xe5\
865 | \x5co}\x08\xf0\x0fCEE\xc4\xff\xafo\xd8\xb5k\
866 | \x17\xdd\xa2\x91#\x0b\xe7j\xe8\x93\xa9S\xf3\x92\xb8\x81\
867 | m\x9a(\xf0@>\x8c\xc7r\xa7Z\x92\x1b\x98\xf7s\
868 | \x9a\xb9:\x14A=\xb0\xca\xc8>\xe4\xfe\x07um\x05\
869 | \xf2\x1fWK}\xac\x0c\xfa\x98\x98\x98\xd0\x97/_6\
870 | \xe8\xc9uD\xe8(\xa1\xfe\x0fA\xfd\x02\xc30JX\
871 | \x0b\x5c\x958L\xe7Z`1\x0b\xb2UKc\x87\xd0\
872 | p\xde\x1f\x1e\xd3\xefRbnMM\xd5\x14\x873=\
873 | >\x84y\x1f\xdb\xf3\x95\x92\xfd\xdbB\xcc2\x83wj\
874 | `\x05\xfds\xa9\xa1~U\x15\xe0\xf7\x9f\x8a\x8c\x8c\xa4\
875 | \x0dy\xee\x07\xa4\xa7\xe6\xa0\xff\xfb\xfa\x1b\xa9\xbbAP\
876 | \xfbP\x7f\xfc\xf1\xc7L\x1bwg\xf6z96\x80\x18\
877 | [\xcfV\xc39^\xb3#\x07\xd2\xden\x0eO\xb0=\
878 | \x00gs\x8f\xa5\xc45\x82\x17=c\x0ct\x09\xd8\x16\
879 | \xabm\xad\xcc\xff\x1c\x17\xd0\x9b\xd6\x97\x9f\xa4\xd3\xf7/\
880 | \xc8Fk\x93\x02`\xee\xdf\xf5\x82\xfd\xa8N\xa4\xdb\xda\
881 | \xda\xf2\xff\xfb\xdf\xff\x0cz\xee\x07\xacX\xb6\x06\xed\xdd\
882 | s@\xean\x10H\x00\xb0\x01:w\xea\xc4\xc0\xfc^\
883 | Q\x9d\x1d\x88\xb1A\xad\xcd\x1b\x05\x99\xcaws\xc2\x99\
884 | \x98\xfe\x1d\x98\xe6X\x17\x98\x9b\x9a@\xccm\x0b\xe6d\
885 | \xccA\x94Xk\x14\xce\xe8\x04\xb9\x06[^\xa6\xa1\x91\
886 | \xe6wPW\xa8\x1d\xe6H\xcc5&FF7[\xb8\
887 | 9>\x19\x17\xd8\x9b\x06\x7f\xa3\xaag\x05\xc2~\xa6\x1e\
888 | \xde\x8d!g)\xb0\xf6\xc5\x5c'Za\xde[\xbbv\
889 | \xad\x02\x19`\xcc\xbf4\x8e\x1e9\x8e\xe6\xcf]\x5c[\
890 | _\xa7\xd6E- ?JK\xa5RYL\x95\x06\x10\
891 | \xb7*\xf1\xef\x92\xed\xc5\xd4B\xdfw\xd5\xd6\x85\xd6\x15\
892 | \x1c8p\x80qw\xb2cO/L\xae\xb4\xbd\xad\xf5\
893 | \xb9\xf1\xab\x12jo\xaeO\x09d\xd2\x87tc\xfa\xb7\
894 | \xf6d\x9a\xba\xd8?\xb6\xb34\xff\xd9\xd4\xc4\xe8\xb6\xb1\
895 | LvJ&\xa3\xf6`\xe1\xdf\x8d\xff}\xcc\xd4\xc8\xe8\
896 | \xb6\xa3\x8d\xe5\x1f\xad\x1b;\xc9\x83\xba\xb6\x84\xb3\xc3\xe9\
897 | \xddSa?R\x96\xf2y\xcf\x0e\x7f';\x8c\xc1\x9f\
898 | }\x952\x8c\xb8?\xe4\xf9\x9f\x84\x5c?\x9e\xe7\x0dj\
899 | \x9f\x8f>\xdc\xbbw\x1f\x05\x07D =nJ\xb1\xdc\
900 | \x80l\xc15\xb1,\xab\x92\xcb\xe5\xca\xc7\x8f\x1f\xf3\x90\
901 | K\xf2\xe3\x8f?\xf2_\x7f\xfd5s\xf3\xe6M\xfe\xe2\
902 | \xc5\x8b\x8a\xa3G\x8fr{\xf7\xeee\xb1m)\x7f\xfd\
903 | \xf5\xd7y\xd0\x83\xf9\xf9\xf9\xf2Y\xb3fs\xd3\xa6M\
904 | c\xc7\x8f\x1f/\xcf\xca\xca\x92\xa7\xa4\xa4p\x89\x89\x89\
905 | \xca\xd1\xa3G\xd3#F\x8c\x90\x07\x05\x05\xc9\xfd\xfd\xfd\
906 | \xe9A\x83\x06q\xbe\xbe\x83T\x03\x07\x0e\xe4\xfb\xf7\xef\
907 | \xcfb2}\xfb\xf6\xa5\xfb\xf4\xe9C\xf7\xee\xdd[\x81\
908 | _\x15\xf0s\xbf~\xfd\xa0\x8d\x85\xf7\xe1\xbfQ\xc1\xdf\
909 | \x0d\x1d:\x94\xc6\x9f\xa3\x80\xcf\x8b\x89\x89\xa1\x13\x12\x12\
910 | \x94\xf0=\xf8\xfb\x14\xf0\xbd\xf0\xfd\xb3f\xcd\xe2\xa1?\
911 | k\xd6\xacQ\xbc\xf6\xdak\xfcG\x1f}$\xc7\xfd\xa5\
912 | \xa1\xdf\x17.\x5cP\xdc\xb8q\x83\xff\xfa\xab\xaf\x98\x1f\
913 | ~\xf8\x81\xff\xf3\xcf?\xb9G\x8f\x1e\xf1p\xbdp\xdd\
914 | \x1a\xfd\xf3R\xe9\x13\xb8\xa0\xb4\xb44zp\x87ft\
915 | E96\x15\xe9\x03\xc8\x1f\xc6v\x82\xf2\xc2\xe24\xfe\
916 | \xd0\xac8v\xeb\xc4hfS\xee\x08\xee\xbd\x9cp\xf6\
917 | \xa3\xbcH\xee\xe0\xcc1\xece8\x0f\x18\xcf\xd9\x9f\xaf\
918 | \xc9Q?\xcf\xb9?%ycy\xa6\xaa\x9d\x87+\xcc\
919 | \xfdAR\x0b\xbe\x06\xf3\x5c\x5c\x5c\xb8\xef\xbf\xff\xde\xe0\
920 | \xf2\xfcK@\x98\x1fa\xde\xc4cZ\x09\xfbB\xc3C\
921 | G\xa9\x8e\x1c>\xca\x9f?\x7f\x9e\x06\xd9}\xe7\x9dw\
922 | \xd8e\xcb\x96)&O\x9e\xcc\xa6\xa6\xa62\x10\xc7\xf0\
923 | \xf3\xf3\xe3\xbat\xe9\xa2h\xd5\xb2%\xd7\xc4\xc3\x83\x81\
924 | \xbd\xa4\xae\xce\x8e\x5cCgG\xba\xb1\x93-\xeb\xe9b\
925 | G\xb7\xf6t\xe1:4m\xc8\xf4h\xe5\xa1\x18\xd0\xa1\
926 | \x19?\xa4k\x0bEX\x9f\xb6\x8a\xe8\x81\x9d\x94\xb1\x83\
927 | \xbb0i\x01\xbd\xe4cC\xfb1\xe3G\xf4WM\x8a\
928 | \xf4af\xc5\x0c\x92/\x88\xf7\x97\xe7'\x0eg\x97$\
929 | \x07\xa8\x96\xa5\x04(W\xa4\x052k2C\x14\x1br\
930 | \xc2\xe4\xaf\x8c\x0d\x97\xbf:v\x84\xfc5\xcc\xd7\xc7E\
931 | \xc8_\xcf\x8bT\xbc\x96\x17\xa1\x80\x9f\xe1\xf7\xaf\xe4\x86\
932 | \xcb\xe1}\xf0\xfe\x02\xfcwKS\x02x\xf8\x9c\xfc\xc4\
933 | a\xec|\xfc\xb9\xb3b\x07\x17M\x89\xf6\xa1'D\xf4\
934 | W\x8d\x0d\xeb\xcb\xa6\x07\xf6\x92\x8f\x19\xd4\x95\x1e\xe9\xd3\
935 | I\x19\xd6\xb7\x9d\x02\xfa7\xb0CSe\xcfV\x9e\x0a\
936 | \xdco\xba\x0d\xee\x7f\x13W\x07\xe1z\xe0\xba\x5c\x9d\x1c\
937 | \xb9\xc6\x0d\xddXO\x0fw\xa6e\xcb\x16\x5c\xa7N\x9d\
938 | h?__.\x22\x22\x82NNNf'M\x9a\xc4\
939 | ,]\xbaT\xf1\xf6\xdbo3{\xf6\xeca\xcf\x9d;\
940 | G\x7f\xf6\xd9g\xec\xaf\xbf\xfe\xca\x81~\x04\xfb\x1a\xee\
941 | s\x09{\xc4 \xf1\xdf\x7f\xff\xf1\xf8\xda\xd8)!\xfd\
942 | \xe8\xe7\x9d\x87u\xf9\x0b\xb7\x0a\xb2\x9ee5|n\xc9\
943 | \x98\x84\xe6\x0c@\xf0=\x0c!\xdf\xcf\xcf\xc8\xc8\xa8h\
944 | \xdb\xb6mR\xe6\xfa\x08c\x0d\xf6y\x14\x15\x15)\x7f\
945 | \xff\xfdw\xee\xd6\xad[\xec\xa1C\x87\x98w\xdf}\x97\
946 | \x99?\x7f>\x0d\xba>$$\x84\xee\xd5\xab'\xdd\xdc\
947 | \xdb\x9b\xc1\xe3\x9bk\xe4\xda\x98\xc7T\xb6twa\xba\
948 | \xb5p\xa7\x07un\xceF\xf6\xef\xc0\xa6\x0d\xef)\x9f\
949 | \x145\x80]\x940\x8c\xc62F\xbf31\x9a\xdb:\
950 | +N\xb1wa\x12\x7f|E\x06s\xaa Kua\
951 | m.\x7fe\xfd8\xd5\xb5W\xf2\x9476\x8eW\xdd\
952 | |u\x82\xea\x16\xf0\xb5\xf1j-o\xbc:\x1e\x01\xaf\
953 | o\xd42\x0f]\x7fE\xe45=\xbc\xba\xa1r\xd4\xf7\
954 | \xf7\xd74\x9f/|\x97@\xf1\xbb\xb5}\xb9\x89Y\xdc\
955 | G\xdc_\xe87\xf4\x1f\xae\x03\xae\x07\xae\x0b\xae\x0f\xae\
956 | s\x1f\xbe\xdem\xb3\xe3\x14\xefN\x8a\xe6\xd6e\x87)\
957 | \x16%\x0ec&G\xf9\x08\xfa,j@Gnp\xe7\
958 | \xe6L\xf7\x96\xeet+\x0fg\xd6\xdd\xd5\x1et\x07\xdb\
959 | \xd8\xcd\x95\xf3n\xd6\x8c\xe9\xd1\xa3\x07\x0d\xe7<\x82\x1e\
960 | \x9d;w.\x0d\xba\x02lnlg\xb0\xbf\xfd\xf6\x1b\
961 | \x87\x9f\x13\x0f\xcfKj\x1dq\xe7\xce\x1d\xd6\xcd\xd9\x89\
962 | \xc3\xf3u\xf9\xeb\x01\x06@\xc8\x07Z2z0\x9c\xfb\
963 | \xf3\x05e\x181\xff\xc6\x98\xdfa;\x93\xae\x85=>\
964 | \x82-N\xd3\xb4\xea\xfe\xfd\xfb \xdf\xcc\xf6\xed\xdb\x99\
965 | \x95+W2\xf8\xfb\x19\xa8\xf5\xda\xb1cG\x98\x9f\x19\
966 | 7'\x07\xd6\xc3\xd5\x9e\xe9\xe4\xdd\x88\x19\xdc\xb9\x053\
967 | \xda\xaf331b \xb349\x80yc|\x04\x8b\
968 | \xc74{xI\x1a{dY\xba\xb2_\xa7\xae\xea\xf3\
969 | kr5\xb2;A\x94[\x8d\xcc<\x95\xc9q\x22K\
970 | \xca\xd8\xc6<\xb5\xc8q\xeak\xaf`\xe2\xd7\xab\xf0\xba\
971 | \x01\xeb\x84\x0dc\x85\xd7\xcb\xeb\xc6\xf2\x97\xd7\xe6\xa8/\
972 | \xad\xcdE\x97\xd6\xe6(/\xac\xcef.\xac\xcaR\x9d\
973 | _\x9d\xa5>\xbf*\x0ba\xaa\xce\xad\xccT\x9cY\x9e\
974 | N\x9f^\x96\xcec\xaaN/KS\x9f\xc1<\xbd4\
975 | \x0d\xe9\xa3\xd0.\x10\xde\x9f\xce\x9f]\x91N\xc3\xe7\xc0\
976 | \xe7i>W\x0d\xdf\x03\xdfw\x19\xcb3|?~U\
977 | _^;\x96\xc7\xd7\xa1\xba\xbaa,\xba\xb6!Ou\
978 | U\xd3o\xac/Tp-\xd7\xb4\xd4^w\x89k\xbf\
979 | \x06\xd4\xe8\x95\x1b\xc5:\x04\xee\x17\xd6!X\x7f\x5c\xc5\
980 | \xba\xe3\xfc\xea\x1c\xfe\xc8\xd24v\xfb\x9c8\xf6\xcd\x09\
981 | \x91,\xb6k\x98I\x91\x03\x991\xd8\x06\x1a\x8a\xfd\xde\
982 | \xce\xde\x8d\x19Olg\xc0\xf3i\x84\xed\x8b\x0e\x1d:\
983 | 0\x01\x01\x01LFF\x06\xb3|\xf9r\x06\xcf!\xa0\
984 | \x1f\x98{\xf7\xeeq\x0a\x85\xa2\xa4\xcfQ\xa3\xe3\xea\xfd\
985 | \xf7\xdf\xa7=\x9d\xed\xd8\xd3\xf3\xab\x16\x0b\xa8m\xd9\x87\
986 | \xb3\x01\xcc\x8c\x8d\xbe\xc72\xd7Zj\xc1\xa7\xc4\xb8\xc3\
987 | \xde\xae]\xbb\xb2\xd5\x5c\xd3_\x88{a;R\xf9\xed\
988 | \xb7\xdfr0g@\xfd\x00<\x7f3>>>\x8c\x97\
989 | W\x13\xc6\xc9\xae\x01\xeb\x89\xe7\x1blo3\xe1\xfd\xda\
990 | 1\xd8\xb6\xa6\xf1X\xa3\xdf\x9b<\x929\x90\x9f\xc2^\
991 | X\x9b\xc3\xdd\xd8\x98\x87\xe7\xb6\xf1j\xe0\x8d\x12c\xba\
992 | \xa4\xfc\xc2X\x9f5&D\x9d\x179L\x8deB}\
993 | e\xfdX%\x96S5\x96\x1b\xfe\xfc\xca,,\x8fi\
994 | \xaaSKS\xb9\xe3\xf9\xc9\xaa\xa3\x0b\x13\xd9\xc3\xf3\xe2\
995 | \xd5\x07\xf1\xd8\xde7s\xb4z\xef\x8c\xd1\xdc\xee\xa9#\
996 | U\x9fN\x8dV\xef\x9c\x14\xc9\xee\x98\x18\xa1\xc6\xe4\xb7\
997 | \xe6\x8d\xe0\xb6\xe6\x85\xab\xf1\xabj\xcb\xb80~\xcb\xd8\
998 | 0\xf5'c\xc3\xd0\x96\xb1\xa1\xf0\xaa\xfa$7T\xbd\
999 | 97\x14\x01\xe1\xdf\xa5\xa9m\xab\x88\xba\xfe\xb6\xccg\
1000 | \xe3\xef{\xfa\xfdaj\xe8\x0f\xf4K\xec_8\x0f\xfd\
1001 | \xdd\x89\xfb\xbdsR\x14+^\xcbH%\xbe6v?\
1002 | \xbe\xbe\x83s\xc60\x87\xe7\xc6\xab\x8f.Hd\x8f\xe7\
1003 | '\xa9\xf1}`O/O\xc7\xfa*\x8b\xc7\xfaK\x89\
1004 | \xf5\x89\x0a\xee\x17\xdc7\xad\xfe\xd3\xea\xc4\xd2\xf7\x1a\xee\
1005 | \xbf\xf0,\x04\xdd\x9a\xa7\xba\xb0&\x97?\xb88\x85}\
1006 | \x7f\xea(fEj\x10\x93\x17\xde\x9f\x89\xe8\xdf\x9e\xe9\
1007 | \xd9\xda\x93i\xe2\xe6\xc0:\xd97`\x9bxz2\x90\
1008 | \xab\x87\xfd\x0d\x1at<\xf6\xcf\x18XWz\xf4\xe8\x91\
1009 | \x10\x8c@\xd5\xa8\x17@\xcf@\xaez\x0b7\x07n]\
1010 | R\xa0\xe2\xe6\xca\xaa\x9f\xc9Y\x93\x84u\xc1\x14\xec\xbf\
1011 | \x99\x18\xc9\xeeP\x86\xb3\xc7w\xba\x83\x83\x03\xff\xf9\xe7\
1012 | \x9f\xbf\xd0Z\x1f\xc4\x96\xa0N+\xe4f\xbf\xfa\xea\xab\
1013 | `\xa73\xbd{\xf7f\xdd\x1b7b\xdc\x1cl\xd9\xf6\
1014 | \xd8\xaf\x0e\xed\xd3\x8e\x99\x101\x80^\x9f\x1d\xc6\xec\x9c\
1015 | \x1b\xcf\x9eY\x95\xcd\xc1\x9c\x05\xf3\x0f\x8c+\x1d\xf6\xb4\
1016 | 8&a\x0e\xc6\xe3\x14\xcb\xb3\xf2\xec\x8a\x0c\xfe\xc4\xe2\
1017 | \x14\x1e\xcb1\x7fpn\x1c\x1e\xe7\xb1\xcaO\xa7\xc5p\
1018 | \xdb&F\xf2>\x9d:\xab\xe7D\x0dQm\x1d\x17\xae\
1019 | \x049\xd9\xac\x91S\xe0\xbb\xe9A\xeau\x09\xc3K\xc9\
1020 | e\x98@\x90\xab\x97\x8e\x9ak\xd3\xa9kr\x8au\x8c\
1021 | Z\xd4'\xe1\xcamy#\x94\xdb'F\xaavM\x8e\
1022 | \xe2?\x9d6\x92\x87\xfbzhN\x9c\x12\xee\xf3I|\
1023 | \xbf\xcf,\xcf\xe0\xe1\xfe\xc3s\x10l#AW\x08:\
1024 | B]\xd2_\x81\xe7\x086\xc5\xf5W\xc7+\xcf\xad\xce\
1025 | \xe6v\xcdK`_\xc9\x0dg&G\xfa`\x1d\xdf\x9e\
1026 | \xe9\xd8\x0c\x8f\x07G[\xb0\x1b\x98\x9e={\x0aza\
1027 | \xc3\x86\x0d\x0c\x9c'\xf5\xcf?\xff\xf0/\x1aw\x06\xbf\
1028 | \xb1o\xdf\xbe\x8c\x8c\xa2\xf8\xb6\xee.\xf2U\x89\xc3\xe8\
1029 | \xf2r\x04kk\xce\x07\xbf\xa4\xad\xbb3\x9cg\xfe!\
1030 | e8\xfb{}\xb1\xcf_\xf8\xe1\x87\x1fV\xd5\xe7W\
1031 | \xcb\xe5r\x1e|\xae7\xdex\x83IJJb\xb0\x0d\
1032 | \xc8:\xd85`\x9aa\xdd\xeb\x8fm\xc4qa\xfd\x99\
1033 | \x8dc\xc3\x99\xbd\x8b\x92\xd8\xcb\xeb\xc6\xf1 \xe3`\x8f\
1034 | _+a\x7f\x0b\xf3\x0c\x96\xff+\xeb\xc6b\xd9\xceR\
1035 | \xe2yI\x89\xe7(\xfe\xd0\xbc8<\xfeF\xf3x\x1e\
1036 | \xc3s[\xa4\x12\xcfu\xca\xd2s\xae0\x9eK\x8d\xf9\
1037 | 7R\x03Q\xff\x0e\x9dP\xacOo\xb4t\xf4P\xb4\
1038 | \x22\xd6\x1fM\x0c\xf6A!\xbd\xba\xa3\x9em:\xa0\xf1\
1039 | \xf8\xdf\x92\xcbe]ci\xdd16\x5c\xb5\x05\xdb\x1e\
1040 | \xf0\x5cvO\x11\xec\x0c\xfe\xd0\xdc8\x1e\x9e\xdb\x19\xec\
1041 | \xc3`\x9fE\xd4\x11Z_\xa4\x84\xff\x01\xcf\x1f\xc6\xc1\
1042 | \x95\xf5\xe3xl\xdfq\xaf\x8d\x8b\x10\xe6\x83\x80\x1e\xad\
1043 | \x99\xe6\x8d\x1dY\x07\xdb\x06L\xdb\xb6m\x991c\xc6\
1044 | 0Pg\xf6\xe6\xcd\x9b`\x93\xf2U\x1c\x9b\x08\xdb\x9b\
1045 | \xac\x8b\x8bK\x11\x1e\xdf\x8b0\xf7{\xb9\xd8\x17B\xee\
1046 | \xcf\x85\xfc4\xfe\xee\xaa\xecj\x8d\xe3\x95G\xa8\xfb\xff\
1047 | >\x96{\x9f\xb6^\x8c\x91L\x98\xf3C)\xc3\xa9K\
1048 | \xe0\x86\xf9-\xc4\xd3*\xe1\xf3\x83\xbc+\xaf_\xbf\xce\
1049 | \x16\x14\x14\xd0\xe0\xeb\xb97n\xccz:\xdb\xb3\x83\xbb\
1050 | \xb4\xc0\xba} \xb3\x09\xdb\xec'Wd\xf2 \xcf\xda\
1051 | \xb9\xfc\xa9\x1d9N\x0d2\x0ec\x03\xfb\xbd\xfc\x91\xf9\
1052 | \x89\xca\xfd\xb3b\xf9\xddS\xa2\xf9m\x13\x22\xb0}\x1d\
1053 | \xae*i\xf7\xbe\xc8x\xfd0;D\x90\xf9\xf0>=\
1054 | PX\xef\x1e(uH?\xb4$f(\xfa(\xe7\xc5\
1055 | >\x97\xb0|\x96\xd4\x11\xf0<\xb7\x8d\x8f\xc0\xb6D4\
1056 | \xd8g\xdc\xd1\x05\x09<<\xf7\x0b\xab\xb2y\xf05`\
1057 | <\x94\xf4/n\x08\xe3e\xbc\xeaTA\x16\xff\x01\xf6\
1058 | %\xa6\x8d\xf4\xa5\xfd\xbb\xb7\xa4\xb1\x0f!\xac\xd3\x0c\x19\
1059 | 2\x84^\xbat)\xe4\xa230\xbfWB\x1f\xa8w\
1060 | \xee\xdc\xc9\x98\x9a\x9a\xfe\x88\xc7\xb8;%\xd6\xd3z\xcf\
1061 | \xc1\xc6\xf2~\xdc\xc0\x8e\xf4\xae\xa91\x95\xaa#\xfc\x5c\
1062 | 2\xbf:[\x0dk\x84Kb\x07\xd3\x1d<]\x15\xc6\
1063 | 2\xd95\xfc\xddc0-\xa5\x14\xf6R\x80\xfc\xde\xed\
1064 | \x9d;w\x06?L\xe7\xbe~\x88\xe7B|n\xf3\xe6\
1065 | \xcd4\x9c\xf7\xe5\xe9\xe1\xc1z\xe1\xe7\x11\xd6\xb7\x1d\xbd\
1066 | 8i8\xc4\x94\xd9+\x1b\xc6)\xc1\xd6\xd3\xc6\xd6\x84\
1067 | g\xba!OuqM\xb6\xf2\xd4\xb24\xe5\x91\xf9\x09\
1068 | \xfc\xde\xe91J\x98+\xaaS\xc6\x09\xeb\x16K\xeb\x06\
1069 | \x18\x0f{\xa7\x8f\xe2\x8f\xcc\x8b\xe7O-M\x85x\xaa\
1070 | \x12\xc6\x0d\x8c\x1f\xadm\x08\xe3\xea\xea+\xe3\x94`'\
1071 | ,K\x09d\x22\x07t`\x9a5rb\xdc\xdd\x1b\xb3\
1072 | QQQ\x0c\x9c\x0b\x0a\xf9\x1b\xfa\xf2\xd3\xe1\xf7yy\
1073 | y\xb0\xbe\x06\xe7\x83k\xf3\xfdA\x17L\xc1\xfe\xf7]\
1074 | ,\x9b\xf4\xb4\xd0~4\xac\xf3\xc3Z\x5ce\xcf\xea\xd4\
1075 | E\xc8\x1d\xc0>\x06\xbf\x09\xfb9#\xfb\xb6c\x9c\x1a\
1076 | X\xfd\x87\xbfg3%\x9e\xe5!\xc5\xde\xc3\x8a\x90d\
1077 | mm-\xac\xad\x95\xbem\xd8\x07\xe3\xe0\xdeB.\x8b\
1078 | \x9b\x93=\xdb\xbf}Sf\xd6\xe8A\xf4\x9e\x05\x89,\
1079 | \xf8}%\xf56\xfc\xfb2\x9e\xd7\xc1'\x07Y\xdf\x83\
1080 | \xfd\xc6\xad\xe3G\xa8>\x11cUj\xa9\xc7\x1da\x1d\
1081 | \xa0F/@<\x13\xe2\x0e0\x8e\xce,O\xe7/\xaf\
1082 | \xcfU\x82M\xa0\x1do\xa2n\x18\xa7>\xb0(\x85\x9d\
1083 | \x177\x84\xf6\xed\xe8\xcd4t\xb6g\xfc\xfc\xfc\xe8\xb7\
1084 | \xde~\x9b\x86\xb5\xe2\xd2\xba\xa0\xb0\xb0P\x099\x1fx\
1085 | \xbc'\x97\x1a\xff\xa0\x0fza\xae\x8158\xc8\x03\x8e\
1086 | \xc5\xfae\xc5\x98\xa1\xcc\xd6\x09Q\xcc\xf19\x89\xdc\xe5\
1087 | \xa5\xe9\xdc\x0dl\x8f\xc0\xb9\x5c`+\x00AG\xdc,\
1088 | \xc8\xe6a/\x01\xe8\x8d73C\x98\xc9!}\x19\xdf\
1089 | v^\xb4\xbd\xb5\xc5}l\xd8\x1f\xa7\xc4\xf3;\x1a\xd5\
1090 | \xb2a\
1126 | \x9d$\x1e\xb7\x07\xe6\x8ca\x85\xbc\xc4Rc\xfb\xf2\xfa\
1127 | \xb1\xca\x01\x1d\x9a22\x99\x0c\xce\xd7\x8b\x97Z\x10%\
1128 | \xc2\x06Sc#\xe5\x8e\xb9\xf1\xac\xae\xbdf\xe0K}\
1129 | \x92K\xd6\xec\x08\xeb0\xb1\x0e8[\x90Qfn\x03\
1130 | \x1e\xccO\xe1\xac,LA\xfe\x17J-\x88\x12!\xd6\
1131 | \xbb\xa1#\xa7\xcbF\x02\x1e\xcfOf\x89\xafOX\xa7\
1132 | \x89\xc7\xef\xe1\x05\x09:\xe77\xd8\xdb\xd8\xd2\xdd\x09\xce\
1133 | \xd7J\x93Z\x10%B\x8fF\x8e\x0d\x14\x97\x85\xfc\xcb\
1134 | \xb2\xf7\xe7\xdc\xcaL%\xb1\xfd\x09\xeb4\xf1\xf8\x85}\
1135 | \xd4zj)\xa8\x9a5t\x80:\x9b>R\x0b\xa2D\
1136 | 0\x97Q\xd4\xf5\xa5)\x01L\xc9\xf5\xfd\x92\xb1\xbf\x03\
1137 | \xb3\xc7pD\x07\x10\xd6I\xe6\x0ak\x01:\xfd\x7f\x88\
1138 | mm\xc8\x09\x83=8\xff\x87\xe5\xc0ZjA\x94\x10\
1139 | \xfd\xec\xac-\xff\xdd4e\x14\xd6\x01e\xf7wC\x8e\
1140 | \x15\xec\xe5\xdaBrw\x09\xeb\x12!\xf67;\x96\x17\
1141 | \xf7%\x97\xadY\x00ub\x9c\xed\xac\xe1,\xa0\xe1R\
1142 | \x0b\xa0\x01 \xd0\xc6\xd2\xfc\xaf\xf9qCi]\xb1\x00\
1143 | \xd0\x95gWd\xf2\xbb\xa7\x8eT\x8ay\xbd\x06\xf0|\
1144 | \x09\x09KQ\x9b'\xbckJ\x94P\x9b@w\xbd\x92\
1145 | \xf1\xaa\x15iA\x8c\xbd\x8d%\xac\xfbEK-x\x06\
1146 | \x84vp\x06B\xbfv^\xf4\x96\x99\xb1\xac\xae{'\
1147 | \xea\x81\x0c~\xcf\xf4\x98\xa7{\xf7\x0c\xe0\xb9\x13\xd6s\
1148 | j\xf6\x06|:u\x94R\x90{\x1ds\x18\xcc\xf9;\
1149 | \xe6\xc4\xb3\x83:7\xa75\xb5\xb5\xbbK-p\x06\x08\
1150 | \xc8aN736\xfa\x0ej\xeb\xbd;y$\x03\xfb\
1151 | \xadt\xe9\x01\xa8ywlQ\xa2\xb0_\x9f\xe4\x04\x12\
1152 | \xd6656\xa8\x1a\xf6\x9bA=\x22\xc8O\xd57g\
1153 | }4-\x86\x09\xe8\xd9\x8a675\xfe\x05\x8f\xef<\
1154 | \xca\xb0\xf6\xdd\x1b\x22l0\xd3\xa1>Ik\x0f\x17\xc5\
1155 | \x8cQ~\xf41a\x0f\x90\xee\xfb{\x19\xeb\x82\x93\x8b\
1156 | S5{\x81\x22\x94O\xeb\xc2H?N\x08_\x12j\
1157 | \xc6\x14\xec5\xdb7#\x86?\x91\x9f\xc2\xc3\x1ctM\
1158 | \x97\x8d\xff\xaa\xb8\xf7g\xee\x98!t\xc7\xa6\x0d\x15&\
1159 | F\xb2\xaf\xf0x\x1e\x87i'\xb1\x5c\xd55@\x1dP\
1160 | 8\xff\xe8#Ks\x93{}\xdbz\xd1\xb0\xcf\xfa\xf0\
1161 | \x924!O\xb8t\xedMm\xad\x0f\xc8\xbd\x86\xe7\xb3\
1162 | \x7f\xd6h\xa1V\x97\x10;$\xfb\x81\x09+\xc9\x125\
1163 | N\xd5;&D*a\x1c\x9d\xc8O\x12\xea\x88\x95\xde\
1164 | \xf3[\x5c3\x0e\xf3\xd8\xf2t\x0e\xea\x98\x0f\xec\xd0\x8c\
1165 | \xb1\xb60}\x80\xc7\xed6\xcc\x00\xea\xc5\xcf\xf3#\x10\
1166 | \xf7=\xc6bn716\xfa\xab\xbd\x97\x1b\x93\x16\xd0\
1167 | \x93ywR4snu\x0e/\xd4\xf7\xda(\xd6\xfc\
1168 | yF\x1f\x08\xf5@r\x95\x10?\x84}\x04\xfb\xf0\xb3\
1169 | \xdc9)J\x09\xf5\xe2H\xed\x9f\xfa\xcdgj\x00\xe5\
1170 | \x85\xabvN\x8a\x14l\xc8c\x0b\x93\x84\xf8\x1d\x8c\x1b\
1171 | X\x83.)\xefBM)\xcd^\x7f\xc8Y\x7f\x7f\xca\
1172 | (&+\xa8\x8fP\x0f\xde\xdc\xc4\xf8\x1f<>\xf7`\
1173 | &Q\x86QC\xffe\x05\xd8Q\xfe\x98\xab0\xef\xd8\
1174 | Z\x99?\xee\xde\xd2\x83\xc9\x0e\xeeC\xbf9!\x929\
1175 | Y\x90\xc9A\x9c\x15j\xc9\x8b\xcf\xac\xac\xcf\x00{2\
1176 | \xa1\xc6\x13\xe4f\x80\xff\xb6\x7fV\xacr\xf7T\xa1\xf6\
1177 | _\xd9\xba`D?\xd4Y\xea\xaa\x01\x081\xa3\xfd\xb3\
1178 | A\xce\x13\xe1\x5c\x04a\xaf\xdeU\xf1\xbc\x95g\xe6u\
1179 | \xed\xb8\x81\x1a\xa1\x90\xabw\xaa \x93\x7fgR\x14\x93\
1180 | \x1b\xda\x8f\x86\xfdj\xf66\x16\xb0\x7f\x17\xce\xcbXO\
1181 | \x89{Y\x1c%\x94\x89\xfa\x0a\xa8\x1b\x08g\x9c\xc3\xd9\
1182 | \xa7\x1b1oX\x9a\x99\xfc\x0b\xb5[C\xfa\xb4ef\
1183 | \x8d\x1e\xcc@\xfc\x05\xea\x06a\x9d\x0du@\x8b\xcf\x9f\
1184 | \xd0\x15K\xc0\xaf*\xac\xf7\x05\xdd\x00s\x80P\xfbw\
1185 | n\x1c\xbfwF\x8c\x12\xc6\xcdv\xd0\x0fy\xc2^D\
1186 | \x889\x96[\xfb\x97\xb0\xe6e[\xb8\xef9\x9a\xf3\x08\
1187 | \xb0|\xc3\xf3\xd999Z\x09{p\x85\x1a\xc0\x8b\xc4\
1188 | \x1a\xc0 \xe3\xf0\x5c\xaf\x95\xa8\x01\xfc\x8c\xacksr\
1189 | \x85s\x8c&\xa8\xa0\x0e\xfc\xe6\x19\xa3\xd99c\x860\
1190 | \x11\xfd\xda\x0b\xe7\x10Y\x9b\x9b>\xc2\xe3\xeb6\xe6\x1b\
1191 | \x94h\x8b6\xd3\x8c?\x02\xc3\x01\xd4Iq\xc5\xf4\xc3\
1192 | \x9c\x86\xb9\x1d\xf3s\xfc\xec\x1e{\xb9:\xd0C\xbb\xb5\
1193 | \xa0sB\xfa2k\xb3B\x19\xa8\x03\x7faM\x0ew\
1194 | Ss\xb6V\xc9\xf8\xa2.\xfd \xd6\xfd\xcfSA\xad\
1195 | \x97Kks\x95\xe7Wf)al\x1d\xcfO\x81\x1a\
1196 | q\xdc\xc1\xd9cx\xa8Q\x005\xa8\xc1\x96\xc4c\x91\
1197 | \xdf:.\x5c\xad\xd5\x15\xe5\x9d\xc7!\xb5,I)\xbf\
1198 | :\xcf\x1c\x81\xda\xea\x98PW\x03\xee\xe3\xce\x89\x91<\
1199 | \xdcW\xd0\xc3\x07\xf0}\x86\x9a|\xa0\x9b\xa1\xa6+<\
1200 | \x07\x88\xc5\xc1s\xc1\xf6\xb9\xbat-\xdf\xd2\xcf\x13\x9e\
1201 | 3\x9e\x11\xcb\xee[\x94\xcc\x9d\x5c\x91\xc9\xc2\xd9tp\
1243 | F\xe6\x8dW\xc7+A_\xdc\x863._\x9d \xf8\
1244 | \x9c74g\xf8\x96\x8c3\x17\x9f\xc9[\x09\xdda\x88\
1245 | \xbc\xaaG\x07j\xe5X\x07\xeb)\xd8\x17\x87\xf3\xbd\x0f\xe0\xfe\xc2\
1262 | \x9c\xbcuv\x1c\xbd\x09_\xc7k\xe3\x22\x14\x05\xe9A\
1263 | \xfc\xa2\xc4a\xf2\xa9\xd1>\x5cvH\x1f\xf9\x98A]\
1264 | \xf0\xf5\xb7Q\xf8v\xf2\xe6\xe0~\xb4\x86\xb3\xbe\x9dm\
1265 | \x19\xb8O\xb0~\x8e\xe7\xec?\xf0\xfd\xfb\x06\xdf\xc7\xcb\
1266 | \x98\xfb17a\xae\xc0\x1c\x8f9\x8a\x12\xed\xf4v\x9a\
1267 | \xe7\x00\xcf\x03\xce\xb5\xa8\x8b5p\x09^N@\xac\x08\
1268 | b\x0f`K@L\xb2\x05%\xd6{\x05}\x11F\x89\
1269 | g@L\xa2\xc43\xe1\xd6a\xbe\x87\xb9\x03\xf3\x08\xe6\
1270 | E\x99\x8c\xba\x0b\xe3\x1f\xcfm?\x82\x0e\xb103\xf9\
1271 | \xd3\xda\xd2\xec!\xacw:6\xb0z\xdc\xd0\xd1F\xee\
1272 | \xe1l\xc7\x83\x8f\x82m\x10E\x1bO\x17\xa6\x83\x97\x9b\
1273 | \xb2S\xb3\x86\x5c\xb7\xe6\xee\x8a\x9e\xad=\xe5}\xda6\
1274 | \x91\xf7o\xd7\x94\x1e\x88u\xcd\xa0N\xde*\xec\xf7\xaa\
1275 | \x07u\xc6\xaf]Z\xf0\x98\xdc`\xccA\x22y\xdc&\
1276 | \xb6\xe3\xf7\xc1\xfb\xfb\xb7\xf3\xa2\xe1\xef{\xb6\xf6\x90\xc3\
1277 | \xe7uj\xd6\x88\xed\x88?\xbf\x8d\xa7+\xd3\xc2\xddY\
1278 | \xd1\x14\x7f\xaf\xa7\xb3\x1d\x075\x1c\xa0?\xd0/\x1bK\
1279 | \xb3\x7f\xa1\x9f\xb8\xbf\x7f\xe0~\xffdd$\xfb\x1f\x5c\
1280 | \x07\x5c\x0f\xe6QJ<\xfb\x06\xe4\x18\xd6\xcc\xf21'\
1281 | c\xa6`\x86S\xa2\
1285 | \x96R\xa2\xcf\xb2\x95\x12u\x0a\xec;\x813\x1f\xbf\xc4\
1286 | \xfc\x16\xf3g\xcc?0\x7f\xd1\xfc\x0c\xf1\xee\xbb\x9a\xf7\
1287 | \x1d\xa3\xc4\xfc5X\xebZ\x869\x9d\x12c\xa7P\xab\
1288 | n\x84\xe6\xfbzk\xbe\xbf\xbd\xa6?\xd0/wM?\
1289 | \xa1\xbf\x90\xe7n\xa6\xb9\x0e\xb8\x1e\xe2c\x13\x10\x10\x10\
1290 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\
1291 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\
1292 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\
1293 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\
1294 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\
1295 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\
1296 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\
1297 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\
1298 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\
1299 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\
1300 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\
1301 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\
1302 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\
1303 | \x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x14\
1304 | \x03\x11\x10\x10\x10T\x17\x98\x05\xe5\xb7/4/\xff\xcf\
1305 | \xcbUI?[`\x95\xe5\xab\xa7\xf1\x91F\xa5\xd9\xe9\
1306 | \xfe\xdeb\x95g\x8c\x1ey\x95\xd3LQ\x0b\xce\x96\xe9\
1307 | \xa3\xf2Y\xadi\x5c\xa6c\xe5\xab\xd5G\xa5\x9a\x9f\xbd\
1308 | \x862\xad\xa5\xaeaa\xd9vjA\x89v]z\xbd\
1309 | D\x0f\xd5\xba\xdaK\xf4@\xa9\xb3\xfd\xe9-`t\xb6\
1310 | S\x15\xb5\x17\xdfc\x1d\x97\xf7\xcc\x17\xfc\xac\xbb]V\
1311 | A{\xf1-8\xab\xa7]\xdb\x01=\xcd\xda\x0e\xe8\xe9\
1312 | ^q\x07\xf45k\xee\x80\xee\xbb\xf7\xb4\x83z?^\
1313 | \xf3\x08~\xd6\xdfnW\xde\xd5i\xdb\x17\xeao7/\
1314 | \xbf\xfb\xe2\x18\xa9\xa0]\xf7\xe0\xa9\x5c\xbb\xcc\x00\xda_\
1315 | \xf4\xfa\xcb\xbb\xbf\xc6\x15<\x1f\xf3\xca<\xbf\x9f\xf5\xb7\
1316 | {Uf\xfc\xe8\x91>\xc0\x02\xfd\xd2/\xa0\x82\xf1-\
1317 | +_\xbc*\x94\x1f\xaf\xf2\xd4\x0b\xf5T~\xcb\xffz\
1318 | \xbdw\xa8X\x7f\xe8\xb9\x03\xbe\xc5\x0a\xaa\xfc\x8f\xd7s\
1319 | \x85^O\xdbu}\xc1\xd3O\xd7\xf9\x05^%\x9bu\
1320 | \x5c\xc1\x82g\xda\xcb\xdc\xa2\xd2\xf3K\xe9\x1e\x96\x9e\xe2\
1321 | J\x7f\x81o\xa9\xf6R\xcfH\x86\xcao\xf7*\xdd^\
1322 | \xea\x0e\x94\x99aK\xfd}\x99\xe9\xb3T\xff\xcc\x7f.\
1323 | \xff\xfa\x8c\x17\xfa\x96\xdb.+\xdd\xc3\x85\xa5\xae\xbft\
1324 | \x0fK7\x97j/+#\xe6Uj/;\xc4\x9fm\
1325 | /;\x80\xec\xaa\xd4^V\xc4*j\x7f\xf6\xfe\xfc\xfc\
1326 | \x82\xedg+\xf8\xfe\xb2\xed\xe6\x15\xb4?;\xc0\x17\x96\
1327 | i\xa7*j\x7f\xa6\x83e\x9b\x9f\x1d\xe2:\xda\x9f\xf9\
1328 | \x00]\xed%>@\xb7\x0a\xb5\xab\xa0\xfd\xa9\x8c\xebi\
1329 | /\xbeG\xfa4\xe4\x82\x0a\xda\xed*h\x97\xe9oo\
1330 | (\xfc\xdfWl\xd7\xa1\xdf\xbcJ~\x81\xae\xf6\x9f\xe1\
1331 | \xff\xc6z\xdb\xedP\x89\x0e\xe8\xb4o\x85?Z\xa0\xbf\
1332 | ]\x184\xbe\xfa\xda\xcd\xc5\xab\x12\x1f\xe2\xcf:\xdb\xe1\
1333 | \x03\xec\xcakg\xb4\x8f@G\xbb\xc6\xb41.\xaf\x1d\
1334 | \x0fK\xb1\xfd\xac\x9e\xf6\x9f57@G\xbb\xec7\xf4\
1335 | \xd4\xd7\xd1\xd5\xbep\x81p\x85H\xfc\x1e\x1d\xf0\x15\xc6\
1336 | \xed\x02\xbd\xed^B\x83\xfev;\xe1\x8b\xcbo\xffY\
1337 | |\x00\xba\x9a\x85[\xf7\xe8\x05\xdb\x19\xa1\x97\xba\xc5\xa3\
1338 | \xa2v\xbbJ\xb4+\x85v\xdd\xe2\xe1\xf5\x82\xedO\xbf\
1339 | _\xb7\xfdQ\x99v\xf1\xfe\xe86\xa0\xcc\x8b\xef\xbf\xee\
1340 | v\x99\xd0\xbe@\xf7\xf0\x04\x14?\x7f=\xed^\xda\xf1\
1341 | sVw\xbb\xb1v|\xeai\xd7~Iy\x162\xa5\
1342 | \xf7\xf1\x8b\xa8\xc8B\xaf\xc8\xc27\xd6\xfbxD\x98\xeb\
1343 | \xbd\xfd\x22\xec*h\xf7\xd2{\xfbE\xf8\xea\xbf\xbd\x02\
1344 | \xca\xb9}2\xaa|\x07BvV\xa3\xde\x16\xea\xf9l\
1345 | F#\xfdz\xbf\xfb\xac\xa8\xfd\xf4\xb5\x0b\x7f\x5c\xce\xed\
1346 | \xad\xa8\xdd\xb7n\xb4Wt\xfdz\xef\xaf\xa6Y\xef\xf3\
1347 | \xd1\xb6\xff\xac\xbb\xbd\xd8\xc2\xd13\xbe\x8a\xcd\x07=\x17\
1348 | \xa0\xed\xbe\x9e\x0e\x940Ot~AI\x03MW\xfb\
1349 | \x82\x12\xed\xba\xe7\xd7\x12XX\xa6\xfd\x99\xe6\xb2\x22\xe8\
1350 | \xf5l{\x85\xfe\xc3\xb3o\xd0\x15!,q\x97|u\
1351 | 4?\xfd\x08\xdd\xd1?\x02\x02\x02\x02\x02\x02\x82\x12\xf8\
1352 | \x7f>\x97\xed\x93\
1353 | "
1354 |
1355 | qt_resource_name = b"\
1356 | \x00\x08\
1357 | \x08\x01A\xff\
1358 | \x00m\
1359 | \x00a\x00i\x00n\x00.\x00i\x00c\x00o\
1360 | "
1361 |
1362 | qt_resource_struct = b"\
1363 | \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
1364 | \x00\x00\x00\x00\x00\x00\x00\x00\
1365 | \x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\
1366 | \x00\x00\x01\x82\x1b\x16\x16\xe3\
1367 | "
1368 |
1369 | def qInitResources():
1370 | QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
1371 |
1372 | def qCleanupResources():
1373 | QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
1374 |
1375 | qInitResources()
1376 |
--------------------------------------------------------------------------------
/upx.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Randark-JMT/Bilibili_manga_download/fc56084d03e74b6d62c2cbb6d0a3ede416858d0c/upx.exe
--------------------------------------------------------------------------------