From d4d4ba6b8b7cdabdeed8c46ae1db4b39a49d0f0e Mon Sep 17 00:00:00 2001 From: huhamhire Date: Sat, 19 Oct 2013 17:45:47 +0800 Subject: [PATCH 01/18] add curseshosts.py --- curseshosts.py | 609 +++++++++++++++++++++++++++++++++++++++++++++++++ network.conf | 4 + utilities.py | 3 +- 3 files changed, 615 insertions(+), 1 deletion(-) create mode 100644 curseshosts.py diff --git a/curseshosts.py b/curseshosts.py new file mode 100644 index 0000000..fcfe278 --- /dev/null +++ b/curseshosts.py @@ -0,0 +1,609 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# hcurses.py: +# +# Copyleft (C) 2013 - huhamhire +# ===================================================================== +# Licensed under the GNU General Public License, version 3. You should +# have received a copy of the GNU General Public License along with +# this program. If not, see . +# ===================================================================== + +__version__ = '1.9.7' +__revision__ = "$Id$" +__author__ = "huhamhire " + +__all__ = [ 'HostsCursesUI' ] + +import curses +import locale + +import os, sys +import socket + +import math +import urllib +import json + +from zipfile import BadZipfile + +from retrievedata import RetrieveData, make_hosts +from utilities import Utilities + +class HostsCursesUI(object): + __stdscr = '' + __title = "HOSTS SETUP UTILITY" + __copyleft = "v%s Copyleft 2011-2013, Huhamhire-hosts Team" % __version__ + + colorpairs = [(curses.COLOR_WHITE, curses.COLOR_BLUE), + (curses.COLOR_WHITE, curses.COLOR_RED), + (curses.COLOR_YELLOW, curses.COLOR_BLUE), + (curses.COLOR_BLUE, curses.COLOR_WHITE), + (curses.COLOR_WHITE, curses.COLOR_WHITE), + (curses.COLOR_BLACK, curses.COLOR_WHITE), + (curses.COLOR_GREEN, curses.COLOR_WHITE), + (curses.COLOR_WHITE, curses.COLOR_BLACK), + (curses.COLOR_RED, curses.COLOR_WHITE),] + ops_keys = [curses.KEY_F5, curses.KEY_F6, curses.KEY_F10] + hotkeys = [curses.KEY_UP, curses.KEY_DOWN, 10, 32] + func_items = [[], []] + func_selec = [[], []] + settings = [["Server", 0, []], + ["IP Version", 0, ["IPv4", "IPv6"]]] + funckeys = [["", "Select Item"], ["Tab", "Select Field"], + ["Enter", "Set Item"], ["F5", "Check Update"], + ["F6", "Get Update"], ["F10", "Apply Changes"], + ["Esc", "Exit"]] + subtitles = [["Configure Settings", (1, 2)], ["Status", (8, 2)], + ["Hosts File", (13, 2)], ["Select Functions", (1, 28)]] + statusinfo = [["Connection", "N/A", "GREEN"], ["OS", "N/A", "GREEN"]] + hostsinfo = {"Version": "N/A", "Release": "N/A", "Latest": "N/A"} + platform = [] + + filename = "hostslist.data" + infofile = "hostsinfo.json" + + item_sup = 0 + item_inf = 0 + + def __init__(self): + locale.setlocale(locale.LC_ALL, '') + self.__stdscr = curses.initscr() + curses.start_color() + curses.noecho() + curses.cbreak() + curses.curs_set(0) + # Set colors + curses.use_default_colors() + for i, color in enumerate(self.colorpairs): + curses.init_pair(i + 1, *color) + + def banner(self): + screen = self.__stdscr.subwin(2, 80, 0, 0) + screen.bkgd(' ', curses.color_pair(1)) + # Set local variable + title = curses.A_NORMAL + title += curses.A_BOLD + normal = curses.color_pair(4) + # Print title + screen.addstr(0, 0, self.__title.center(79), title) + screen.addstr(1, 0, "Setup".center(10), normal) + screen.refresh() + + def footer(self): + screen = self.__stdscr.subwin(1, 80, 23, 0) + screen.bkgd(' ', curses.color_pair(1)) + # Set local variable + normal = curses.A_NORMAL + # Copyright info + copyleft = self.__copyleft + screen.addstr(0, 0, copyleft.center(79), normal) + screen.refresh() + + def configure_settings(self, pos=None, key_in=None): + self.__stdscr.keypad(1) + screen = self.__stdscr.subwin(8, 25, 2, 0) + screen.bkgd(' ', curses.color_pair(4)) + # Set local variable + normal = curses.A_NORMAL + select = curses.color_pair(5) + select += curses.A_BOLD + + id_num = range(len(self.settings)) + if pos != None: + if key_in == curses.KEY_DOWN: + pos = list(id_num[1:] + id_num[:1])[pos] + elif key_in == curses.KEY_UP: + pos = list(id_num[-1:] + id_num[:-1])[pos] + elif key_in in [10, 32]: + self.sub_selection(pos) + self.info(pos, 0) + for p, item in enumerate(self.settings): + item_str = item[0].ljust(12) + screen.addstr(3 + p, 2, item_str, select if p == pos else normal) + if p: + choice = "[%s]" % item[2][item[1]] + else: + choice = "[%s]" % item[2][item[1]]["label"] + screen.addstr(3 + p, 15, ''.ljust(10), normal) + screen.addstr(3 + p, 15, choice, select if p == pos else normal) + screen.refresh() + return pos + + def status(self): + screen = self.__stdscr.subwin(11, 25, 10, 0) + screen.bkgd(' ', curses.color_pair(4)) + # Set local variable + normal = curses.A_NORMAL + green = curses.color_pair(7) + red = curses.color_pair(9) + # Status info + for i, stat in enumerate(self.statusinfo): + screen.addstr(2 + i, 2, stat[0], normal) + stat_str = ''.join(['[', stat[1], ']']).ljust(9) + screen.addstr(2 + i, 15, stat_str, + green if stat[2] == "GREEN" else red) + # Hosts file info + i = 0 + for key, info in self.hostsinfo.items(): + screen.addstr(7 + i, 2, key, normal) + screen.addstr(7 + i, 15, info, normal) + i += 1 + screen.refresh() + + def select_func(self, pos=None, key_in=None): + screen = self.__stdscr.subwin(18, 26, 2, 26) + screen.bkgd(' ', curses.color_pair(4)) + # Set local variable + normal = curses.A_NORMAL + select = curses.color_pair(5) + select += curses.A_BOLD + list_height = 15 + ip = self.settings[1][1] + # Key Press Operations + item_len = len(self.func_items[ip]) + item_sup, item_inf = self.item_sup, self.item_inf + if pos != None: + if item_len > list_height: + if pos <= 1: + item_sup = 0 + item_inf = list_height - 1 + elif pos >= item_len - 2: + item_sup = item_len - list_height + 1 + item_inf = item_len + else: + item_sup = 0 + item_inf = item_len + if key_in == curses.KEY_DOWN: + pos += 1 + if pos >= item_len: + pos = 0 + if pos not in range(item_sup, item_inf): + item_sup += 2 if item_sup == 0 else 1 + item_inf += 1 + elif key_in == curses.KEY_UP: + pos -= 1 + if pos < 0: + pos = item_len - 1 + if pos not in range(item_sup, item_inf): + item_inf -= 2 if item_inf == item_len else 1 + item_sup -= 1 + elif key_in in [10, 32]: + self.func_selec[ip][pos] = not self.func_selec[ip][pos] + mutex = RetrieveData.get_ids(self.func_items[ip][pos][2]) + for c_id, c in enumerate(self.func_items[ip]): + if c[0] == self.func_items[ip][pos][0]: + if c[1] in mutex and self.func_selec[ip][c_id] == 1: + self.func_selec[ip][c_id] = 0 + self.info(pos, 1) + else: + item_sup = 0 + if item_len > list_height: + item_inf = list_height - 1 + else: + item_inf = item_len + # Function list + items_show = self.func_items[ip][item_sup:item_inf] + items_selec = self.func_selec[ip][item_sup:item_inf] + for p, item in enumerate(items_show): + sel_ch = '+' if items_selec[p] else ' ' + item_str = ("[%s] %s" % (sel_ch, item[3])).ljust(23) + item_pos = pos - item_sup if pos != None else None + highlight = select if p == item_pos else normal + if item_len > list_height: + if item_inf - item_sup == list_height - 2: + screen.addstr(4 + p, 2, item_str, highlight) + elif item_inf == item_len: + screen.addstr(4 + p, 2, item_str, highlight) + elif item_sup == 0: + screen.addstr(3 + p, 2, item_str, highlight) + else: + screen.addstr(3 + p, 2, item_str, highlight) + if item_len > list_height: + if item_inf - item_sup == list_height - 2: + screen.addstr(3, 2, " More ".center(23, '.'), normal) + screen.addch(3, 15, curses.ACS_UARROW) + screen.addstr(17, 2, " More ".center(23, '.'), normal) + screen.addch(17, 15, curses.ACS_DARROW) + elif item_inf == item_len: + screen.addstr(3, 2, " More ".center(23, '.'), normal) + screen.addch(3, 15, curses.ACS_UARROW) + elif item_sup == 0: + screen.addstr(17, 2, " More ".center(23, '.'), normal) + screen.addch(17, 15, curses.ACS_DARROW) + else: + for line_i in range(list_height - item_len): + screen.addstr(17 - line_i, 2, ' ' * 23, normal) + screen.refresh() + + self.item_sup, self.item_inf = item_sup, item_inf + return pos + + def info(self, pos, tab): + screen = self.__stdscr.subwin(18, 24, 2, 52) + screen.bkgd(' ', curses.color_pair(4)) + normal = curses.A_NORMAL + if tab: + ip = self.settings[1][1] + info_str = self.func_items[ip][pos][3] + else: + info_str = self.settings[pos][0] + # Clear Expired Infomotion + for i in range(6): + screen.addstr(1 + i, 2, ''.ljust(22), normal) + screen.addstr(1, 2, info_str, normal) + # Key Info Offset + k_info_y = 10 + k_info_x_key = 2 + k_info_x_text = 10 + # Arrow Keys + screen.addch(k_info_y, k_info_x_key, curses.ACS_UARROW, normal) + screen.addch(k_info_y, k_info_x_key + 1, curses.ACS_DARROW, normal) + # Show Key Info + for i, keyinfo in enumerate(self.funckeys): + screen.addstr(k_info_y + i, k_info_x_key, keyinfo[0], normal) + screen.addstr(k_info_y + i, k_info_x_text, keyinfo[1], normal) + screen.refresh() + + def process_bar(self, done, block, total, mode=1): + screen = self.__stdscr.subwin(2, 80, 20, 0) + screen.bkgd(' ', curses.color_pair(4)) + normal = curses.A_NORMAL + line_width = 76 + prog_len = line_width - 20 + # Progress Bar + if mode: + done = done * block + prog = prog_len * done / total + progress = ''.join(['=' * int(prog), '-' * int(2 * prog % 2)]) + progress = progress.ljust(prog_len) + total = Utilities.convert_size(total).ljust(7) + done = Utilities.convert_size(done).rjust(7) + else: + progress = ' ' * prog_len + done = total = 'N/A'.center(7) + # Show Progress + prog_bar = "[%s] %s | %s" % (progress, done, total) + screen.addstr(1, 2, prog_bar, normal) + screen.refresh() + + def section_daemon(self): + screen = self.__stdscr.subwin(0, 0, 0, 0) + screen.keypad(1) + # Draw Menu + self.banner() + self.footer() + # Key Press Operations + key_in = None + tab = 0 + pos = 0 + hot_keys = self.hotkeys + tab_entry = [self.configure_settings, self.select_func] + while key_in != 27: + self.setup_menu() + self.status() + self.process_bar(0, 0, 0, 0) + for i, sec in enumerate(tab_entry): + tab_entry[i](pos if i == tab else None) + if key_in == None: + self.platform = self.check_platform() + test = self.settings[0][2][0]["test_url"] + self.check_connection(test) + key_in = screen.getch() + if key_in == 9: + if self.func_items == [[], []]: + tab = 0 + else: + tab = not tab + pos = 0 + elif key_in in hot_keys: + pos = tab_entry[tab](pos, key_in) + elif key_in in self.ops_keys: + i = self.ops_keys.index(key_in) + if i: + confirm = self.confirm_win(i) + else: + self.check_update() + + def sub_selection(self, pos): + i_len = len(self.settings[pos][2]) + i_pos = self.settings[pos][1] + # Draw Shadow + shadow = curses.newwin(i_len + 2, 18, 13 - i_len / 2, 31) + shadow.bkgd(' ', curses.color_pair(8)) + shadow.refresh() + # Draw Subwindow + screen = curses.newwin(i_len + 2, 18, 12 - i_len / 2, 30) + screen.box() + screen.bkgd(' ', curses.color_pair(1)) + screen.keypad(1) + # Set local variable + normal = curses.A_NORMAL + select = normal + curses.A_BOLD + # Title of Subwindow + screen.addstr(0, 3, self.settings[pos][0].center(12), normal) + # Key Press Operations + id_num = range(len(self.settings[pos][2])) + key_in = None + while key_in != 27: + for p, item in enumerate(self.settings[pos][2]): + item_str = item if pos else item["tag"] + screen.addstr(1 + p, 2, item_str, + select if p == i_pos else normal) + screen.refresh() + key_in = screen.getch() + if key_in == curses.KEY_DOWN: + i_pos = list(id_num[1:] + id_num[:1])[i_pos] + elif key_in == curses.KEY_UP: + i_pos = list(id_num[-1:] + id_num[:-1])[i_pos] + elif key_in in [10, 32]: + if pos == 0 and i_pos != self.settings[pos][1]: + test = self.settings[pos][2][i_pos]["test_url"] + self.check_connection(test) + self.settings[pos][1] = i_pos + return + + def setup_menu(self): + screen = self.__stdscr.subwin(21, 80, 2, 0) + screen.box() + screen.bkgd(' ', curses.color_pair(4)) + # Configuration Section + screen.addch(0, 26, curses.ACS_BSSS) + screen.vline(1, 26, curses.ACS_VLINE, 17) + # Status Section + screen.addch(7, 0, curses.ACS_SSSB) + screen.addch(7, 26, curses.ACS_SBSS) + screen.hline(7, 1, curses.ACS_HLINE, 25) + # Select Functions Section + screen.addch(0, 52, curses.ACS_BSSS) + screen.vline(1, 52, curses.ACS_VLINE, 17) + # Process Bar Section + screen.addch(18, 0, curses.ACS_SSSB) + screen.addch(18, 79, curses.ACS_SBSS) + screen.hline(18, 1, curses.ACS_HLINE, 78) + screen.addch(18, 26, curses.ACS_SSBS) + screen.addch(18, 52, curses.ACS_SSBS) + # Section Titles + title = curses.color_pair(6) + for s_title in self.subtitles: + cord = s_title[1] + screen.addstr(cord[0], cord[1], s_title[0], title) + screen.hline(cord[0] + 1, cord[1], curses.ACS_HLINE, 23) + screen.refresh() + + def confirm_win(self, op): + # Draw Shadow + shadow = curses.newwin(5, 40, 11, 21) + shadow.bkgd(' ', curses.color_pair(8)) + shadow.refresh() + # Draw Subwindow + screen = curses.newwin(5, 40, 10, 20) + screen.box() + screen.bkgd(' ', curses.color_pair(2)) + screen.keypad(1) + # Set local variable + normal = curses.A_NORMAL + select = curses.A_REVERSE + messages = ["Apply Changes to hosts file?", + "Backup current hosts file?", + "Restore hosts from a backup?"] + choices = ["Apply", "Cancel"] + # Draw subwindow frame + screen.addstr(1, 2, messages[op].center(36), normal) + screen.hline(2, 1, curses.ACS_HLINE, 38) + screen.addch(2, 0, curses.ACS_SSSB) + screen.addch(2, 39, curses.ACS_SBSS) + # Apply or Cancel the Operation + tab = 0 + key_in = None + while key_in != 27: + for i, item in enumerate(choices): + item_str = ''.join(['[', item, ']']) + screen.addstr(3, 6 + 20 * i, item_str, + select if i == tab else normal) + screen.refresh() + key_in = screen.getch() + if key_in in [9, curses.KEY_LEFT, curses.KEY_RIGHT]: + tab = [1, 0][tab] + if key_in in [ord('a'), ord('c')]: + key_in -= (ord('a') - ord('A')) + if key_in in [ord('A'), ord('C')]: + return [ord('A'), ord('C')].index(key_in) + if key_in in [10, 32]: + return tab + + def check_connection(self, url): + # Draw Shadow + shadow = curses.newwin(3, 30, 11, 21) + shadow.bkgd(' ', curses.color_pair(8)) + shadow.refresh() + # Draw Subwindow + screen = curses.newwin(3, 30, 10, 20) + screen.box() + screen.bkgd(' ', curses.color_pair(2)) + screen.keypad(1) + + normal = curses.A_NORMAL + screen.addstr(1, 3, "Checking Server Status...", normal) + screen.refresh() + + conn = Utilities.check_connection(url) + if conn: + self.statusinfo[0][1] = "OK" + self.statusinfo[0][2] = "GREEN" + else: + self.statusinfo[0][1] = "Error" + self.statusinfo[0][2] = "RED" + self.status() + return conn + + def check_platform(self): + plat = Utilities.check_platform() + self.statusinfo[1] = [self.statusinfo[1][0], plat[0], + "GREEN" if plat[4] else "RED"] + self.status() + return plat + + def check_update(self): + # Draw Shadow + shadow = curses.newwin(3, 30, 11, 21) + shadow.bkgd(' ', curses.color_pair(8)) + shadow.refresh() + # Draw Subwindow + screen = curses.newwin(3, 30, 10, 20) + screen.box() + screen.bkgd(' ', curses.color_pair(2)) + screen.keypad(1) + + normal = curses.A_NORMAL + screen.addstr(1, 7, "Checking Update...", normal) + screen.refresh() + + srv_id = self.settings[0][1] + url = self.settings[0][2][srv_id]["update"] + self.infofile + try: + socket.setdefaulttimeout(5) + urlobj = urllib.urlopen(url) + j_str = urlobj.read() + urlobj.close() + info = json.loads(j_str) + except: + info = {"version": "[Error]"} + self.hostsinfo["Latest"] = info["version"] + self.status() + return info + +class HostsCurses(object): + _ipv_id = 0 + _is_root = 0 + _down_flag = 0 + _funcs = [[], []] + _hostsinfo = [] + _make_cfg = {} + _make_mode = "" + _make_path = "./hosts" + _sys_eol = "" + _update = {} + hostsinfo = ["N/A", "N/A"] + + choice = [[], []] + slices = [[], []] + # OS related configuration + platform = '' + hostname = '' + hostspath = '' + # Mirror related configuration + _mirr_id = 0 + mirrors = [] + # Data file related configuration + filename = "hostslist.data" + infofile = "hostsinfo.json" + + def init_main(self): + # Set mirrors + self.mirrors = Utilities.set_network("network.conf") + self.set_platform() + # Read data file and set function list + try: + RetrieveData.unpack() + RetrieveData.connect_db() + self.set_func_list() + self.set_info() + except IOError: + pass + except BadZipfile: + pass + # Check if current session have root privileges + self.check_root() + + def opt_session(self): + window = HostsCursesUI() + window.func_items = self.choice + window.func_selec = self._funcs + window.hostsinfo["Version"] = self.hostsinfo[0] + window.hostsinfo["Release"] = self.hostsinfo[1] + window.settings[0][2] = self.mirrors + + window.section_daemon() + + def set_platform(self): + """Set OS info - Public Method + + Set the information of current operating system platform. + """ + system, hostname, path, encode, flag = Utilities.check_platform() + color = "GREEN" if flag else "RED" + self.platform = system + self.hostname = hostname + self.hostspath = path + if encode == "win_ansi": + self._sys_eol = "\r\n" + else: + self._sys_eol = "\n" + + def set_func_list(self): + for ip in range(2): + choice, defaults, slices = RetrieveData.get_choice(ip) + self.choice[ip] = choice + self.slices[ip] = slices + funcs = [] + for func in choice: + if func[1] in defaults[func[0]]: + funcs.append(1) + else: + funcs.append(0) + self._funcs[ip] = funcs + + def set_info(self): + """Set data file info - Public Method + + Set the information of the current local data file. + """ + info = RetrieveData.get_info() + ver = info["Version"] + build = info["Buildtime"] + build = Utilities.timestamp_to_date(build) + self.hostsinfo = [ver, build] + + def check_root(self): + """Check root privileges - Public Method + + Check if current session is ran with root privileges. + """ + is_root = Utilities.check_privileges()[1] + self._is_root = is_root + if not is_root: + #self.warning_permission() + pass + + +class HostsDownload(object): + def get_file(self, url, path, ui_class): + socket.setdefaulttimeout(10) + urllib.urlretrieve(url, path, ui_class.process_bar) + +if __name__ == "__main__": + main = HostsCurses() + main.init_main() + main.opt_session() diff --git a/network.conf b/network.conf index 5e96e43..a3220a8 100644 --- a/network.conf +++ b/network.conf @@ -1,15 +1,19 @@ [Google Code] +label = GC server = huhamhire-hosts.googlecode.com update = http://huhamhire-hosts.googlecode.com/git-history/gh-pages/update/ [Sourceforge] +label = SF server = master.dl.sourceforge.net update = http://master.dl.sourceforge.net/project/huhamhirehosts/update/ [Github] +label = GITHUB server = github.com update = http://huhamhire.github.com/huhamhire-hosts/update/ [Seattle] +label = SEA server = hosts.huhamhire.com update = http://hosts.huhamhire.com/update/ diff --git a/utilities.py b/utilities.py index cbb317f..3343f6b 100644 --- a/utilities.py +++ b/utilities.py @@ -14,7 +14,7 @@ # PURPOSE. # ===================================================================== -__version__ = "0.8" +__version__ = "0.9" __revision__ = "$Id$" __author__ = "huhamhire " @@ -142,6 +142,7 @@ def set_network(cls, conf_file="network.conf"): for sec in conf.sections(): mirror = {} mirror["tag"] = sec + mirror["label"] = conf.get(sec, "label") mirror["test_url"] = conf.get(sec, "server") mirror["update"] = conf.get(sec, "update") mirrors.append(mirror) From 205a19abc4758e10a6db2be4edb6a3f2812430c9 Mon Sep 17 00:00:00 2001 From: huhamhire Date: Sat, 16 Nov 2013 20:44:05 +0800 Subject: [PATCH 02/18] use new method to check write privileges to the hosts file in linux/unix Signed-off-by: huhamhire --- utilities.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/utilities.py b/utilities.py index 073ab2a..aa8a903 100644 --- a/utilities.py +++ b/utilities.py @@ -106,7 +106,7 @@ def check_privileges(cls): username (str): A string indicating username of the user running current session. flag (bool): A bool flag indicating whether the current session - has root privileges or not. + has write privileges to the hosts file or not. """ if os.name == 'nt': try: @@ -119,13 +119,15 @@ def check_privileges(cls): else: return (os.environ['USERNAME'], True) else: - if 'SUDO_USER' in os.environ and os.geteuid() == 0: - return (os.environ['SUDO_USER'], True) + # Check wirte privileges to the hosts file for current user + if oct(os.stat("/etc/hosts").st_mode)[-3:-2] >= "6": + w_flag = True else: - try: - return (os.environ['USERNAME'], False) - except KeyError: - return (os.environ['USER'], False) + w_flag = False + try: + return (os.environ['USERNAME'], w_flag) + except KeyError: + return (os.environ['USER'], w_flag) @classmethod def set_network(cls, conf_file="network.conf"): From 10c5ce1758b07f662d078692e83cf86605355120 Mon Sep 17 00:00:00 2001 From: huhamhire Date: Sat, 23 Nov 2013 11:00:35 +0800 Subject: [PATCH 03/18] test for qt style sheet Signed-off-by: huhamhire --- darkorange.qss | 473 +++++++++++++++++++++++++++++++++++++++ hostsutl.py | 6 + img/style/checkbox.png | Bin 0 -> 343 bytes img/style/down_arrow.png | Bin 0 -> 1008 bytes img/style/handle.png | Bin 0 -> 2837 bytes 5 files changed, 479 insertions(+) create mode 100644 darkorange.qss create mode 100644 img/style/checkbox.png create mode 100644 img/style/down_arrow.png create mode 100644 img/style/handle.png diff --git a/darkorange.qss b/darkorange.qss new file mode 100644 index 0000000..40cd3d4 --- /dev/null +++ b/darkorange.qss @@ -0,0 +1,473 @@ +QToolTip +{ + border: 1px solid black; + background-color: #ffa02f; + padding: 1px; + border-radius: 3px; + opacity: 100; +} + +QWidget +{ + color: #b1b1b1; + background-color: #323232; +} + +QWidget:item:hover +{ + background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #ca0619); + color: #000000; +} + +QWidget:item:selected +{ + background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); +} + +QMenuBar::item +{ + background: transparent; +} + +QMenuBar::item:selected +{ + background: transparent; + border: 1px solid #ffaa00; +} + +QMenuBar::item:pressed +{ + background: #444; + border: 1px solid #000; + background-color: QLinearGradient( + x1:0, y1:0, + x2:0, y2:1, + stop:1 #212121, + stop:0.4 #343434/*, + stop:0.2 #343434, + stop:0.1 #ffaa00*/ + ); + margin-bottom:-1px; + padding-bottom:1px; +} + +QMenu +{ + border: 1px solid #000; +} + +QMenu::item +{ + padding: 2px 20px 2px 20px; +} + +QMenu::item:selected +{ + color: #000000; +} + +QWidget:disabled +{ + color: #404040; + background-color: #323232; +} + +QAbstractItemView +{ + background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #4d4d4d, stop: 0.1 #646464, stop: 1 #5d5d5d); +} + +QWidget:focus +{ + /*border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a);*/ +} + +QLineEdit +{ + background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #4d4d4d, stop: 0 #646464, stop: 1 #5d5d5d); + padding: 1px; + border-style: solid; + border: 1px solid #1e1e1e; + border-radius: 5; +} + +QPushButton +{ + color: #b1b1b1; + background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #565656, stop: 0.1 #525252, stop: 0.5 #4e4e4e, stop: 0.9 #4a4a4a, stop: 1 #464646); + border-width: 1px; + border-color: #1e1e1e; + border-style: solid; + border-radius: 6; + padding: 3px; + font-size: 12px; + padding-left: 5px; + padding-right: 5px; +} + +QPushButton:pressed +{ + background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #2d2d2d, stop: 0.1 #2b2b2b, stop: 0.5 #292929, stop: 0.9 #282828, stop: 1 #252525); +} + +QComboBox +{ + selection-background-color: #ffaa00; + background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #565656, stop: 0.1 #525252, stop: 0.5 #4e4e4e, stop: 0.9 #4a4a4a, stop: 1 #464646); + border-style: solid; + border: 1px solid #1e1e1e; + border-radius: 5; +} + +QComboBox:hover,QPushButton:hover +{ + border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); +} + + +QComboBox:on +{ + padding-top: 3px; + padding-left: 4px; + background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #2d2d2d, stop: 0.1 #2b2b2b, stop: 0.5 #292929, stop: 0.9 #282828, stop: 1 #252525); + selection-background-color: #ffaa00; +} + +QComboBox QAbstractItemView +{ + border: 2px solid darkgray; + selection-background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); +} + +QComboBox::drop-down +{ + subcontrol-origin: padding; + subcontrol-position: top right; + width: 15px; + + border-left-width: 0px; + border-left-color: darkgray; + border-left-style: solid; /* just a single line */ + border-top-right-radius: 3px; /* same radius as the QComboBox */ + border-bottom-right-radius: 3px; + } + +QComboBox::down-arrow +{ + image: url(:/img/style/down_arrow.png); +} + +QGroupBox { + color: #b1b1b1; + border: 1px solid #444; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + background-color: #323232; + padding-left: 10px; + padding-right: 10px; + padding-top: 3px; + padding-bottom: 2px; +} + +QGroupBox:focus +{ + border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); +} + +QTextEdit:focus +{ + border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); +} + +QScrollBar:horizontal { + border: 1px solid #222222; + background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0.0 #121212, stop: 0.2 #282828, stop: 1 #484848); + height: 7px; + margin: 0px 16px 0 16px; +} + +QScrollBar::handle:horizontal +{ + background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #ffa02f, stop: 0.5 #d7801a, stop: 1 #ffa02f); + min-height: 20px; + border-radius: 2px; +} + +QScrollBar::add-line:horizontal { + border: 1px solid #1b1b19; + border-radius: 2px; + background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #ffa02f, stop: 1 #d7801a); + width: 14px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal { + border: 1px solid #1b1b19; + border-radius: 2px; + background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #ffa02f, stop: 1 #d7801a); + width: 14px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::right-arrow:horizontal, QScrollBar::left-arrow:horizontal +{ + border: 1px solid black; + width: 1px; + height: 1px; + background: white; +} + +QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal +{ + background: none; +} + +QScrollBar:vertical +{ + background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0.0 #121212, stop: 0.2 #282828, stop: 1 #484848); + width: 7px; + margin: 16px 0 16px 0; + border: 1px solid #222222; +} + +QScrollBar::handle:vertical +{ + background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 0.5 #d7801a, stop: 1 #ffa02f); + min-height: 20px; + border-radius: 2px; +} + +QScrollBar::add-line:vertical +{ + border: 1px solid #1b1b19; + border-radius: 2px; + background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); + height: 14px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical +{ + border: 1px solid #1b1b19; + border-radius: 2px; + background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #d7801a, stop: 1 #ffa02f); + height: 14px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical +{ + border: 1px solid black; + width: 1px; + height: 1px; + background: white; +} + + +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical +{ + background: none; +} + +QTextEdit +{ + background-color: #242424; +} + +QPlainTextEdit +{ + background-color: #242424; +} + +QHeaderView::section +{ + background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #616161, stop: 0.5 #505050, stop: 0.6 #434343, stop:1 #656565); + color: white; + padding-left: 4px; + border: 1px solid #6c6c6c; +} + +QCheckBox:disabled +{ +color: #414141; +} + +QDockWidget::title +{ + text-align: center; + spacing: 3px; /* spacing between items in the tool bar */ + background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #323232, stop: 0.5 #242424, stop:1 #323232); +} + +QDockWidget::close-button, QDockWidget::float-button +{ + text-align: center; + spacing: 1px; /* spacing between items in the tool bar */ + background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #323232, stop: 0.5 #242424, stop:1 #323232); +} + +QDockWidget::close-button:hover, QDockWidget::float-button:hover +{ + background: #242424; +} + +QDockWidget::close-button:pressed, QDockWidget::float-button:pressed +{ + padding: 1px -1px -1px 1px; +} + +QMainWindow::separator +{ + background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #161616, stop: 0.5 #151515, stop: 0.6 #212121, stop:1 #343434); + color: white; + padding-left: 4px; + border: 1px solid #4c4c4c; + spacing: 3px; /* spacing between items in the tool bar */ +} + +QMainWindow::separator:hover +{ + + background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #d7801a, stop:0.5 #b56c17 stop:1 #ffa02f); + color: white; + padding-left: 4px; + border: 1px solid #6c6c6c; + spacing: 3px; /* spacing between items in the tool bar */ +} + +QToolBar::handle +{ + spacing: 3px; /* spacing between items in the tool bar */ + background: url(:/img/style/handle.png); +} + +QMenu::separator +{ + height: 2px; + background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #161616, stop: 0.5 #151515, stop: 0.6 #212121, stop:1 #343434); + color: white; + padding-left: 4px; + margin-left: 10px; + margin-right: 5px; +} + +QProgressBar +{ + border: 1px solid grey; + border-radius: 5px; + text-align: center; +} + +QProgressBar::chunk +{ + background-color: #d7801a; + width: 2.15px; + margin: 0.5px; +} + +QTabBar::tab { + color: #b1b1b1; + border: 1px solid #444; + border-bottom-style: none; + background-color: #323232; + padding-left: 10px; + padding-right: 10px; + padding-top: 3px; + padding-bottom: 2px; + margin-right: -1px; +} + +QTabWidget::pane { + border: 1px solid #444; + top: 1px; +} + +QTabBar::tab:last +{ + margin-right: 0; /* the last selected tab has nothing to overlap with on the right */ + border-top-right-radius: 3px; +} + +QTabBar::tab:first:!selected +{ + margin-left: 0px; /* the last selected tab has nothing to overlap with on the right */ + + + border-top-left-radius: 3px; +} + +QTabBar::tab:!selected +{ + color: #b1b1b1; + border-bottom-style: solid; + margin-top: 3px; + background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:1 #212121, stop:.4 #343434); +} + +QTabBar::tab:selected +{ + border-top-left-radius: 3px; + border-top-right-radius: 3px; + margin-bottom: 0px; +} + +QTabBar::tab:!selected:hover +{ + /*border-top: 2px solid #ffaa00; + padding-bottom: 3px;*/ + border-top-left-radius: 3px; + border-top-right-radius: 3px; + background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:1 #212121, stop:0.4 #343434, stop:0.2 #343434, stop:0.1 #ffaa00); +} + +QRadioButton::indicator:checked, QRadioButton::indicator:unchecked{ + color: #b1b1b1; + background-color: #323232; + border: 1px solid #b1b1b1; + border-radius: 6px; +} + +QRadioButton::indicator:checked +{ + background-color: qradialgradient( + cx: 0.5, cy: 0.5, + fx: 0.5, fy: 0.5, + radius: 1.0, + stop: 0.25 #ffaa00, + stop: 0.3 #323232 + ); +} + +QCheckBox::indicator{ + color: #b1b1b1; + background-color: #323232; + border: 1px solid #b1b1b1; + width: 9px; + height: 9px; +} + +QRadioButton::indicator +{ + border-radius: 6px; +} + +QRadioButton::indicator:hover, QCheckBox::indicator:hover +{ + border: 1px solid #ffaa00; +} + +QCheckBox::indicator:checked +{ + image:url(:/img/style/checkbox.png); +} + +QCheckBox::indicator:disabled, QRadioButton::indicator:disabled +{ + border: 1px solid #444; +} diff --git a/hostsutl.py b/hostsutl.py index f9d420a..c34a519 100644 --- a/hostsutl.py +++ b/hostsutl.py @@ -599,6 +599,12 @@ def set_font(self): font = QtGui.QFont() font.setFamily(_fromUtf8("Courier")) self.setFont(font) + + app = QtGui.QApplication.instance() + #app.setStyle(QtGui.QStyleFactory.create("Cleanlooks")) + with open("./darkorange.qss", "r") as qss: + app.setStyleSheet(qss.read()) + elif system == "Linux": font = QtGui.QFont() font.setFamily(_fromUtf8("Sans")) diff --git a/img/style/checkbox.png b/img/style/checkbox.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a9aa3b52dc02e6e117747a9ac9d9467526a4f7 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{!3Opi<85sDEfH31!Z9ZwBphB`o zkS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0x&hVR^>lFzskjx>x6!Y~ zL82x7y^qd`n>xG^0n*%uf2ox3~Sc{nxWy^uZGQQwlaH4B=bcp9+~j`r=91d+56tVKeegm>%ILf&*tpj ztMF5D-PEApI;Zz7ox<4oWVXeA8?B{sAN(I%*qQr&*6?6r*tM>DdeFP3#K>v=i!|0T zBrr1^oALM-14E(A`z_b}88)zfP|uo|?h?qt;BooOJU8P*7-ZbZ>KLZ*U+lnSp_Ufq@}0xwybFAi#%#fq@|}KQEO56)-X|e7nZL z$iTqBa9P*U#mSX{G{Bl%P*lRez;J+pfx##xwK$o9f#C}S14DXwNkIt%17i#W1A|CX zc0maP17iUL1A|C*NRTrF17iyV0~1e4YDEbH0|SF|enDkXW_m`6f}y3QrGjHhep0GJ zaAk2xYHqQDXI^rCQ9*uDVo7QW0|Nup4h9AW240u^5(W3f%sd4n162kpgNVo|1qcff zJ_s=cNG>fZg9jx8g8+j9g8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCG zm^qSpA@ds+OO_6nTdaDlt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JW@PU zd4+f<@d@)yL(o<5icqT158+-B6_LH7;i6x}CW#w~Uy-Pgl#@Irl`kzV zeL|*8R$ca%T%Wv){2zs_iiJvgN^h0dsuZZ2sQy$tsNSU!s;Q*;LF<6_B%M@UD?LHI zSNcZ`78uqV#TeU~$eS{ozBIdFzSClfs*^S+dw;4dus<{M;#|MXC)T}S9v!D zcV!QCPhBq)ZyO(X-(bH4|NMaZz==UigLj2o41F2S6d@OB6%`R(5i>J(Puzn9wnW{e zu;hl6HK{k#IWjCVGqdJqU(99Cv(K+6*i`tgSi2;vbXD1#3jNBGs$DgVwO(~o>mN4i zHPtkqZIx>)Y(Ls5-Br|mx>vQYvH$Kwn@O`L|D75??eGkZnfg$5<;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e z{{R4h=>PzAFaQARU;qF*m;eA5Z<1fdMgRZ+Qb|NXRCwBASoP`3KNwv8o*~o!#E+}L zul~OJ`_PwYV}}0>g=_bI-1~9!hs?bH3=IDn7?^X;&b=Qw|3AZj28RC({}~kBEVlk< e_|Nd40Wbh+Uo2;I+U)xP0000KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000$NklVMPKO=v1z4#?O7k%o-pfgo_1`nW$>tLb`j# ns**<>+ literal 0 HcmV?d00001 From d82a89533333a71b79975a850b2b8daeed203b3d Mon Sep 17 00:00:00 2001 From: huhamhire Date: Sun, 24 Nov 2013 14:51:13 +0800 Subject: [PATCH 04/18] Adjust new dark style Signed-off-by: huhamhire --- darkorange.qss | 114 +++++++++-------- qthosts_rc.py | 2 +- qthostsui.py | 28 +++-- qthostsui.ui | 23 ++-- style.qrc | 7 ++ style_rc.py | 327 +++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 429 insertions(+), 72 deletions(-) create mode 100644 style.qrc create mode 100644 style_rc.py diff --git a/darkorange.qss b/darkorange.qss index 40cd3d4..4421184 100644 --- a/darkorange.qss +++ b/darkorange.qss @@ -1,27 +1,29 @@ QToolTip { border: 1px solid black; - background-color: #ffa02f; + color: #b1b1b1; + background-color: #3c3f41; padding: 1px; - border-radius: 3px; + border-radius: 0px; opacity: 100; } QWidget { color: #b1b1b1; - background-color: #323232; + background-color: #3c3f41; } QWidget:item:hover { - background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #ca0619); - color: #000000; + background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); + color: #ffffff; } QWidget:item:selected { background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); + color: #ffffff; } QMenuBar::item @@ -69,7 +71,7 @@ QMenu::item:selected QWidget:disabled { color: #404040; - background-color: #323232; + background-color: #3c3f41; } QAbstractItemView @@ -103,6 +105,8 @@ QPushButton font-size: 12px; padding-left: 5px; padding-right: 5px; + min-width: 32px; + min-height: 18px; } QPushButton:pressed @@ -154,21 +158,22 @@ QComboBox::drop-down QComboBox::down-arrow { - image: url(:/img/style/down_arrow.png); + image: url(:/qss/img/style/down_arrow.png); } QGroupBox { color: #b1b1b1; - border: 1px solid #444; - border-top-left-radius: 3px; - border-top-right-radius: 3px; - border-bottom-left-radius: 3px; - border-bottom-right-radius: 3px; - background-color: #323232; - padding-left: 10px; - padding-right: 10px; - padding-top: 3px; - padding-bottom: 2px; + border: 1px solid grey; + border-radius: 5px; + background-color: none; + padding-top: 7px; + padding-bottom: 7px; + margin-top: 7px; /* leave space at the top for the title */ +} + +QGroupBox::title { + top:-7 ex;left: 10px; + subcontrol-origin: border; } QGroupBox:focus @@ -176,38 +181,44 @@ QGroupBox:focus border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); } +QListWidget +{ + border: none; +} + QTextEdit:focus { border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); } QScrollBar:horizontal { - border: 1px solid #222222; - background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0.0 #121212, stop: 0.2 #282828, stop: 1 #484848); - height: 7px; + /*border: 1px solid #222222;*/ + background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0.0 #1c1c1c, stop: 0.2 #222222, stop: 1 #323232); + height: 9px; margin: 0px 16px 0 16px; } QScrollBar::handle:horizontal { - background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #ffa02f, stop: 0.5 #d7801a, stop: 1 #ffa02f); + background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #585858, stop: 0.5 #474747, stop: 1 #404040); min-height: 20px; - border-radius: 2px; + border: 1px solid #222222; + border-radius: 4px; } QScrollBar::add-line:horizontal { - border: 1px solid #1b1b19; + border: 1px solid #222222; border-radius: 2px; - background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #ffa02f, stop: 1 #d7801a); + background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #585858, stop: 1 #474747); width: 14px; subcontrol-position: right; subcontrol-origin: margin; } QScrollBar::sub-line:horizontal { - border: 1px solid #1b1b19; + border: 1px solid #222222; border-radius: 2px; - background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #ffa02f, stop: 1 #d7801a); + background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #585858, stop: 1 #474747); width: 14px; subcontrol-position: left; subcontrol-origin: margin; @@ -215,10 +226,12 @@ QScrollBar::sub-line:horizontal { QScrollBar::right-arrow:horizontal, QScrollBar::left-arrow:horizontal { + /* border: 1px solid black; width: 1px; height: 1px; background: white; + */ } QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal @@ -228,24 +241,26 @@ QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal QScrollBar:vertical { - background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0.0 #121212, stop: 0.2 #282828, stop: 1 #484848); - width: 7px; + background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0.0 #1c1c1c, stop: 0.2 #222222, stop: 1 #323232); + /*background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0.0 #121212, stop: 0.2 #282828, stop: 1 #484848);*/ + width: 9px; margin: 16px 0 16px 0; - border: 1px solid #222222; } QScrollBar::handle:vertical { - background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 0.5 #d7801a, stop: 1 #ffa02f); + background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #585858, stop: 0.5 #474747, stop: 1 #404040); + /*background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 0.5 #d7801a, stop: 1 #ffa02f);*/ min-height: 20px; - border-radius: 2px; + border: 1px solid #222222; + border-radius: 4px; } QScrollBar::add-line:vertical { - border: 1px solid #1b1b19; + border: 1px solid #222222; border-radius: 2px; - background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); + background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #585858, stop: 1 #474747); height: 14px; subcontrol-position: bottom; subcontrol-origin: margin; @@ -253,9 +268,9 @@ QScrollBar::add-line:vertical QScrollBar::sub-line:vertical { - border: 1px solid #1b1b19; + border: 1px solid #222222; border-radius: 2px; - background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #d7801a, stop: 1 #ffa02f); + background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #585858, stop: 1 #474747); height: 14px; subcontrol-position: top; subcontrol-origin: margin; @@ -263,10 +278,12 @@ QScrollBar::sub-line:vertical QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { + /* border: 1px solid black; width: 1px; height: 1px; background: white; + */ } @@ -295,21 +312,21 @@ QHeaderView::section QCheckBox:disabled { -color: #414141; + color: #414141; } QDockWidget::title { text-align: center; spacing: 3px; /* spacing between items in the tool bar */ - background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #323232, stop: 0.5 #242424, stop:1 #323232); + background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #3c3f41, stop: 0.5 #242424, stop:1 #3c3f41); } QDockWidget::close-button, QDockWidget::float-button { text-align: center; spacing: 1px; /* spacing between items in the tool bar */ - background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #323232, stop: 0.5 #242424, stop:1 #323232); + background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #3c3f41, stop: 0.5 #242424, stop:1 #3c3f41); } QDockWidget::close-button:hover, QDockWidget::float-button:hover @@ -333,7 +350,6 @@ QMainWindow::separator QMainWindow::separator:hover { - background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #d7801a, stop:0.5 #b56c17 stop:1 #ffa02f); color: white; padding-left: 4px; @@ -344,7 +360,7 @@ QMainWindow::separator:hover QToolBar::handle { spacing: 3px; /* spacing between items in the tool bar */ - background: url(:/img/style/handle.png); + background: url(:/qss/img/style/handle.png); } QMenu::separator @@ -361,21 +377,23 @@ QProgressBar { border: 1px solid grey; border-radius: 5px; + color: #ffffff; text-align: center; } QProgressBar::chunk { - background-color: #d7801a; - width: 2.15px; - margin: 0.5px; + background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); + border-radius: 5px; + /*width: 2.15px;*/ + /*margin: 0.5px;*/ } QTabBar::tab { color: #b1b1b1; border: 1px solid #444; border-bottom-style: none; - background-color: #323232; + background-color: #3c3f41; padding-left: 10px; padding-right: 10px; padding-top: 3px; @@ -428,7 +446,7 @@ QTabBar::tab:!selected:hover QRadioButton::indicator:checked, QRadioButton::indicator:unchecked{ color: #b1b1b1; - background-color: #323232; + background-color: #3c3f41; border: 1px solid #b1b1b1; border-radius: 6px; } @@ -440,13 +458,13 @@ QRadioButton::indicator:checked fx: 0.5, fy: 0.5, radius: 1.0, stop: 0.25 #ffaa00, - stop: 0.3 #323232 + stop: 0.3 #3c3f41 ); } QCheckBox::indicator{ color: #b1b1b1; - background-color: #323232; + background-color: #3c3f41; border: 1px solid #b1b1b1; width: 9px; height: 9px; @@ -464,7 +482,7 @@ QRadioButton::indicator:hover, QCheckBox::indicator:hover QCheckBox::indicator:checked { - image:url(:/img/style/checkbox.png); + image:url(:/qss/img/style/checkbox.png); } QCheckBox::indicator:disabled, QRadioButton::indicator:disabled diff --git a/qthosts_rc.py b/qthosts_rc.py index c045b03..ef63f24 100644 --- a/qthosts_rc.py +++ b/qthosts_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: 周五 8月 2 19:08:24 2013 +# Created: 周日 11月 24 14:32:53 2013 # by: The Resource Compiler for PyQt (Qt v4.8.4) # # WARNING! All changes made in this file will be lost! diff --git a/qthostsui.py b/qthostsui.py index c44bacc..7bfdad5 100644 --- a/qthostsui.py +++ b/qthostsui.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'qthostsui.ui' # -# Created: Fri Aug 02 19:08:24 2013 +# Created: Sun Nov 24 14:32:53 2013 # by: PyQt4 UI code generator 4.10.2 # # WARNING! All changes made in this file will be lost! @@ -27,14 +27,14 @@ class Ui_HostsUtlMain(object): def setupUi(self, HostsUtlMain): HostsUtlMain.setObjectName(_fromUtf8("HostsUtlMain")) HostsUtlMain.setEnabled(True) - HostsUtlMain.resize(640, 360) + HostsUtlMain.resize(640, 400) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(HostsUtlMain.sizePolicy().hasHeightForWidth()) HostsUtlMain.setSizePolicy(sizePolicy) - HostsUtlMain.setMinimumSize(QtCore.QSize(640, 360)) - HostsUtlMain.setMaximumSize(QtCore.QSize(640, 360)) + HostsUtlMain.setMinimumSize(QtCore.QSize(640, 400)) + HostsUtlMain.setMaximumSize(QtCore.QSize(640, 400)) HostsUtlMain.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(_fromUtf8(":/icon/img/utl_icon.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) @@ -43,13 +43,13 @@ def setupUi(self, HostsUtlMain): HostsUtlMain.setSizeGripEnabled(False) HostsUtlMain.setModal(False) self.Prog = QtGui.QProgressBar(HostsUtlMain) - self.Prog.setGeometry(QtCore.QRect(10, 320, 500, 25)) + self.Prog.setGeometry(QtCore.QRect(10, 360, 500, 25)) self.Prog.setAlignment(QtCore.Qt.AlignCenter) self.Prog.setTextVisible(True) self.Prog.setInvertedAppearance(False) self.Prog.setObjectName(_fromUtf8("Prog")) self.ConfigBox = QtGui.QGroupBox(HostsUtlMain) - self.ConfigBox.setGeometry(QtCore.QRect(10, 20, 240, 90)) + self.ConfigBox.setGeometry(QtCore.QRect(10, 60, 240, 90)) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -57,7 +57,7 @@ def setupUi(self, HostsUtlMain): self.ConfigBox.setSizePolicy(sizePolicy) self.ConfigBox.setObjectName(_fromUtf8("ConfigBox")) self.layoutWidget = QtGui.QWidget(self.ConfigBox) - self.layoutWidget.setGeometry(QtCore.QRect(10, 30, 221, 50)) + self.layoutWidget.setGeometry(QtCore.QRect(10, 25, 221, 50)) self.layoutWidget.setObjectName(_fromUtf8("layoutWidget")) self.configLayout = QtGui.QGridLayout(self.layoutWidget) self.configLayout.setMargin(0) @@ -79,7 +79,7 @@ def setupUi(self, HostsUtlMain): self.SelectIP.setItemText(1, _fromUtf8("IPv6")) self.configLayout.addWidget(self.SelectIP, 1, 1, 1, 1) self.StatusBox = QtGui.QGroupBox(HostsUtlMain) - self.StatusBox.setGeometry(QtCore.QRect(10, 120, 240, 90)) + self.StatusBox.setGeometry(QtCore.QRect(10, 160, 240, 90)) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -113,7 +113,7 @@ def setupUi(self, HostsUtlMain): self.labelOSStat.setObjectName(_fromUtf8("labelOSStat")) self.StatusLayout.addWidget(self.labelOSStat, 1, 1, 1, 1) self.FunctionsBox = QtGui.QGroupBox(HostsUtlMain) - self.FunctionsBox.setGeometry(QtCore.QRect(260, 20, 250, 290)) + self.FunctionsBox.setGeometry(QtCore.QRect(260, 60, 250, 290)) self.FunctionsBox.setObjectName(_fromUtf8("FunctionsBox")) self.Functionlist = QtGui.QListWidget(self.FunctionsBox) self.Functionlist.setGeometry(QtCore.QRect(10, 20, 230, 260)) @@ -124,7 +124,7 @@ def setupUi(self, HostsUtlMain): self.Functionlist.setSizePolicy(sizePolicy) self.Functionlist.setObjectName(_fromUtf8("Functionlist")) self.frame = QtGui.QFrame(HostsUtlMain) - self.frame.setGeometry(QtCore.QRect(520, 30, 110, 280)) + self.frame.setGeometry(QtCore.QRect(520, 70, 110, 280)) self.frame.setFrameShape(QtGui.QFrame.NoFrame) self.frame.setFrameShadow(QtGui.QFrame.Raised) self.frame.setLineWidth(0) @@ -194,7 +194,7 @@ def setupUi(self, HostsUtlMain): self.ButtonUTF.setIconSize(QtCore.QSize(32, 32)) self.ButtonUTF.setObjectName(_fromUtf8("ButtonUTF")) self.InfoBox = QtGui.QGroupBox(HostsUtlMain) - self.InfoBox.setGeometry(QtCore.QRect(10, 220, 240, 90)) + self.InfoBox.setGeometry(QtCore.QRect(10, 260, 240, 90)) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -226,7 +226,7 @@ def setupUi(self, HostsUtlMain): self.labelLatestData.setObjectName(_fromUtf8("labelLatestData")) self.InfoLayout.addWidget(self.labelLatestData, 2, 1, 1, 1) self.SelectLang = QtGui.QComboBox(HostsUtlMain) - self.SelectLang.setGeometry(QtCore.QRect(520, 320, 108, 25)) + self.SelectLang.setGeometry(QtCore.QRect(520, 360, 108, 25)) self.SelectLang.setObjectName(_fromUtf8("SelectLang")) self.labelIP.setBuddy(self.SelectMirror) self.labelMirror.setBuddy(self.SelectIP) @@ -253,6 +253,9 @@ def setupUi(self, HostsUtlMain): HostsUtlMain.setTabOrder(self.ButtonCheck, self.ButtonUpdate) HostsUtlMain.setTabOrder(self.ButtonUpdate, self.ButtonBackup) HostsUtlMain.setTabOrder(self.ButtonBackup, self.ButtonRestore) + HostsUtlMain.setTabOrder(self.ButtonRestore, self.ButtonANSI) + HostsUtlMain.setTabOrder(self.ButtonANSI, self.ButtonUTF) + HostsUtlMain.setTabOrder(self.ButtonUTF, self.SelectLang) def retranslateUi(self, HostsUtlMain): HostsUtlMain.setWindowTitle(_translate("HostsUtlMain", "Hosts Setup Utility", None)) @@ -290,6 +293,7 @@ def retranslateUi(self, HostsUtlMain): self.labelLatestData.setText(_translate("HostsUtlMain", "N/A", None)) import qthosts_rc +import style_rc if __name__ == "__main__": import sys diff --git a/qthostsui.ui b/qthostsui.ui index 2bdb5b1..6c30fd8 100644 --- a/qthostsui.ui +++ b/qthostsui.ui @@ -11,7 +11,7 @@ 0 0 640 - 360 + 400 @@ -23,13 +23,13 @@ 640 - 360 + 400 640 - 360 + 400 @@ -55,7 +55,7 @@ 10 - 320 + 360 500 25 @@ -74,7 +74,7 @@ 10 - 20 + 60 240 90 @@ -92,7 +92,7 @@ 10 - 30 + 25 221 50 @@ -142,7 +142,7 @@ 10 - 120 + 160 240 90 @@ -213,7 +213,7 @@ 260 - 20 + 60 250 290 @@ -242,7 +242,7 @@ 520 - 30 + 70 110 280 @@ -493,7 +493,7 @@ 10 - 220 + 260 240 90 @@ -566,7 +566,7 @@ 520 - 320 + 360 108 25 @@ -596,6 +596,7 @@ + diff --git a/style.qrc b/style.qrc new file mode 100644 index 0000000..a3cb144 --- /dev/null +++ b/style.qrc @@ -0,0 +1,7 @@ + + + img/style/checkbox.png + img/style/down_arrow.png + img/style/handle.png + + diff --git a/style_rc.py b/style_rc.py new file mode 100644 index 0000000..84c416a --- /dev/null +++ b/style_rc.py @@ -0,0 +1,327 @@ +# -*- coding: utf-8 -*- + +# Resource object code +# +# Created: 周日 11月 24 14:32:53 2013 +# by: The Resource Compiler for PyQt (Qt v4.8.4) +# +# WARNING! All changes made in this file will be lost! + +from PyQt4 import QtCore + +qt_resource_data = "\ +\x00\x00\x01\x57\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x09\x08\x06\x00\x00\x00\xe0\x91\x06\x10\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0e\xc4\x00\x00\x0e\xc4\ +\x01\x95\x2b\x0e\x1b\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\ +\x25\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00\x75\ +\x30\x00\x00\xea\x60\x00\x00\x3a\x98\x00\x00\x17\x6f\x92\x5f\xc5\ +\x46\x00\x00\x00\xdd\x49\x44\x41\x54\x78\xda\x5c\x8e\xb1\x4e\x84\ +\x40\x18\x84\x67\xef\x4c\x2c\xc8\xd9\x2c\x0d\x58\x50\x1b\x0b\xc3\ +\xfa\x24\x77\xbd\x0d\x85\x4f\x40\x0b\xbb\xcb\x3b\xd0\x68\x41\x72\ +\xc5\xd2\x28\x4f\x02\xcf\xb1\x97\x40\x61\xd4\xc2\xc4\x62\x2c\xbc\ +\x4d\xd0\x49\xfe\xbf\xf8\x32\xff\x3f\x23\x48\xc2\x5a\x3b\x00\x80\ +\xd6\xfa\x80\xb3\xac\xb5\x03\x49\x18\x63\x0e\x5b\x21\xc4\x90\xe7\ +\xf9\x3e\x49\x92\x9b\xbe\xef\xef\xca\xb2\x7c\xf5\xde\xbf\x04\xe6\ +\x9c\xbb\xbd\x20\xf9\x19\xae\x95\x52\xfb\x2c\xcb\xbe\xa5\x94\x01\ +\x81\xe4\x9b\x38\xbf\x3c\x2a\xa5\x1e\xf0\x4f\xe3\x38\x3e\x37\x4d\ +\xf3\x28\x48\x02\x00\xba\xae\x7b\x97\x52\xee\x82\x61\x59\x96\x8f\ +\xa2\x28\xae\x00\x60\x03\x00\xc6\x98\xe3\xda\x00\x00\x71\x1c\xef\ +\xb4\xd6\x4f\x00\xb0\x05\xf0\x27\x6a\x9e\x67\x44\x51\x04\x00\x48\ +\xd3\xf4\xde\x39\x77\xbd\x21\xf9\xb5\xea\x70\x6a\xdb\xf6\x72\x9a\ +\xa6\xd3\xaa\xf8\xef\xaa\xeb\xda\x57\x55\xe5\x49\x22\xcc\x9a\xfd\ +\x0c\x00\x24\xab\x6e\xfa\x96\x21\xfc\xb8\x00\x00\x00\x00\x49\x45\ +\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x03\xf0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x07\x00\x00\x00\x05\x08\x04\x00\x00\x00\x23\x93\x3e\x53\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x03\x18\x69\x43\x43\x50\x50\x68\x6f\ +\x74\x6f\x73\x68\x6f\x70\x20\x49\x43\x43\x20\x70\x72\x6f\x66\x69\ +\x6c\x65\x00\x00\x78\xda\x63\x60\x60\x9e\xe0\xe8\xe2\xe4\xca\x24\ +\xc0\xc0\x50\x50\x54\x52\xe4\x1e\xe4\x18\x19\x11\x19\xa5\xc0\x7e\ +\x9e\x81\x8d\x81\x99\x81\x81\x81\x81\x81\x21\x31\xb9\xb8\xc0\x31\ +\x20\xc0\x87\x81\x81\x81\x21\x2f\x3f\x2f\x95\x01\x15\x30\x32\x30\ +\x7c\xbb\xc6\xc0\xc8\xc0\xc0\xc0\x70\x59\xd7\xd1\xc5\xc9\x95\x81\ +\x34\xc0\x9a\x5c\x50\x54\xc2\xc0\xc0\x70\x80\x81\x81\xc1\x28\x25\ +\xb5\x38\x99\x81\x81\xe1\x0b\x03\x03\x43\x7a\x79\x49\x41\x09\x03\ +\x03\x63\x0c\x03\x03\x83\x48\x52\x76\x41\x09\x03\x03\x63\x01\x03\ +\x03\x83\x48\x76\x48\x90\x33\x03\x03\x63\x0b\x03\x03\x13\x4f\x49\ +\x6a\x45\x09\x03\x03\x03\x83\x73\x7e\x41\x65\x51\x66\x7a\x46\x89\ +\x82\xa1\xa5\xa5\xa5\x82\x63\x4a\x7e\x52\xaa\x42\x70\x65\x71\x49\ +\x6a\x6e\xb1\x82\x67\x5e\x72\x7e\x51\x41\x7e\x51\x62\x49\x6a\x0a\ +\x03\x03\x03\xd4\x0e\x06\x06\x06\x06\x5e\x97\xfc\x12\x05\xf7\xc4\ +\xcc\x3c\x05\x23\x03\x55\x06\x2a\x83\x88\xc8\x28\x05\x08\x0b\x11\ +\x3e\x08\x31\x04\x48\x2e\x2d\x2a\x83\x07\x25\x03\x83\x00\x83\x02\ +\x83\x01\x83\x03\x43\x00\x43\x22\x43\x3d\xc3\x02\x86\xa3\x0c\x6f\ +\x18\xc5\x19\x5d\x18\x4b\x19\x57\x30\xde\x63\x12\x63\x0a\x62\x9a\ +\xc0\x74\x81\x59\x98\x39\x92\x79\x21\xf3\x1b\x16\x4b\x96\x0e\x96\ +\x5b\xac\x7a\xac\xad\xac\xf7\xd8\x2c\xd9\xa6\xb1\x7d\x63\x0f\x67\ +\xdf\xcd\xa1\xc4\xd1\xc5\xf1\x85\x33\x91\xf3\x02\x97\x23\xd7\x16\ +\x6e\x4d\xee\x05\x3c\x52\x3c\x53\x79\x85\x78\x27\xf1\x09\xf3\x4d\ +\xe3\x97\xe1\x5f\x2c\xa0\x23\xb0\x43\xd0\x55\xf0\x8a\x50\xaa\xd0\ +\x0f\xe1\x5e\x11\x15\x91\xbd\xa2\xe1\xa2\x5f\xc4\x26\x89\x1b\x89\ +\x5f\x91\xa8\x90\x94\x93\x3c\x26\x95\x2f\x2d\x2d\x7d\x42\xa6\x4c\ +\x56\x5d\xf6\x96\x5c\x9f\xbc\x8b\xfc\x1f\x85\xad\x8a\x85\x4a\x7a\ +\x4a\x6f\x95\xd7\xaa\x14\xa8\x9a\xa8\xfe\x54\x3b\xa8\xde\xa5\x11\ +\xaa\xa9\xa4\xf9\x41\xeb\x80\xf6\x24\x9d\x54\x5d\x2b\x3d\x41\xbd\ +\x57\xfa\x47\x0c\x16\x18\xd6\x1a\xc5\x18\xdb\x9a\xc8\x9b\x32\x9b\ +\xbe\x34\xbb\x60\xbe\xd3\x62\x89\xe5\x04\xab\x3a\xeb\x5c\x9b\x38\ +\xdb\x40\x3b\x57\x7b\x6b\x07\x63\x47\x1d\x27\x35\x67\x25\x17\x05\ +\x57\x79\x37\x05\x77\x65\x0f\x75\x4f\x5d\x2f\x13\x6f\x1b\x1f\x77\ +\xdf\x60\xbf\x04\xff\xfc\x80\xfa\xc0\x89\x41\x4b\x83\x77\x85\x5c\ +\x0c\x7d\x19\xce\x14\x21\x17\x69\x15\x15\x11\x5d\x11\x33\x33\x76\ +\x4f\xdc\x83\x04\xb6\x44\xdd\xa4\xb0\xe4\x86\x94\x35\xa9\x37\xd3\ +\x39\x32\x2c\x32\x33\xb3\xe6\x66\x5f\xcc\x65\xcf\xb3\xcf\xaf\x28\ +\xd8\x54\xf8\xae\x58\xbb\x24\xab\x74\x55\xd9\x9b\x0a\xfd\xca\x92\ +\xaa\x5d\x35\x8c\xb5\x5e\x75\x53\xeb\x1f\x36\xea\x35\xd5\x34\x9f\ +\x6d\x95\x6b\x2b\x6c\x3f\xda\x29\xdd\x55\xd4\x7d\xba\x57\xb5\xaf\ +\xb1\xff\xee\x44\x9b\x49\xb3\x27\xff\x9d\x1a\x3f\xed\xf0\x0c\x8d\ +\x99\xfd\xb3\xbe\xcf\x49\x98\x7b\x7a\xbe\xf9\x82\xa5\x8b\x44\x16\ +\xb7\x2e\xf9\xb6\x2c\x73\xf9\xbd\x95\x21\xab\x4e\xaf\x71\x59\xbb\ +\x6f\xbd\xe5\x86\x6d\x9b\x4c\x36\x6f\xd9\x6a\xb2\x6d\xfb\x0e\xab\ +\x9d\xfb\x77\xbb\xee\x39\xbb\x2f\x6c\xff\x83\x83\x39\x87\x7e\x1e\ +\x69\x3f\x26\x7e\x7c\xc5\x49\xeb\x53\xe7\xce\x24\x9f\xfd\x75\x7e\ +\xd2\x45\xed\x4b\x47\xaf\x24\x5e\xfd\x77\x7d\xce\x4d\x9b\x5b\x77\ +\xef\xd4\xdf\x53\xbe\x7f\xe2\x61\xde\x63\xb1\x27\xfb\x9f\x65\xbe\ +\x10\x79\x79\xf0\x75\xfe\x5b\xf9\x77\x17\x3e\x34\x7d\x32\xfd\xfc\ +\xea\xeb\x82\xef\xe1\x3f\x05\x7e\x9d\xfa\xd3\xfa\xcf\xf1\xff\x7f\ +\x00\x0d\x00\x0f\x34\xfa\x96\xf1\x5d\x00\x00\x00\x20\x63\x48\x52\ +\x4d\x00\x00\x7a\x25\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\ +\xe9\x00\x00\x75\x30\x00\x00\xea\x60\x00\x00\x3a\x98\x00\x00\x17\ +\x6f\x92\x5f\xc5\x46\x00\x00\x00\x52\x49\x44\x41\x54\x78\xda\x62\ +\x58\xf5\xe9\xca\x3f\x18\x5c\xfe\x9e\x21\xd3\xff\xc4\x8f\xab\xbf\ +\xaf\xfe\xbe\xfa\xfb\xd0\x97\x68\x63\x86\xff\x0c\x85\x6b\xf7\x7e\ +\xdc\xfb\x71\xf3\x87\xcc\xbc\xff\x0c\x0c\xff\x19\x18\x98\x73\xce\ +\xce\xbd\x1f\x39\xff\x3f\xc3\x7f\x06\x86\xff\x0c\xff\x19\x14\xdd\ +\x2c\xb6\xfe\x67\xf8\xcf\xf0\x9f\x01\x30\x00\x6a\x5f\x2c\x67\x74\ +\xda\xec\xfb\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x0b\x15\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x06\x08\x06\x00\x00\x00\xe0\xcc\xef\x48\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x0a\x4f\x69\x43\x43\x50\x50\x68\x6f\ +\x74\x6f\x73\x68\x6f\x70\x20\x49\x43\x43\x20\x70\x72\x6f\x66\x69\ +\x6c\x65\x00\x00\x78\xda\x9d\x53\x67\x54\x53\xe9\x16\x3d\xf7\xde\ +\xf4\x42\x4b\x88\x80\x94\x4b\x6f\x52\x15\x08\x20\x52\x42\x8b\x80\ +\x14\x91\x26\x2a\x21\x09\x10\x4a\x88\x21\xa1\xd9\x15\x51\xc1\x11\ +\x45\x45\x04\x1b\xc8\xa0\x88\x03\x8e\x8e\x80\x8c\x15\x51\x2c\x0c\ +\x8a\x0a\xd8\x07\xe4\x21\xa2\x8e\x83\xa3\x88\x8a\xca\xfb\xe1\x7b\ +\xa3\x6b\xd6\xbc\xf7\xe6\xcd\xfe\xb5\xd7\x3e\xe7\xac\xf3\x9d\xb3\ +\xcf\x07\xc0\x08\x0c\x96\x48\x33\x51\x35\x80\x0c\xa9\x42\x1e\x11\ +\xe0\x83\xc7\xc4\xc6\xe1\xe4\x2e\x40\x81\x0a\x24\x70\x00\x10\x08\ +\xb3\x64\x21\x73\xfd\x23\x01\x00\xf8\x7e\x3c\x3c\x2b\x22\xc0\x07\ +\xbe\x00\x01\x78\xd3\x0b\x08\x00\xc0\x4d\x9b\xc0\x30\x1c\x87\xff\ +\x0f\xea\x42\x99\x5c\x01\x80\x84\x01\xc0\x74\x91\x38\x4b\x08\x80\ +\x14\x00\x40\x7a\x8e\x42\xa6\x00\x40\x46\x01\x80\x9d\x98\x26\x53\ +\x00\xa0\x04\x00\x60\xcb\x63\x62\xe3\x00\x50\x2d\x00\x60\x27\x7f\ +\xe6\xd3\x00\x80\x9d\xf8\x99\x7b\x01\x00\x5b\x94\x21\x15\x01\xa0\ +\x91\x00\x20\x13\x65\x88\x44\x00\x68\x3b\x00\xac\xcf\x56\x8a\x45\ +\x00\x58\x30\x00\x14\x66\x4b\xc4\x39\x00\xd8\x2d\x00\x30\x49\x57\ +\x66\x48\x00\xb0\xb7\x00\xc0\xce\x10\x0b\xb2\x00\x08\x0c\x00\x30\ +\x51\x88\x85\x29\x00\x04\x7b\x00\x60\xc8\x23\x23\x78\x00\x84\x99\ +\x00\x14\x46\xf2\x57\x3c\xf1\x2b\xae\x10\xe7\x2a\x00\x00\x78\x99\ +\xb2\x3c\xb9\x24\x39\x45\x81\x5b\x08\x2d\x71\x07\x57\x57\x2e\x1e\ +\x28\xce\x49\x17\x2b\x14\x36\x61\x02\x61\x9a\x40\x2e\xc2\x79\x99\ +\x19\x32\x81\x34\x0f\xe0\xf3\xcc\x00\x00\xa0\x91\x15\x11\xe0\x83\ +\xf3\xfd\x78\xce\x0e\xae\xce\xce\x36\x8e\xb6\x0e\x5f\x2d\xea\xbf\ +\x06\xff\x22\x62\x62\xe3\xfe\xe5\xcf\xab\x70\x40\x00\x00\xe1\x74\ +\x7e\xd1\xfe\x2c\x2f\xb3\x1a\x80\x3b\x06\x80\x6d\xfe\xa2\x25\xee\ +\x04\x68\x5e\x0b\xa0\x75\xf7\x8b\x66\xb2\x0f\x40\xb5\x00\xa0\xe9\ +\xda\x57\xf3\x70\xf8\x7e\x3c\x3c\x45\xa1\x90\xb9\xd9\xd9\xe5\xe4\ +\xe4\xd8\x4a\xc4\x42\x5b\x61\xca\x57\x7d\xfe\x67\xc2\x5f\xc0\x57\ +\xfd\x6c\xf9\x7e\x3c\xfc\xf7\xf5\xe0\xbe\xe2\x24\x81\x32\x5d\x81\ +\x47\x04\xf8\xe0\xc2\xcc\xf4\x4c\xa5\x1c\xcf\x92\x09\x84\x62\xdc\ +\xe6\x8f\x47\xfc\xb7\x0b\xff\xfc\x1d\xd3\x22\xc4\x49\x62\xb9\x58\ +\x2a\x14\xe3\x51\x12\x71\x8e\x44\x9a\x8c\xf3\x32\xa5\x22\x89\x42\ +\x92\x29\xc5\x25\xd2\xff\x64\xe2\xdf\x2c\xfb\x03\x3e\xdf\x35\x00\ +\xb0\x6a\x3e\x01\x7b\x91\x2d\xa8\x5d\x63\x03\xf6\x4b\x27\x10\x58\ +\x74\xc0\xe2\xf7\x00\x00\xf2\xbb\x6f\xc1\xd4\x28\x08\x03\x80\x68\ +\x83\xe1\xcf\x77\xff\xef\x3f\xfd\x47\xa0\x25\x00\x80\x66\x49\x92\ +\x71\x00\x00\x5e\x44\x24\x2e\x54\xca\xb3\x3f\xc7\x08\x00\x00\x44\ +\xa0\x81\x2a\xb0\x41\x1b\xf4\xc1\x18\x2c\xc0\x06\x1c\xc1\x05\xdc\ +\xc1\x0b\xfc\x60\x36\x84\x42\x24\xc4\xc2\x42\x10\x42\x0a\x64\x80\ +\x1c\x72\x60\x29\xac\x82\x42\x28\x86\xcd\xb0\x1d\x2a\x60\x2f\xd4\ +\x40\x1d\x34\xc0\x51\x68\x86\x93\x70\x0e\x2e\xc2\x55\xb8\x0e\x3d\ +\x70\x0f\xfa\x61\x08\x9e\xc1\x28\xbc\x81\x09\x04\x41\xc8\x08\x13\ +\x61\x21\xda\x88\x01\x62\x8a\x58\x23\x8e\x08\x17\x99\x85\xf8\x21\ +\xc1\x48\x04\x12\x8b\x24\x20\xc9\x88\x14\x51\x22\x4b\x91\x35\x48\ +\x31\x52\x8a\x54\x20\x55\x48\x1d\xf2\x3d\x72\x02\x39\x87\x5c\x46\ +\xba\x91\x3b\xc8\x00\x32\x82\xfc\x86\xbc\x47\x31\x94\x81\xb2\x51\ +\x3d\xd4\x0c\xb5\x43\xb9\xa8\x37\x1a\x84\x46\xa2\x0b\xd0\x64\x74\ +\x31\x9a\x8f\x16\xa0\x9b\xd0\x72\xb4\x1a\x3d\x8c\x36\xa1\xe7\xd0\ +\xab\x68\x0f\xda\x8f\x3e\x43\xc7\x30\xc0\xe8\x18\x07\x33\xc4\x6c\ +\x30\x2e\xc6\xc3\x42\xb1\x38\x2c\x09\x93\x63\xcb\xb1\x22\xac\x0c\ +\xab\xc6\x1a\xb0\x56\xac\x03\xbb\x89\xf5\x63\xcf\xb1\x77\x04\x12\ +\x81\x45\xc0\x09\x36\x04\x77\x42\x20\x61\x1e\x41\x48\x58\x4c\x58\ +\x4e\xd8\x48\xa8\x20\x1c\x24\x34\x11\xda\x09\x37\x09\x03\x84\x51\ +\xc2\x27\x22\x93\xa8\x4b\xb4\x26\xba\x11\xf9\xc4\x18\x62\x32\x31\ +\x87\x58\x48\x2c\x23\xd6\x12\x8f\x13\x2f\x10\x7b\x88\x43\xc4\x37\ +\x24\x12\x89\x43\x32\x27\xb9\x90\x02\x49\xb1\xa4\x54\xd2\x12\xd2\ +\x46\xd2\x6e\x52\x23\xe9\x2c\xa9\x9b\x34\x48\x1a\x23\x93\xc9\xda\ +\x64\x6b\xb2\x07\x39\x94\x2c\x20\x2b\xc8\x85\xe4\x9d\xe4\xc3\xe4\ +\x33\xe4\x1b\xe4\x21\xf2\x5b\x0a\x9d\x62\x40\x71\xa4\xf8\x53\xe2\ +\x28\x52\xca\x6a\x4a\x19\xe5\x10\xe5\x34\xe5\x06\x65\x98\x32\x41\ +\x55\xa3\x9a\x52\xdd\xa8\xa1\x54\x11\x35\x8f\x5a\x42\xad\xa1\xb6\ +\x52\xaf\x51\x87\xa8\x13\x34\x75\x9a\x39\xcd\x83\x16\x49\x4b\xa5\ +\xad\xa2\x95\xd3\x1a\x68\x17\x68\xf7\x69\xaf\xe8\x74\xba\x11\xdd\ +\x95\x1e\x4e\x97\xd0\x57\xd2\xcb\xe9\x47\xe8\x97\xe8\x03\xf4\x77\ +\x0c\x0d\x86\x15\x83\xc7\x88\x67\x28\x19\x9b\x18\x07\x18\x67\x19\ +\x77\x18\xaf\x98\x4c\xa6\x19\xd3\x8b\x19\xc7\x54\x30\x37\x31\xeb\ +\x98\xe7\x99\x0f\x99\x6f\x55\x58\x2a\xb6\x2a\x7c\x15\x91\xca\x0a\ +\x95\x4a\x95\x26\x95\x1b\x2a\x2f\x54\xa9\xaa\xa6\xaa\xde\xaa\x0b\ +\x55\xf3\x55\xcb\x54\x8f\xa9\x5e\x53\x7d\xae\x46\x55\x33\x53\xe3\ +\xa9\x09\xd4\x96\xab\x55\xaa\x9d\x50\xeb\x53\x1b\x53\x67\xa9\x3b\ +\xa8\x87\xaa\x67\xa8\x6f\x54\x3f\xa4\x7e\x59\xfd\x89\x06\x59\xc3\ +\x4c\xc3\x4f\x43\xa4\x51\xa0\xb1\x5f\xe3\xbc\xc6\x20\x0b\x63\x19\ +\xb3\x78\x2c\x21\x6b\x0d\xab\x86\x75\x81\x35\xc4\x26\xb1\xcd\xd9\ +\x7c\x76\x2a\xbb\x98\xfd\x1d\xbb\x8b\x3d\xaa\xa9\xa1\x39\x43\x33\ +\x4a\x33\x57\xb3\x52\xf3\x94\x66\x3f\x07\xe3\x98\x71\xf8\x9c\x74\ +\x4e\x09\xe7\x28\xa7\x97\xf3\x7e\x8a\xde\x14\xef\x29\xe2\x29\x1b\ +\xa6\x34\x4c\xb9\x31\x65\x5c\x6b\xaa\x96\x97\x96\x58\xab\x48\xab\ +\x51\xab\x47\xeb\xbd\x36\xae\xed\xa7\x9d\xa6\xbd\x45\xbb\x59\xfb\ +\x81\x0e\x41\xc7\x4a\x27\x5c\x27\x47\x67\x8f\xce\x05\x9d\xe7\x53\ +\xd9\x53\xdd\xa7\x0a\xa7\x16\x4d\x3d\x3a\xf5\xae\x2e\xaa\x6b\xa5\ +\x1b\xa1\xbb\x44\x77\xbf\x6e\xa7\xee\x98\x9e\xbe\x5e\x80\x9e\x4c\ +\x6f\xa7\xde\x79\xbd\xe7\xfa\x1c\x7d\x2f\xfd\x54\xfd\x6d\xfa\xa7\ +\xf5\x47\x0c\x58\x06\xb3\x0c\x24\x06\xdb\x0c\xce\x18\x3c\xc5\x35\ +\x71\x6f\x3c\x1d\x2f\xc7\xdb\xf1\x51\x43\x5d\xc3\x40\x43\xa5\x61\ +\x95\x61\x97\xe1\x84\x91\xb9\xd1\x3c\xa3\xd5\x46\x8d\x46\x0f\x8c\ +\x69\xc6\x5c\xe3\x24\xe3\x6d\xc6\x6d\xc6\xa3\x26\x06\x26\x21\x26\ +\x4b\x4d\xea\x4d\xee\x9a\x52\x4d\xb9\xa6\x29\xa6\x3b\x4c\x3b\x4c\ +\xc7\xcd\xcc\xcd\xa2\xcd\xd6\x99\x35\x9b\x3d\x31\xd7\x32\xe7\x9b\ +\xe7\x9b\xd7\x9b\xdf\xb7\x60\x5a\x78\x5a\x2c\xb6\xa8\xb6\xb8\x65\ +\x49\xb2\xe4\x5a\xa6\x59\xee\xb6\xbc\x6e\x85\x5a\x39\x59\xa5\x58\ +\x55\x5a\x5d\xb3\x46\xad\x9d\xad\x25\xd6\xbb\xad\xbb\xa7\x11\xa7\ +\xb9\x4e\x93\x4e\xab\x9e\xd6\x67\xc3\xb0\xf1\xb6\xc9\xb6\xa9\xb7\ +\x19\xb0\xe5\xd8\x06\xdb\xae\xb6\x6d\xb6\x7d\x61\x67\x62\x17\x67\ +\xb7\xc5\xae\xc3\xee\x93\xbd\x93\x7d\xba\x7d\x8d\xfd\x3d\x07\x0d\ +\x87\xd9\x0e\xab\x1d\x5a\x1d\x7e\x73\xb4\x72\x14\x3a\x56\x3a\xde\ +\x9a\xce\x9c\xee\x3f\x7d\xc5\xf4\x96\xe9\x2f\x67\x58\xcf\x10\xcf\ +\xd8\x33\xe3\xb6\x13\xcb\x29\xc4\x69\x9d\x53\x9b\xd3\x47\x67\x17\ +\x67\xb9\x73\x83\xf3\x88\x8b\x89\x4b\x82\xcb\x2e\x97\x3e\x2e\x9b\ +\x1b\xc6\xdd\xc8\xbd\xe4\x4a\x74\xf5\x71\x5d\xe1\x7a\xd2\xf5\x9d\ +\x9b\xb3\x9b\xc2\xed\xa8\xdb\xaf\xee\x36\xee\x69\xee\x87\xdc\x9f\ +\xcc\x34\x9f\x29\x9e\x59\x33\x73\xd0\xc3\xc8\x43\xe0\x51\xe5\xd1\ +\x3f\x0b\x9f\x95\x30\x6b\xdf\xac\x7e\x4f\x43\x4f\x81\x67\xb5\xe7\ +\x23\x2f\x63\x2f\x91\x57\xad\xd7\xb0\xb7\xa5\x77\xaa\xf7\x61\xef\ +\x17\x3e\xf6\x3e\x72\x9f\xe3\x3e\xe3\x3c\x37\xde\x32\xde\x59\x5f\ +\xcc\x37\xc0\xb7\xc8\xb7\xcb\x4f\xc3\x6f\x9e\x5f\x85\xdf\x43\x7f\ +\x23\xff\x64\xff\x7a\xff\xd1\x00\xa7\x80\x25\x01\x67\x03\x89\x81\ +\x41\x81\x5b\x02\xfb\xf8\x7a\x7c\x21\xbf\x8e\x3f\x3a\xdb\x65\xf6\ +\xb2\xd9\xed\x41\x8c\xa0\xb9\x41\x15\x41\x8f\x82\xad\x82\xe5\xc1\ +\xad\x21\x68\xc8\xec\x90\xad\x21\xf7\xe7\x98\xce\x91\xce\x69\x0e\ +\x85\x50\x7e\xe8\xd6\xd0\x07\x61\xe6\x61\x8b\xc3\x7e\x0c\x27\x85\ +\x87\x85\x57\x86\x3f\x8e\x70\x88\x58\x1a\xd1\x31\x97\x35\x77\xd1\ +\xdc\x43\x73\xdf\x44\xfa\x44\x96\x44\xde\x9b\x67\x31\x4f\x39\xaf\ +\x2d\x4a\x35\x2a\x3e\xaa\x2e\x6a\x3c\xda\x37\xba\x34\xba\x3f\xc6\ +\x2e\x66\x59\xcc\xd5\x58\x9d\x58\x49\x6c\x4b\x1c\x39\x2e\x2a\xae\ +\x36\x6e\x6c\xbe\xdf\xfc\xed\xf3\x87\xe2\x9d\xe2\x0b\xe3\x7b\x17\ +\x98\x2f\xc8\x5d\x70\x79\xa1\xce\xc2\xf4\x85\xa7\x16\xa9\x2e\x12\ +\x2c\x3a\x96\x40\x4c\x88\x4e\x38\x94\xf0\x41\x10\x2a\xa8\x16\x8c\ +\x25\xf2\x13\x77\x25\x8e\x0a\x79\xc2\x1d\xc2\x67\x22\x2f\xd1\x36\ +\xd1\x88\xd8\x43\x5c\x2a\x1e\x4e\xf2\x48\x2a\x4d\x7a\x92\xec\x91\ +\xbc\x35\x79\x24\xc5\x33\xa5\x2c\xe5\xb9\x84\x27\xa9\x90\xbc\x4c\ +\x0d\x4c\xdd\x9b\x3a\x9e\x16\x9a\x76\x20\x6d\x32\x3d\x3a\xbd\x31\ +\x83\x92\x91\x90\x71\x42\xaa\x21\x4d\x93\xb6\x67\xea\x67\xe6\x66\ +\x76\xcb\xac\x65\x85\xb2\xfe\xc5\x6e\x8b\xb7\x2f\x1e\x95\x07\xc9\ +\x6b\xb3\x90\xac\x05\x59\x2d\x0a\xb6\x42\xa6\xe8\x54\x5a\x28\xd7\ +\x2a\x07\xb2\x67\x65\x57\x66\xbf\xcd\x89\xca\x39\x96\xab\x9e\x2b\ +\xcd\xed\xcc\xb3\xca\xdb\x90\x37\x9c\xef\x9f\xff\xed\x12\xc2\x12\ +\xe1\x92\xb6\xa5\x86\x4b\x57\x2d\x1d\x58\xe6\xbd\xac\x6a\x39\xb2\ +\x3c\x71\x79\xdb\x0a\xe3\x15\x05\x2b\x86\x56\x06\xac\x3c\xb8\x8a\ +\xb6\x2a\x6d\xd5\x4f\xab\xed\x57\x97\xae\x7e\xbd\x26\x7a\x4d\x6b\ +\x81\x5e\xc1\xca\x82\xc1\xb5\x01\x6b\xeb\x0b\x55\x0a\xe5\x85\x7d\ +\xeb\xdc\xd7\xed\x5d\x4f\x58\x2f\x59\xdf\xb5\x61\xfa\x86\x9d\x1b\ +\x3e\x15\x89\x8a\xae\x14\xdb\x17\x97\x15\x7f\xd8\x28\xdc\x78\xe5\ +\x1b\x87\x6f\xca\xbf\x99\xdc\x94\xb4\xa9\xab\xc4\xb9\x64\xcf\x66\ +\xd2\x66\xe9\xe6\xde\x2d\x9e\x5b\x0e\x96\xaa\x97\xe6\x97\x0e\x6e\ +\x0d\xd9\xda\xb4\x0d\xdf\x56\xb4\xed\xf5\xf6\x45\xdb\x2f\x97\xcd\ +\x28\xdb\xbb\x83\xb6\x43\xb9\xa3\xbf\x3c\xb8\xbc\x65\xa7\xc9\xce\ +\xcd\x3b\x3f\x54\xa4\x54\xf4\x54\xfa\x54\x36\xee\xd2\xdd\xb5\x61\ +\xd7\xf8\x6e\xd1\xee\x1b\x7b\xbc\xf6\x34\xec\xd5\xdb\x5b\xbc\xf7\ +\xfd\x3e\xc9\xbe\xdb\x55\x01\x55\x4d\xd5\x66\xd5\x65\xfb\x49\xfb\ +\xb3\xf7\x3f\xae\x89\xaa\xe9\xf8\x96\xfb\x6d\x5d\xad\x4e\x6d\x71\ +\xed\xc7\x03\xd2\x03\xfd\x07\x23\x0e\xb6\xd7\xb9\xd4\xd5\x1d\xd2\ +\x3d\x54\x52\x8f\xd6\x2b\xeb\x47\x0e\xc7\x1f\xbe\xfe\x9d\xef\x77\ +\x2d\x0d\x36\x0d\x55\x8d\x9c\xc6\xe2\x23\x70\x44\x79\xe4\xe9\xf7\ +\x09\xdf\xf7\x1e\x0d\x3a\xda\x76\x8c\x7b\xac\xe1\x07\xd3\x1f\x76\ +\x1d\x67\x1d\x2f\x6a\x42\x9a\xf2\x9a\x46\x9b\x53\x9a\xfb\x5b\x62\ +\x5b\xba\x4f\xcc\x3e\xd1\xd6\xea\xde\x7a\xfc\x47\xdb\x1f\x0f\x9c\ +\x34\x3c\x59\x79\x4a\xf3\x54\xc9\x69\xda\xe9\x82\xd3\x93\x67\xf2\ +\xcf\x8c\x9d\x95\x9d\x7d\x7e\x2e\xf9\xdc\x60\xdb\xa2\xb6\x7b\xe7\ +\x63\xce\xdf\x6a\x0f\x6f\xef\xba\x10\x74\xe1\xd2\x45\xff\x8b\xe7\ +\x3b\xbc\x3b\xce\x5c\xf2\xb8\x74\xf2\xb2\xdb\xe5\x13\x57\xb8\x57\ +\x9a\xaf\x3a\x5f\x6d\xea\x74\xea\x3c\xfe\x93\xd3\x4f\xc7\xbb\x9c\ +\xbb\x9a\xae\xb9\x5c\x6b\xb9\xee\x7a\xbd\xb5\x7b\x66\xf7\xe9\x1b\ +\x9e\x37\xce\xdd\xf4\xbd\x79\xf1\x16\xff\xd6\xd5\x9e\x39\x3d\xdd\ +\xbd\xf3\x7a\x6f\xf7\xc5\xf7\xf5\xdf\x16\xdd\x7e\x72\x27\xfd\xce\ +\xcb\xbb\xd9\x77\x27\xee\xad\xbc\x4f\xbc\x5f\xf4\x40\xed\x41\xd9\ +\x43\xdd\x87\xd5\x3f\x5b\xfe\xdc\xd8\xef\xdc\x7f\x6a\xc0\x77\xa0\ +\xf3\xd1\xdc\x47\xf7\x06\x85\x83\xcf\xfe\x91\xf5\x8f\x0f\x43\x05\ +\x8f\x99\x8f\xcb\x86\x0d\x86\xeb\x9e\x38\x3e\x39\x39\xe2\x3f\x72\ +\xfd\xe9\xfc\xa7\x43\xcf\x64\xcf\x26\x9e\x17\xfe\xa2\xfe\xcb\xae\ +\x17\x16\x2f\x7e\xf8\xd5\xeb\xd7\xce\xd1\x98\xd1\xa1\x97\xf2\x97\ +\x93\xbf\x6d\x7c\xa5\xfd\xea\xc0\xeb\x19\xaf\xdb\xc6\xc2\xc6\x1e\ +\xbe\xc9\x78\x33\x31\x5e\xf4\x56\xfb\xed\xc1\x77\xdc\x77\x1d\xef\ +\xa3\xdf\x0f\x4f\xe4\x7c\x20\x7f\x28\xff\x68\xf9\xb1\xf5\x53\xd0\ +\xa7\xfb\x93\x19\x93\x93\xff\x04\x03\x98\xf3\xfc\x63\x33\x2d\xdb\ +\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\x25\x00\x00\x80\x83\ +\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00\x75\x30\x00\x00\xea\x60\ +\x00\x00\x3a\x98\x00\x00\x17\x6f\x92\x5f\xc5\x46\x00\x00\x00\x40\ +\x49\x44\x41\x54\x78\xda\x5c\x8c\x31\x11\x00\x30\x08\xc4\x42\x2d\ +\x20\x03\xfc\x2b\x61\x45\x02\x1a\xe8\x54\xae\x6d\xc6\xcf\x7d\xc4\ +\xcc\x1a\x20\x22\x84\x8b\x05\x90\x99\xa8\x6a\xdf\x42\xba\x7b\xc6\ +\xaa\x92\x47\x1c\xdc\x7d\xb2\x8b\x8f\x93\x7d\x1e\xc0\x64\xf7\x00\ +\xf5\x9f\x1d\xd3\x02\x88\xef\xaf\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +" + +qt_resource_name = "\ +\x00\x03\ +\x00\x00\x78\xa3\ +\x00\x71\ +\x00\x73\x00\x73\ +\x00\x03\ +\x00\x00\x70\x37\ +\x00\x69\ +\x00\x6d\x00\x67\ +\x00\x05\ +\x00\x7a\xc0\x25\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\ +\x00\x0c\ +\x04\x56\x23\x67\ +\x00\x63\ +\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0e\ +\x04\xa2\xfc\xa7\ +\x00\x64\ +\x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0a\ +\x0b\x2d\x87\xc7\ +\x00\x68\ +\x00\x61\x00\x6e\x00\x64\x00\x6c\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +" + +qt_resource_struct = "\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ +\x00\x00\x00\x0c\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\ +\x00\x00\x00\x18\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\ +\x00\x00\x00\x28\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x00\x46\x00\x00\x00\x00\x00\x01\x00\x00\x01\x5b\ +\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x05\x4f\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() From 087dac689cd83308d764768f7a9ece8e50360691 Mon Sep 17 00:00:00 2001 From: huhamhire Date: Sun, 24 Nov 2013 15:18:53 +0800 Subject: [PATCH 05/18] add mouse event for main frame Signed-off-by: huhamhire --- darkorange.qss | 5 + hostsutl.py | 11 + qthosts_rc.py | 2 +- qthostsui.py | 117 +++--- qthostsui.ui | 949 +++++++++++++++++++++++++------------------------ style_rc.py | 2 +- 6 files changed, 558 insertions(+), 528 deletions(-) diff --git a/darkorange.qss b/darkorange.qss index 4421184..d6fee6a 100644 --- a/darkorange.qss +++ b/darkorange.qss @@ -26,6 +26,11 @@ QWidget:item:selected color: #ffffff; } +QFrame +{ + background-color: #3c3f41; +} + QMenuBar::item { background: transparent; diff --git a/hostsutl.py b/hostsutl.py index c34a519..f314b29 100644 --- a/hostsutl.py +++ b/hostsutl.py @@ -600,6 +600,7 @@ def set_font(self): font.setFamily(_fromUtf8("Courier")) self.setFont(font) + self.setWindowFlags(QtCore.Qt.FramelessWindowHint) app = QtGui.QApplication.instance() #app.setStyle(QtGui.QStyleFactory.create("Cleanlooks")) with open("./darkorange.qss", "r") as qss: @@ -615,6 +616,16 @@ def set_font(self): elif system == "OS X": pass + def mouseMoveEvent(self, e): + if e.buttons() & QtCore.Qt.LeftButton: + self.move(e.globalPos() - self.dragPos) + e.accept() + def mousePressEvent(self, e): + if e.button() == QtCore.Qt.LeftButton: + self.dragPos = e.globalPos() - self.frameGeometry().topLeft() + e.accept() + + def set_label_color(self, label, color): """Set the color of a label - Public Method diff --git a/qthosts_rc.py b/qthosts_rc.py index ef63f24..167107a 100644 --- a/qthosts_rc.py +++ b/qthosts_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: 周日 11月 24 14:32:53 2013 +# Created: 周日 11月 24 15:07:14 2013 # by: The Resource Compiler for PyQt (Qt v4.8.4) # # WARNING! All changes made in this file will be lost! diff --git a/qthostsui.py b/qthostsui.py index 7bfdad5..c143ee3 100644 --- a/qthostsui.py +++ b/qthostsui.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'qthostsui.ui' # -# Created: Sun Nov 24 14:32:53 2013 +# Created: Sun Nov 24 15:07:14 2013 # by: PyQt4 UI code generator 4.10.2 # # WARNING! All changes made in this file will be lost! @@ -42,14 +42,13 @@ def setupUi(self, HostsUtlMain): HostsUtlMain.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates)) HostsUtlMain.setSizeGripEnabled(False) HostsUtlMain.setModal(False) - self.Prog = QtGui.QProgressBar(HostsUtlMain) - self.Prog.setGeometry(QtCore.QRect(10, 360, 500, 25)) - self.Prog.setAlignment(QtCore.Qt.AlignCenter) - self.Prog.setTextVisible(True) - self.Prog.setInvertedAppearance(False) - self.Prog.setObjectName(_fromUtf8("Prog")) - self.ConfigBox = QtGui.QGroupBox(HostsUtlMain) - self.ConfigBox.setGeometry(QtCore.QRect(10, 60, 240, 90)) + self.mainFrame = QtGui.QFrame(HostsUtlMain) + self.mainFrame.setGeometry(QtCore.QRect(0, 40, 640, 360)) + self.mainFrame.setFrameShape(QtGui.QFrame.StyledPanel) + self.mainFrame.setFrameShadow(QtGui.QFrame.Raised) + self.mainFrame.setObjectName(_fromUtf8("mainFrame")) + self.ConfigBox = QtGui.QGroupBox(self.mainFrame) + self.ConfigBox.setGeometry(QtCore.QRect(10, 20, 240, 90)) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -78,8 +77,8 @@ def setupUi(self, HostsUtlMain): self.SelectIP.addItem(_fromUtf8("")) self.SelectIP.setItemText(1, _fromUtf8("IPv6")) self.configLayout.addWidget(self.SelectIP, 1, 1, 1, 1) - self.StatusBox = QtGui.QGroupBox(HostsUtlMain) - self.StatusBox.setGeometry(QtCore.QRect(10, 160, 240, 90)) + self.StatusBox = QtGui.QGroupBox(self.mainFrame) + self.StatusBox.setGeometry(QtCore.QRect(10, 120, 240, 90)) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -112,8 +111,40 @@ def setupUi(self, HostsUtlMain): self.labelOSStat.setFont(font) self.labelOSStat.setObjectName(_fromUtf8("labelOSStat")) self.StatusLayout.addWidget(self.labelOSStat, 1, 1, 1, 1) - self.FunctionsBox = QtGui.QGroupBox(HostsUtlMain) - self.FunctionsBox.setGeometry(QtCore.QRect(260, 60, 250, 290)) + self.InfoBox = QtGui.QGroupBox(self.mainFrame) + self.InfoBox.setGeometry(QtCore.QRect(10, 220, 240, 90)) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.InfoBox.sizePolicy().hasHeightForWidth()) + self.InfoBox.setSizePolicy(sizePolicy) + self.InfoBox.setObjectName(_fromUtf8("InfoBox")) + self.layoutWidget2 = QtGui.QWidget(self.InfoBox) + self.layoutWidget2.setGeometry(QtCore.QRect(10, 20, 221, 59)) + self.layoutWidget2.setObjectName(_fromUtf8("layoutWidget2")) + self.InfoLayout = QtGui.QGridLayout(self.layoutWidget2) + self.InfoLayout.setMargin(0) + self.InfoLayout.setObjectName(_fromUtf8("InfoLayout")) + self.labelVersion = QtGui.QLabel(self.layoutWidget2) + self.labelVersion.setObjectName(_fromUtf8("labelVersion")) + self.InfoLayout.addWidget(self.labelVersion, 0, 0, 1, 1) + self.labelVersionData = QtGui.QLabel(self.layoutWidget2) + self.labelVersionData.setObjectName(_fromUtf8("labelVersionData")) + self.InfoLayout.addWidget(self.labelVersionData, 0, 1, 1, 1) + self.labelRelease = QtGui.QLabel(self.layoutWidget2) + self.labelRelease.setObjectName(_fromUtf8("labelRelease")) + self.InfoLayout.addWidget(self.labelRelease, 1, 0, 1, 1) + self.labelReleaseData = QtGui.QLabel(self.layoutWidget2) + self.labelReleaseData.setObjectName(_fromUtf8("labelReleaseData")) + self.InfoLayout.addWidget(self.labelReleaseData, 1, 1, 1, 1) + self.labelLatest = QtGui.QLabel(self.layoutWidget2) + self.labelLatest.setObjectName(_fromUtf8("labelLatest")) + self.InfoLayout.addWidget(self.labelLatest, 2, 0, 1, 1) + self.labelLatestData = QtGui.QLabel(self.layoutWidget2) + self.labelLatestData.setObjectName(_fromUtf8("labelLatestData")) + self.InfoLayout.addWidget(self.labelLatestData, 2, 1, 1, 1) + self.FunctionsBox = QtGui.QGroupBox(self.mainFrame) + self.FunctionsBox.setGeometry(QtCore.QRect(260, 20, 250, 290)) self.FunctionsBox.setObjectName(_fromUtf8("FunctionsBox")) self.Functionlist = QtGui.QListWidget(self.FunctionsBox) self.Functionlist.setGeometry(QtCore.QRect(10, 20, 230, 260)) @@ -123,8 +154,8 @@ def setupUi(self, HostsUtlMain): sizePolicy.setHeightForWidth(self.Functionlist.sizePolicy().hasHeightForWidth()) self.Functionlist.setSizePolicy(sizePolicy) self.Functionlist.setObjectName(_fromUtf8("Functionlist")) - self.frame = QtGui.QFrame(HostsUtlMain) - self.frame.setGeometry(QtCore.QRect(520, 70, 110, 280)) + self.frame = QtGui.QFrame(self.mainFrame) + self.frame.setGeometry(QtCore.QRect(520, 30, 110, 280)) self.frame.setFrameShape(QtGui.QFrame.NoFrame) self.frame.setFrameShadow(QtGui.QFrame.Raised) self.frame.setLineWidth(0) @@ -193,41 +224,15 @@ def setupUi(self, HostsUtlMain): self.ButtonUTF.setIcon(icon8) self.ButtonUTF.setIconSize(QtCore.QSize(32, 32)) self.ButtonUTF.setObjectName(_fromUtf8("ButtonUTF")) - self.InfoBox = QtGui.QGroupBox(HostsUtlMain) - self.InfoBox.setGeometry(QtCore.QRect(10, 260, 240, 90)) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.InfoBox.sizePolicy().hasHeightForWidth()) - self.InfoBox.setSizePolicy(sizePolicy) - self.InfoBox.setObjectName(_fromUtf8("InfoBox")) - self.layoutWidget2 = QtGui.QWidget(self.InfoBox) - self.layoutWidget2.setGeometry(QtCore.QRect(10, 20, 221, 59)) - self.layoutWidget2.setObjectName(_fromUtf8("layoutWidget2")) - self.InfoLayout = QtGui.QGridLayout(self.layoutWidget2) - self.InfoLayout.setMargin(0) - self.InfoLayout.setObjectName(_fromUtf8("InfoLayout")) - self.labelVersion = QtGui.QLabel(self.layoutWidget2) - self.labelVersion.setObjectName(_fromUtf8("labelVersion")) - self.InfoLayout.addWidget(self.labelVersion, 0, 0, 1, 1) - self.labelVersionData = QtGui.QLabel(self.layoutWidget2) - self.labelVersionData.setObjectName(_fromUtf8("labelVersionData")) - self.InfoLayout.addWidget(self.labelVersionData, 0, 1, 1, 1) - self.labelRelease = QtGui.QLabel(self.layoutWidget2) - self.labelRelease.setObjectName(_fromUtf8("labelRelease")) - self.InfoLayout.addWidget(self.labelRelease, 1, 0, 1, 1) - self.labelReleaseData = QtGui.QLabel(self.layoutWidget2) - self.labelReleaseData.setObjectName(_fromUtf8("labelReleaseData")) - self.InfoLayout.addWidget(self.labelReleaseData, 1, 1, 1, 1) - self.labelLatest = QtGui.QLabel(self.layoutWidget2) - self.labelLatest.setObjectName(_fromUtf8("labelLatest")) - self.InfoLayout.addWidget(self.labelLatest, 2, 0, 1, 1) - self.labelLatestData = QtGui.QLabel(self.layoutWidget2) - self.labelLatestData.setObjectName(_fromUtf8("labelLatestData")) - self.InfoLayout.addWidget(self.labelLatestData, 2, 1, 1, 1) - self.SelectLang = QtGui.QComboBox(HostsUtlMain) - self.SelectLang.setGeometry(QtCore.QRect(520, 360, 108, 25)) + self.SelectLang = QtGui.QComboBox(self.mainFrame) + self.SelectLang.setGeometry(QtCore.QRect(520, 320, 108, 25)) self.SelectLang.setObjectName(_fromUtf8("SelectLang")) + self.Prog = QtGui.QProgressBar(self.mainFrame) + self.Prog.setGeometry(QtCore.QRect(10, 320, 500, 25)) + self.Prog.setAlignment(QtCore.Qt.AlignCenter) + self.Prog.setTextVisible(True) + self.Prog.setInvertedAppearance(False) + self.Prog.setObjectName(_fromUtf8("Prog")) self.labelIP.setBuddy(self.SelectMirror) self.labelMirror.setBuddy(self.SelectIP) @@ -267,6 +272,13 @@ def retranslateUi(self, HostsUtlMain): self.labelConnStat.setText(_translate("HostsUtlMain", "N/A", None)) self.labelOS.setText(_translate("HostsUtlMain", "OS", None)) self.labelOSStat.setText(_translate("HostsUtlMain", "N/A", None)) + self.InfoBox.setTitle(_translate("HostsUtlMain", "Hosts Info", None)) + self.labelVersion.setText(_translate("HostsUtlMain", "Version", None)) + self.labelVersionData.setText(_translate("HostsUtlMain", "N/A", None)) + self.labelRelease.setText(_translate("HostsUtlMain", "Release", None)) + self.labelReleaseData.setText(_translate("HostsUtlMain", "N/A", None)) + self.labelLatest.setText(_translate("HostsUtlMain", "Latest", None)) + self.labelLatestData.setText(_translate("HostsUtlMain", "N/A", None)) self.FunctionsBox.setTitle(_translate("HostsUtlMain", "Functions", None)) self.ButtonBackup.setToolTip(_translate("HostsUtlMain", "Backup hosts", None)) self.ButtonBackup.setWhatsThis(_translate("HostsUtlMain", "Backup the hosts file of current system.", None)) @@ -284,13 +296,6 @@ def retranslateUi(self, HostsUtlMain): self.ButtonANSI.setWhatsThis(_translate("HostsUtlMain", "Export to hosts file encoding by ANSI.", None)) self.ButtonUTF.setToolTip(_translate("HostsUtlMain", "Save with UTF-8", None)) self.ButtonUTF.setWhatsThis(_translate("HostsUtlMain", "Export to hosts file encoding by UTF-8.", None)) - self.InfoBox.setTitle(_translate("HostsUtlMain", "Hosts Info", None)) - self.labelVersion.setText(_translate("HostsUtlMain", "Version", None)) - self.labelVersionData.setText(_translate("HostsUtlMain", "N/A", None)) - self.labelRelease.setText(_translate("HostsUtlMain", "Release", None)) - self.labelReleaseData.setText(_translate("HostsUtlMain", "N/A", None)) - self.labelLatest.setText(_translate("HostsUtlMain", "Latest", None)) - self.labelLatestData.setText(_translate("HostsUtlMain", "N/A", None)) import qthosts_rc import style_rc diff --git a/qthostsui.ui b/qthostsui.ui index 6c30fd8..0927d86 100644 --- a/qthostsui.ui +++ b/qthostsui.ui @@ -51,534 +51,543 @@ false - + - 10 - 360 - 500 - 25 + 0 + 40 + 640 + 360 - - Qt::AlignCenter - - - true - - - false - - - - - - 10 - 60 - 240 - 90 - - - - - 0 - 0 - + + QFrame::StyledPanel - - Config + + QFrame::Raised - + 10 - 25 - 221 - 50 + 20 + 240 + 90 - - - - - Server - - - SelectMirror - - - - - - - - - - IP Version - - - SelectIP - - - - - - + + + 0 + 0 + + + + Config + + + + + 10 + 25 + 221 + 50 + + + + + - IPv4 + Server + + + SelectMirror - - + + + + + + + - IPv6 + IP Version - - - - + + SelectIP + + + + + + + + IPv4 + + + + + IPv6 + + + + + + - - - - - 10 - 160 - 240 - 90 - - - - - 0 - 0 - - - - Status - - + 10 - 30 - 221 - 40 - - - - - - - Connection - - - - - - - - 75 - true - - - - N/A - - - - - - - OS - - - - - - - - 75 - true - - - - N/A - - - - - - - - - - 260 - 60 - 250 - 290 - - - - Functions - - - - - 10 - 20 - 230 - 260 + 120 + 240 + 90 - + 0 0 + + Status + + + + + 10 + 30 + 221 + 40 + + + + + + + Connection + + + + + + + + 75 + true + + + + N/A + + + + + + + OS + + + + + + + + 75 + true + + + + N/A + + + + + - - - - - 520 - 70 - 110 - 280 - - - - QFrame::NoFrame - - - QFrame::Raised - - - 0 - - - - - 0 - 10 - 48 - 48 - - - - Backup hosts - - - Backup the hosts file of current system. - - - - - - - :/buttons/img/icon_backup.png:/buttons/img/icon_backup.png - - - - 32 - 32 - - - - - - - 60 - 70 - 48 - 48 - - - - Download data file - - - Download the latest data file. - - - - - - - :/buttons/img/icon_fetch.png:/buttons/img/icon_fetch.png - - - - 32 - 32 - - - - - - - 60 - 10 - 48 - 48 - - - - Restore backup - - - Restore a previous backup of hosts file. - - - - - - - :/buttons/img/icon_restore.png:/buttons/img/icon_restore.png - - - - 32 - 32 - - - - + - 0 + 10 220 - 48 - 48 + 240 + 90 - - Apply hosts - - - Apply changes to the hosts file. - - - - - - - :/buttons/img/icon_apply.png:/buttons/img/icon_apply.png - - - - 32 - 32 - + + + 0 + 0 + + + Hosts Info + + + + + 10 + 20 + 221 + 59 + + + + + + + Version + + + + + + + N/A + + + + + + + Release + + + + + + + N/A + + + + + + + Latest + + + + + + + N/A + + + + + - + - 60 - 220 - 48 - 48 + 260 + 20 + 250 + 290 - - Exit - - - Close this tool. - - - - - - - :/buttons/img/icon_exit.png:/buttons/img/icon_exit.png - - - - 32 - 32 - - + + Functions + + + + + 10 + 20 + 230 + 260 + + + + + 0 + 0 + + + - + - 0 - 70 - 48 - 48 + 520 + 30 + 110 + 280 - - Check update / Refresh - - - Check the latest version of hosts data file. - - - - - - - :/buttons/img/icon_update.png:/buttons/img/icon_update.png - - - - 32 - 32 - - + + QFrame::NoFrame + + + QFrame::Raised + + + 0 + + + + + 0 + 10 + 48 + 48 + + + + Backup hosts + + + Backup the hosts file of current system. + + + + + + + :/buttons/img/icon_backup.png:/buttons/img/icon_backup.png + + + + 32 + 32 + + + + + + + 60 + 70 + 48 + 48 + + + + Download data file + + + Download the latest data file. + + + + + + + :/buttons/img/icon_fetch.png:/buttons/img/icon_fetch.png + + + + 32 + 32 + + + + + + + 60 + 10 + 48 + 48 + + + + Restore backup + + + Restore a previous backup of hosts file. + + + + + + + :/buttons/img/icon_restore.png:/buttons/img/icon_restore.png + + + + 32 + 32 + + + + + + + 0 + 220 + 48 + 48 + + + + Apply hosts + + + Apply changes to the hosts file. + + + + + + + :/buttons/img/icon_apply.png:/buttons/img/icon_apply.png + + + + 32 + 32 + + + + + + + 60 + 220 + 48 + 48 + + + + Exit + + + Close this tool. + + + + + + + :/buttons/img/icon_exit.png:/buttons/img/icon_exit.png + + + + 32 + 32 + + + + + + + 0 + 70 + 48 + 48 + + + + Check update / Refresh + + + Check the latest version of hosts data file. + + + + + + + :/buttons/img/icon_update.png:/buttons/img/icon_update.png + + + + 32 + 32 + + + + + + + 0 + 160 + 48 + 48 + + + + Save with ANSI + + + Export to hosts file encoding by ANSI. + + + + + + + :/buttons/img/icon_ansi.png:/buttons/img/icon_ansi.png + + + + 32 + 32 + + + + + + + 60 + 160 + 48 + 48 + + + + Save with UTF-8 + + + Export to hosts file encoding by UTF-8. + + + + + + + :/buttons/img/icon_utf.png:/buttons/img/icon_utf.png + + + + 32 + 32 + + + - + - 0 - 160 - 48 - 48 + 520 + 320 + 108 + 25 - - Save with ANSI - - - Export to hosts file encoding by ANSI. - - - - - - - :/buttons/img/icon_ansi.png:/buttons/img/icon_ansi.png - - - - 32 - 32 - - - + - 60 - 160 - 48 - 48 + 10 + 320 + 500 + 25 - - Save with UTF-8 - - - Export to hosts file encoding by UTF-8. - - - - - - - :/buttons/img/icon_utf.png:/buttons/img/icon_utf.png + + Qt::AlignCenter - - - 32 - 32 - + + true - - - - - - 10 - 260 - 240 - 90 - - - - - 0 - 0 - - - - Hosts Info - - - - - 10 - 20 - 221 - 59 - + + false - - - - - Version - - - - - - - N/A - - - - - - - Release - - - - - - - N/A - - - - - - - Latest - - - - - - - N/A - - - - - - - - 520 - 360 - 108 - 25 - - - - StatusBox - ConfigBox - FunctionsBox - InfoBox - frame - Prog - SelectLang SelectMirror diff --git a/style_rc.py b/style_rc.py index 84c416a..025569b 100644 --- a/style_rc.py +++ b/style_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: 周日 11月 24 14:32:53 2013 +# Created: 周日 11月 24 15:07:14 2013 # by: The Resource Compiler for PyQt (Qt v4.8.4) # # WARNING! All changes made in this file will be lost! From fca9e8ad97d477c5ebe97bf7743e7e5a6fbb6891 Mon Sep 17 00:00:00 2001 From: huhamhire Date: Sun, 24 Nov 2013 16:47:21 +0800 Subject: [PATCH 06/18] update version to 1.9.7: 1.fix several ui bugs; 2.clear up stylesheet file theme/darkdefault.qss Signed-off-by: huhamhire --- hostsutl.py | 69 ++++++-- img/style/handle.png | Bin 2837 -> 0 bytes qthosts_rc.py | 2 +- qthostsui.py | 6 +- qthostsui.ui | 48 +++-- style.qrc | 1 - style_rc.py | 2 +- darkorange.qss => theme/darkdefault.qss | 223 +----------------------- 8 files changed, 100 insertions(+), 251 deletions(-) delete mode 100644 img/style/handle.png rename darkorange.qss => theme/darkdefault.qss (58%) diff --git a/hostsutl.py b/hostsutl.py index f314b29..af9c249 100644 --- a/hostsutl.py +++ b/hostsutl.py @@ -14,7 +14,7 @@ # PURPOSE. # ===================================================================== -__version__ = "1.9.6" +__version__ = "1.9.7" __revision__ = "$Id$" __author__ = "huhamhire " @@ -86,6 +86,8 @@ class MainDialog(QtGui.QDialog): platform (str): A string indicating the platform of current operating system. The value could be "Windows", "Linux", "Unix", "OS X", and of course "Unkown". + plat_flag (bool): A boolean flag indicating whether the current os is + supported or not. hostname (str): A string indicating the hostname of current operating system. This attribute would be used for linux clients. hostspath (str): A string indicating the absolute path of the hosts @@ -122,6 +124,7 @@ class MainDialog(QtGui.QDialog): Ui = None # OS related configuration platform = '' + plat_flag = True hostname = '' hostspath = '' # Mirror related configuration @@ -155,6 +158,9 @@ def __init__(self, Ui, trans): super(MainDialog, self).__init__() self.Ui = Ui self._trans = trans + self.set_platform() + self.set_font() + self.set_stylesheet() def on_Mirror_changed(self, mirr_id): """Change the current mirror setting - Public Method @@ -369,8 +375,7 @@ def init_main(self): self.Ui.SelectMirror.addItem(_fromUtf8("")) self.Ui.SelectMirror.setItemText( i, _translate("HostsUtlMain", mirror["tag"], None)) - self.set_platform() - self.set_font() + self.set_platform_label() # Read data file and set function list try: RetrieveData.unpack() @@ -577,17 +582,26 @@ def set_platform(self): Set the information of current operating system platform. """ system, hostname, path, encode, flag = Utilities.check_platform() - color = "GREEN" if flag else "RED" - self.set_label_color(self.Ui.labelOSStat, color) - self.set_label_text(self.Ui.labelOSStat, "[%s]" % system) self.platform = system self.hostname = hostname self.hostspath = path + self.plat_flag = flag if encode == "win_ansi": self._sys_eol = "\r\n" else: self._sys_eol = "\n" + def set_platform_label(self): + """Set label of OS info - Public Method + + Set the information of the label indicating current operating system + platform. + """ + color = "GREEN" if self.plat_flag else "RED" + self.set_label_color(self.Ui.labelOSStat, color) + self.set_label_text(self.Ui.labelOSStat, "[%s]" % self.platform) + + def set_font(self): """Set font and window style - Public Method @@ -597,18 +611,11 @@ def set_font(self): system = self.platform if system == "Windows": font = QtGui.QFont() - font.setFamily(_fromUtf8("Courier")) + font.setFamily("Courier") self.setFont(font) - - self.setWindowFlags(QtCore.Qt.FramelessWindowHint) - app = QtGui.QApplication.instance() - #app.setStyle(QtGui.QStyleFactory.create("Cleanlooks")) - with open("./darkorange.qss", "r") as qss: - app.setStyleSheet(qss.read()) - elif system == "Linux": font = QtGui.QFont() - font.setFamily(_fromUtf8("Sans")) + font.setFamily("Sans") self.setFont(font) # Set window style for sudo users. QtGui.QApplication.setStyle( @@ -616,11 +623,40 @@ def set_font(self): elif system == "OS X": pass + def set_stylesheet(self): + """Set Stylesheet for main frame - Public Method + + Define the style sheet of main dialog. + """ + app = QtGui.QApplication.instance() + with open("./theme/darkdefault.qss", "r") as qss: + app.setStyleSheet(qss.read()) + def mouseMoveEvent(self, e): + """Set mouse drag event - Public Method + + Allow drag operations to set the new position for current dialog. + + Args: + e (QMouseEvent): A QMouseEvent object indicating current mouse + event. + """ if e.buttons() & QtCore.Qt.LeftButton: - self.move(e.globalPos() - self.dragPos) + try: + self.move(e.globalPos() - self.dragPos) + except AttributeError: + pass e.accept() + def mousePressEvent(self, e): + """Set mouse press event - Public Method + + Allow drag operations to set the new position for current dialog. + + Args: + e (QMouseEvent): A QMouseEvent object indicating current mouse + event. + """ if e.button() == QtCore.Qt.LeftButton: self.dragPos = e.globalPos() - self.frameGeometry().topLeft() e.accept() @@ -1504,6 +1540,7 @@ def qt_main(): app.installTranslator(trans) ui = Ui_HostsUtlMain() HostsUtlMain = MainDialog(ui, trans) + HostsUtlMain.setWindowFlags(QtCore.Qt.FramelessWindowHint) ui.setupUi(HostsUtlMain) HostsUtlMain.set_languages() if not HostsUtlMain.initd: diff --git a/img/style/handle.png b/img/style/handle.png deleted file mode 100644 index fd50400fb2bb04fcb1485d56b93b18946dc74d52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2837 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 ns**<>+ diff --git a/qthosts_rc.py b/qthosts_rc.py index 167107a..a6f2578 100644 --- a/qthosts_rc.py +++ b/qthosts_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: 周日 11月 24 15:07:14 2013 +# Created: 周日 11月 24 16:44:07 2013 # by: The Resource Compiler for PyQt (Qt v4.8.4) # # WARNING! All changes made in this file will be lost! diff --git a/qthostsui.py b/qthostsui.py index c143ee3..fc4e176 100644 --- a/qthostsui.py +++ b/qthostsui.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'qthostsui.ui' # -# Created: Sun Nov 24 15:07:14 2013 +# Created: Sun Nov 24 16:44:07 2013 # by: PyQt4 UI code generator 4.10.2 # # WARNING! All changes made in this file will be lost! @@ -233,6 +233,9 @@ def setupUi(self, HostsUtlMain): self.Prog.setTextVisible(True) self.Prog.setInvertedAppearance(False) self.Prog.setObjectName(_fromUtf8("Prog")) + self.TitleLabel = QtGui.QLabel(HostsUtlMain) + self.TitleLabel.setGeometry(QtCore.QRect(20, 20, 250, 25)) + self.TitleLabel.setObjectName(_fromUtf8("TitleLabel")) self.labelIP.setBuddy(self.SelectMirror) self.labelMirror.setBuddy(self.SelectIP) @@ -296,6 +299,7 @@ def retranslateUi(self, HostsUtlMain): self.ButtonANSI.setWhatsThis(_translate("HostsUtlMain", "Export to hosts file encoding by ANSI.", None)) self.ButtonUTF.setToolTip(_translate("HostsUtlMain", "Save with UTF-8", None)) self.ButtonUTF.setWhatsThis(_translate("HostsUtlMain", "Export to hosts file encoding by UTF-8.", None)) + self.TitleLabel.setText(_translate("HostsUtlMain", "Hosts Setup Utility", None)) import qthosts_rc import style_rc diff --git a/qthostsui.ui b/qthostsui.ui index 0927d86..ef48e86 100644 --- a/qthostsui.ui +++ b/qthostsui.ui @@ -557,6 +557,15 @@ + ButtonBackup + ButtonUpdate + ButtonRestore + ButtonApply + ButtonExit + ButtonCheck + ButtonANSI + ButtonUTF + SelectLang @@ -588,6 +597,19 @@ + + + + 20 + 20 + 250 + 25 + + + + Hosts Setup Utility + + SelectMirror @@ -616,7 +638,7 @@ 590 - 281 + 321 627 @@ -631,8 +653,8 @@ on_IPVersion_changed(int) - 231 - 89 + 239 + 131 253 @@ -647,8 +669,8 @@ on_Mirror_changed(int) - 203 - 59 + 239 + 95 255 @@ -680,7 +702,7 @@ 551 - 276 + 316 516 @@ -696,7 +718,7 @@ 547 - 53 + 93 519 @@ -712,7 +734,7 @@ 603 - 43 + 83 629 @@ -728,7 +750,7 @@ 547 - 119 + 159 519 @@ -744,7 +766,7 @@ 606 - 115 + 155 631 @@ -760,7 +782,7 @@ 572 - 333 + 373 541 @@ -776,7 +798,7 @@ 549 - 203 + 243 517 @@ -792,7 +814,7 @@ 607 - 208 + 248 634 diff --git a/style.qrc b/style.qrc index a3cb144..9c88d05 100644 --- a/style.qrc +++ b/style.qrc @@ -2,6 +2,5 @@ img/style/checkbox.png img/style/down_arrow.png - img/style/handle.png diff --git a/style_rc.py b/style_rc.py index 025569b..fed0962 100644 --- a/style_rc.py +++ b/style_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: 周日 11月 24 15:07:14 2013 +# Created: 周日 11月 24 16:44:07 2013 # by: The Resource Compiler for PyQt (Qt v4.8.4) # # WARNING! All changes made in this file will be lost! diff --git a/darkorange.qss b/theme/darkdefault.qss similarity index 58% rename from darkorange.qss rename to theme/darkdefault.qss index d6fee6a..eb23c92 100644 --- a/darkorange.qss +++ b/theme/darkdefault.qss @@ -31,48 +31,6 @@ QFrame background-color: #3c3f41; } -QMenuBar::item -{ - background: transparent; -} - -QMenuBar::item:selected -{ - background: transparent; - border: 1px solid #ffaa00; -} - -QMenuBar::item:pressed -{ - background: #444; - border: 1px solid #000; - background-color: QLinearGradient( - x1:0, y1:0, - x2:0, y2:1, - stop:1 #212121, - stop:0.4 #343434/*, - stop:0.2 #343434, - stop:0.1 #ffaa00*/ - ); - margin-bottom:-1px; - padding-bottom:1px; -} - -QMenu -{ - border: 1px solid #000; -} - -QMenu::item -{ - padding: 2px 20px 2px 20px; -} - -QMenu::item:selected -{ - color: #000000; -} - QWidget:disabled { color: #404040; @@ -84,20 +42,6 @@ QAbstractItemView background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #4d4d4d, stop: 0.1 #646464, stop: 1 #5d5d5d); } -QWidget:focus -{ - /*border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a);*/ -} - -QLineEdit -{ - background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #4d4d4d, stop: 0 #646464, stop: 1 #5d5d5d); - padding: 1px; - border-style: solid; - border: 1px solid #1e1e1e; - border-radius: 5; -} - QPushButton { color: #b1b1b1; @@ -191,13 +135,13 @@ QListWidget border: none; } -QTextEdit:focus +QLabel#TitleLabel { - border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); + font-size: 18px; + font-weight: bold; } QScrollBar:horizontal { - /*border: 1px solid #222222;*/ background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0.0 #1c1c1c, stop: 0.2 #222222, stop: 1 #323232); height: 9px; margin: 0px 16px 0 16px; @@ -225,18 +169,8 @@ QScrollBar::sub-line:horizontal { border-radius: 2px; background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #585858, stop: 1 #474747); width: 14px; - subcontrol-position: left; - subcontrol-origin: margin; -} - -QScrollBar::right-arrow:horizontal, QScrollBar::left-arrow:horizontal -{ - /* - border: 1px solid black; - width: 1px; - height: 1px; - background: white; - */ + subcontrol-position: left; + subcontrol-origin: margin; } QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal @@ -247,7 +181,6 @@ QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal QScrollBar:vertical { background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0.0 #1c1c1c, stop: 0.2 #222222, stop: 1 #323232); - /*background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0.0 #121212, stop: 0.2 #282828, stop: 1 #484848);*/ width: 9px; margin: 16px 0 16px 0; } @@ -255,7 +188,6 @@ QScrollBar:vertical QScrollBar::handle:vertical { background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #585858, stop: 0.5 #474747, stop: 1 #404040); - /*background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 0.5 #d7801a, stop: 1 #ffa02f);*/ min-height: 20px; border: 1px solid #222222; border-radius: 4px; @@ -281,32 +213,12 @@ QScrollBar::sub-line:vertical subcontrol-origin: margin; } -QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical -{ - /* - border: 1px solid black; - width: 1px; - height: 1px; - background: white; - */ -} - QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { background: none; } -QTextEdit -{ - background-color: #242424; -} - -QPlainTextEdit -{ - background-color: #242424; -} - QHeaderView::section { background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #616161, stop: 0.5 #505050, stop: 0.6 #434343, stop:1 #656565); @@ -320,30 +232,6 @@ QCheckBox:disabled color: #414141; } -QDockWidget::title -{ - text-align: center; - spacing: 3px; /* spacing between items in the tool bar */ - background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #3c3f41, stop: 0.5 #242424, stop:1 #3c3f41); -} - -QDockWidget::close-button, QDockWidget::float-button -{ - text-align: center; - spacing: 1px; /* spacing between items in the tool bar */ - background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #3c3f41, stop: 0.5 #242424, stop:1 #3c3f41); -} - -QDockWidget::close-button:hover, QDockWidget::float-button:hover -{ - background: #242424; -} - -QDockWidget::close-button:pressed, QDockWidget::float-button:pressed -{ - padding: 1px -1px -1px 1px; -} - QMainWindow::separator { background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #161616, stop: 0.5 #151515, stop: 0.6 #212121, stop:1 #343434); @@ -362,22 +250,6 @@ QMainWindow::separator:hover spacing: 3px; /* spacing between items in the tool bar */ } -QToolBar::handle -{ - spacing: 3px; /* spacing between items in the tool bar */ - background: url(:/qss/img/style/handle.png); -} - -QMenu::separator -{ - height: 2px; - background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #161616, stop: 0.5 #151515, stop: 0.6 #212121, stop:1 #343434); - color: white; - padding-left: 4px; - margin-left: 10px; - margin-right: 5px; -} - QProgressBar { border: 1px solid grey; @@ -390,81 +262,6 @@ QProgressBar::chunk { background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); border-radius: 5px; - /*width: 2.15px;*/ - /*margin: 0.5px;*/ -} - -QTabBar::tab { - color: #b1b1b1; - border: 1px solid #444; - border-bottom-style: none; - background-color: #3c3f41; - padding-left: 10px; - padding-right: 10px; - padding-top: 3px; - padding-bottom: 2px; - margin-right: -1px; -} - -QTabWidget::pane { - border: 1px solid #444; - top: 1px; -} - -QTabBar::tab:last -{ - margin-right: 0; /* the last selected tab has nothing to overlap with on the right */ - border-top-right-radius: 3px; -} - -QTabBar::tab:first:!selected -{ - margin-left: 0px; /* the last selected tab has nothing to overlap with on the right */ - - - border-top-left-radius: 3px; -} - -QTabBar::tab:!selected -{ - color: #b1b1b1; - border-bottom-style: solid; - margin-top: 3px; - background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:1 #212121, stop:.4 #343434); -} - -QTabBar::tab:selected -{ - border-top-left-radius: 3px; - border-top-right-radius: 3px; - margin-bottom: 0px; -} - -QTabBar::tab:!selected:hover -{ - /*border-top: 2px solid #ffaa00; - padding-bottom: 3px;*/ - border-top-left-radius: 3px; - border-top-right-radius: 3px; - background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:1 #212121, stop:0.4 #343434, stop:0.2 #343434, stop:0.1 #ffaa00); -} - -QRadioButton::indicator:checked, QRadioButton::indicator:unchecked{ - color: #b1b1b1; - background-color: #3c3f41; - border: 1px solid #b1b1b1; - border-radius: 6px; -} - -QRadioButton::indicator:checked -{ - background-color: qradialgradient( - cx: 0.5, cy: 0.5, - fx: 0.5, fy: 0.5, - radius: 1.0, - stop: 0.25 #ffaa00, - stop: 0.3 #3c3f41 - ); } QCheckBox::indicator{ @@ -475,16 +272,6 @@ QCheckBox::indicator{ height: 9px; } -QRadioButton::indicator -{ - border-radius: 6px; -} - -QRadioButton::indicator:hover, QCheckBox::indicator:hover -{ - border: 1px solid #ffaa00; -} - QCheckBox::indicator:checked { image:url(:/qss/img/style/checkbox.png); From 98cd28ceef71e6c9f39e114fe2849070bd530a06 Mon Sep 17 00:00:00 2001 From: huhamhire Date: Sun, 24 Nov 2013 17:56:49 +0800 Subject: [PATCH 07/18] update translations Signed-off-by: huhamhire --- hostsutl.py | 7 +- lang/en_US.qm | Bin 4243 -> 4635 bytes lang/en_US.ts | 156 ++++++++++++++++++++++++-------------------- lang/zh_CN.qm | Bin 5756 -> 6067 bytes lang/zh_CN.ts | 174 ++++++++++++++++++++++++++++---------------------- lang/zh_TW.qm | Bin 5716 -> 6044 bytes lang/zh_TW.ts | 156 ++++++++++++++++++++++++-------------------- 7 files changed, 279 insertions(+), 214 deletions(-) diff --git a/hostsutl.py b/hostsutl.py index af9c249..796f49e 100644 --- a/hostsutl.py +++ b/hostsutl.py @@ -134,12 +134,17 @@ class MainDialog(QtGui.QDialog): __list_trans = [ _translate("HostsUtlMain", "google(cn)", None), _translate("HostsUtlMain", "google(us)", None), + _translate("HostsUtlMain", "google-apis(cn)", None), + _translate("HostsUtlMain", "google-apis(us)", None), _translate("HostsUtlMain", "activation-helper", None), + _translate("HostsUtlMain", "wikipedia", None), + _translate("HostsUtlMain", "steam", None), _translate("HostsUtlMain", "others", None), _translate("HostsUtlMain", "adblock-hostsx", None), _translate("HostsUtlMain", "adblock-mvps", None), _translate("HostsUtlMain", "adblock-mwsl", None), - _translate("HostsUtlMain", "adblock-yoyo", None), ] + _translate("HostsUtlMain", "adblock-yoyo", None), + ] # Data file related configuration filename = "hostslist.data" infofile = "hostsinfo.json" diff --git a/lang/en_US.qm b/lang/en_US.qm index 32acf2b95923808ae47bd55fdefa340beed03e40..b2c3171d2159f3b1a367142fcbb142c1ff3faedb 100644 GIT binary patch delta 427 zcmbQNI9p|c2&2J7QA72r)wK)^{8bDK-@IdBU~Xk}QRHJ_V3K7#+p`Wx-(X@p@)0P% zU}CI;0L$~EFBus4a#)^U+zF&lO`IFX#2-BIYaSE7#^hASJSINj$yXVJnfOm_)?(Vt zYsA37pvU0OkPn3E3^@#`3&Z= H#K;H$ZFybc delta 81 zcmbQOGFfqg2&2G6QNxLT5) HostsUtlMain - + Backup hosts - + Functions - + Hosts Setup Utility - + Config - + Server - + IP Version - + Status - + Connection - + N/A - + OS - + Backup the hosts file of current system. - + Download data file - + Download the latest data file. - + Restore backup - + Restore a previous backup of hosts file. - + Apply hosts - + Apply changes to the hosts file. - + Exit - + Close this tool. - + Check update / Refresh - + Check the latest version of hosts data file. - + Hosts Info - + Version - + Release - + Latest - + google(cn) - + Google Web Service (CN) - + google(us) - + Google Web Service (US) - + activation-helper - + others - + adblock-hostsx - + adblock-mvps - + adblock-mwsl - + adblock-yoyo - + Building hosts file... - + Backup File(*.bak) - + Restore hosts - + [Error] - + Checking... - + Copying new hosts file to %s - + Remove temporary file - + Operation completed - + [OK] - + [Failed] - + Applying module: %s(%s/%s) - + Progress - + Notice: %i hosts entries has been applied in %ssecs. - + Operation Completed Successfully! - + Error - + Incorrect Data file! Please use the "Download" key to fetch a new data file. - + Download Complete - + Warning - + You do not have permissions to change the hosts file. Please run this program as Administrator/root @@ -271,45 +271,45 @@ so it can modify your hosts file. - + Error retrieving data from the server. Please try another server. - + Data file not found! Please use the "Download" key to fetch a new data file. - + Notice - + Data file is up-to-date. - + Complete - + Connecting... - + Downloading: %s / %s - + Are you sure you want to apply changes to the hosts file on your system? @@ -319,34 +319,54 @@ current hosts file. - + Save with ANSI - + Export to hosts file encoding by ANSI. - + Save with UTF-8 - + Export to hosts file encoding by UTF-8. - + Export hosts - + hosts File + + + google-apis(cn) + Google API Service (CN) + + + + google-apis(us) + Google API Service (US) + + + + wikipedia + + + + + steam + + diff --git a/lang/zh_CN.qm b/lang/zh_CN.qm index a5b24c79695c27ffb51ba1c58fe6594ed63e2b43..e46feca8406db6701fce3df330aeb2d12101157f 100644 GIT binary patch delta 987 zcmaJ;YiJW$7(FwYnaoV)5o2mqtfoF{EG8;&hzxfQ_ulV(=X~eB zpO~5SyEi=<5Pt@=ZeZaQ!1WNqH35*%LlSggPzMV4lmpJ!NHvZjY{7;T8v*YJG(USz zT%MbgYXFWQcjdQJfH0MpF1`Y?3ixQ~F<_474~-z6{KV1T69n8*!BY{YeU5OX@LwP; z+!0#47@&?6&Z*Q$oFnvg5^?ZTq3^~S5}GCE^j-z{3!?vI3mH5umbC38!;;w4)IkDm zV(YIL2)m_#$4?lS=K4i4(kfZI8vyK;x>e%4H0jADoBGsAPk#s!e~NQyUJcTa?l~)- zkpb^ta>>%!G)cYO(cTH@7nQPxTZBxh?;i?yW-9v{ZqvSB=@Rc!-E(E&)qcR3uA1?; zG{6=$U{ab!vwFLnghbmlK4%jdSmrA7Bexd=KUJXaXX+Q~RYUOrv zT&<1jv&dnARu`O1m+zA8HRIRfqL5-kw9W*FHr*@^5P`#z~e@49116xm#V6R^J z=V~(O)EkPjsjk4_4veJ!Ek>?;2_?GN$Q`Z_9yDhA>527H)43#clZ0NFhr6TX{I1!) z>?%1cHqYL_OcVcYo_#=X=hFlPs{YkM>&4syv#QB4Npg#^l7X|4zfP|e$Mo8GG#?$A>TO5 zw=!v`Y+o#qT4Tj*-^z%c={1H4Ts?d5nUKjFyn@g5VJ?#N#ZiSAd?=-Vd0b!AJRlcm zhffYD>~L28_o~v{OFmH5qpbXyqyOKlY)6fMgR89Zzujbt77{Hpo=nE8Vu8pi%l1bT zY>*>6^j-cJop1ANnA7 delta 712 zcmZ8eTS!z<6y5jEy>lOP?>*BvnTn=jOp`QLNHjz2OYl ziNyUx+ALA=4kFte39khrd5ElnPPFb772K^Pk{0PqV;W+Z+UCEaM&fc(4I)b>H+rp` zNbvGiS)YhlI{z>cJo%gD<#+>;)hjssg~-!{%sBAuwZh|q-{4OQ;iyRzP&WzvssX_~ zG3nzN5kD-tyV_x-SM)`0!I&<#vwUtw1y@C ztSC|O9f&`aKi}^W8QChUUL;bls~)x;d8ay2iALf%+vcQ;5U#KlIqHD>Y$aJiqL^9R zuYE8sC1})vmn)f?TH64lr?lj`8W`NIUC20&$u?<&EhhpHAT9a;6RaUiVz? zMuR!McIYGwF+EhY0r*~nyT1{FVI$REibmx|YJ!5;W@NkZWqJjZO5Z?ufi=0n)4c4_ zWEBk0u-=L>7%F9bQzLljIP06n7daYPe|7z>% diff --git a/lang/zh_CN.ts b/lang/zh_CN.ts index 3146fcd..176d2cf 100644 --- a/lang/zh_CN.ts +++ b/lang/zh_CN.ts @@ -4,182 +4,182 @@ HostsUtlMain - + Backup hosts 备份 hosts 文件 - + Backup File(*.bak) 备份文件(*.bak) - + Restore hosts 还原备份的 hosts 文件 - + Functions 功能列表 - + Progress 操作进度 - + Warning 警告 - + Notice 注意 - + Data file is up-to-date. 数据文件已经是最新版本。 - + Complete 完成 - + Operation completed 操作完成 - + Hosts Setup Utility hosts 文件配置工具 - + Config 设置 - + Server 服务器 - + IP Version IP 协议版本 - + Status 状态 - + Connection 连接 - + N/A - + OS 操作系统 - + Backup the hosts file of current system. 备份当前系统的 hosts 文件。 - + Download data file 下载数据文件 - + Download the latest data file. 下载最新数据文件。 - + Restore backup 还原备份 - + Restore a previous backup of hosts file. 还原先前备份的 hosts 文件。 - + Apply hosts 更改 hosts - + Apply changes to the hosts file. 对 hosts 文件进行修改。 - + Exit 退出 - + Close this tool. 关闭本工具。 - + Check the latest version of hosts data file. 在线检查数据文件的最新版本。 - + Hosts Info 数据文件信息 - + Version 当前版本 - + Release 发布日期 - + Latest 最新版本 - + Check update / Refresh 检查更新/刷新 - + Data file not found! -Please use the "Download" key to +Please use the "Download" key to fetch a new data file. 未找到数据文件! 请点击“下载”按钮来获取 新的数据文件。 - - You do not have permissions to change the + + You do not have permissions to change the hosts file. Please run this program as Administrator/root so it can modify your hosts file. @@ -189,178 +189,198 @@ so it can modify your hosts file. 工具。 - + Error retrieving data from the server. Please try another server. 在从服务器获取数据是发生错误。 -请在更换服务器之后尝试之前的操作。 +请在更换服务器之后尝试先前的操作。 - + Operation Completed Successfully! 操作成功完成! - + Error 错误 - + Download Complete 下载完成 - + [Error] [错误] - + Checking... 正在连接... - + [OK] [正常] - + [Failed] [失败] - + Building hosts file... 正在生成 hosts 文件... - + Applying module: %s(%s/%s) 应用选定的模块: %s(%s/%s) - - Notice: %i hosts entries has + + Notice: %i hosts entries has been applied in %ssecs. 注意:共有 %i 条 hosts 条目在 %s秒内被插入到 hosts 文件中。 - + Downloading: %s / %s 正在下载: %s / %s - + Connecting... 正在连接服务器... - + Incorrect Data file! -Please use the "Download" key to +Please use the "Download" key to fetch a new data file. 数据文件错误! 请点击“下载”按钮来获取 新的数据文件。 - + Copying new hosts file to %s 正在将新的 hosts 配置到目标路径 %s - + Remove temporary file 清理临时文件 - + google(cn) - Google 国内服务器 + Google Web服务(北京) - + google(us) - Google 美国服务器 + Google Web服务(美国) - + activation-helper 屏蔽部分破解软件激活服务器 - + others 其他墙外站点 - + adblock-hostsx 广告屏蔽-hostsx 列表 - + adblock-mvps 广告屏蔽-mvps 列表 - + adblock-mwsl 广告屏蔽-mwsl 列表 - + adblock-yoyo 广告屏蔽-yoyo 列表 - - Are you sure you want to apply changes + + Are you sure you want to apply changes to the hosts file on your system? -This operation could not be reverted if -you have not made a backup of your +This operation could not be reverted if +you have not made a backup of your current hosts file. - 您确认继续执行当前操作以修改系统 hosts + 您确认继续执行当前操作以修改系统 hosts 文件吗? 若先前未对 hosts 文件进行备份,该操作将 不可逆转。 - + Save with ANSI 保存为 ANSI 格式 - + Export to hosts file encoding by ANSI. 以 ANSI 的编码方式导出 hosts 文件。 - + Save with UTF-8 保存为 UTF-8 格式 - + Export to hosts file encoding by UTF-8. 以 UTF-8 的编码方式导出 hosts 文件。 - + Export hosts 导出 hosts 文件 - + hosts File hosts 文件 + + + google-apis(cn) + Google 应用程序服务(北京) + + + + google-apis(us) + Google 应用程序服务(美国) + + + + wikipedia + 维基百科 + + + + steam + Steam 游戏平台 + diff --git a/lang/zh_TW.qm b/lang/zh_TW.qm index 539f18da820df7a9096bfc70665fb89b723828ce..25217123593b4bb043baa2bab9b9ac4dec02854f 100644 GIT binary patch delta 397 zcmcbjGe>`d2&2J7QA72r)wK)^BF`8WzIn&Mz{=0)qR7X(Ks|aB=Y}zfY@hfwk4dC%aw=m!MAe7 HostsUtlMain - + google(cn) - Google 大陸 + Google Web服務(大陸) - + google(us) - Google 美國 + Google Web服務(美國) - + activation-helper 遮罩部分破解軟體啟動伺服器 - + others 其他網站 - + adblock-hostsx 廣告攔截-hostsx 清單 - + adblock-mvps 廣告攔截-mvps 清單 - + adblock-mwsl 廣告攔截-mwsl 清單 - + adblock-yoyo 廣告攔截-yoyo 清單 - + Building hosts file... 正在創建 hosts 檔... - + Backup hosts 備份 hosts 檔 - + Backup File(*.bak) 備份檔(*.bak) - + Restore hosts 還原 hosts - + [Error] [錯誤] - + Checking... 正在連接伺服器... - + Copying new hosts file to %s 將新的 hosts 檔案複製到 %s - + Remove temporary file 刪除暫存檔案 - + Operation completed 作業完成 - + [OK] [好] - + [Failed] [失敗] - + Functions 功能清單 - + Applying module: %s(%s/%s) 應用選定的模組: %s(%s/%s) - + Progress 作業進度 - + Notice: %i hosts entries has been applied in %ssecs. 消息:共有 %i 条 hosts 条目在 %s秒内被插入到 hosts 文件中。 - + Operation Completed Successfully! 作業已成功完成 ! - + Error 錯誤 - + Incorrect Data file! Please use the "Download" key to fetch a new data file. @@ -142,17 +142,17 @@ fetch a new data file. 一個新的資料檔案。 - + Download Complete 下載已完成 - + Warning 警告 - + You do not have permissions to change the hosts file. Please run this program as Administrator/root @@ -162,14 +162,14 @@ so it can modify your hosts file. 程式。 - + Error retrieving data from the server. Please try another server. 從伺服器中檢索資料時出錯。 請嘗試使用另一台伺服器。 - + Data file not found! Please use the "Download" key to fetch a new data file. @@ -178,147 +178,147 @@ fetch a new data file. 一個新的資料檔案。 - + Notice 消息 - + Data file is up-to-date. 當前的資料檔案是最新的。 - + Complete 完成 - + Connecting... 正在連接... - + Downloading: %s / %s 正在下載: %s / %s - + Hosts Setup Utility hosts 設置實用程式 - + Config 配置 - + Server 伺服器 - + IP Version IP 協定版本 - + Status 狀態 - + Connection 連接狀態 - + N/A 不適用 - + OS 作業系統 - + Backup the hosts file of current system. 備份當前系統的 hosts 檔。 - + Download data file 下載資料檔案 - + Download the latest data file. 下載最新的資料檔案。 - + Restore backup 還原備份 - + Restore a previous backup of hosts file. 還原以前的備份的 hosts 檔。 - + Apply hosts 更改 hosts 檔 - + Apply changes to the hosts file. 將更改應用到主 hosts 檔。 - + Exit 退出 - + Close this tool. 關閉此程式。 - + Check update / Refresh 檢查更新 / 刷新 - + Check the latest version of hosts data file. 檢查 hosts 檔案的最新版本。 - + Hosts Info 資料檔案狀態 - + Version 當前版本 - + Release 發佈日期 - + Latest 最新版本 - + Are you sure you want to apply changes to the hosts file on your system? @@ -332,34 +332,54 @@ current hosts file. 不可逆轉。 - + Save with ANSI 保存為 ANSI 格式 - + Export to hosts file encoding by ANSI. 匯出由 ANSI 編碼的 hosts 檔。 - + Save with UTF-8 保存為 UTF-8 格式 - + Export to hosts file encoding by UTF-8. 匯出由 UTF-8 編碼的 hosts 檔。 - + Export hosts 匯出 hosts 檔 - + hosts File hosts 檔 + + + google-apis(cn) + Google API服務(大陸) + + + + google-apis(us) + Google API服務(美國) + + + + wikipedia + 維基百科 + + + + steam + Steam 遊戲平台 + From f3de3c20818c3d37cbe3772b15fd36fe925e6830 Mon Sep 17 00:00:00 2001 From: huhamhire Date: Sun, 24 Nov 2013 19:34:40 +0800 Subject: [PATCH 08/18] update copyleft info Signed-off-by: huhamhire --- hostsutl.py | 8 ++ lang/en_US.qm | Bin 4635 -> 4872 bytes lang/en_US.ts | 122 ++++++++++++++------------- lang/zh_CN.qm | Bin 6067 -> 6587 bytes lang/zh_CN.ts | 174 +++++++++++++++++++++++++------------- lang/zh_TW.qm | Bin 6044 -> 6553 bytes lang/zh_TW.ts | 122 ++++++++++++++------------- qthosts_rc.py | 2 +- qthostsui.py | 18 +++- qthostsui.ui | 61 +++++++++++--- style_rc.py | 189 +----------------------------------------- theme/darkdefault.qss | 110 ++++++++++++------------ 12 files changed, 378 insertions(+), 428 deletions(-) diff --git a/hostsutl.py b/hostsutl.py index 796f49e..8dcf888 100644 --- a/hostsutl.py +++ b/hostsutl.py @@ -367,6 +367,14 @@ def on_FetchUpdate_clicked(self): self.info_uptodate() self.finish_fetch() + def on_LinkActivated(self, url): + """Open external link in browser - Public Method + + The slot response to the signal from Label widget while the text with + a hyperlink is clicked by user. + """ + QtGui.QDesktopServices.openUrl(QtCore.QUrl(url)) + def init_main(self): """Initialize the main dialog - Public Method diff --git a/lang/en_US.qm b/lang/en_US.qm index b2c3171d2159f3b1a367142fcbb142c1ff3faedb..42836dc67adad981d6edfc86d88ccb99f7193cc5 100644 GIT binary patch delta 723 zcmX|;Z%7ky7{?#y@3!5a-5pXSm3B_CMcn497dq$4d=ZMp3^61yZu9h zDA)%;l>pEK02OWk>n|WL2!MGW%)|y@I}7Dk1L(`ZxR8yy5l%jA2M~|+9L$W1?WUmT z69C(1y1jM1x|TY-(2c}Yk`_9IK0+&nyOF7IjosKlxNR#9xR1e|b~fW+g`4RQBLKMMEgsMP-1AeYR(7`gC6!sVLhxC2K6RA>XEVo?)9(G?)%S>HJwMO p*R>Aud0mRHSFuQmR&$sV1;2h=jjFX$piT0(RaE|~d}Q;@e*uzZz#0Gm delta 565 zcmWNOQAkr^7=~Zxf6m!CJLmkd3MHB$)jSasOM>!ZAYBAuWhDz+XiTEiG-661)PfRR zq83q+&9bNrGrd^B+QlxkQ5$7t3PI*YH>2pL2&0?oy?Xii-tYaM|NHvDf}wWA79 zb^`97!2T`NeGqR2pl*aJEWmt%x|hMr)O-bulyO-_a1d}cxTjNDK!2(?#XnH{_1<5lfF<;i_yXUHdQSOB z-(CIRkK6p9*O15m5Ik%IBv)pHjfF@w#=%RT3f~0=*Lv!`r)a419H{B#K*zIOOLDPn zVvL(m&zMI0ApOEzS7;?*mwCRjgZsT`W)q$4hnX9-`Lko@n{!lc$O`mLvfpR5zdTK# z)mFT|g!KWt=uR2)GIsfjNF#~UcKI5et6OOY9Ue|UB(=sl#?8rLKaK8T`Czey#Fu2M zd6p;HB-5W?v+t-(FY#nnwaj!+Q3qu1dVqaL HostsUtlMain - + Backup hosts - + Functions - + Hosts Setup Utility - + Config - + Server - + IP Version - + Status - + Connection - + N/A - + OS - + Backup the hosts file of current system. - + Download data file - + Download the latest data file. - + Restore backup - + Restore a previous backup of hosts file. - + Apply hosts - + Apply changes to the hosts file. - + Exit - + Close this tool. - + Check update / Refresh - + Check the latest version of hosts data file. - + Hosts Info - + Version - + Release - + Latest @@ -169,7 +169,7 @@ - + Building hosts file... @@ -184,86 +184,86 @@ - + [Error] - + Checking... - + Copying new hosts file to %s - + Remove temporary file - + Operation completed - + [OK] - + [Failed] - + Applying module: %s(%s/%s) - + Progress - + Notice: %i hosts entries has been applied in %ssecs. - + Operation Completed Successfully! - + Error - + Incorrect Data file! Please use the "Download" key to fetch a new data file. - + Download Complete - + Warning - + You do not have permissions to change the hosts file. Please run this program as Administrator/root @@ -271,45 +271,45 @@ so it can modify your hosts file. - + Error retrieving data from the server. Please try another server. - + Data file not found! Please use the "Download" key to fetch a new data file. - + Notice - + Data file is up-to-date. - + Complete - + Connecting... - + Downloading: %s / %s - + Are you sure you want to apply changes to the hosts file on your system? @@ -319,32 +319,32 @@ current hosts file. - + Save with ANSI - + Export to hosts file encoding by ANSI. - + Save with UTF-8 - + Export to hosts file encoding by UTF-8. - + Export hosts - + hosts File @@ -368,5 +368,15 @@ current hosts file. steam + + + Copyleft (C) 2011-2014 <a href="https://hosts.huhamhire.com/"><span style="text-decoration: none;color: #b1b1b1;">huhamhire-hosts</span></a> + + + + + Powered by PyQT + + diff --git a/lang/zh_CN.qm b/lang/zh_CN.qm index e46feca8406db6701fce3df330aeb2d12101157f..51e436a8a43d1c8460db3c85b00ace787fb95ec4 100644 GIT binary patch delta 1163 zcmZWme{2(V6o1#=wb%A~w{>+x!|>K6vx~WQ-9Sy(RZUGG2xc>cWGn%%-HjI7UTJU0 zj8G#%sS-4vAjcFM5j)5OFag@pYoE5RrR`*b6L?^J%iNZlanoTJdU}$nh>2FEm1H^u+L1 zqT1i-$mJ`@<(P*WL?Ua5nc8)nh`q;R`(U1^E@(-FeTgdCp<$N0)XJ*?(m{ z8y*49EZepK@kP%XcI%;DB54hKbj4Kwe8wJ|G>Keav8SCP3M^&kCIEEXckJB9@1yV% zuKwF;BFkCMKk^0$7r50Y_CTNK1_#Gc@F;ie`7_WLZHmVaz1FtW&jI&sTk4e(5$(7A z^kD({+wDC~{Zu4=zkS1H6s#S$kF2_ZfNT8fo+vun$&a6$0I^e!wWW*D&pCGdwt&dn z<~UHAf&a7Po%;`h;17;T?o-6iJ8sUyuTq@S`ag+;WllwEfxpi=6GuUAv+J( z>h$P%uXa5e-cdy1XI+0hhz|G}f!@MsoL2pfdY>5e zW5v=U$=<#E69CUiuQegieN}q%iv$>7kWQ|f#*Vzw*q7(g@fm4s7CZEAlTP=a001vd z?p2W2EqyKoKwt_i>(tTZmM0lz*gR)#Vr26d>%)-uv5ky8+QVM57MZH9bl0Z*vh^{N z$xktAhHj-63gIaKSc~y5LMmjE@}yB8b&wCXfs>;Gg(--WBptSa8-U%9t5OCsRmllZ z0`D2b`6vps0y0%9W&v7G8lW_Q%diIY7D$D9VU?5e2s8krQx>IU$g-tTd*wARPjf-@~jl&+<#K!0Y@G z7R~`T9P>IKcu5S{ZQ9rQ_a0-+kT}BJYtD)b@pMi6zWye@TYX8L`r}$&>y_gJa_2zT XsxtEEH&UyWdB*hCGy}S$W;6R2zE2{; delta 692 zcmWlWZ%9*N6vm%z@4a{T?(W{XHi~MdNwz+0C8EM2BQk=LVMT@siH@ODoYZC?qM8t^ zMv=uWBeFk+{lP?ueK7+e|4=J6)I^CDCV`}8NKzD}ojyJ9%X^;l{LXn_WXHE&wMDi8 z+-^Wl0td1H(-hb{1{hz0XJ#O!7lpSf0O1G1jTxk^IQ8@lVEc=f`33Uobp`1PU~ub( zE_VPdThI3|0`@$;&+`>fH|ig(C!cZF(Dm63SbWS{?WMbeJu3VKMA!stOK52VqDQE}hm>vf7eVntsl>nb{#ho_@nCF_CdnurkYrE7(n&e$pCut?W z*U1q`8y~nC18|#9O5``m{Os!x^=aVecDl)*C6s2?BLe<|P(4oowl~J&(tMgEYV7SA z0L=a3vDg@?CPtUm0M_l|o!B_tm&61&Np%b2%Hmx>$(7W~-!#Al$)(aZl@@8df`Yh^ zX|v-T0hF1FtabEWWIE`HQck1k=PnvRu*rDrjR2xcmTImLajm>zCP0LFa)Y~;R)0;t zKH&xUY1##O`%1o(zSw+36-qp#6!cwvnDi0(q}o+BOk{`D?vH~s@msa~6aAg_ zyxLRWNk)sBXmU|~IZ@gJ@uT|FI^7d(!jP#g8}@7aSVla^-W#+Pu}N2`HAy+~L8*n& zF{tKfgOXbtRow=?e@YW9?T%b;T{z(Ld(t)q(yHo0;ZT}C7(Nm3htjIbL)wVti?(br U#=oVw47#Yc&b}qS$9|Ii1D0F44*&oF diff --git a/lang/zh_CN.ts b/lang/zh_CN.ts index 176d2cf..bdee9c1 100644 --- a/lang/zh_CN.ts +++ b/lang/zh_CN.ts @@ -4,7 +4,7 @@ HostsUtlMain - + Backup hosts 备份 hosts 文件 @@ -19,152 +19,152 @@ 还原备份的 hosts 文件 - + Functions 功能列表 - + Progress 操作进度 - + Warning 警告 - + Notice 注意 - + Data file is up-to-date. 数据文件已经是最新版本。 - + Complete 完成 - + Operation completed 操作完成 - + Hosts Setup Utility hosts 文件配置工具 - + Config 设置 - + Server 服务器 - + IP Version IP 协议版本 - + Status 状态 - + Connection 连接 - + N/A - + 无状态 - + OS 操作系统 - + Backup the hosts file of current system. 备份当前系统的 hosts 文件。 - + Download data file 下载数据文件 - + Download the latest data file. 下载最新数据文件。 - + Restore backup 还原备份 - + Restore a previous backup of hosts file. 还原先前备份的 hosts 文件。 - + Apply hosts 更改 hosts - + Apply changes to the hosts file. 对 hosts 文件进行修改。 - + Exit 退出 - + Close this tool. 关闭本工具。 - + Check the latest version of hosts data file. 在线检查数据文件的最新版本。 - + Hosts Info 数据文件信息 - + Version 当前版本 - + Release 发布日期 - + Latest 最新版本 - + Check update / Refresh 检查更新/刷新 @@ -173,7 +173,7 @@ Data file not found! Please use the "Download" key to fetch a new data file. - 未找到数据文件! + 未找到数据文件! 请点击“下载”按钮来获取 新的数据文件。 @@ -183,60 +183,60 @@ fetch a new data file. hosts file. Please run this program as Administrator/root so it can modify your hosts file. - 您未获取修改系统 hosts 文件的 + 您未获取修改系统 hosts 文件的 相关权限。 请以管理员方式或者根用户运行本 工具。 - + Error retrieving data from the server. Please try another server. 在从服务器获取数据是发生错误。 请在更换服务器之后尝试先前的操作。 - + Operation Completed Successfully! 操作成功完成! - + Error 错误 - + Download Complete 下载完成 - + [Error] [错误] - + Checking... 正在连接... - + [OK] [正常] - + [Failed] [失败] - + Building hosts file... 正在生成 hosts 文件... - + Applying module: %s(%s/%s) 应用选定的模块: %s(%s/%s) @@ -244,16 +244,16 @@ Please try another server. Notice: %i hosts entries has been applied in %ssecs. - 注意:共有 %i 条 hosts 条目在 + 注意:共有 %i 条 hosts 条目在 %s秒内被插入到 hosts 文件中。 - + Downloading: %s / %s 正在下载: %s / %s - + Connecting... 正在连接服务器... @@ -262,19 +262,19 @@ Please try another server. Incorrect Data file! Please use the "Download" key to fetch a new data file. - 数据文件错误! + 数据文件错误! 请点击“下载”按钮来获取 新的数据文件。 - + Copying new hosts file to %s 正在将新的 hosts 配置到目标路径 %s - + Remove temporary file 清理临时文件 @@ -326,39 +326,39 @@ to the hosts file on your system? This operation could not be reverted if you have not made a backup of your current hosts file. - 您确认继续执行当前操作以修改系统 hosts + 您确认继续执行当前操作以修改系统 hosts 文件吗? 若先前未对 hosts 文件进行备份,该操作将 不可逆转。 - + Save with ANSI 保存为 ANSI 格式 - + Export to hosts file encoding by ANSI. 以 ANSI 的编码方式导出 hosts 文件。 - + Save with UTF-8 保存为 UTF-8 格式 - + Export to hosts file encoding by UTF-8. 以 UTF-8 的编码方式导出 hosts 文件。 - + Export hosts 导出 hosts 文件 - + hosts File hosts 文件 @@ -382,5 +382,65 @@ current hosts file. steam Steam 游戏平台 + + + Notice: %i hosts entries has + been applied in %ssecs. + 注意:共有 %i 条 hosts 条目在 + %s秒内被插入到 hosts 文件中。 + + + + Incorrect Data file! +Please use the "Download" key to +fetch a new data file. + 数据文件错误! +请点击“下载”按钮来获取 +新的数据文件。 + + + + You do not have permissions to change the +hosts file. +Please run this program as Administrator/root +so it can modify your hosts file. + 您未获取修改系统 hosts 文件的 +相关权限。 +请以管理员方式或者根用户运行本 +工具。 + + + + Data file not found! +Please use the "Download" key to +fetch a new data file. + 未找到数据文件! +请点击“下载”按钮来获取 +新的数据文件。 + + + + Are you sure you want to apply changes +to the hosts file on your system? + +This operation could not be reverted if +you have not made a backup of your +current hosts file. + 您确认继续执行当前操作以修改系统 hosts +文件吗? + +若先前未对 hosts 文件进行备份,该操作将 +不可逆转。 + + + + Copyleft (C) 2011-2014 <a href="https://hosts.huhamhire.com/"><span style="text-decoration: none;color: #b1b1b1;">huhamhire-hosts</span></a> + 公共版权 (C) 2011-2014 <a href="https://hosts.huhamhire.com/"><span style="text-decoration: none;color: #b1b1b1;">huhamhire-hosts</span></a> + + + + Powered by PyQT + + diff --git a/lang/zh_TW.qm b/lang/zh_TW.qm index 25217123593b4bb043baa2bab9b9ac4dec02854f..b02a686df5a129637946e44ad45fd5a186122af2 100644 GIT binary patch delta 1017 zcmZWmYiJZ#6#f!tvpci1J28!ksEOkS+6^+h*{FqXHfziNsgFt`5(t82b~AC~J|^x= z&yq9~io2tNj)9|`lOp8zTr3mf-$07{$i)6#zd z;el{;bSL1xBn(SlGFT#vj}T|tm@t0zH=@sU)ZDual%99^j}MYn%F%Z62kP^Vfq}Ek zx65(#>vM2p>bWwl!q10gJN~K7yAC?n{7u-ZLFe%mFM$%c+Ezw^DVtqqPmeJDui~oy z>(txCtCh8F{+y$T-6KrAM-q+Rl16$g{`0SWiUW6v(iv zmOL_$B>?2n176a9B46sGmN$E}uTHRk2Rx~ZYdMt*p8l3<_OI4kvcHyz+P!ni+u5fD z-Z?Ww>P_CLpVLxiD9-k4iwJy0+4CVCJx`Uxw-aPMrkwurG6ykBIdkVvR(wo3bC-jv z>{Nz(PEtQpMt5n9iz&C{015m~memV~7MDJBP9pm#I3!y z=JPEAoid3W40NIyKH4^SH!Oq^h+WwI%pMwa&)u_VMno6}TG^ga>o9iovu z`TWl$TVxevs;H|lv@)J=VrF-5+UT@Zf2>|@YzT!kiur0pSCcuTv)Pxl?QSa^3?@y> zwgSnXq@GE3<%~eW%mjVWh}ErURm&zsv(Glx+ggW_Fmt-yWoE-_*324Ba}#FT%!Spu zc&MnIyGcZ-E()?RiGhiU^CDC#!n{yui^OOI zR!GHSeNss#6I!t4#UN|sq>Mg{pd4i4NV*ZCD9C!QUS9t1`#it*`N!(wn=g8|Zvo_8 zfRP6d)B>&rNUtTp`4oy|0!1k_#X{_DIC)_cpgzLj!&88F`O?1fNO6U|tNt4xO6_+_ z`RZJ8%)TE1lx>oyXFvNIsjegexZ9=sO}_wXNgB_M0=iqu=oX##N`)-<*X5=sf#B zT2B7RxmE4o>J7kZ(8ZD81Rv1-f{|Hc`h2J_!VAK#>armkce0BfWyZb=@pFU!fl+G92O Ir6{fb2O^-2TL1t6 diff --git a/lang/zh_TW.ts b/lang/zh_TW.ts index 4ef656a..3542fa9 100644 --- a/lang/zh_TW.ts +++ b/lang/zh_TW.ts @@ -44,12 +44,12 @@ 廣告攔截-yoyo 清單 - + Building hosts file... 正在創建 hosts 檔... - + Backup hosts 備份 hosts 檔 @@ -64,76 +64,76 @@ 還原 hosts - + [Error] [錯誤] - + Checking... 正在連接伺服器... - + Copying new hosts file to %s 將新的 hosts 檔案複製到 %s - + Remove temporary file 刪除暫存檔案 - + Operation completed 作業完成 - + [OK] [好] - + [Failed] [失敗] - + Functions 功能清單 - + Applying module: %s(%s/%s) 應用選定的模組: %s(%s/%s) - + Progress 作業進度 - + Notice: %i hosts entries has been applied in %ssecs. 消息:共有 %i 条 hosts 条目在 %s秒内被插入到 hosts 文件中。 - + Operation Completed Successfully! 作業已成功完成 ! - + Error 錯誤 - + Incorrect Data file! Please use the "Download" key to fetch a new data file. @@ -142,17 +142,17 @@ fetch a new data file. 一個新的資料檔案。 - + Download Complete 下載已完成 - + Warning 警告 - + You do not have permissions to change the hosts file. Please run this program as Administrator/root @@ -162,14 +162,14 @@ so it can modify your hosts file. 程式。 - + Error retrieving data from the server. Please try another server. 從伺服器中檢索資料時出錯。 請嘗試使用另一台伺服器。 - + Data file not found! Please use the "Download" key to fetch a new data file. @@ -178,147 +178,147 @@ fetch a new data file. 一個新的資料檔案。 - + Notice 消息 - + Data file is up-to-date. 當前的資料檔案是最新的。 - + Complete 完成 - + Connecting... 正在連接... - + Downloading: %s / %s 正在下載: %s / %s - + Hosts Setup Utility hosts 設置實用程式 - + Config 配置 - + Server 伺服器 - + IP Version IP 協定版本 - + Status 狀態 - + Connection 連接狀態 - + N/A 不適用 - + OS 作業系統 - + Backup the hosts file of current system. 備份當前系統的 hosts 檔。 - + Download data file 下載資料檔案 - + Download the latest data file. 下載最新的資料檔案。 - + Restore backup 還原備份 - + Restore a previous backup of hosts file. 還原以前的備份的 hosts 檔。 - + Apply hosts 更改 hosts 檔 - + Apply changes to the hosts file. 將更改應用到主 hosts 檔。 - + Exit 退出 - + Close this tool. 關閉此程式。 - + Check update / Refresh 檢查更新 / 刷新 - + Check the latest version of hosts data file. 檢查 hosts 檔案的最新版本。 - + Hosts Info 資料檔案狀態 - + Version 當前版本 - + Release 發佈日期 - + Latest 最新版本 - + Are you sure you want to apply changes to the hosts file on your system? @@ -332,32 +332,32 @@ current hosts file. 不可逆轉。 - + Save with ANSI 保存為 ANSI 格式 - + Export to hosts file encoding by ANSI. 匯出由 ANSI 編碼的 hosts 檔。 - + Save with UTF-8 保存為 UTF-8 格式 - + Export to hosts file encoding by UTF-8. 匯出由 UTF-8 編碼的 hosts 檔。 - + Export hosts 匯出 hosts 檔 - + hosts File hosts 檔 @@ -381,5 +381,15 @@ current hosts file. steam Steam 遊戲平台 + + + Copyleft (C) 2011-2014 <a href="https://hosts.huhamhire.com/"><span style="text-decoration: none;color: #b1b1b1;">huhamhire-hosts</span></a> + 公共版權 (C) 2011-2014 <a href="https://hosts.huhamhire.com/"><span style="text-decoration: none;color: #b1b1b1;">huhamhire-hosts</span></a> + + + + Powered by PyQT + + diff --git a/qthosts_rc.py b/qthosts_rc.py index a6f2578..8b6a002 100644 --- a/qthosts_rc.py +++ b/qthosts_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: 周日 11月 24 16:44:07 2013 +# Created: 周日 11月 24 19:34:21 2013 # by: The Resource Compiler for PyQt (Qt v4.8.4) # # WARNING! All changes made in this file will be lost! diff --git a/qthostsui.py b/qthostsui.py index fc4e176..32c4c47 100644 --- a/qthostsui.py +++ b/qthostsui.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'qthostsui.ui' # -# Created: Sun Nov 24 16:44:07 2013 +# Created: Sun Nov 24 19:34:21 2013 # by: PyQt4 UI code generator 4.10.2 # # WARNING! All changes made in this file will be lost! @@ -27,14 +27,14 @@ class Ui_HostsUtlMain(object): def setupUi(self, HostsUtlMain): HostsUtlMain.setObjectName(_fromUtf8("HostsUtlMain")) HostsUtlMain.setEnabled(True) - HostsUtlMain.resize(640, 400) + HostsUtlMain.resize(640, 420) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(HostsUtlMain.sizePolicy().hasHeightForWidth()) HostsUtlMain.setSizePolicy(sizePolicy) - HostsUtlMain.setMinimumSize(QtCore.QSize(640, 400)) - HostsUtlMain.setMaximumSize(QtCore.QSize(640, 400)) + HostsUtlMain.setMinimumSize(QtCore.QSize(640, 420)) + HostsUtlMain.setMaximumSize(QtCore.QSize(640, 420)) HostsUtlMain.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(_fromUtf8(":/icon/img/utl_icon.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) @@ -236,6 +236,13 @@ def setupUi(self, HostsUtlMain): self.TitleLabel = QtGui.QLabel(HostsUtlMain) self.TitleLabel.setGeometry(QtCore.QRect(20, 20, 250, 25)) self.TitleLabel.setObjectName(_fromUtf8("TitleLabel")) + self.Copyright = QtGui.QLabel(HostsUtlMain) + self.Copyright.setGeometry(QtCore.QRect(330, 390, 300, 16)) + self.Copyright.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.Copyright.setObjectName(_fromUtf8("Copyright")) + self.label = QtGui.QLabel(HostsUtlMain) + self.label.setGeometry(QtCore.QRect(10, 390, 150, 16)) + self.label.setObjectName(_fromUtf8("label")) self.labelIP.setBuddy(self.SelectMirror) self.labelMirror.setBuddy(self.SelectIP) @@ -252,6 +259,7 @@ def setupUi(self, HostsUtlMain): QtCore.QObject.connect(self.SelectLang, QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")), HostsUtlMain.on_Lang_changed) QtCore.QObject.connect(self.ButtonANSI, QtCore.SIGNAL(_fromUtf8("clicked()")), HostsUtlMain.on_MakeANSI_clicked) QtCore.QObject.connect(self.ButtonUTF, QtCore.SIGNAL(_fromUtf8("clicked()")), HostsUtlMain.on_MakeUTF8_clicked) + QtCore.QObject.connect(self.Copyright, QtCore.SIGNAL(_fromUtf8("linkActivated(QString)")), HostsUtlMain.on_LinkActivated) QtCore.QMetaObject.connectSlotsByName(HostsUtlMain) HostsUtlMain.setTabOrder(self.SelectMirror, self.SelectIP) HostsUtlMain.setTabOrder(self.SelectIP, self.Functionlist) @@ -300,6 +308,8 @@ def retranslateUi(self, HostsUtlMain): self.ButtonUTF.setToolTip(_translate("HostsUtlMain", "Save with UTF-8", None)) self.ButtonUTF.setWhatsThis(_translate("HostsUtlMain", "Export to hosts file encoding by UTF-8.", None)) self.TitleLabel.setText(_translate("HostsUtlMain", "Hosts Setup Utility", None)) + self.Copyright.setText(_translate("HostsUtlMain", "Copyleft (C) 2011-2014 huhamhire-hosts", None)) + self.label.setText(_translate("HostsUtlMain", "Powered by PyQT", None)) import qthosts_rc import style_rc diff --git a/qthostsui.ui b/qthostsui.ui index ef48e86..e074c7f 100644 --- a/qthostsui.ui +++ b/qthostsui.ui @@ -11,7 +11,7 @@ 0 0 640 - 400 + 420 @@ -23,13 +23,13 @@ 640 - 400 + 420 640 - 400 + 420 @@ -557,15 +557,6 @@ - ButtonBackup - ButtonUpdate - ButtonRestore - ButtonApply - ButtonExit - ButtonCheck - ButtonANSI - ButtonUTF - SelectLang @@ -610,6 +601,35 @@ Hosts Setup Utility + + + + 330 + 390 + 300 + 16 + + + + Copyleft (C) 2011-2014 <a href="https://hosts.huhamhire.com/"><span style="text-decoration: none;color: #b1b1b1;">huhamhire-hosts</span></a> + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 10 + 390 + 150 + 16 + + + + Powered by PyQT + + SelectMirror @@ -822,6 +842,22 @@ + + Copyright + linkActivated(QString) + HostsUtlMain + on_LinkActivated(QString) + + + 459 + 406 + + + 335 + 405 + + + on_Mirror_changed(int) @@ -835,5 +871,6 @@ on_Lang_changed(QString) on_MakeANSI_clicked() on_MakeUTF8_clicked() + on_LinkActivated(QString) diff --git a/style_rc.py b/style_rc.py index fed0962..0c3a34b 100644 --- a/style_rc.py +++ b/style_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: 周日 11月 24 16:44:07 2013 +# Created: 周日 11月 24 19:34:21 2013 # by: The Resource Compiler for PyQt (Qt v4.8.4) # # WARNING! All changes made in this file will be lost! @@ -99,186 +99,6 @@ \xce\xbd\x1f\x39\xff\x3f\xc3\x7f\x06\x86\xff\x0c\xff\x19\x14\xdd\ \x2c\xb6\xfe\x67\xf8\xcf\xf0\x9f\x01\x30\x00\x6a\x5f\x2c\x67\x74\ \xda\xec\xfb\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x0b\x15\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x06\x00\x00\x00\x06\x08\x06\x00\x00\x00\xe0\xcc\xef\x48\ -\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ -\x01\x00\x9a\x9c\x18\x00\x00\x0a\x4f\x69\x43\x43\x50\x50\x68\x6f\ -\x74\x6f\x73\x68\x6f\x70\x20\x49\x43\x43\x20\x70\x72\x6f\x66\x69\ -\x6c\x65\x00\x00\x78\xda\x9d\x53\x67\x54\x53\xe9\x16\x3d\xf7\xde\ -\xf4\x42\x4b\x88\x80\x94\x4b\x6f\x52\x15\x08\x20\x52\x42\x8b\x80\ -\x14\x91\x26\x2a\x21\x09\x10\x4a\x88\x21\xa1\xd9\x15\x51\xc1\x11\ -\x45\x45\x04\x1b\xc8\xa0\x88\x03\x8e\x8e\x80\x8c\x15\x51\x2c\x0c\ -\x8a\x0a\xd8\x07\xe4\x21\xa2\x8e\x83\xa3\x88\x8a\xca\xfb\xe1\x7b\ -\xa3\x6b\xd6\xbc\xf7\xe6\xcd\xfe\xb5\xd7\x3e\xe7\xac\xf3\x9d\xb3\ -\xcf\x07\xc0\x08\x0c\x96\x48\x33\x51\x35\x80\x0c\xa9\x42\x1e\x11\ -\xe0\x83\xc7\xc4\xc6\xe1\xe4\x2e\x40\x81\x0a\x24\x70\x00\x10\x08\ -\xb3\x64\x21\x73\xfd\x23\x01\x00\xf8\x7e\x3c\x3c\x2b\x22\xc0\x07\ -\xbe\x00\x01\x78\xd3\x0b\x08\x00\xc0\x4d\x9b\xc0\x30\x1c\x87\xff\ -\x0f\xea\x42\x99\x5c\x01\x80\x84\x01\xc0\x74\x91\x38\x4b\x08\x80\ -\x14\x00\x40\x7a\x8e\x42\xa6\x00\x40\x46\x01\x80\x9d\x98\x26\x53\ -\x00\xa0\x04\x00\x60\xcb\x63\x62\xe3\x00\x50\x2d\x00\x60\x27\x7f\ -\xe6\xd3\x00\x80\x9d\xf8\x99\x7b\x01\x00\x5b\x94\x21\x15\x01\xa0\ -\x91\x00\x20\x13\x65\x88\x44\x00\x68\x3b\x00\xac\xcf\x56\x8a\x45\ -\x00\x58\x30\x00\x14\x66\x4b\xc4\x39\x00\xd8\x2d\x00\x30\x49\x57\ -\x66\x48\x00\xb0\xb7\x00\xc0\xce\x10\x0b\xb2\x00\x08\x0c\x00\x30\ -\x51\x88\x85\x29\x00\x04\x7b\x00\x60\xc8\x23\x23\x78\x00\x84\x99\ -\x00\x14\x46\xf2\x57\x3c\xf1\x2b\xae\x10\xe7\x2a\x00\x00\x78\x99\ -\xb2\x3c\xb9\x24\x39\x45\x81\x5b\x08\x2d\x71\x07\x57\x57\x2e\x1e\ -\x28\xce\x49\x17\x2b\x14\x36\x61\x02\x61\x9a\x40\x2e\xc2\x79\x99\ -\x19\x32\x81\x34\x0f\xe0\xf3\xcc\x00\x00\xa0\x91\x15\x11\xe0\x83\ -\xf3\xfd\x78\xce\x0e\xae\xce\xce\x36\x8e\xb6\x0e\x5f\x2d\xea\xbf\ -\x06\xff\x22\x62\x62\xe3\xfe\xe5\xcf\xab\x70\x40\x00\x00\xe1\x74\ -\x7e\xd1\xfe\x2c\x2f\xb3\x1a\x80\x3b\x06\x80\x6d\xfe\xa2\x25\xee\ -\x04\x68\x5e\x0b\xa0\x75\xf7\x8b\x66\xb2\x0f\x40\xb5\x00\xa0\xe9\ -\xda\x57\xf3\x70\xf8\x7e\x3c\x3c\x45\xa1\x90\xb9\xd9\xd9\xe5\xe4\ -\xe4\xd8\x4a\xc4\x42\x5b\x61\xca\x57\x7d\xfe\x67\xc2\x5f\xc0\x57\ -\xfd\x6c\xf9\x7e\x3c\xfc\xf7\xf5\xe0\xbe\xe2\x24\x81\x32\x5d\x81\ -\x47\x04\xf8\xe0\xc2\xcc\xf4\x4c\xa5\x1c\xcf\x92\x09\x84\x62\xdc\ -\xe6\x8f\x47\xfc\xb7\x0b\xff\xfc\x1d\xd3\x22\xc4\x49\x62\xb9\x58\ -\x2a\x14\xe3\x51\x12\x71\x8e\x44\x9a\x8c\xf3\x32\xa5\x22\x89\x42\ -\x92\x29\xc5\x25\xd2\xff\x64\xe2\xdf\x2c\xfb\x03\x3e\xdf\x35\x00\ -\xb0\x6a\x3e\x01\x7b\x91\x2d\xa8\x5d\x63\x03\xf6\x4b\x27\x10\x58\ -\x74\xc0\xe2\xf7\x00\x00\xf2\xbb\x6f\xc1\xd4\x28\x08\x03\x80\x68\ -\x83\xe1\xcf\x77\xff\xef\x3f\xfd\x47\xa0\x25\x00\x80\x66\x49\x92\ -\x71\x00\x00\x5e\x44\x24\x2e\x54\xca\xb3\x3f\xc7\x08\x00\x00\x44\ -\xa0\x81\x2a\xb0\x41\x1b\xf4\xc1\x18\x2c\xc0\x06\x1c\xc1\x05\xdc\ -\xc1\x0b\xfc\x60\x36\x84\x42\x24\xc4\xc2\x42\x10\x42\x0a\x64\x80\ -\x1c\x72\x60\x29\xac\x82\x42\x28\x86\xcd\xb0\x1d\x2a\x60\x2f\xd4\ -\x40\x1d\x34\xc0\x51\x68\x86\x93\x70\x0e\x2e\xc2\x55\xb8\x0e\x3d\ -\x70\x0f\xfa\x61\x08\x9e\xc1\x28\xbc\x81\x09\x04\x41\xc8\x08\x13\ -\x61\x21\xda\x88\x01\x62\x8a\x58\x23\x8e\x08\x17\x99\x85\xf8\x21\ -\xc1\x48\x04\x12\x8b\x24\x20\xc9\x88\x14\x51\x22\x4b\x91\x35\x48\ -\x31\x52\x8a\x54\x20\x55\x48\x1d\xf2\x3d\x72\x02\x39\x87\x5c\x46\ -\xba\x91\x3b\xc8\x00\x32\x82\xfc\x86\xbc\x47\x31\x94\x81\xb2\x51\ -\x3d\xd4\x0c\xb5\x43\xb9\xa8\x37\x1a\x84\x46\xa2\x0b\xd0\x64\x74\ -\x31\x9a\x8f\x16\xa0\x9b\xd0\x72\xb4\x1a\x3d\x8c\x36\xa1\xe7\xd0\ -\xab\x68\x0f\xda\x8f\x3e\x43\xc7\x30\xc0\xe8\x18\x07\x33\xc4\x6c\ -\x30\x2e\xc6\xc3\x42\xb1\x38\x2c\x09\x93\x63\xcb\xb1\x22\xac\x0c\ -\xab\xc6\x1a\xb0\x56\xac\x03\xbb\x89\xf5\x63\xcf\xb1\x77\x04\x12\ -\x81\x45\xc0\x09\x36\x04\x77\x42\x20\x61\x1e\x41\x48\x58\x4c\x58\ -\x4e\xd8\x48\xa8\x20\x1c\x24\x34\x11\xda\x09\x37\x09\x03\x84\x51\ -\xc2\x27\x22\x93\xa8\x4b\xb4\x26\xba\x11\xf9\xc4\x18\x62\x32\x31\ -\x87\x58\x48\x2c\x23\xd6\x12\x8f\x13\x2f\x10\x7b\x88\x43\xc4\x37\ -\x24\x12\x89\x43\x32\x27\xb9\x90\x02\x49\xb1\xa4\x54\xd2\x12\xd2\ -\x46\xd2\x6e\x52\x23\xe9\x2c\xa9\x9b\x34\x48\x1a\x23\x93\xc9\xda\ -\x64\x6b\xb2\x07\x39\x94\x2c\x20\x2b\xc8\x85\xe4\x9d\xe4\xc3\xe4\ -\x33\xe4\x1b\xe4\x21\xf2\x5b\x0a\x9d\x62\x40\x71\xa4\xf8\x53\xe2\ -\x28\x52\xca\x6a\x4a\x19\xe5\x10\xe5\x34\xe5\x06\x65\x98\x32\x41\ -\x55\xa3\x9a\x52\xdd\xa8\xa1\x54\x11\x35\x8f\x5a\x42\xad\xa1\xb6\ -\x52\xaf\x51\x87\xa8\x13\x34\x75\x9a\x39\xcd\x83\x16\x49\x4b\xa5\ -\xad\xa2\x95\xd3\x1a\x68\x17\x68\xf7\x69\xaf\xe8\x74\xba\x11\xdd\ -\x95\x1e\x4e\x97\xd0\x57\xd2\xcb\xe9\x47\xe8\x97\xe8\x03\xf4\x77\ -\x0c\x0d\x86\x15\x83\xc7\x88\x67\x28\x19\x9b\x18\x07\x18\x67\x19\ -\x77\x18\xaf\x98\x4c\xa6\x19\xd3\x8b\x19\xc7\x54\x30\x37\x31\xeb\ -\x98\xe7\x99\x0f\x99\x6f\x55\x58\x2a\xb6\x2a\x7c\x15\x91\xca\x0a\ -\x95\x4a\x95\x26\x95\x1b\x2a\x2f\x54\xa9\xaa\xa6\xaa\xde\xaa\x0b\ -\x55\xf3\x55\xcb\x54\x8f\xa9\x5e\x53\x7d\xae\x46\x55\x33\x53\xe3\ -\xa9\x09\xd4\x96\xab\x55\xaa\x9d\x50\xeb\x53\x1b\x53\x67\xa9\x3b\ -\xa8\x87\xaa\x67\xa8\x6f\x54\x3f\xa4\x7e\x59\xfd\x89\x06\x59\xc3\ -\x4c\xc3\x4f\x43\xa4\x51\xa0\xb1\x5f\xe3\xbc\xc6\x20\x0b\x63\x19\ -\xb3\x78\x2c\x21\x6b\x0d\xab\x86\x75\x81\x35\xc4\x26\xb1\xcd\xd9\ -\x7c\x76\x2a\xbb\x98\xfd\x1d\xbb\x8b\x3d\xaa\xa9\xa1\x39\x43\x33\ -\x4a\x33\x57\xb3\x52\xf3\x94\x66\x3f\x07\xe3\x98\x71\xf8\x9c\x74\ -\x4e\x09\xe7\x28\xa7\x97\xf3\x7e\x8a\xde\x14\xef\x29\xe2\x29\x1b\ -\xa6\x34\x4c\xb9\x31\x65\x5c\x6b\xaa\x96\x97\x96\x58\xab\x48\xab\ -\x51\xab\x47\xeb\xbd\x36\xae\xed\xa7\x9d\xa6\xbd\x45\xbb\x59\xfb\ -\x81\x0e\x41\xc7\x4a\x27\x5c\x27\x47\x67\x8f\xce\x05\x9d\xe7\x53\ -\xd9\x53\xdd\xa7\x0a\xa7\x16\x4d\x3d\x3a\xf5\xae\x2e\xaa\x6b\xa5\ -\x1b\xa1\xbb\x44\x77\xbf\x6e\xa7\xee\x98\x9e\xbe\x5e\x80\x9e\x4c\ -\x6f\xa7\xde\x79\xbd\xe7\xfa\x1c\x7d\x2f\xfd\x54\xfd\x6d\xfa\xa7\ -\xf5\x47\x0c\x58\x06\xb3\x0c\x24\x06\xdb\x0c\xce\x18\x3c\xc5\x35\ -\x71\x6f\x3c\x1d\x2f\xc7\xdb\xf1\x51\x43\x5d\xc3\x40\x43\xa5\x61\ -\x95\x61\x97\xe1\x84\x91\xb9\xd1\x3c\xa3\xd5\x46\x8d\x46\x0f\x8c\ -\x69\xc6\x5c\xe3\x24\xe3\x6d\xc6\x6d\xc6\xa3\x26\x06\x26\x21\x26\ -\x4b\x4d\xea\x4d\xee\x9a\x52\x4d\xb9\xa6\x29\xa6\x3b\x4c\x3b\x4c\ -\xc7\xcd\xcc\xcd\xa2\xcd\xd6\x99\x35\x9b\x3d\x31\xd7\x32\xe7\x9b\ -\xe7\x9b\xd7\x9b\xdf\xb7\x60\x5a\x78\x5a\x2c\xb6\xa8\xb6\xb8\x65\ -\x49\xb2\xe4\x5a\xa6\x59\xee\xb6\xbc\x6e\x85\x5a\x39\x59\xa5\x58\ -\x55\x5a\x5d\xb3\x46\xad\x9d\xad\x25\xd6\xbb\xad\xbb\xa7\x11\xa7\ -\xb9\x4e\x93\x4e\xab\x9e\xd6\x67\xc3\xb0\xf1\xb6\xc9\xb6\xa9\xb7\ -\x19\xb0\xe5\xd8\x06\xdb\xae\xb6\x6d\xb6\x7d\x61\x67\x62\x17\x67\ -\xb7\xc5\xae\xc3\xee\x93\xbd\x93\x7d\xba\x7d\x8d\xfd\x3d\x07\x0d\ -\x87\xd9\x0e\xab\x1d\x5a\x1d\x7e\x73\xb4\x72\x14\x3a\x56\x3a\xde\ -\x9a\xce\x9c\xee\x3f\x7d\xc5\xf4\x96\xe9\x2f\x67\x58\xcf\x10\xcf\ -\xd8\x33\xe3\xb6\x13\xcb\x29\xc4\x69\x9d\x53\x9b\xd3\x47\x67\x17\ -\x67\xb9\x73\x83\xf3\x88\x8b\x89\x4b\x82\xcb\x2e\x97\x3e\x2e\x9b\ -\x1b\xc6\xdd\xc8\xbd\xe4\x4a\x74\xf5\x71\x5d\xe1\x7a\xd2\xf5\x9d\ -\x9b\xb3\x9b\xc2\xed\xa8\xdb\xaf\xee\x36\xee\x69\xee\x87\xdc\x9f\ -\xcc\x34\x9f\x29\x9e\x59\x33\x73\xd0\xc3\xc8\x43\xe0\x51\xe5\xd1\ -\x3f\x0b\x9f\x95\x30\x6b\xdf\xac\x7e\x4f\x43\x4f\x81\x67\xb5\xe7\ -\x23\x2f\x63\x2f\x91\x57\xad\xd7\xb0\xb7\xa5\x77\xaa\xf7\x61\xef\ -\x17\x3e\xf6\x3e\x72\x9f\xe3\x3e\xe3\x3c\x37\xde\x32\xde\x59\x5f\ -\xcc\x37\xc0\xb7\xc8\xb7\xcb\x4f\xc3\x6f\x9e\x5f\x85\xdf\x43\x7f\ -\x23\xff\x64\xff\x7a\xff\xd1\x00\xa7\x80\x25\x01\x67\x03\x89\x81\ -\x41\x81\x5b\x02\xfb\xf8\x7a\x7c\x21\xbf\x8e\x3f\x3a\xdb\x65\xf6\ -\xb2\xd9\xed\x41\x8c\xa0\xb9\x41\x15\x41\x8f\x82\xad\x82\xe5\xc1\ -\xad\x21\x68\xc8\xec\x90\xad\x21\xf7\xe7\x98\xce\x91\xce\x69\x0e\ -\x85\x50\x7e\xe8\xd6\xd0\x07\x61\xe6\x61\x8b\xc3\x7e\x0c\x27\x85\ -\x87\x85\x57\x86\x3f\x8e\x70\x88\x58\x1a\xd1\x31\x97\x35\x77\xd1\ -\xdc\x43\x73\xdf\x44\xfa\x44\x96\x44\xde\x9b\x67\x31\x4f\x39\xaf\ -\x2d\x4a\x35\x2a\x3e\xaa\x2e\x6a\x3c\xda\x37\xba\x34\xba\x3f\xc6\ -\x2e\x66\x59\xcc\xd5\x58\x9d\x58\x49\x6c\x4b\x1c\x39\x2e\x2a\xae\ -\x36\x6e\x6c\xbe\xdf\xfc\xed\xf3\x87\xe2\x9d\xe2\x0b\xe3\x7b\x17\ -\x98\x2f\xc8\x5d\x70\x79\xa1\xce\xc2\xf4\x85\xa7\x16\xa9\x2e\x12\ -\x2c\x3a\x96\x40\x4c\x88\x4e\x38\x94\xf0\x41\x10\x2a\xa8\x16\x8c\ -\x25\xf2\x13\x77\x25\x8e\x0a\x79\xc2\x1d\xc2\x67\x22\x2f\xd1\x36\ -\xd1\x88\xd8\x43\x5c\x2a\x1e\x4e\xf2\x48\x2a\x4d\x7a\x92\xec\x91\ -\xbc\x35\x79\x24\xc5\x33\xa5\x2c\xe5\xb9\x84\x27\xa9\x90\xbc\x4c\ -\x0d\x4c\xdd\x9b\x3a\x9e\x16\x9a\x76\x20\x6d\x32\x3d\x3a\xbd\x31\ -\x83\x92\x91\x90\x71\x42\xaa\x21\x4d\x93\xb6\x67\xea\x67\xe6\x66\ -\x76\xcb\xac\x65\x85\xb2\xfe\xc5\x6e\x8b\xb7\x2f\x1e\x95\x07\xc9\ -\x6b\xb3\x90\xac\x05\x59\x2d\x0a\xb6\x42\xa6\xe8\x54\x5a\x28\xd7\ -\x2a\x07\xb2\x67\x65\x57\x66\xbf\xcd\x89\xca\x39\x96\xab\x9e\x2b\ -\xcd\xed\xcc\xb3\xca\xdb\x90\x37\x9c\xef\x9f\xff\xed\x12\xc2\x12\ -\xe1\x92\xb6\xa5\x86\x4b\x57\x2d\x1d\x58\xe6\xbd\xac\x6a\x39\xb2\ -\x3c\x71\x79\xdb\x0a\xe3\x15\x05\x2b\x86\x56\x06\xac\x3c\xb8\x8a\ -\xb6\x2a\x6d\xd5\x4f\xab\xed\x57\x97\xae\x7e\xbd\x26\x7a\x4d\x6b\ -\x81\x5e\xc1\xca\x82\xc1\xb5\x01\x6b\xeb\x0b\x55\x0a\xe5\x85\x7d\ -\xeb\xdc\xd7\xed\x5d\x4f\x58\x2f\x59\xdf\xb5\x61\xfa\x86\x9d\x1b\ -\x3e\x15\x89\x8a\xae\x14\xdb\x17\x97\x15\x7f\xd8\x28\xdc\x78\xe5\ -\x1b\x87\x6f\xca\xbf\x99\xdc\x94\xb4\xa9\xab\xc4\xb9\x64\xcf\x66\ -\xd2\x66\xe9\xe6\xde\x2d\x9e\x5b\x0e\x96\xaa\x97\xe6\x97\x0e\x6e\ -\x0d\xd9\xda\xb4\x0d\xdf\x56\xb4\xed\xf5\xf6\x45\xdb\x2f\x97\xcd\ -\x28\xdb\xbb\x83\xb6\x43\xb9\xa3\xbf\x3c\xb8\xbc\x65\xa7\xc9\xce\ -\xcd\x3b\x3f\x54\xa4\x54\xf4\x54\xfa\x54\x36\xee\xd2\xdd\xb5\x61\ -\xd7\xf8\x6e\xd1\xee\x1b\x7b\xbc\xf6\x34\xec\xd5\xdb\x5b\xbc\xf7\ -\xfd\x3e\xc9\xbe\xdb\x55\x01\x55\x4d\xd5\x66\xd5\x65\xfb\x49\xfb\ -\xb3\xf7\x3f\xae\x89\xaa\xe9\xf8\x96\xfb\x6d\x5d\xad\x4e\x6d\x71\ -\xed\xc7\x03\xd2\x03\xfd\x07\x23\x0e\xb6\xd7\xb9\xd4\xd5\x1d\xd2\ -\x3d\x54\x52\x8f\xd6\x2b\xeb\x47\x0e\xc7\x1f\xbe\xfe\x9d\xef\x77\ -\x2d\x0d\x36\x0d\x55\x8d\x9c\xc6\xe2\x23\x70\x44\x79\xe4\xe9\xf7\ -\x09\xdf\xf7\x1e\x0d\x3a\xda\x76\x8c\x7b\xac\xe1\x07\xd3\x1f\x76\ -\x1d\x67\x1d\x2f\x6a\x42\x9a\xf2\x9a\x46\x9b\x53\x9a\xfb\x5b\x62\ -\x5b\xba\x4f\xcc\x3e\xd1\xd6\xea\xde\x7a\xfc\x47\xdb\x1f\x0f\x9c\ -\x34\x3c\x59\x79\x4a\xf3\x54\xc9\x69\xda\xe9\x82\xd3\x93\x67\xf2\ -\xcf\x8c\x9d\x95\x9d\x7d\x7e\x2e\xf9\xdc\x60\xdb\xa2\xb6\x7b\xe7\ -\x63\xce\xdf\x6a\x0f\x6f\xef\xba\x10\x74\xe1\xd2\x45\xff\x8b\xe7\ -\x3b\xbc\x3b\xce\x5c\xf2\xb8\x74\xf2\xb2\xdb\xe5\x13\x57\xb8\x57\ -\x9a\xaf\x3a\x5f\x6d\xea\x74\xea\x3c\xfe\x93\xd3\x4f\xc7\xbb\x9c\ -\xbb\x9a\xae\xb9\x5c\x6b\xb9\xee\x7a\xbd\xb5\x7b\x66\xf7\xe9\x1b\ -\x9e\x37\xce\xdd\xf4\xbd\x79\xf1\x16\xff\xd6\xd5\x9e\x39\x3d\xdd\ -\xbd\xf3\x7a\x6f\xf7\xc5\xf7\xf5\xdf\x16\xdd\x7e\x72\x27\xfd\xce\ -\xcb\xbb\xd9\x77\x27\xee\xad\xbc\x4f\xbc\x5f\xf4\x40\xed\x41\xd9\ -\x43\xdd\x87\xd5\x3f\x5b\xfe\xdc\xd8\xef\xdc\x7f\x6a\xc0\x77\xa0\ -\xf3\xd1\xdc\x47\xf7\x06\x85\x83\xcf\xfe\x91\xf5\x8f\x0f\x43\x05\ -\x8f\x99\x8f\xcb\x86\x0d\x86\xeb\x9e\x38\x3e\x39\x39\xe2\x3f\x72\ -\xfd\xe9\xfc\xa7\x43\xcf\x64\xcf\x26\x9e\x17\xfe\xa2\xfe\xcb\xae\ -\x17\x16\x2f\x7e\xf8\xd5\xeb\xd7\xce\xd1\x98\xd1\xa1\x97\xf2\x97\ -\x93\xbf\x6d\x7c\xa5\xfd\xea\xc0\xeb\x19\xaf\xdb\xc6\xc2\xc6\x1e\ -\xbe\xc9\x78\x33\x31\x5e\xf4\x56\xfb\xed\xc1\x77\xdc\x77\x1d\xef\ -\xa3\xdf\x0f\x4f\xe4\x7c\x20\x7f\x28\xff\x68\xf9\xb1\xf5\x53\xd0\ -\xa7\xfb\x93\x19\x93\x93\xff\x04\x03\x98\xf3\xfc\x63\x33\x2d\xdb\ -\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\x25\x00\x00\x80\x83\ -\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00\x75\x30\x00\x00\xea\x60\ -\x00\x00\x3a\x98\x00\x00\x17\x6f\x92\x5f\xc5\x46\x00\x00\x00\x40\ -\x49\x44\x41\x54\x78\xda\x5c\x8c\x31\x11\x00\x30\x08\xc4\x42\x2d\ -\x20\x03\xfc\x2b\x61\x45\x02\x1a\xe8\x54\xae\x6d\xc6\xcf\x7d\xc4\ -\xcc\x1a\x20\x22\x84\x8b\x05\x90\x99\xa8\x6a\xdf\x42\xba\x7b\xc6\ -\xaa\x92\x47\x1c\xdc\x7d\xb2\x8b\x8f\x93\x7d\x1e\xc0\x64\xf7\x00\ -\xf5\x9f\x1d\xd3\x02\x88\xef\xaf\x00\x00\x00\x00\x49\x45\x4e\x44\ -\xae\x42\x60\x82\ " qt_resource_name = "\ @@ -302,20 +122,15 @@ \x04\xa2\xfc\xa7\ \x00\x64\ \x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ -\x00\x0a\ -\x0b\x2d\x87\xc7\ -\x00\x68\ -\x00\x61\x00\x6e\x00\x64\x00\x6c\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = "\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ \x00\x00\x00\x0c\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\ -\x00\x00\x00\x18\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\ +\x00\x00\x00\x18\x00\x02\x00\x00\x00\x02\x00\x00\x00\x04\ \x00\x00\x00\x28\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x46\x00\x00\x00\x00\x00\x01\x00\x00\x01\x5b\ -\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x05\x4f\ " def qInitResources(): diff --git a/theme/darkdefault.qss b/theme/darkdefault.qss index eb23c92..4f151ee 100644 --- a/theme/darkdefault.qss +++ b/theme/darkdefault.qss @@ -1,11 +1,11 @@ QToolTip { - border: 1px solid black; - color: #b1b1b1; - background-color: #3c3f41; - padding: 1px; - border-radius: 0px; - opacity: 100; + border: 1px solid black; + color: #b1b1b1; + background-color: #3c3f41; + padding: 1px; + border-radius: 0px; + opacity: 100; } QWidget @@ -88,21 +88,21 @@ QComboBox:on QComboBox QAbstractItemView { - border: 2px solid darkgray; + border: 0; selection-background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); } QComboBox::drop-down { - subcontrol-origin: padding; - subcontrol-position: top right; - width: 15px; + subcontrol-origin: padding; + subcontrol-position: top right; + width: 15px; - border-left-width: 0px; - border-left-color: darkgray; - border-left-style: solid; /* just a single line */ - border-top-right-radius: 3px; /* same radius as the QComboBox */ - border-bottom-right-radius: 3px; + border-left-width: 0px; + border-left-color: darkgray; + border-left-style: solid; /* just a single line */ + border-top-right-radius: 3px; /* same radius as the QComboBox */ + border-bottom-right-radius: 3px; } QComboBox::down-arrow @@ -142,81 +142,81 @@ QLabel#TitleLabel } QScrollBar:horizontal { - background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0.0 #1c1c1c, stop: 0.2 #222222, stop: 1 #323232); - height: 9px; - margin: 0px 16px 0 16px; + background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0.0 #1c1c1c, stop: 0.2 #222222, stop: 1 #323232); + height: 9px; + margin: 0px 16px 0 16px; } QScrollBar::handle:horizontal { - background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #585858, stop: 0.5 #474747, stop: 1 #404040); - min-height: 20px; - border: 1px solid #222222; - border-radius: 4px; + background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #585858, stop: 0.5 #474747, stop: 1 #404040); + min-height: 20px; + border: 1px solid #222222; + border-radius: 4px; } QScrollBar::add-line:horizontal { - border: 1px solid #222222; - border-radius: 2px; - background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #585858, stop: 1 #474747); - width: 14px; - subcontrol-position: right; - subcontrol-origin: margin; + border: 1px solid #222222; + border-radius: 2px; + background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #585858, stop: 1 #474747); + width: 14px; + subcontrol-position: right; + subcontrol-origin: margin; } QScrollBar::sub-line:horizontal { - border: 1px solid #222222; - border-radius: 2px; - background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #585858, stop: 1 #474747); - width: 14px; - subcontrol-position: left; - subcontrol-origin: margin; + border: 1px solid #222222; + border-radius: 2px; + background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #585858, stop: 1 #474747); + width: 14px; + subcontrol-position: left; + subcontrol-origin: margin; } QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { - background: none; + background: none; } QScrollBar:vertical { - background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0.0 #1c1c1c, stop: 0.2 #222222, stop: 1 #323232); - width: 9px; - margin: 16px 0 16px 0; + background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0.0 #1c1c1c, stop: 0.2 #222222, stop: 1 #323232); + width: 9px; + margin: 16px 0 16px 0; } QScrollBar::handle:vertical { - background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #585858, stop: 0.5 #474747, stop: 1 #404040); - min-height: 20px; - border: 1px solid #222222; - border-radius: 4px; + background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #585858, stop: 0.5 #474747, stop: 1 #404040); + min-height: 20px; + border: 1px solid #222222; + border-radius: 4px; } QScrollBar::add-line:vertical { - border: 1px solid #222222; - border-radius: 2px; - background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #585858, stop: 1 #474747); - height: 14px; - subcontrol-position: bottom; - subcontrol-origin: margin; + border: 1px solid #222222; + border-radius: 2px; + background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #585858, stop: 1 #474747); + height: 14px; + subcontrol-position: bottom; + subcontrol-origin: margin; } QScrollBar::sub-line:vertical { - border: 1px solid #222222; - border-radius: 2px; - background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #585858, stop: 1 #474747); - height: 14px; - subcontrol-position: top; - subcontrol-origin: margin; + border: 1px solid #222222; + border-radius: 2px; + background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #585858, stop: 1 #474747); + height: 14px; + subcontrol-position: top; + subcontrol-origin: margin; } QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { - background: none; + background: none; } QHeaderView::section From 0e898106fda42d62ebda3b23cd6d5e2de64a225f Mon Sep 17 00:00:00 2001 From: huhamhire Date: Sun, 24 Nov 2013 20:07:01 +0800 Subject: [PATCH 09/18] fix small problems Signed-off-by: huhamhire --- hostsutl.py | 21 ++++----------------- qthosts_rc.py | 2 +- qthostsui.py | 4 ++-- qthostsui.ui | 2 +- style_rc.py | 2 +- 5 files changed, 9 insertions(+), 22 deletions(-) diff --git a/hostsutl.py b/hostsutl.py index 8dcf888..27acc40 100644 --- a/hostsutl.py +++ b/hostsutl.py @@ -688,25 +688,12 @@ def set_label_color(self, label, color): lable. """ if color == "GREEN": - rgb = [0, 170, 0] + rgb = "#37b158" elif color == "RED": - rgb = [255, 0, 0] + rgb = "#e27867" elif color == "BLACK": - rgb = [0, 0, 0] - palette = QtGui.QPalette() - brush = QtGui.QBrush(QtGui.QColor(*rgb)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush( - QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush) - brush = QtGui.QBrush(QtGui.QColor(*rgb)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush( - QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush) - brush = QtGui.QBrush(QtGui.QColor(120, 120, 120)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush( - QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush) - label.setPalette(palette) + rgb = "#b1b1b1" + label.setStyleSheet("QLabel {color: %s}" % rgb) def set_label_text(self, label, text): """Set the text of a label - Public Method diff --git a/qthosts_rc.py b/qthosts_rc.py index 8b6a002..9c27407 100644 --- a/qthosts_rc.py +++ b/qthosts_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: 周日 11月 24 19:34:21 2013 +# Created: 周日 11月 24 19:38:26 2013 # by: The Resource Compiler for PyQt (Qt v4.8.4) # # WARNING! All changes made in this file will be lost! diff --git a/qthostsui.py b/qthostsui.py index 32c4c47..23e4566 100644 --- a/qthostsui.py +++ b/qthostsui.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'qthostsui.ui' # -# Created: Sun Nov 24 19:34:21 2013 +# Created: Sun Nov 24 19:38:26 2013 # by: PyQt4 UI code generator 4.10.2 # # WARNING! All changes made in this file will be lost! @@ -43,7 +43,7 @@ def setupUi(self, HostsUtlMain): HostsUtlMain.setSizeGripEnabled(False) HostsUtlMain.setModal(False) self.mainFrame = QtGui.QFrame(HostsUtlMain) - self.mainFrame.setGeometry(QtCore.QRect(0, 40, 640, 360)) + self.mainFrame.setGeometry(QtCore.QRect(0, 40, 640, 351)) self.mainFrame.setFrameShape(QtGui.QFrame.StyledPanel) self.mainFrame.setFrameShadow(QtGui.QFrame.Raised) self.mainFrame.setObjectName(_fromUtf8("mainFrame")) diff --git a/qthostsui.ui b/qthostsui.ui index e074c7f..c1de29e 100644 --- a/qthostsui.ui +++ b/qthostsui.ui @@ -57,7 +57,7 @@ 0 40 640 - 360 + 351 diff --git a/style_rc.py b/style_rc.py index 0c3a34b..615f2b0 100644 --- a/style_rc.py +++ b/style_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: 周日 11月 24 19:34:21 2013 +# Created: 周日 11月 24 19:38:26 2013 # by: The Resource Compiler for PyQt (Qt v4.8.4) # # WARNING! All changes made in this file will be lost! From f96c2b816cee4d211b530877afc3b8fa60ef00fc Mon Sep 17 00:00:00 2001 From: huhamhire Date: Sat, 30 Nov 2013 15:44:33 +0800 Subject: [PATCH 10/18] Update button images Signed-off-by: huhamhire --- hostsutl.py | 4 +- img/buttons/button_ansi.png | Bin 0 -> 1929 bytes img/buttons/button_ansi_disabled.png | Bin 0 -> 1925 bytes img/buttons/button_apply.png | Bin 0 -> 1700 bytes img/buttons/button_apply_disabled.png | Bin 0 -> 1727 bytes img/buttons/button_backup.png | Bin 0 -> 1272 bytes img/buttons/button_backup_disabled.png | Bin 0 -> 1272 bytes img/buttons/button_download.png | Bin 0 -> 1440 bytes img/buttons/button_download_disabled.png | Bin 0 -> 1440 bytes img/buttons/button_exit.png | Bin 0 -> 1725 bytes img/buttons/button_exit_disabled.png | Bin 0 -> 1725 bytes img/buttons/button_restore.png | Bin 0 -> 1713 bytes img/buttons/button_restore_disabled.png | Bin 0 -> 1723 bytes img/buttons/button_update.png | Bin 0 -> 1773 bytes img/buttons/button_update_disabled.png | Bin 0 -> 1773 bytes img/buttons/button_utf8.png | Bin 0 -> 1928 bytes img/buttons/button_utf8_disabled.png | Bin 0 -> 1928 bytes img/icon_ansi.png | Bin 3037 -> 0 bytes img/icon_apply.png | Bin 2403 -> 0 bytes img/icon_backup.png | Bin 1965 -> 0 bytes img/icon_exit.png | Bin 2294 -> 0 bytes img/icon_fetch.png | Bin 1913 -> 0 bytes img/icon_restore.png | Bin 2522 -> 0 bytes img/icon_update.png | Bin 2695 -> 0 bytes img/icon_utf.png | Bin 3068 -> 0 bytes qthosts.qrc | 28 +- qthosts_rc.py | 2415 +++++++++++++--------- qthostsui.py | 26 +- qthostsui.ui | 24 +- style_rc.py | 2 +- theme/darkdefault.qss | 8 +- 31 files changed, 1525 insertions(+), 982 deletions(-) create mode 100644 img/buttons/button_ansi.png create mode 100644 img/buttons/button_ansi_disabled.png create mode 100644 img/buttons/button_apply.png create mode 100644 img/buttons/button_apply_disabled.png create mode 100644 img/buttons/button_backup.png create mode 100644 img/buttons/button_backup_disabled.png create mode 100644 img/buttons/button_download.png create mode 100644 img/buttons/button_download_disabled.png create mode 100644 img/buttons/button_exit.png create mode 100644 img/buttons/button_exit_disabled.png create mode 100644 img/buttons/button_restore.png create mode 100644 img/buttons/button_restore_disabled.png create mode 100644 img/buttons/button_update.png create mode 100644 img/buttons/button_update_disabled.png create mode 100644 img/buttons/button_utf8.png create mode 100644 img/buttons/button_utf8_disabled.png delete mode 100644 img/icon_ansi.png delete mode 100644 img/icon_apply.png delete mode 100644 img/icon_backup.png delete mode 100644 img/icon_exit.png delete mode 100644 img/icon_fetch.png delete mode 100644 img/icon_restore.png delete mode 100644 img/icon_update.png delete mode 100644 img/icon_utf.png diff --git a/hostsutl.py b/hostsutl.py index 27acc40..1330378 100644 --- a/hostsutl.py +++ b/hostsutl.py @@ -623,9 +623,7 @@ def set_font(self): """ system = self.platform if system == "Windows": - font = QtGui.QFont() - font.setFamily("Courier") - self.setFont(font) + pass elif system == "Linux": font = QtGui.QFont() font.setFamily("Sans") diff --git a/img/buttons/button_ansi.png b/img/buttons/button_ansi.png new file mode 100644 index 0000000000000000000000000000000000000000..abc04960e27fb8fc18a2655486f27c88f1a065fe GIT binary patch literal 1929 zcmbVNX;2eq7!CxHQ2{v;wa~iVrb3mF-5iCD1c^i-2#A3SNUbEB4cVGx!)5~^^#ZX) z8_^LE)LP?3YefXL)ndIygb+~~tuxevf^DUj1r$@MEp($``@`vv?#%9YJ_MbWn0=QZN zW{FavRAW4*#gnWgmSIiHM6D}OL=Dc11!62>+JGLTlz>IAGnm8{3Ha2mn4Y`0c_8o< zLamU1&z#CmO$Xu$5(7k$A}$KSLLdr>ghjA08jb+?5G>$90v;^j!hA7=h+z>h_JFh+ zsn&=UvV<`$dL;q16lE0ictu4;kwtQT!ZPgaSJlc zgp#gaR&tz%W;!7V%LS5{RNOc-+p5_%cKq4?&1Xghb0=c!5AFO^A<2 zM06$uu#`R+=gJKxN@+l`ac!K|9^(rClPiuVF(pNinFOI5uYzhz;5@DjV!<-63zuH3kPy`%G}gTKc=aIp^_ z60l^Zt<=H(v})_u_2rG1IbiZdonqlHYkEe%cUi7<>}>V>^W^V$o^+oceXsAf>1tQu z$J{1-#}_P}*Pb0j;lv1WGr4l-4S)UA#t@9H^&YlwH4_m&q4}p79BB(N$1^lo*F8aU$$buI*fl*cKmXFE?r*%nIR^9)keePrr3ioCw;yExAdg$yo1^-wWkhSN(3^uRJ2E)EE>{1xnjZH0 zq`F7vmT`t!Ig?*<{Njq4AO`~{*6~A6S(wf{fj+LmdQr@Mu^rnowljKj1{rPcV*3bLPS$Vw5?cT0c*kixrv*Qd+tLqc5 ze%oC#i1u><(xRfJSwW$L;#u2oOjC0S_X_dP!VY8RleW0=}JJeU^J2Vh2 zJTurA2p3K@*$VE4X*L}E^_;wM;YfPVy0>Rl-(Ow3CcMilVW4Y?xiF*-wsQp9$JaSE i5o!hc$C2U93?}0fJ6K>qtFF6$j`9U*vWEG2rGEo05b?wS literal 0 HcmV?d00001 diff --git a/img/buttons/button_ansi_disabled.png b/img/buttons/button_ansi_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..2c07c98e2086f717c10cdc1dfcf7c1e8b8b5add3 GIT binary patch literal 1925 zcmbVNeOME993KM#Nkkl(SjI8H$lS}_Hn&?W92+l#4G||&lJ0i9!R5A_w{vW0Iiv)9 zPhNyDK@ofu<3R{bQiRkgCTN+ZCBC6)J}8=KYFgbCtUrAGqkEpa-`n@|{d|Al@Avau zaaw9(V8Da`27?i(N>ZlNBj9=ced(_)FK>_@LaF#nY9?W%auE_^$PI)Z15{=t8%xI! zgL6R_7Q|!j`Zmj%vO!&nPZD>C{c9Ecn-wM1G#*j+3dO36Kfllj{O_P zbFFP!rxoL+V>V(TiPH5jMht`L+`X8{V@O9MolfF(Q4o`oKo^=Z3#C%Z*z^h4fE%Q! zPz)ROAj}a8ghGxU6ACym41yeiK?I>7Umy}=;ING#YQ0(6dUHoY3?Cx+zYW%1&JXPL23!YG~5MgIRr)6atJG+Pyo@h zaf^Y-wY}-7(9;VmF%q|9h6Iu@15Z*c#h*iuf*2wJArS}D8w?y&BGhwWqZr}vr@}A< zOALBgfU<}1hX0#79vu|V(K&@Z4v(A@YB+rxcj*os+u}APn&tk#AvC2E9)U7A$ z@y}Q$#>LN;*k74)w7c8f@^Dii)4u5#vl|H0Hr-tDiK}nND=tIPeRI5PqRH=kN66wV z;}x_hH?3n)Q@{@e+J?7*Ak%2!Y7g_<*{b=g?A=K zm&GPVe$`W!IQhthN?quQHSe!%W?f>PoE8|pw5YgUa&hq(uhmWanBIq)rmxOuFDywr zJh8&{$M({D^61y|&*`9t8=Wkx_aNW7b!6D?yfJH2!*CyG&Dd)@b^b}-)$%Fs2fA^7 z6zl5GdgyStdhGVWS!hjb^50&!SX*wDo>sfZGdAZZdIb)WwXHVhzJc1#KYs~TwZ!-| zs^+}5s_Wn#6wHB-oMh^*k3Mp{?ZD^Pj$d7r{C7}!)XIue`Q!L; zJ+chgx1r?pxxyP&C+u_2{I2G>>I2r6wO(88*S2$R5l#;9~YUH1-S)ynad%ZvE_}IRvduv8ypSkz477W?VKikd} zccxgY;UQyfaoM~>D-lx*}W&e~SM&Tz@p#;pDZ^#15wlRN4R zowb#B?XN}L@)=b(y@>Pc_1f{OFxOr6$qy=yZu{|)relO}_)gWb_IBN}F0m?E7Pl=i z_!QT7&ux3J-SzF~A%2ajAHNuInYyF;UiB~geGMMY&XBZBSfaMy96$3xx-10ke^2%X z_1%HK6Za>rO*wcv{21t7QC$&L-|YQHXX=c?pw-YeQ&7jFg3bi~hQqtQ?=@GrUF*K7 n2~H}>YA#Z(`fdNOvCL77(4%bYsQT(c&yP_RpQ>z((=Gi6#PIKN literal 0 HcmV?d00001 diff --git a/img/buttons/button_apply.png b/img/buttons/button_apply.png new file mode 100644 index 0000000000000000000000000000000000000000..5c2190df93467967df73267f85d547f78b04bac1 GIT binary patch literal 1700 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 literal 0 HcmV?d00001 diff --git a/img/buttons/button_backup.png b/img/buttons/button_backup.png new file mode 100644 index 0000000000000000000000000000000000000000..f4b7ea9c6f1ac7f7692b6e7b62ec4e4f1310899e GIT binary patch literal 1272 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 literal 0 HcmV?d00001 diff --git a/img/buttons/button_exit.png b/img/buttons/button_exit.png new file mode 100644 index 0000000000000000000000000000000000000000..a35e6d3a51b57a1219221b7fba03f8a4b51e16b6 GIT binary patch literal 1725 zcmbVNX;2eq7|xJ#h{X;gfr1v7sGT5e_DBNR$WcgwL=2bd5Jd~g?m{9-He^?m;HVXY z)mo$;QyH~X!3!0|ib_?6%Oa>F(m`|-tG1vrsA!8?u&v#w*#2<*(Vf}-uJ?JK_j`}o zwdtv|{Cq=vIUJ6kDp`@qj)431@nXMpQPD6v1T#u4GndL^>^d9CNgyaa38>7vd@_^N z5zfL6GKRz978*5LMysA9!zr^+=e7|#%vKi7;l#u{tUA1aWB@&xZ?wenhfX!}0V5I1 z&yuKNwN*|UjLAhda&A$o1}`eWF@hf-2gEpJEPLG%hy)Q!kw^fA5fKE7AVdTrs0_wrhy-~3@L4q* zktfSkB)!&RSFwBp!&qeyWVhRec9D>>r;afwNE){p zt&EYf0B%N|o?6Vr@>x$`UBPTstKSe?=+}W_Lk2l?RtOQoklF0M*Gp@f$t3@EM++i*4?c~i&0Z0z1G)N-0*fTkBr?YHHawOjMNwD|OE9SzL6o9Ii84`vVxk05 zVw5-mm5yOm7MjsnaB@uB$ZEgBCMLZTE0fzu9YfhP6lEH#f^-ALP_%)v0&+PZ$TC_8 z%1(#7GxX}h3esj=LJ~Vc;f$t4q}~x+;#Gwx*6MIi_txO(*^9}O&^gKws~x9mn;jf4B>D*eo-kBG>&Vh zw=7(9AtRtEzbE&4Id8Y~(UBvrz5~gw`v(KU(w?s5nRjmfblqmKMzF!V!nEkuQg2hh zh`|)m-#nwn^o?n4-So&M%fxL%-6MlfsfXXrymPZ+bn#Gc*^Ah_y>w^8#4@E|ncA-) z{9?--$AqQ(Q*-Xsm3H>qjyPQFvNDF73{@i$nkq%3dgb>%AJq!$>f5!+r#@CzH`!C3 z?Crlj=l6kq!{sAf7$Bxy$pOgsIwNCrcyYrUx`HQ23r&d#Z zEHtWhQSzPODESEY#13v;;OOzg-XS|K(+AI7E+VJ)3c`JkEDuo9`$qguKTF>e<@>>X z*kcep=<2N8cD7gI^jN~XP&}wluKfJTPb-=XvV`;}UBb}ny6MvP{e?$^Bd)_atD=0g z8~Cwt;QnKWgx{D)5D?w1v={?Su6&_gZ3+(m!+R}Jh6t!{vub<4*0(t&2``{(_Km$SN}NIU$8%3*#J8Rai|f6o zjj4@myZTvM>dvjjTmHOwEwIpeD?mB%^lHyX*)?hN_QaIzj(mDP`as}GzYkg_m!F;0 zI8ZnTYlB>t(jsc@(mi@r(&5CQ(iEccS(U>c9txA${_DJhYsdc>^t|su`7BhneQ!a~ z_A9$KrA@niKXTs6bkw&Gd1x-V(S5f?eZKeH#(<_#)UT~}vfm6r7kAR|*5wpY$- zQdUvf=CEqMSRF$&^8!oy!+z^9oP&?I@m%AMp*7K2^UF33GUAz|EkljA@4))^?880T zn%u{nEn4w7}0lc%9vJpb%m+95kK^-y>`Z>Dc9EDw?-(&-QfPAsFbOSLy5V?{{We5oUQ-> literal 0 HcmV?d00001 diff --git a/img/buttons/button_exit_disabled.png b/img/buttons/button_exit_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..07104263577388c440335b379a37d67d6f60febb GIT binary patch literal 1725 zcmbVNX;2eq7*4T>s7P@LLP1!Ac#>mtkZgvCAt8Vm30P$dGtajVF;N*oe`jD6YYPa2=eCMPo3U zm3|8gq|s)jYh&Wcc;$LAg6mkY&4y*x87MT378qnUz(^`a0vaq?tCuiFE;ld$Eh=He z36vbAL58Jh!?KN-Iy*83$xcNelo7NB2sDc+0v$%efLWKOC&Xq6W0F@)&28Ik1~6$t zrb-x7PQ@!#fDAWcfPf`nA{>wp2q6|I0Qn-&AK-F89-G5sgFGh46>}glC;+A(2Bl_1 zlf=<-#k3Z+k}y(8(jaEDO(qk|#AD&cWHtyv5SzngbGb~)f=OiQN!ZNP6TUMHa*RNX zS_7%Y^?;2L*5DbWgh6>abp@S4seDhYC#C~Mg^X>64Q!CbVe53ZdrevsWHk1V8y~bL zVzLYvI~pVK3?oA2BguCLOvUcMg=~hDH{uOOEtM2FO^zcOI!sT7%OwozgoSERF~S!@ zNg5Dh@_BqdQ-kq&Ob7x&CJz;G5srCsr&oVlastV{klerV3OkIEfP}xB-yKfE96C zJ&K!%m9`8`U09A8wV4>IFycC3GQ?u-2jmeDgGC@$z{E5t%0xtb4HHTd!c0y81aTn| zs)2Y2V;YbC-_Wrsr`WbS`B&Y{Y*EE%o4)S?YVp30Fg?{gMygB5pkx`1X7@N;E{!pF zUn$4$4n1IJy@*!3`< z?WzhdoRhHCPhXH~Sh&pdp~bJxH}*^WP?djdr?uJW?pS|k!I4C-z+LL$cWoAWVw9s* z(PftkY(%@(_d7q>=`dQ;QI{jB_S_`-ab1E=70|Tbvh$Otp;3H?<2{YroUx(u(Z)#M z>POdBy_%onO?0|BcHQTARuwHNTxgAW2bT}>rT0TGn@@Ki>jlo;`~|K^YqoRh4sP7b zZ|aEl?wZZJF!53Mt6uk(SqGrF@ud}adY&CikG<`#dV0`PnLHl$Y`5crr<;4rWKAYR z6z|+y*4kXf;`r+Am#o;x@=a&AC~nREqa}UV?oTTXjs5P;cmrp|uG4LpGc-^ly1u*A zt7uWhL9n*CMt%NluU`XE84f%2Yl z(OIwG7fI_B^>x=J>YAnHak)h|{VY8WQCBW|IhR-@*B|H4@5+B1@x@qXtFOo6)psvC zuu|@>T=tbA^JwK-z=PfgKG)^fcMLQse||7zacz7(*XicBCsxF$PB{b&3ErNLuboHF z^B0$$vYHJY9~T6oO-J4G`lF$cc#SNnEO@~IT zOJuq0eCz|7Kg;PfbxqvJJLGe+b}cilXwiv#(%t nu3L_9&+-G8ynPuv?A>W8K97peul~lx_CpB|iIi6bC+_?k!sDOF literal 0 HcmV?d00001 diff --git a/img/buttons/button_restore.png b/img/buttons/button_restore.png new file mode 100644 index 0000000000000000000000000000000000000000..671e46a4ca017b1f49139f0fe49db2533df13caf GIT binary patch literal 1713 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 literal 0 HcmV?d00001 diff --git a/img/buttons/button_update.png b/img/buttons/button_update.png new file mode 100644 index 0000000000000000000000000000000000000000..caecbad15cf198cc0dbffeccac006b7a8938b17a GIT binary patch literal 1773 zcmbVNX;2eq7>-gcLa7Q=5Vc(b6%{s{%_f8mqydrusSURXj98QG#zaUq$6^Ag6rmLc zu!tQFEhy7r)In4b6@&@`DySn`or(^JwMs=$@j!%nbc0~~!|_LVX7{_E=Y8JqJ!W&l zLxb&XTx@7Gnw=y>6iJPM<+YwoeT}K9&!}M`DUKzh2qkHf8E{$vM#ynMqLHn~BXJp) zqVL50Xf!LmIy#n&m43rh5E_Qef?=37I*LuB`3cNAnIaJ<0Xe>2t>x1nH8#@$HO8l} z=17@Roe)>4LsAWRRBC9nA~jKgVsyb*fS;L18PMRQ3@~ewv__tpPoK2Qqvn=vhz?9b z$V5KcwcCX~$(3qknWoA%obepyy!i@@p zT1To0Enu-IlM~4#pH6xD_6i!ERQk@a);JX?DrAsZrh{Mx6Vhlb_nJf-$w>TPH{Odj zMyKd-C=xdk$p!_L52f2QnTp+qg)BhI8(x?}O(jK^Bq9{a8eB_CM0`4R!obuRPr>G* zN;!;zY=q4Q@A?SWQq5zay5ti3%m%9Y>?NXrX!FhX z;xtvh-uYbr*l@{8kK$#v70iL6!Z?=$4O#9l@pP{p@}-68b%wYG$K@v?YO%YJbmc~U zXW)e|D=RW9dv*)5q}m60T~S?C-|jm)_Nwf{z=5vvvZt^6{u)2kJT{iLrAxoWwlSiC zVauIc)SA@s{U530PE8rXEXNJGUsv5+ywYf8AFRWVEDVY}JDlaIo9AkZTHya=RsEmL zR!J}8^v0|v*6r=>t44Y!vSvD8{@C=1H?Oqj)6xL@7>6|08*U3TdnBQFQL*15)BGae z(i2ZzOxas5iTx8hLKt$!vv5O=y<01=e^+MW`~1i`g-uloLX?!%iS4m1)q()##}cKX=&Hj-ahUsS}=l^B)S3Z zcF5!0&9h@#ErS|{^ZSXz|7aBJYT zft-kdM^}G-7?-N-$$?b#Tl2OA`{(U<-Jb(Ikl2iT9(nu)zy1Ky=aqb`Mx5uzS8b?R zo4Z}}WUyWwG`cfz)gkdvX*I3uex*u%r6ys}V^e(d$%0U#SlqNi9TW1pm(}3TchRjV zpEG}C-`zpZjI*&zf4sM2&3)wHj-I){zJd_pRhJVRGDmoOnZtFkaF0t4E literal 0 HcmV?d00001 diff --git a/img/buttons/button_update_disabled.png b/img/buttons/button_update_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..6aafcb1aeff852ba16c074148ef850d5472bd733 GIT binary patch literal 1773 zcmbVNX;2eq7!FrNBvS+j6|HOo1?{le-5kJ%aD*gCv|uv`Vi{oZ4? zL=n4^<>KYSU@%znXlXn>0=CzgNq>!bdE@l3n35@}1R|9(sYsk5#t1bI$aShTJRVnJ zxmoSFh{15k(k3b?Wz73R4WZ+xY#5GNXQ0^(hA7-@P-!x73Q*%|T74*c*xJknv{)!R zNe~0a7$kVQHad^Q6Y^pcHF+5t6k~^n0V1=IHlV{P6=2q7>WxBkD0|wjke=JNAvQ1# zp)x|*FP&1xC;$mT;(&l705vee2ZB%zB0%`TNC3cv5gr8dAcO}ZTp^4K5dkpsuxT|C zOBKdTqh_?|RVX{1q6|U^GMP*q6OTiXX%K>=re0UiW@bg z)<9_qJz%q_QWM!!D4X{5>n3z|F^~RY%(IJD(Dg%UYU`VI4-D?_cq~h^^-FPk9 zn3!w8p?KU#WRn^?AE`dGWIA?l7P0|pZ-i?|Eu9oqrj*cR>u^0Kmxi+G6Aq@ugc^Pj znyN-nkk8}uK{d|jfhdX~AP*C8H3-ZT1mVc6o!9XL5itUDC42!IEI<$$FEUCXlSIn+ zGBG!h3(Lf_T)Eyzsq`9rR$EJJ&v1Eft3Z)XP=qm^FaQz>uslht z#|V>gg)KubFD%7LZ4Qn_k%SJI4zW=C8hH(ZtAY`(0L0Z825N%&Y7k8gQh{(FigM9l zOpWq1>={1xe?te+PC>Rh`A^-fvKr@le+!#g zP!a8BG^Z%$E^~ITIwBtN3$yICEWB|qN#WCRqI$45vug`f)jN3fX>G0byRPhj0I#yU zeRo^j_so3)Cqh$Of<~P65!nHr8QB3Htmvh!Rjq!DRErxO>Rar#-ik?Pv?mRG`UC7= zXmz~lHhS3-vNWmHlu_xD5&>;+?Fy-G$f*{)uXWF7Pj$DtSw=S2?kg89G|k_QR-YR4 zGL>(>x-w$*rD%?tGp-;T;(gBaU{5>(zwfa-7GVFa*g>=%f*0*LNLNwOEdLh!o_S?%-K9zL->@Ym4dLUe-5E~0rult2aZ`A5A^YCPLzxAjb&NIY zUfgMo^<;@FT@hn{##$#|%dSUBzEcYxY@bqd+JEn#lb(ByGct4_H6dbSMP%pwk~s0O z747AXUpZZ=ye4fCKc6UC)KOf++;Z~p@|OJQ8v}p$eRm`M(#$an&>Lj{g1UZ9gEnELK_{nX=^{Y0;_0 literal 0 HcmV?d00001 diff --git a/img/buttons/button_utf8.png b/img/buttons/button_utf8.png new file mode 100644 index 0000000000000000000000000000000000000000..aac4aa18182413829546582d1cdb811f60b4cd2d GIT binary patch literal 1928 zcmbVNeOME993KpMOY=3N1#%qIz}oI^w=p)E0vpQ}&|E0nQ|gY}Z7jCk+#N8$7Z5Z+ zdSDrkM4Qyes7=8_w)UIU!E&g zC%rkwpX1MBvBs!oDKyLoxL;py=1b+|JYa@b=y)ytE@`B*FbBbkHIS(Upt52nLPKDN z?1g8DXcmjT(44HLwTTH*oV4;WH-_)D+8H*B6+P2w$MAH522u%=*(L*f>yLqe*&qW` zM2T>sT~4H#XXQAEcXN`G@tkyAVgP5(0HU2z#(@r@2nxX{grGb`AcZATL<9^!Afx6m z7^ND8a#)L5$-p$4wo4%>D=Ukih4M*<2|^?i2?Prufq=&#cvQBH#+*DG6*gi)K~T8E zY^Tkn4RBk;QppTj1~Q&Ly@J)AnE1@FjT#OV6Eet&*&&1vLsqN%UQf^zts(w#GY++stSWbH)G3mC79iMw5S+hiap(WhBQ|2nHDXpAW768V!2DB~%ic1PDp$Y$Wuw^C-nKz*VQlva_CTh4oO&8|VG|VkCEV7llNf{c}offO5#*%$k15Z&O3^XnuwXE*;qE zF-I@@e3YxFCr`U*bdX0uj4VrEbo=X1W692Qy>m4_bMv@x$aXx`XP&6xL&8t%^K(Hk zup;A=z~5cH>6^A@azc-;EsnQlT+Hj;78t||Iq;T?^g(q4re8d3^B?uSUE6J(w6c-1 z`zyJJ@Vv&CjCn6~2HZgpOn=2vev~tg|DvgH3R3CO6m*aCe&P83D@dnbaQM3B@t!@@ z^-xY_^u!vk?#uCM(?e&BANxh@jM5EvOD6I?!Wvck*UM*n4VKM5N7*Ny>|fl-9qL)v zF}bwT_kqvCTh(@B1N(gQHSyWND?JT)^q;fBPLG1}OGZ`2a2|Ss6*sHq1gXLHeP>fw zS8dq7rz6EL{?5Kf@@;I(HC~$>swHLovv%g+qf2def4c~whOw!mxK zxp%83s$`qr3o1EtvOlcitI=JY`QsM*bmhF{c+KR{vVUiXyCKQMVe{IW)`*En7+L_GXD4a?isO8=l=hKHu9 zuEyP1*3X|Fy5plgJIbc=k``ToV^T9g_F7*gg;Ty(tqVoLS)<6l}>Jx0mydVm0?e*P>$ort|Zv9LIBh z{wZ8|wExD0iXYe9$G{ExbsJh<+``W78av9n3wGV@J3e%x!3cXtSIuv|2(QxBaMukU mS=2rO>f898_EGwyhz8aKzo}OvU1Xj6->8aDQtXb?FZ&x`$?xF+ literal 0 HcmV?d00001 diff --git a/img/buttons/button_utf8_disabled.png b/img/buttons/button_utf8_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..37c1a74763b131d9e57375fc93110f71e70508e6 GIT binary patch literal 1928 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 RvnxN`P9!&CiCy5){{YBgD6;?n diff --git a/img/icon_apply.png b/img/icon_apply.png deleted file mode 100644 index 61b78e46c7dc06706565fda8c04b14de9c3e3b13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2403 zcmbVOdpJ~iA0OosD;p|OY8pypE@#FVGfXlUQO0#F(Z*bk4Cc%@GZ<1Rk$N`ql1h?9 zl0=G1NmeAANU5i-$(D?3R;3&99!2~9(X)TN=Q-zh{eC{*`}3SMPxlS;bxd?nDAasc z7nV0Nqo==ln#d@Ni+hJmOXO^SxsN179>aq{l#@`x2hpx#-Zs!1o51`xX}a>F^)GagHwp52pWZQa8yWnf^bld=7ZZr5FIm8djo?O3F#O=GKavCGQm)h zOB@XP#JO_?ap3~05aYNG?Vz9`1Y%ImLo37)kc_6FW4`jzkoEL29)tcWA`hoyz8U4u z@kBEvFo-7O$XEdZut8I(IDib;*a6mPA^{-b2_!r~!U9AZfl33&=$QwDXoH0zG;fyk zj4otH$Arq|QW_o~6BC1rA>kzOHatM3Qt<>Lo=C(Z5?EO*B_>UPsl$LR0 zr6ArLlu4ps0g{gpvso|_yMI?SEr?h{^MFN2Qg{(8i6BZ0LULCY9fRE9gd!o0&j)Ql zsvRF|V@DET`2rgfmd_`FSU#Cd0>k7%_JV*e}>J}loXRuEHils4OkSCYGT!|!NwhBB$C31-@R3b$)ndmis zB1kBSky%b>=$peV5Eey)LT6YaMt==4P4olxb^-xUz^B?`Lqe!_Sj15wmPaKJu>?Mm z0w8w)ML@;O;D!Hh=8 zR!d(0Zd=uFTSHhuTIYY;HnP)FSGtCH*jsJ0{t7~}&Yezveof4cz`ix(FA7&3@9B9u zK5|9%!G0ubP+Z&l?ejl5=y3+_!!s`KgijI-mzLTqS(YNdp z3?ZE1rlQ@C0s?wiGa%N6ZH67yX}|fZ=jkUP}vFh~BB3F(~!|=o&#z08!*xSq< z&xhuvp;BVv7kNAZG*{`wy`5_N?Ehjcu4&!7xa5@^)FR-n!BK0U)g?Kq^J}e>OVig| z+gKBa6Kyjiec($)pXj&06d%z)Yu-EITRVDqU;j@>>a&|RjrWP(JaWPSmef}S?)5w~ zl$4%RW}My(m%pg-&>SDR+AQHH9F*%H8)RHMQ>lW#?3r_D>}l0K)mglK zTnQTWdWDnrLUa1c@I>CVQ^jw3@@t^2L75rZRVI|SZlA2}3Tee_zW6Tw%Z}@XH&-sC z1e$8yWywbLz59pyN!wg2nUZ4j<> z;!>GONPIWd*VotF!a~&%re;)(N|@Unbop4Don7y|5Q})V$$F2#;5$|i`@B`|n}Peq zeGg@-C5|Y&9Ey9M6}`IRltSXXeK31IS|z2Lc6O4go-a(hm7cA&-0mQjRG?gwI6rUl z%*ESJBCa&Gh-I*+OLw|pq ze0lj4%Og!YMN2E-Bg*OVnZ>#JzcRf9I>!n-HgX3}>%{9agEezIBNOBs-P)z)#ZbA@ zU(KM^b46ViyM=^$?-3E-5K!RRcYYN%$3#!rf2q>vWKvS?4#@lz$Hgt-=AfC{HS(xv zxS3I~CeNU~aTwl_Q2BnMpc(7@Ga0I`iQ2`2oTJ+ov*mvra7i;a@#=`Y8z-_b=!!wN zxVihM!H3(YE*!#h-*)dEUc2U#d1Uic`hvccQ#VeZ9!fhRU^V$1jqfXP{sx9*1 z?BM5{4mz6oupG5yn;W_o6(+{6et<(?{uHgZ% z130N=NtG9d*pd@RKQx?O8uVA2;Rcp>2SBQZO?{saA3vYIXaxJ>jr!iamO#Ju^!HG@ z%d(6`mKg&TH!QhxY_!zdpEjC{A?az>e%2P)>Sg`hmH`I%NyI5t&domo2pCZ~%j^SpT1_dh zX9T2nwmcq=Hd%XfoPFCbsKn~Lv1EKT4YU6iBPAupMbThzU~jq0lKk~-ms6s7KGcbZ v*T$D91@cE9k#wmYkw5xncaKIrCr diff --git a/img/icon_backup.png b/img/icon_backup.png deleted file mode 100644 index ec08348eedc16b2ea7ddacb1fadfbd0361bbd193..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1965 zcmbVNeOME996x~=PNvMafDq3^pH$lJZZB-NHi>P3#EUp5EHz>;2MpM5Y^NK03^8AU zFw~TYl0;CD07Wv+8DYjjKAX?dA}9|OU~H6+@`UJHAO}IYFv5jVE(_&|5KM&f!I1}|w3&5DB85C` zL>IM_Kq(|?62Y+5YGqrwY{HxjqZo$42nXhHSQLU~$uyE`8_Q@37?mK$En2hQMCu76 z=#;3|5X(skL|OXW1%oL%`h{SlWh78k$Y7h=1fy&OHW-|KJwsba1^%xYFGX9FnI;@o z;1*)JSxe<3DPWXL#qQOLoIuJN(E_ucN{TvNPH2}Ka3dKZmq64FTc_8FG#Z?TV?qs! zC**2b8ZD2@(rCCiOT*`L)F}00Jl?3Bm+=KsD)a&wKUBu&plB!u69x(8h&)U#2;p)= zq_Rk1+ggvNmx<{6DX5`v*Yzf9bvW1 zac1bb!*blLUxDkw%!C1a7Gjb9CF+G*ty-(Wf>=pOn2<#|s$;1!gu_BK905w*p#m)i zjqr85hbV1V+TtUl zCM}%&At912o$cN9y&_A>Jnxa(ajPjsTH3rf@$oD#KH9P_C(wE~YS|&scVhmyNscD( z;GCIH8R$yr;aG5fWyk$F-@H~i*~8HL_`BMj9aHJt@?1gDcbAIJ9O>z_-fgh%o1L4& z%9p04lZp3l9`Em-QFVuYti2MoO1XDGVclah9t>uc`?Rd8ZEW=4wr$&!F~FJHp$Em| z10CI(=}Ea#rK0Y-&WH23{_4j!cbx0>%m*%G8UCI?K|qumj=~O^X3|Q*T)z|Sg0aUU zd5#a39NX_F?%6ySt^EDw<$?VCKkxat)1t!GNttxu;|U3$=HwMWx_H&naNy{j>Yg@bnYEMK*3;il|X$>_Mq{VfYvM+N-cvpS9sr29FfR}{#4>eTR{6c~}rwt4gb^Sfj>)rCbNW!i; z5CH9-As=(Ps|YB3yD5Wxe};!k!^6L&w2G5$Q=e9QtrOCMswVMVn2b$${4%#QMK1Se zwIxsZ)oofmGbRY=Ru*q9-UD}jarRPY@3OH!w0(M7*EekTt_L2TPTXK9%efXmJEiPm z%G~W$0HcMxElmcg-%v{SXPp-MKWRZ2fqS7HKOHQpS%+tsL zdb>;5R#ig1J~FeuXB@qkCSTn*JZ0hJvN53a=Dz%cKW9p6ep|t&MW%*b3|hQ$rCrz% zKwo(7z@8qUxlpzL=;5LB0kO@#r5m@L^*UL$2|paNyS+~6wNJ8my>B(!`uZ2M;7f0& zH$D2R*U|47n(nBJI8?C3uh7$H^RYlHhA~^j5^EinET%1xp`6H^EpCplyr*o?j~$mRzEounH0_R%{9x8{8rWLd_T&a+hq|Ga7(0t}ZPh`ZAN R*)8V}G$J%cUL#HX=pVyw{yqQz diff --git a/img/icon_exit.png b/img/icon_exit.png deleted file mode 100644 index 86bfe68eae65107c734711d496aa87b3badbe311..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2294 zcmbVOc~BE)8xL|rQCgjfC^iPHsh_zMLY4#!;g(B^3W`9o*_Z%1NEQ-7Km#Hu#iI;G z#ejlNYb`2JF_>^gKw9kxSZEamv^CXoMDV~tq#G5#?+>Scd^@}QKJUA~-*Z1RTND)$ z}-&?A~W+TvMhrGV&N~P0$9nFLnt<1%7f4$V(tzo8shSI zrgcM16v{G96cY=_hKB*5RE+1EF?f|&hOkj6rmsrI1ydjx&4YG`BrMFtl@<(I#Aji) z(87t~G7cmZ1!u~kFEb-zz|0ho!N>UepqVNFQ6Pq3E?Ol{l_&re3-d-VfXL=!0tWpC z0;jMrZ=H$_k3w^#atKYs({Lb>L`BmXcoL07^&+i9lZhk>fk+{cC^!-sATj_F4gK!I zAlBr30TAsU_|6uxV_}3aECUDxrBaDkQt(pw4g!h6U=WC80-20M5IDt73CvaDBntO= z4gQb^+E>TFz2r90OK*AFVVzD`{H)sVM z4gJ@R526(@J7o|d8d6BpQ{VNyX$RRE)mB&b>sq$G|No|rfH*}k_sReC&HNG4jArru6d;@Ta|B6{;gKU# zQuDFtHVS3EJj9YpP9nhDGiL3I8j<`@c6?Gjg=;hAU zhYNRmbnXpn&+T+sTo~$UD9$Z+S#3Z$C`disrzpW;h3;Pu%M98d!R?9tB?0x#_n!SS zLDAGnPQRuLFxxN9uqsosT4q>Mdc>wpbrl57x~UDpw%b|yEBZaddoBzqbrZ+W&y+n@ zugy^Wv3ICq`3xm_>Z02KjW#jj)$#-h#uF5R~w|pMS%5DP6_-gb7Zil=W2j`ZvTH`?-+J=s#Y z#yREaosavPNBu?v!e+GgPeLCqb)IoHQX0|ABmpP&<6q?w=$p&Fd1mi;#%la}*3SlI zZqC`yZseq#JfZ8&eCif=B>69Gb5xtsa znOFoaNU*9bIKMv2RTK1mNg~(}tWUgl=(o|1Ud`;jh*R3|>Yi`)cbAqFBp6c8i=K-zW-Fryr;ir2r?r|(+YhZa%O>{$QLoo#lmTHe`?OJXy_h;l3>^r)q zJVhZ1e8i6ZL$)@YFm|UR!B#hZ@$d2$Zqq{QXzD%n<@{PplZ9v3YL(mlUtzc1iEL*3 zE74W6I9G9TVQToq)wsSxITv)vWA;r;Z{iv0bz()UQJ<{z>b_UjzdTs(HWf5HP(EjI zp4V*Sv%okEnkE?&LIt&Zo7HwAM_ZqClXQS^U}R9w{E2zk z;C{qo!|GaxDaDN}fFIX+`45g(U}0086x`+HouMzfJN9V?-C``c=@KQ^aeQw|Pl6%d z*4JiH>mz(@+hD$9ZvI`FWrkrgia4DHXJnX$o~tdQa1q_GWz!6ExA%S7zO{GC$9)!6 zk(c?*F%ONXRuV_NA5a<%`W9reAHLGo%d@j*Pl>R0SB-AQD}b-}#ajn?VD3Ass{vgz$5H){d#w7$R7}z?UwrWn%etg5G#^>vdQ`hOzAbd2lQUUvj6}9 diff --git a/img/icon_fetch.png b/img/icon_fetch.png deleted file mode 100644 index 4a64e6e319b9762d871442087a181003b39de3db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1913 zcmbVNeOME996tgKNl1xTA-N4-k-gkrfVW&iU0+CNXX+0d619;2@pPvKw@z0VKdq&gAqwa6=S-X zorIl9(>8?1%gxQ@<_ftawTcJ9FwEl%cme^3L2&GORvL3~toE>R2`FyYQ-qBsNGs@+ zi0Q~|TEb>5ee8n8rdB@@Y_*RCiU}Fdf!TNvm(R0UoPIq*+v#NdUo)PHwx{ITa9%QQ zC$lL%lMiFqIGKsvvlTgkj5SCiMKDRh%qXePw%}G;g-Y1W4c9;z5SVb( zb5&M5jal{hxNd^cJ;sfCCKr)WI7X9H3Q3yBs~{@bQ`L=J9HP^1NX6k>#UntHt+)9c_!j?oB5a~MYr91P|QIDDNT3S#b{C_T&`;~V~O z=y;4#JZGK!r*6iNm|}D;pL7AUdD2I?m1!P|>5@OypEWSew_AnAr8v63Ni`|AV7{-n zera9(UMa#$bK6v?IzAYW7f)TfBd&7M`b7^tZ7KlcL(-pX-);-svsEyz^UIw$A7fdOmX z#jJ_c-mBFgT`?XH9|0zp&G^OC+J~j3)vOFH`|QSrf`pkv{Ryn{`^(fj+Iy8n@!V+F z2w^1hwO>aG7DxgyX5a5ZBBYJ=8R{3lo(FD`ql<{3nt^W1Ns;t#_R;F)GRXYx!$d!~ zW7l@fY5HsUS9T^?xNkz{(3?lY%)s)Ko~e^U0aU*?un-cFK*o8Nht#z! zYQ?1!Aw|oe5RYL&#i|j`gu9crRRy@tIrl+U=Q(U!!!Py34M(1jm#pk&Xh_)p2sV;^ zp*wT?w3vsiNs^+?3RJPNea}WJvAyQ^)yEQEY7GzCsd1<6KW0Gg5qsOx+XCF=myM~P z{+*tDyIdK8tgO6y;yMibd1O#+V4G0l2eCWy`b4Ayd&ln=e&4x&4^{; z(7_F(`%-=EF1xyJ&FeX_^W*LJvs>Vb1FQw!+g*Z{{y{{+^#?n5OSp9>%F}*0UXXqV zO*q`8*?(Z}SCdvt>xyMv13fbFW{=M=UQshl@Q(xa=SSDH+$;$yv}cn`;-w+qow~fi zXU+HKQ(jH}uiv^mGSI*5uZH;Aw5h?}E0zo{@7Vg`>^e99vTt9_T~PR{siWP)yJls~ zeoj%sA>hq-&P_MFn9iI{=N@_Ad!{ixpeghc!rEf0yga4j{GG&r^)oUK_-ns(|1Ezc z#fL23v^`F-5lyJZBz2dg3tfExzF8?C2Zf?tH=GuHk(GjH-zR;`O zM9n5!%z*cXm$xZ8hWRWnextBU*!&i;(^CVtU*BDkBPloSy29^X?D%lGkgpA&l4Py^ zsqe6R;N+^cx<+dLp(N`Y2P;;HsOHMN&;>m&4eq)=xYFyopWE5ip+&2kUy*7pCu>`$ z_}(bb3JmURX?QIpSZ(YaK5zE-C|zL%LP|>fItSx+q}+BnlKfkIfeR2c;mjx8pc5X> OpP@>wK@ZK(DEbEs$KP-O diff --git a/img/icon_restore.png b/img/icon_restore.png deleted file mode 100644 index 8d509431992f2f6eaf591c273b755907ea8e1df7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2522 zcmbVOc{o&iA0O+z5hc|db!!@uF#8NM!(^EmYa2Ek94Dbe6TzOPGURMfellG45g-5YF4U zT>|)Q_h53iM{>wqg#CKBos0qz2mp`;mkIbnDMdy_eBq@)>)B&80{%q=jHDvI8WrH~ z1*eH50Gx;-A~_f=0d7M^VTo7*32Oz%VX$~K29L(#kysoBL#AMf@NW+S(k9`CQoQNT z-*iDcDk2;N#S}C;HZ~R&i${qhVQ4IwOh#jHXdDg+Ng$m zfJ|Z|2_!rR$>tF7NH!Y}AlXDBj)jF@GJ!D1^CP@98EcKjlAReeA`XjX;7E9evm=p& zw_(t63?hy;hjkH3L6(pM%<1Mqy1!u=|A?i~BmfH(NthxLf36C=!bPA+8ZHvUX*9UG zKTpUN#Y)%BX6UQKbU?z30l3Z*kpTWB#1!5S)RQ(Ejd%Iuc^|8k0#sTpkRNqh zd9`%&U8@JH+%~-GwXRmChNq;AqcV~*yvt7xn~w+ZlZL&|MLazaH}*?6TckjSyG>;o z#!>f9e!d->@N{Sj<n&xuJzWXHSI41=(oQZsvvB>#?Uc6hT`WQ36_tzQK=cAuS4triM*6+rzG&W}YC7QNl z)95bk_gyFUEI+jQ!P9ZOU~)yXCgO;VJi_sb<%AYlA@8>h3~ac}^zGDN!m&z@z^c(( z_Fn*lJ8MTKOLiA-)ogU+tS9RCAGdV1y52Hzq-!m7oBqjhVdReB zAw$FYYHF&~f&9%URc*FD!G3SXCfFJ>;g&_(?N@2-4;J>BG#gLg2@iBNRu}1TjNLnz zJ;Exso*|K1XdZieD#*T@mK!>FJV~>Z@0boN-+j=aweR|^BIK2xSF}Ox_(6@rO0;H3 zjNhnLl^t*~z-(Lph)gSd%m6-KU47U7=^M<;Ck^uW@cA%i!J+)>EF6<;FQcxkdC^d( z@wx5|>d5Em(e$^sQwHLwxsO8i_XZZvv`<&x*`n){2^aA7CW6jL*P6naD+&|S z#QCeUEJHI%ju%=#j4!r`mJJ7%)-0H|JGT? zIv2#GdGsqQd5Z3F%gm7QNJ4It{d-G(=iA`Yfolc{JLU|R9tzFa8ARPJ(jHvCa=w1B0Hgxuxg&b>H17o z$#X`^jtVVB@#pR%9PPmz-1sHK54}|{^NyKz>NLYL%@-YHE?m+}Q|Wtoc;>zfs*M<| z3Gq!B;uHPGMnGExu^8#l9pzHtl%BWBV1dCMqZN6_kJ#+VQI-sfbJfdl>XhGXA34g$ zR!)oihSxPVN2#TpJkJlQD=5v=+#6S_>ujR|`=k&D%{VWN`S*hzCk7;yqe+9o9T!uN z@dB=&&#|o!MjyDo{&k94OGc6e(r6W(hzCO}LspvBHqp80< zI6VGgS&=8!t~*)Fem=UOqk9Qval5xdeXR;JIL6_dnKjS5pIQ38QGq_b<$U6uoyV1b z$W%kszB#WI;YwRkQaa^LOzolv?^EYdUL1Vk@KCobV`Z?eN82wWx5{fPdOsF)<>b7s z?@XMWagx&F)yCDS7Ed{@m}SN)LzP8^X4cu=FKY6(IgbtLb-BeFIy77pcisKZn`4b9 z1G7y3RH|@B7SX2*vu~w0k%IKullJ!tz_@GvMQLlEABWX%dS@fC!NfG(>pW{@F@l4g zS8pq&hj{I2%6;fq-qEvE+81*6;`~K3TH6>&uSW-G*4c6OJ7a%WhNkrn4RoH#Z1ch3 z95Xe29blO|`W(aTG=WQ>Vgerv%cLjzX_YNYU)On=FJ7;%I^AoprVS%mEnxPWuD(6{ Ox8=g{pr3IHN&XviJ~tfz diff --git a/img/icon_update.png b/img/icon_update.png deleted file mode 100644 index 24df0d9630fdecd73ff97568ed0653bdf4cdf85a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2695 zcmbVOX;c&E8XkoJf>0E+VNqkKib6;x8%ZEYAYrk91Q0|JvJD|X7LrI3Trjv)S*5rD zDh;CbS}Nj(BB*7tZp8q4OOYK#MJkJEDWY%(mEQZKr$6qT`R3c+=Y8JwoY@~7xxXJX1fEed!^8;wDpFJ5z>|%VwNV)=jZ><)atL4uq&x`aFXjrN5Qr<#B;SSH z0l*+x6t+>hF))C}mx^7uGcqn}u?$87fcsjtjLT1ilqen~6iMjl;p&@clt@5FN00(> zfiiC>UgVc5heA_>!uY9)e5wGw)&u3Projrtkdlj1i<2Y@nwpOOsFwz>XO6LG)JG9z zA|3t7sEvWaC~v78LXliZ7(NapqFkviAPFQ=KxY&l2NJM20v04-Ks*gcrGX^W=LZe5 z$pvw=5T?&(E_g>r$19aG8WyWksa#Y97pYu`1*udj7Kg{;@fcVFqtHl{Ts20baG2G= zgcN+aNTw7?C8!yVT%L4`l8%Ng{p5mJ78v-KVu|8&px}^U)m#}CbirZ8;u*g_N-LBh z(0|SNTWLj@Mh0O+Acb^`oDb(C&S4e|$L^nrW&~ktXzS%7I4RsDrj)-$3`vy!Ogb9A zaS@0FG#(EkLR1P5L!=P+7#^QU!0>nk2*V?h@LUjnsYK$ep1;FW7+z$C7sz6HlkgzO z!h5kmB8yC7_z)|7$K4fq$6DUiTNE)}CbhL|S$J9<8!%jZ$an7BA91p_-O zz;LNJJO;L zIoF#F07gIhGZ|s(#|;r%1M(xRZ(?Gj)|pweV=&gHzlE3~GBWms){P)SM;rI$6+#cH zR@AS!|17qB>Nf|MvD~UcC^9R#XkdQOD7d7L*}pu?EAzJ#=-iMso92|Pf4sx(2>V6E zrh=76U8xf><6UEJ&x_$vn)lWIm}k1uBkm^Sff@}pK_n_9*Mj7|(I?GVW_`h7S)OYe z??gXU(k}Ld&h@jrgY=8_^z;m^zEJh6u66a~7W%%RQit?f-S7SKssr~2?9S7iUCyP%BirG=g z^M4SNz3J`U*vqaDkj6`EcNnheVuwHAou}nYk8~nxZgwMoT9#RPp=7u|2Ei&!L`@N>>j-0m^x@>XwdwExUJ0CW-eE2 z!kE)5%bGC6$6d+n(1Xc!CwrPI029e71Q6iGPQO}Vt$CIkp1G(0`U3M4MR$1?cJGw8 z=U?jzRYe^d?|q9ivaEYDZ_(GWtF!vdQm9LU^026-g+Hk%_RX@gQhAR-?*?btfV^>Z7dK|3nv!M< zh_0bC1Pawwr_;>?x(>~$*H1?Szi_)$I^|ridmMFW{XC;FldGB|^=pA5XF{S!w4Gz* zfuhSYx2vmows2lHZxA}&iwl|3*Pt$yD1}`wv!h=2ZetM|_Y9vYIOqr%edlg5XMAmg zuNLtgm0|g>>!&6%bE?H3F0!tN6@#v9bmwznz#nHL{Banl+p)=YGUVW3%&}}|H8pXmi0JVb3~>V z4tEyr-eon67~b=qvOLbitnqlRQ@FEl>$%nd33BOz{gm3;4&Uw9*vIsGH{6&O9WL|R zXFdO(ktbrr+1L|(v~wtRy79Q#!Y4dZLzpFXwH@c3q0M$Sx{lE{IifX}9I`yN4p1V2 z-Too{_#nR*W#JbKkGWepM^zqa7=2<@fSi~He<(YbGkE;b;VUVfr`cmrq4#PG$m^KJb0K=}tyza*f@nt{IokdG_=EZ!3N`_M`#2rA>q9R2}Tt zmdZ0>;hCCe661^%pD3->*IS~YUR2KXg`ZcSz}i8n1x?RGrf$uPzFELdbWz1Z;N?zuZ_Id7T=lmV1c z5B>a?+FLwH2#HiP`uxTTi;%*}HeDFUFhU`n$n!myj&;m%fCgWfDn6G)ZrA_W6|4V-(14k`h6a((&KkYq||?2}|-O&Q2Crws*&D*s#HI z?bWgQ74gFa`%yKVI`hNfyR&90w diff --git a/img/icon_utf.png b/img/icon_utf.png deleted file mode 100644 index 5e8980248fc2ef4c749a037358fc97d2f5ef4feb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3068 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 - - img/icon_utf.png - img/icon_ansi.png - img/icon_apply.png - img/icon_backup.png - img/icon_exit.png - img/icon_fetch.png - img/icon_restore.png - img/icon_update.png - img/utl_icon.png + + img/buttons/button_ansi.png + img/buttons/button_ansi_disabled.png + img/buttons/button_apply.png + img/buttons/button_apply_disabled.png + img/buttons/button_backup.png + img/buttons/button_backup_disabled.png + img/buttons/button_download.png + img/buttons/button_download_disabled.png + img/buttons/button_exit.png + img/buttons/button_exit_disabled.png + img/buttons/button_restore.png + img/buttons/button_restore_disabled.png + img/buttons/button_update.png + img/buttons/button_update_disabled.png + img/buttons/button_utf8.png + img/buttons/button_utf8_disabled.png + diff --git a/qthosts_rc.py b/qthosts_rc.py index 9c27407..7c8b411 100644 --- a/qthosts_rc.py +++ b/qthosts_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: 周日 11月 24 19:38:26 2013 +# Created: 周六 11月 30 15:06:55 2013 # by: The Resource Compiler for PyQt (Qt v4.8.4) # # WARNING! All changes made in this file will be lost! @@ -10,7 +10,7 @@ from PyQt4 import QtCore qt_resource_data = "\ -\x00\x00\x07\x79\ +\x00\x00\x04\xf8\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ @@ -45,94 +45,269 @@ \x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ \x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ \x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\ -\x34\x65\x39\x38\x62\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\ -\x62\x62\x33\x65\x2d\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\ -\x34\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x38\x33\x30\ -\x42\x33\x45\x43\x38\x45\x43\x35\x32\x31\x31\x45\x32\x39\x43\x36\ -\x44\x39\x36\x44\x34\x44\x36\x35\x32\x35\x46\x41\x37\x22\x20\x78\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x38\x34\x39\ +\x36\x35\x45\x39\x33\x35\x39\x38\x35\x31\x31\x45\x33\x42\x38\x30\ +\x33\x45\x39\x42\x31\x37\x42\x32\x36\x32\x41\x35\x41\x22\x20\x78\ \x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ -\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x38\x33\x30\x42\x33\x45\x43\ -\x37\x45\x43\x35\x32\x31\x31\x45\x32\x39\x43\x36\x44\x39\x36\x44\ -\x34\x44\x36\x35\x32\x35\x46\x41\x37\x22\x20\x78\x6d\x70\x3a\x43\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x38\x34\x39\x36\x35\x45\x39\ +\x32\x35\x39\x38\x35\x31\x31\x45\x33\x42\x38\x30\x33\x45\x39\x42\ +\x31\x37\x42\x32\x36\x32\x41\x35\x41\x22\x20\x78\x6d\x70\x3a\x43\ \x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ \x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ \x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ \x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ \x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x69\x69\x64\x3a\x38\x63\x63\x61\x63\x62\x39\x36\ -\x2d\x66\x66\x39\x38\x2d\x31\x39\x34\x64\x2d\x61\x39\x30\x32\x2d\ -\x30\x62\x32\x37\x31\x63\x63\x61\x31\x37\x63\x39\x22\x20\x73\x74\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x63\x31\x65\x61\x38\x31\x32\x35\ +\x2d\x65\x62\x64\x64\x2d\x63\x38\x34\x62\x2d\x39\x66\x37\x61\x2d\ +\x30\x36\x39\x39\x32\x39\x38\x64\x62\x39\x33\x63\x22\x20\x73\x74\ \x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\x34\x65\x39\x38\x62\ -\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\x62\x62\x33\x65\x2d\ -\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\x34\x22\x2f\x3e\x20\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ \x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ \x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ \x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ -\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\xfc\x4d\ -\xc5\xa6\x00\x00\x03\x9e\x49\x44\x41\x54\x78\xda\xd4\x56\x6b\x48\ -\x93\x61\x14\x7e\xbf\xcb\x6e\x6a\xa2\x89\x3a\x2f\x5b\x04\x91\x81\ -\x49\xb3\xf2\x47\x65\x85\x1a\x59\x99\x41\x90\x51\x84\x51\xff\x0a\ -\xea\x87\xe1\x8f\x20\x23\x2a\xfb\x53\x84\x90\x85\xfa\xa3\xa0\x9c\ -\x95\x21\x24\x25\x48\x46\x62\x85\x37\x48\x34\xaa\xe1\xa6\x35\x1b\ -\x4e\xb7\x74\x66\xe1\x6d\xb7\xef\xed\xbc\xb2\x39\x27\xbb\x7c\xdf\ -\x98\x59\x07\x5e\x78\xbf\xed\xbc\xdf\x79\xce\xf3\x3e\xe7\x9c\x8f\ -\xc2\x18\xa3\x95\x34\x1a\xad\xb0\xb1\xee\x4d\x49\x49\x09\xea\xeb\ -\xeb\xf3\xe9\x14\x9f\x98\x44\xe7\x14\x1c\xaa\x71\x38\xec\xeb\x78\ -\xbd\x94\x15\x21\xd3\xb0\xe1\xfa\xbb\x96\xe6\x56\x7f\x3e\x15\x15\ -\x15\x48\xa5\x52\x79\x00\x74\x76\x76\xa2\xee\xee\x6e\x9f\xce\x71\ -\x09\x72\xa4\xd8\x98\xb9\xd7\x66\xb3\x2a\xf9\x00\x10\x8b\x25\xe8\ -\x6b\xbf\xe6\x61\x5b\x5b\x9b\x5f\x1f\x8b\xc5\xe2\xcd\x80\x4c\x26\ -\xf3\xeb\x4c\x21\x8c\xf5\x5a\x4d\x99\xc3\xe1\x48\x82\x47\x2e\x38\ -\x03\x2c\x33\x36\x3a\xd2\x15\xc8\x87\x61\x18\x6f\x00\x3c\x6c\x14\ -\xd6\x1c\x2c\x3e\xaa\xa5\x60\x4d\x0b\xd2\x40\x20\x93\x45\x44\x51\ -\x69\x19\x9b\xee\xda\x6d\xb6\x34\x3e\xfe\x22\xb1\x98\x5c\x43\x31\ -\x6c\xd5\xff\x4f\x15\x04\xb2\xd9\x99\x29\xac\xfd\xf4\xf1\x22\x68\ -\x20\x81\xa7\x06\x68\xf3\x88\xb1\x23\x6c\x00\x5c\xb6\x0a\x56\x0c\ -\x1f\x00\x44\x63\xa4\x18\xc2\xad\x81\x4b\x02\x35\x60\x84\x6d\x7f\ -\x58\x00\x60\xcc\x21\x08\x3e\x03\x8b\x37\x5d\xd0\xb4\x1c\x82\x5a\ -\x31\x1c\x08\xf4\x32\x8e\x67\xf9\x2d\x06\xed\x0c\x96\x94\x17\x03\ -\x29\xca\xb5\x71\xc9\xca\x61\x96\xa6\xe8\xa5\x69\xe2\x78\x79\x12\ -\x0d\x43\x8b\xe5\x1f\x1c\x23\xa9\x2c\x22\x3a\x75\xcd\xda\x68\x97\ -\x1e\x3c\xff\x21\x0c\x3d\x82\x92\x46\x44\x46\x8d\xc3\xa3\x8d\x72\ -\x4f\xc3\x9b\xf7\x6a\xb2\x4c\x13\xbf\x2a\x19\x9a\x4e\x05\x74\x73\ -\xde\x60\x31\x05\x2c\xa4\xc2\x5e\xc2\x17\x04\x45\xd1\x66\x56\xc4\ -\xfe\x5e\x52\xea\x8c\x48\x2c\x61\x7f\x4e\x58\x1e\x9c\x3f\x75\xe2\ -\x46\xfa\x86\x34\x0f\x80\xbc\xbc\x3c\x34\x64\x34\xa9\x0e\x1e\x3d\ -\x76\x9f\x61\xd8\xcd\x4e\xa7\x33\xec\x35\x2f\x85\x76\x0f\xe5\x7c\ -\xf9\x6d\x4b\xf3\xad\x86\xfa\xa7\x56\x12\x73\x01\x9d\xd3\xe9\x40\ -\xdf\xb4\x9a\xbe\x97\xf5\x75\xbb\x39\x8e\xab\x21\x4a\x0e\x97\x01\ -\x1b\x48\x16\x19\x69\x80\xe0\xfb\x9a\x9e\x3d\x2e\x9f\xb4\x8c\x5b\ -\xdd\xb3\x80\x5e\xec\x44\x4c\xaf\xd3\x4e\xa9\xab\x2b\xcf\x0c\x6a\ -\x3e\x9f\x85\x43\xd3\xee\xdf\x43\x35\x92\x08\xc6\xce\xd7\x4d\xf5\ -\x75\xbb\x20\xf8\xab\xa5\xcc\xfa\x7c\xbb\xe5\x87\x19\x81\x73\x75\ -\x6f\x57\x47\x3e\x1c\xd6\xba\xd1\x86\x12\x7c\xdc\x6c\xba\x0d\xac\ -\x16\x7e\xe9\xed\xf9\xee\xeb\x5a\xfd\xa6\x47\x9c\x5b\x1a\x1b\xda\ -\x5d\x57\xf2\x5c\xc8\x95\xb8\x28\x9f\x04\x16\x8b\xd5\x55\x77\x4a\ -\x81\x55\x6b\xc8\xc3\x08\x0e\x9b\x5f\x3c\xa9\x2d\x82\x4c\xae\x00\ -\x88\xa0\xca\x24\x6c\x01\x6b\xbd\xc0\x5e\x2e\xb0\xa8\x0e\x26\x66\ -\x5e\x17\xac\x1f\xd0\x3a\x21\x93\x6b\x90\xd1\x11\xc8\xcc\xec\x4f\ -\x17\x84\x25\x60\xab\x16\x58\xcb\x05\xf6\x7a\xf9\x54\x12\x6f\x85\ -\x91\x97\x41\x46\x8d\x44\x4c\x90\xe1\xfb\xa5\xba\x80\x12\x9b\x03\ -\x80\x17\x40\xc0\x27\x81\xb5\xc9\x65\xf9\x2a\x26\x20\x40\x4c\x3a\ -\xc8\x70\x3f\x64\x5a\x45\x32\xa6\x28\x8a\xdc\xf7\x10\x94\x58\x21\ -\x00\xac\x20\x02\x46\xc2\x7a\x36\x9e\x5f\xd9\xd9\x3b\x04\x9d\x8b\ -\x8e\x89\x45\x05\x45\xc7\x4f\x9f\x2b\xbb\xfa\x68\x7d\x7a\x46\xac\ -\xd0\x0a\x69\x6d\x7d\x33\x1f\x77\xa1\xbf\x27\x24\xa5\x48\x76\xe6\ -\x1f\xd8\x2e\x4f\x4e\x91\x70\x3c\xee\x0e\x86\x1d\x96\x46\xc8\xf4\ -\x30\x21\x0d\x30\xaa\x33\xd3\x33\xb7\x8a\x69\x9a\x0a\x4e\x39\xc3\ -\xe0\x9e\x8e\x76\x3d\x8c\x6b\x9d\xd7\x30\xda\x53\x78\xb8\x5c\x33\ -\x30\x58\x2a\x11\x50\x6e\x98\xe3\xe6\xaf\x05\x18\x10\x94\x7d\x62\ -\xaa\x72\x42\xae\x50\x6e\x83\xad\x8e\x5d\x34\x72\xb7\x90\x79\x1f\ -\x4a\xdf\x13\xf2\x9d\xe0\xf2\x5f\x0d\xe0\x15\x04\xc0\xbf\xf3\x51\ -\x6a\xb7\x3b\x3e\x58\x6d\xb6\x9c\xbf\x11\x14\xe2\x8c\x71\x18\x1b\ -\xe6\xbb\xa6\x7b\x1c\x1b\x4d\x66\xc9\xf4\xcc\x6c\x16\x08\x89\x5d\ -\x6e\x00\x1c\x87\x87\x15\xc9\xf2\x41\x99\x54\xea\x01\xb0\x52\xf6\ -\x47\x80\x01\x00\x19\x06\xbd\xc1\x2e\x19\xb4\x08\x00\x00\x00\x00\ -\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x08\xf6\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\xcf\x3d\ +\xf2\xba\x00\x00\x01\x1d\x49\x44\x41\x54\x78\xda\x62\xcc\xcb\xcb\ +\x3b\xc7\xc0\xc0\x60\xc8\x80\x1d\xfc\x05\xe2\xb0\x49\x93\x26\xad\ +\x03\x71\x80\x6a\x13\x80\xd4\x3c\x20\x66\x64\xa0\x0e\x38\xcf\x84\ +\xc7\x72\x10\x60\x06\x62\x3d\x24\xbe\x03\x15\x2d\x07\x01\x43\x26\ +\x86\x01\x06\xa3\x0e\x18\x75\x00\xc8\x01\x9f\x08\xa8\xf9\x88\xc4\ +\x7e\x4e\x65\xfb\x3f\xb1\x00\x09\x63\x20\xd6\xc1\xa1\xe0\x07\x10\ +\xef\x41\xe2\x37\x00\xf1\x61\x20\x66\xa3\x92\x03\xae\x30\x8c\x78\ +\xc0\x08\x2d\x5e\x1d\x70\xc8\x7f\x01\xe2\x0e\x60\x51\xfc\x04\x5a\ +\x14\xab\x01\xa9\x62\x20\x66\xa7\x92\xfd\x07\x58\x88\x28\xdb\x5f\ +\x01\x71\x13\x94\x5d\x08\xc4\x69\x54\x0c\x80\x38\x26\x22\xca\x76\ +\xe4\xac\xca\x49\xed\x18\x18\x2d\x88\x46\x1d\x00\x72\xc0\x7f\x02\ +\x6a\xfe\x21\xb1\xbf\x53\xd9\xfe\xff\xa0\x6c\x98\x44\xa0\x1c\x98\ +\x87\xc4\xef\x87\x3a\x9a\x6a\xe5\xc0\x68\x51\x0c\x2a\x8a\x55\xf0\ +\xd4\x86\xa0\x38\xdf\x0b\x2c\x8a\xff\x40\x8b\x62\x50\xd0\x3b\x53\ +\xb3\x36\x04\xa5\x81\xb3\x40\xcc\x87\x47\x51\x11\x34\xee\x61\xd5\ +\x71\x05\x35\xdb\x03\x4c\x04\x2c\x07\x01\x7e\x24\xb6\x24\x95\x63\ +\x80\x6f\xb4\x20\x1a\x75\xc0\xa0\x70\xc0\x39\x3c\xf2\xa0\xfc\x7f\ +\x09\xad\xe8\xfc\x4f\x45\xfb\xcf\x31\xfe\xff\xff\x7f\x40\x43\x00\ +\x20\xc0\x00\xcb\x8e\x3a\x29\x41\x01\xac\xc1\x00\x00\x00\x00\x49\ +\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x05\xa0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ +\x79\x71\xc9\x65\x3c\x00\x00\x03\x71\x69\x54\x58\x74\x58\x4d\x4c\ +\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00\x00\ +\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\ +\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\x57\x35\x4d\ +\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\x4e\x54\x63\ +\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\x6d\x70\x6d\ +\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\x61\x64\x6f\ +\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\x78\x3a\x78\ +\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\x4d\x50\x20\ +\x43\x6f\x72\x65\x20\x35\x2e\x35\x2d\x63\x30\x31\x34\x20\x37\x39\ +\x2e\x31\x35\x31\x34\x38\x31\x2c\x20\x32\x30\x31\x33\x2f\x30\x33\ +\x2f\x31\x33\x2d\x31\x32\x3a\x30\x39\x3a\x31\x35\x20\x20\x20\x20\ +\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x20\ +\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\ +\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\ +\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\x3a\x44\x65\ +\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\x3a\x61\x62\ +\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\ +\x4d\x4d\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\ +\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\ +\x6d\x6d\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x74\x52\x65\x66\ +\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\ +\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\ +\x79\x70\x65\x2f\x52\x65\x73\x6f\x75\x72\x63\x65\x52\x65\x66\x23\ +\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x3d\x22\x68\x74\x74\ +\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ +\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ +\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x31\x35\x41\ +\x39\x46\x35\x46\x42\x35\x39\x38\x35\x31\x31\x45\x33\x38\x30\x36\ +\x39\x39\x35\x43\x31\x38\x46\x35\x39\x35\x39\x46\x42\x22\x20\x78\ +\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x31\x35\x41\x39\x46\x35\x46\ +\x41\x35\x39\x38\x35\x31\x31\x45\x33\x38\x30\x36\x39\x39\x35\x43\ +\x31\x38\x46\x35\x39\x35\x39\x46\x42\x22\x20\x78\x6d\x70\x3a\x43\ +\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ +\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ +\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ +\x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ +\x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x63\x31\x65\x61\x38\x31\x32\x35\ +\x2d\x65\x62\x64\x64\x2d\x63\x38\x34\x62\x2d\x39\x66\x37\x61\x2d\ +\x30\x36\x39\x39\x32\x39\x38\x64\x62\x39\x33\x63\x22\x20\x73\x74\ +\x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ +\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ +\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ +\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\xec\xd9\ +\x4e\x52\x00\x00\x01\xc5\x49\x44\x41\x54\x78\xda\x62\xfc\xff\xff\ +\x3f\x03\x23\x23\x23\x03\x3e\xb0\x77\x5a\xd2\x04\x20\x95\xcf\x40\ +\x1a\x98\xe8\x9c\x35\xaf\x00\x9f\x02\x90\xdd\x4c\x0c\x03\x0c\x58\ +\x88\x54\x77\x0a\x88\x17\x92\x68\xf6\x29\x6a\x3a\x60\x07\x10\x1f\ +\x23\xd1\x01\x9f\xa8\xe9\x80\x3a\x72\xd2\x00\x10\x17\x10\x52\x34\ +\xe0\x69\x60\xc8\x24\xc2\x26\x20\x9e\x30\x90\x69\x20\x10\x88\x7d\ +\x49\x74\xc0\x66\x20\x9e\x4b\x2d\x07\xe8\x02\xb1\x3f\x89\x0e\x78\ +\x30\x24\xd2\xc0\xa8\x03\x58\xa0\x95\x4d\x22\x90\x92\xc7\xa3\xce\ +\x82\x0c\xb3\x2d\x80\xe6\x36\xe0\x91\x7f\x08\xc4\xf3\x61\x89\x70\ +\x1b\x10\xaf\x07\x62\x4b\x2a\x7a\xce\x1c\x8a\xb1\x81\xe3\xd0\x9c\ +\x05\x89\x02\x60\xb5\xf9\x12\x48\x39\x92\x51\xe1\x90\x03\x40\x76\ +\x38\x42\xed\x64\x60\x44\x6f\x0f\x00\x83\xad\x0c\x48\xb5\xd3\x20\ +\x7d\xfc\x03\xe2\x4a\xa0\xc5\x5d\xc8\xed\x01\x46\x6c\x0d\x12\xa0\ +\x23\xbc\x81\xd4\x72\x20\xe6\xa5\x92\xe5\x9f\x81\x38\x12\x68\xf9\ +\x56\xf4\x06\x09\x23\xae\x16\x11\xd0\x11\xda\x40\x6a\x13\x10\x2b\ +\x51\x68\xf9\x3d\x20\xf6\x03\x5a\x7e\x95\xa4\x16\x11\x54\x83\x19\ +\x10\x1f\xa4\xc0\x72\x90\x5e\x33\x6c\x96\x13\x55\x0e\x00\x35\xbe\ +\x05\x52\xae\x40\x3c\x93\x0c\xcb\x41\x7a\x5c\xa1\x66\xe0\x04\x8c\ +\xc4\x34\x4a\xa1\x51\x92\x0b\xa4\xfa\x81\x98\x99\x80\xd2\xbf\x40\ +\x5c\x08\xb4\x78\x32\x21\x33\xf1\xa6\x01\x1c\x8e\x70\x01\x52\xab\ +\x81\x58\x00\x87\x92\x0f\x40\x1c\x0a\xb4\x7c\x0f\x31\xe6\x91\xec\ +\x00\xa8\x23\xd4\xa0\x89\x53\x1d\x4d\xea\x26\x34\xb1\xdd\x22\xd6\ +\x2c\xb2\x9a\xe5\x50\x0b\x40\x45\xf3\x2e\x24\xe1\xdd\x20\x31\x52\ +\x2c\x27\x39\x0d\x60\x09\x09\x50\x5a\xe8\x85\x72\x8b\x81\x96\xff\ +\x25\xd5\x0c\x78\x14\xec\x9b\x9e\x0c\x0a\x09\x4d\x20\x66\xa5\x53\ +\x25\xf8\x1b\x88\x6f\x38\x65\xce\xfd\x0b\xab\x8c\xd6\x91\xd1\xe2\ +\xa1\x14\x6c\x07\x62\x2f\x58\x1a\xf0\x1b\x80\xa6\x80\x27\x72\x41\ +\xc4\xc8\x30\x40\x00\xe6\x80\x3f\x03\x60\xf7\x3f\x64\x07\x4c\x81\ +\x09\xd0\xd1\xf2\xa9\x20\x06\x40\x80\x01\x00\x51\x94\x9c\xf8\x84\ +\x67\x5d\xdc\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x07\x88\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ +\x79\x71\xc9\x65\x3c\x00\x00\x03\x71\x69\x54\x58\x74\x58\x4d\x4c\ +\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00\x00\ +\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\ +\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\x57\x35\x4d\ +\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\x4e\x54\x63\ +\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\x6d\x70\x6d\ +\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\x61\x64\x6f\ +\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\x78\x3a\x78\ +\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\x4d\x50\x20\ +\x43\x6f\x72\x65\x20\x35\x2e\x35\x2d\x63\x30\x31\x34\x20\x37\x39\ +\x2e\x31\x35\x31\x34\x38\x31\x2c\x20\x32\x30\x31\x33\x2f\x30\x33\ +\x2f\x31\x33\x2d\x31\x32\x3a\x30\x39\x3a\x31\x35\x20\x20\x20\x20\ +\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x20\ +\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\ +\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\ +\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\x3a\x44\x65\ +\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\x3a\x61\x62\ +\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\ +\x4d\x4d\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\ +\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\ +\x6d\x6d\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x74\x52\x65\x66\ +\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\ +\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\ +\x79\x70\x65\x2f\x52\x65\x73\x6f\x75\x72\x63\x65\x52\x65\x66\x23\ +\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x3d\x22\x68\x74\x74\ +\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ +\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ +\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x43\x42\x44\ +\x44\x46\x43\x41\x38\x35\x39\x38\x44\x31\x31\x45\x33\x38\x45\x43\ +\x31\x45\x30\x35\x34\x36\x33\x33\x31\x39\x46\x38\x34\x22\x20\x78\ +\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x43\x42\x44\x44\x46\x43\x41\ +\x37\x35\x39\x38\x44\x31\x31\x45\x33\x38\x45\x43\x31\x45\x30\x35\ +\x34\x36\x33\x33\x31\x39\x46\x38\x34\x22\x20\x78\x6d\x70\x3a\x43\ +\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ +\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ +\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ +\x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ +\x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x37\x31\x65\x61\x35\x61\x61\x61\ +\x2d\x63\x33\x30\x31\x2d\x30\x61\x34\x35\x2d\x62\x36\x30\x35\x2d\ +\x38\x64\x36\x65\x63\x37\x33\x34\x65\x37\x62\x66\x22\x20\x73\x74\ +\x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ +\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ +\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ +\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\xf7\xcb\ +\xb3\xc5\x00\x00\x03\xad\x49\x44\x41\x54\x78\xda\xbc\x97\x69\x48\ +\x55\x41\x14\xc7\xef\xd3\xd7\x26\x2d\x96\x18\x25\xb6\x88\x49\x54\ +\x52\x7e\x50\xd3\xca\x28\x69\xa7\x3d\xa9\x84\xac\x8c\xa2\x5d\x92\ +\x16\x22\x41\xcb\x16\xcb\x82\x20\x89\x8a\x84\x6c\x21\x22\xac\x88\ +\x56\xbf\xd8\xf2\x21\xa5\x04\x97\x28\x08\x6c\xd1\x24\x22\x42\x4d\ +\xc5\x35\xad\xff\x81\xff\xc4\x74\xbb\xbd\xad\x67\x07\x7e\xcc\xdc\ +\x99\x37\x67\xce\xcc\x9c\x39\x73\x9e\x6d\xf7\xe5\x22\x9b\x61\x18\ +\x29\x60\x23\x08\x32\x3c\x93\x47\x20\xe1\x78\x52\x6c\xa7\xbb\x03\ +\x6d\x30\x60\x2f\xca\x2c\xd0\x0a\xf2\x40\x39\xeb\xae\x88\x1f\x38\ +\xcd\xfa\x25\xb0\x16\x46\xfc\x70\xc7\x00\x3b\xd8\x09\x9a\xc0\x54\ +\x0c\x2e\x75\x67\x30\x8c\xf7\xa7\x01\x55\x60\x35\xa8\x05\xa9\xee\ +\xee\x80\x58\x7c\x0c\x1c\x01\x83\x40\x3d\x77\x60\x88\xe9\xb7\x9f\ +\x41\x6f\xe0\xcf\xef\x56\x52\x07\x56\x80\x24\x30\x1f\xa4\x63\x21\ +\x07\x5d\x35\xc0\x87\x65\x09\x58\x07\xde\x83\x1d\x20\x86\x75\x9d\ +\x18\xf6\xa9\xef\x6b\x9a\x9e\x76\x1a\x21\xbe\x90\x89\x45\x6d\x75\ +\xd7\x80\xef\xa0\x18\x1c\x00\x1f\xb8\x4a\xa9\x6f\x07\x33\x59\xf7\ +\x67\xdf\x02\xb0\x81\xfe\xf2\x4b\xb0\xea\x66\x14\x8b\xc1\x73\x70\ +\x0a\x46\x24\xba\x63\x80\xc1\x15\x66\x80\x0b\xe0\x16\xeb\x33\xb8\ +\x3b\x19\x6c\x93\xbe\x1a\x10\x2e\x0e\x67\xf2\x25\x31\xa2\x01\xc5\ +\x1c\xf0\x1a\x5c\x84\x11\xf3\xdc\x31\xe0\x09\x1d\x28\x95\xc7\x11\ +\x02\xee\x73\xe5\x21\x1a\xa2\x3c\x13\xac\x04\xea\xda\x45\x68\x3b\ +\x21\x3e\x11\x0f\xaa\x41\x3e\x8c\x98\xec\x8a\x13\x2e\x01\x23\xc1\ +\x49\xb6\x97\x43\x51\x04\xfb\x92\x51\xcf\x73\x70\x13\xc4\xf3\x7d\ +\xc1\x24\xfc\xee\x95\xd6\x1e\x8c\xa2\x08\xf4\x07\x71\xe8\xab\x70\ +\x66\xc0\x03\xd0\xc7\xe2\x37\xcd\x18\xdc\xee\xc0\x80\x74\xfa\x48\ +\x23\xc8\x05\x2f\x81\x8a\x05\xa3\x40\x1a\xf8\x02\x22\xa1\xe7\xa3\ +\x55\x1c\x50\x22\xce\xb5\xcd\x62\x8e\xa3\x98\xa4\xaf\xd6\x57\x09\ +\x45\xeb\xb5\xfe\x43\xa0\x03\x6c\xe2\x2d\xb1\x59\xe8\x18\x0c\x42\ +\x81\x43\x03\x1a\xe8\xe5\x66\xe9\xe2\x04\xaa\xef\x93\xc9\xfb\xbb\ +\x18\x49\xb3\x1c\x04\xab\x3a\x57\x9c\x30\x90\xce\x24\xec\xa3\x13\ +\x49\x3d\x9b\x5b\x1c\x8a\xc9\xc4\xf3\x23\xa1\xb4\x0c\xe4\x1a\x5e\ +\x10\x7d\x07\xe4\x7a\x15\x72\x27\x02\xf8\xfd\x58\xeb\x6f\x61\x59\ +\xcc\x88\x59\xe9\x6d\x03\xc6\xca\xbd\xc7\x2a\xc7\x63\x75\x12\xdb\ +\x07\xb0\x7d\x0b\xda\xae\x6a\x5b\x9e\x69\x78\x51\x74\x03\x64\x65\ +\x6d\xca\xf1\x40\x2f\xd6\xcb\x8c\x6e\x14\xbb\xb6\x32\x79\x09\x4b\ +\x59\x3f\x63\xfc\x27\xb1\xbb\xf0\xe4\x46\x32\x59\x09\xf4\x70\x8e\ +\x1e\xea\xba\x42\xd7\x57\xd6\xa5\xcc\xc5\x42\x8b\xed\x4e\x26\x9f\ +\x8d\xe2\x8e\xa6\xe4\x5f\xc4\x1c\x92\x93\xa1\x7f\xa9\x8f\x93\x41\ +\xd9\x5e\x9a\xfc\x6f\x21\xe0\x84\x33\x03\xc6\xb1\xbc\x02\xce\xea\ +\xd6\x83\x7b\x60\x3a\x58\xc8\x50\x2e\x0f\x50\x01\x5f\x50\xf9\x96\ +\xdd\x7b\xab\x8d\xb9\xc1\xf6\x04\xf0\x46\x85\x6a\x67\x06\xf8\xb2\ +\xac\x60\x60\x52\x72\x1b\x84\x31\x01\x09\xe0\x64\x85\xcc\x90\x3a\ +\xf9\x74\x17\x30\xfc\x2a\x49\xe1\x42\xe6\x82\xf3\x2e\x3b\x21\xa5\ +\x91\xaf\xa5\x92\x26\x2d\x4e\x7c\xd3\x1e\xb1\x76\x06\x28\x79\xd2\ +\x83\x99\x6f\x2a\x59\xce\x1c\xa2\x8a\x8f\xd6\x1f\xa1\xd8\x99\x01\ +\x3d\x59\xaf\x85\xf7\x76\x68\xb9\x61\x8b\x66\x4c\x33\x03\x9a\x3c\ +\x4a\xab\x24\x29\xe1\xa4\x37\xc1\x43\x39\x73\xb0\xc8\x93\x1d\x88\ +\xe6\xa0\x7e\x92\xb8\xc0\x7b\xe3\xb5\x40\xd5\xa0\xbd\x80\x52\x1f\ +\x0a\x46\xf0\x7b\x0d\xa9\x66\xb2\xfb\x82\x69\x7f\xb4\xab\x06\xc8\ +\x2b\x36\x90\xe7\x17\xcb\x6c\x28\x91\x79\xa2\x92\xc3\x4c\xd1\x44\ +\x66\x81\x29\x16\x7a\x86\x83\xa7\x4c\x50\x24\xcf\x8c\x63\x7b\x9b\ +\x33\x03\xae\x33\x08\x89\x44\x11\xb3\x4c\xd3\xea\xa3\x1d\xe8\x0a\ +\x23\xbf\xe9\xf7\x31\x79\xbb\x59\x76\xf1\xfc\xba\x43\xee\xca\x6e\ +\xa8\x1d\x08\xe7\x3d\x35\x4c\xc9\x86\x78\xfb\x32\x9c\x79\x10\xb3\ +\x1a\x4f\x44\x8e\x24\x87\xa9\x7c\x89\x0a\xc5\xd0\x5d\xa3\x72\xc2\ +\x7a\xde\xdd\x28\x34\xbe\xf3\xe6\x12\xa1\xdb\x8f\xf1\x61\x22\x98\ +\x60\x95\x98\xca\x0e\x9c\x03\x7b\xe4\x0f\x05\x06\xe4\x30\xa9\xec\ +\xf2\xc2\xfc\xc3\xc0\x66\x30\x06\x3c\xa3\x5e\xcb\xd7\x30\x8d\x59\ +\xac\x24\x95\xfb\xbd\x7c\xce\x12\x2f\xf2\x99\xd4\x58\xfe\x6b\xfe\ +\x29\xc0\x00\x12\x09\x26\xe1\x36\xa9\x6f\xb1\x00\x00\x00\x00\x49\ +\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x06\xbf\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ @@ -167,118 +342,82 @@ \x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ \x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ \x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\ -\x34\x65\x39\x38\x62\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\ -\x62\x62\x33\x65\x2d\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\ -\x34\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x35\x39\x39\ -\x42\x34\x36\x41\x36\x45\x43\x35\x31\x31\x31\x45\x32\x42\x33\x41\ -\x33\x41\x44\x43\x39\x30\x42\x32\x33\x41\x36\x41\x43\x22\x20\x78\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x42\x43\x39\ +\x35\x36\x46\x31\x41\x35\x39\x38\x34\x31\x31\x45\x33\x38\x45\x35\ +\x31\x43\x44\x35\x41\x43\x39\x34\x42\x36\x39\x45\x41\x22\x20\x78\ \x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ -\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x35\x39\x39\x42\x34\x36\x41\ -\x35\x45\x43\x35\x31\x31\x31\x45\x32\x42\x33\x41\x33\x41\x44\x43\ -\x39\x30\x42\x32\x33\x41\x36\x41\x43\x22\x20\x78\x6d\x70\x3a\x43\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x42\x43\x39\x35\x36\x46\x31\ +\x39\x35\x39\x38\x34\x31\x31\x45\x33\x38\x45\x35\x31\x43\x44\x35\ +\x41\x43\x39\x34\x42\x36\x39\x45\x41\x22\x20\x78\x6d\x70\x3a\x43\ \x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ \x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ \x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ \x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ \x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x69\x69\x64\x3a\x39\x31\x35\x39\x37\x32\x39\x38\ -\x2d\x65\x37\x66\x37\x2d\x32\x38\x34\x63\x2d\x61\x65\x37\x35\x2d\ -\x66\x32\x63\x33\x34\x61\x66\x38\x63\x39\x36\x38\x22\x20\x73\x74\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x63\x31\x65\x61\x38\x31\x32\x35\ +\x2d\x65\x62\x64\x64\x2d\x63\x38\x34\x62\x2d\x39\x66\x37\x61\x2d\ +\x30\x36\x39\x39\x32\x39\x38\x64\x62\x39\x33\x63\x22\x20\x73\x74\ \x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\x34\x65\x39\x38\x62\ -\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\x62\x62\x33\x65\x2d\ -\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\x34\x22\x2f\x3e\x20\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ \x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ \x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ \x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ -\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\xa4\x11\ -\xf0\xda\x00\x00\x05\x1b\x49\x44\x41\x54\x78\xda\xec\xd7\x7d\x6c\ -\x13\x65\x1c\x07\xf0\xe7\xae\x77\x7d\xdf\x2c\xa3\xdd\x4a\xd7\xbd\ -\x94\x6d\x30\x21\x83\x89\x92\x18\x34\x43\x9c\xb2\xc5\xbf\x20\x1b\ -\x10\xa3\x91\x88\x80\x24\xc6\x85\x4c\xc2\x7f\xc6\x18\x13\x88\x4a\ -\x36\xc3\x8c\x7f\x98\x18\x25\xc3\x00\x0a\x73\x31\xd1\xc9\xa2\x33\ -\x48\x4c\x88\x23\x93\xe0\x70\xc3\xb9\xb5\x63\x5d\x5f\xd6\x8e\x45\ -\xb3\xbe\xde\xf5\xce\xef\x33\x9e\xb2\x6e\xa5\xfe\x37\x66\x22\x5d\ -\xb6\xfb\x3d\x9f\x6b\x7b\xbf\xfb\x3d\x6f\x37\x4e\x55\x55\xb2\x9c\ -\x2f\x9e\x2c\xf3\x4b\x48\x07\x5d\x3d\xbd\xbb\xbd\x81\xe0\x81\xb0\ -\xdf\x77\xbc\xef\x9b\xaf\xfb\x96\xea\x82\x2a\x7e\x78\x5e\x43\x3a\ -\x3a\x3a\x48\x6d\x6d\xed\x7c\x02\x9e\x89\xc9\x96\xc1\x9b\x23\x4f\ -\x28\x72\x32\x64\xb6\x3b\x1f\x07\x6d\x42\xe7\xc8\x82\x20\x1a\x78\ -\x9e\xd3\x28\x8a\x4a\x64\x59\x8a\x72\x84\x28\xb4\xd3\x32\x5c\x85\ -\xc7\x32\xdc\x08\xe7\x17\xbb\x28\x8a\x66\x1c\x22\x33\xd3\xe1\xef\ -\xae\x5c\xbe\x74\x7a\x6a\x6a\x4a\x5a\x50\x01\x51\x14\x64\xad\x28\ -\x10\xbd\xd9\x2c\x5b\x6d\x85\x0d\xa0\x3a\x8e\xe3\x49\xc8\xef\xfb\ -\x22\x91\x88\xb9\x75\x3a\x83\x68\x5b\xe5\x38\xa0\xaa\x4a\x1e\xf3\ -\xb3\xf0\x71\xb8\x0e\x7e\x10\x6e\x64\xde\x09\xf7\xc3\x0d\xec\xfd\ -\x7a\xea\x41\x9f\xb7\xab\xc0\x6a\xdb\xa4\x37\x1a\x77\x57\xd7\xd4\ -\x3e\xe9\x70\x96\xbc\x4a\xe8\x0d\x2e\xa8\x0e\xfd\xa3\x2a\xaa\x94\ -\x4c\xc6\xe6\x92\xd2\x6a\xc9\xc5\xee\x2f\xdf\x0d\x4c\x7a\x07\xec\ -\xc5\x4e\xf2\xc2\xa1\xd7\xb7\xe2\xdc\xa3\xcc\x8f\xc3\xaf\x33\xdf\ -\x06\xdf\x08\x4f\xc0\xdf\x86\x8f\xc2\x39\x78\x3d\x7c\x1d\x3c\xf2\ -\xed\xf9\x73\x2d\x46\x93\x69\x66\xe7\x8b\x7b\x4f\xeb\x0d\x86\x7d\ -\x46\xb3\xf9\x43\x5c\xe2\xd7\xac\x41\x48\xb3\xc5\x07\x0c\xf4\x22\ -\x82\x28\xd2\xb4\xf8\x74\x7a\x68\xe7\x72\x23\x73\x5d\x0e\x37\xa1\ -\xc2\xe2\x84\x7b\x34\x4a\x13\xe1\x05\x41\x56\x14\xc5\x3a\x77\xbd\ -\xf4\x34\xec\xf8\xb4\xf3\xc7\xdf\x47\x46\x9f\x42\xc7\x9d\x09\x07\ -\xfd\xed\xa0\x62\xbd\xc1\x48\x4f\x36\xc7\x63\x51\x07\x62\x19\xf1\ -\x57\x88\x27\x10\x6b\x99\xdb\x11\xd3\xbe\xec\x42\xec\x45\x4c\xfb\ -\xb9\x09\xf1\x4a\xe6\x17\x10\xfb\x10\xe7\x33\xb7\x20\x19\x6e\x45\ -\xa1\xbd\xee\x8d\x83\x2f\x37\x56\x96\x97\xf5\x09\x0b\xa6\x04\xee\ -\xcc\x7b\xcb\xc3\x77\x7f\x7e\xaa\x1f\xcd\x7e\x6b\xa1\x9d\xbc\xd2\ -\x7a\xf4\x1d\x59\x92\x6a\xe8\xb9\x4f\xda\xde\x3b\x12\x9e\x0a\xfc\ -\xc6\xfc\x18\xbc\x9a\xf9\x61\xf8\x30\xf3\xf7\xe1\xa5\xcc\x5f\x83\ -\x8f\xc1\x79\x78\x3b\xdc\x8e\x1e\x26\x91\x68\x84\x5e\x4e\x59\x30\ -\x08\xe7\xaa\xa6\x28\x04\xfd\xa4\x3a\xcb\x5c\x46\x34\xf5\xd6\x22\ -\x3b\x86\x84\xf2\x37\x1d\xbd\xf4\x9c\xb3\xdc\x65\x43\xff\x3d\x04\ -\x17\xd0\xfe\x8b\xb9\xc2\xdc\x0f\x37\xa3\x3d\x03\x5f\x89\x63\x02\ -\x5e\x04\x9f\x86\xaf\x40\x7b\x1a\x9e\x47\xab\x8e\x5f\x63\xd6\x3a\ -\x40\x5f\xc8\x90\xd8\xec\xc5\xd2\x9e\xfd\x87\x4e\xa2\xb9\x4d\xa3\ -\xd1\xa8\xbd\xdd\x17\x8e\x86\x83\x81\x21\x7c\x09\xb7\x7d\x47\xd3\ -\x07\xa9\x54\xca\x05\xe7\xe0\x47\xe0\x37\xe1\x22\xbc\x1d\x5e\x02\ -\x4f\xc1\x5b\xe1\x1e\xb8\x9e\xb9\x03\x2e\xc1\x0f\xc3\x27\x6c\xf6\ -\x55\x05\x5b\x9e\x6d\xec\xa1\x63\x3c\x2b\x81\x8c\x59\x50\x8d\x70\ -\x35\xd1\xe9\x88\xd7\xe3\x76\xa3\x8c\x43\xf1\x58\x8c\xa4\x14\xa5\ -\x04\xe7\x2a\x99\x8f\x66\x78\x19\xbc\x82\xf9\x30\xdc\xcd\xdc\x05\ -\x2f\x65\x3e\x04\xf7\xc2\x45\x8e\xe7\x13\xac\x12\xd9\x09\x60\x16\ -\x70\x82\x28\xdc\x40\x68\xd5\xf0\xbc\x8a\x32\x56\xa2\x8c\x0a\xee\ -\x88\xa0\xed\x21\x5a\xad\x82\xa3\x06\x5e\x05\xe7\xe1\x1a\xb4\xc7\ -\xe0\x09\x1c\x69\x77\xac\x87\xe7\xc3\x75\x68\xff\x09\x9f\xc5\x51\ -\x82\xd7\xc0\x0b\x50\x01\x0b\xba\x43\x97\x9e\xf6\x59\x83\x30\x14\ -\x98\xd4\xfe\x74\xb1\x67\x3f\x9a\x3a\x3a\x06\x50\xc6\x5e\x94\xf1\ -\x31\xd6\x1d\xdb\x51\xc6\x7e\x3a\x06\xe0\x3f\xc0\x37\xc2\x65\xf8\ -\x33\xf0\x6b\xf0\x3c\xf8\xf7\xf0\xb5\xf0\x38\xf3\x41\x3a\x06\xd8\ -\xfb\x5d\x6c\x10\xd2\x59\x24\x65\x25\x80\xd2\x90\x68\x24\x42\xbc\ -\xe3\xee\x24\x9a\x49\x5a\x46\x98\x89\xa4\x52\xb4\x6c\xb4\x8c\x33\ -\x28\x63\x94\xb9\x99\xb9\x08\xbf\xcd\x3c\x8a\x76\x7e\x86\x87\x99\ -\x27\x98\x6b\x73\x6e\x46\xe9\x41\x58\xe4\x70\x2a\x4d\x2f\xed\xdb\ -\x9c\x5e\x07\xbc\xee\xb1\xeb\x98\xbf\x61\xba\x0e\x34\xec\x6c\xde\ -\x82\xb8\x84\xae\x03\xf0\x01\x36\xc7\x25\x78\x1d\xe2\xd5\x74\x1d\ -\x80\x5f\x41\x3c\xc2\xfc\x69\xc4\xd5\x74\x1d\x80\xff\x9c\xb1\x0e\ -\x6c\x4d\xef\xc4\x59\xd3\x90\x7e\xb0\xbc\x6a\xed\x09\xba\x17\xd0\ -\x2e\x39\x75\xb2\x6d\x73\xc0\xe7\xbd\x6a\x77\x38\xc9\xde\x96\xd6\ -\x1b\x48\x72\x1d\xf3\x47\xe0\xd7\x98\xff\x01\xaf\x62\xbe\x06\x3e\ -\x02\xe7\xe0\x63\xf0\xf2\x39\xef\x68\x73\x61\x89\xf6\x54\x3e\xbc\ -\xbe\xb4\x71\xd7\xf3\x63\xf8\x7e\x4d\xae\x59\x40\xd2\x7b\xc1\x9d\ -\x7e\xb9\xb3\x60\xd0\x31\x8b\x2f\x8b\xe1\xdc\xbd\x3c\xca\x3c\x91\ -\xc3\x23\x92\x24\x4b\x25\xae\x0a\xf3\x73\xcd\x7b\x3a\x64\x59\xc6\ -\xb8\xe4\x43\xb9\x66\x01\x06\xa3\x60\x48\xc7\x0d\x3b\x76\xbd\x89\ -\xdd\xed\x16\x76\x37\x01\xed\x6a\xba\xb6\x33\x7f\x0b\xee\x85\x6b\ -\xd1\x5e\xc3\x5c\x07\x3f\x06\x0f\xc0\xe9\x2e\x58\xc1\xdc\x84\x0b\ -\x7f\x84\xdd\x70\x03\x76\xc3\xf2\x50\x30\xf8\x71\x74\x76\x76\xf0\ -\xdf\xf6\x82\x01\x50\x2d\x4e\xc9\x74\x03\xba\xfb\x3c\x80\x3b\xe2\ -\x70\x87\x2a\xdb\x98\xee\x3e\x0f\xa0\x32\x19\x3e\xff\x3c\x90\xe1\ -\x78\x1e\x30\xe1\x3b\xe3\x33\xb7\xc3\xbd\xbf\x5c\xbe\x74\xe6\xfc\ -\xb9\xb3\x72\x7d\x7d\xfd\xa2\x69\x28\x08\xc4\xe7\x1d\xe7\xbb\x3a\ -\x3f\x3b\xb1\xd4\x8f\x62\x98\xa6\xf7\x7e\x26\xa4\xe5\xfd\x5f\x3d\ -\x94\x3e\x48\xe0\x41\x02\xff\xa9\x04\xc4\x45\xc7\xfb\x9b\x00\xd6\ -\xea\xd1\x04\xd6\xed\x78\x3c\x31\x7c\x3f\x2e\x8c\x67\x03\xb2\x60\ -\x29\x9e\x0c\x04\x2d\xd1\x78\x7c\x43\x32\x1e\xbf\x1a\x0a\xf8\xa3\ -\x4b\x9d\x00\xfd\xbf\xd0\x62\xb1\xcc\x27\xb0\x5c\xaf\x7f\x04\x18\ -\x00\x56\x05\x3f\x36\x5e\x70\xba\x49\x00\x00\x00\x00\x49\x45\x4e\ -\x44\xae\x42\x60\x82\ -\x00\x00\x09\x63\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x5a\x6c\ +\x96\x67\x00\x00\x02\xe4\x49\x44\x41\x54\x78\xda\xc4\x57\xbd\x6b\ +\x14\x41\x14\xdf\xdd\x9c\x88\xa0\xb1\xb1\x12\xab\xa0\x9c\x26\xa8\ +\x8d\x70\x82\xf8\x41\x8a\xa0\x8d\x45\xf0\x0f\x30\x9c\x28\x24\x70\ +\x20\x39\xa3\x85\xa4\x38\xd3\xa8\x88\x72\x45\x2a\xb5\x4e\x95\x42\ +\x2d\xd6\x14\x21\x0a\x16\x57\x08\x7e\x25\xb9\xcb\xa9\x58\x04\x0b\ +\x89\x85\xa7\x9d\x90\xf3\xf7\xe0\xb7\x30\x8c\xfb\x76\x76\x97\x9c\ +\x3e\xf8\x31\xc3\xbc\x79\x1f\xf3\xe6\xcd\x9b\x19\xdf\xcb\x41\x95\ +\x4a\xa5\x8a\x66\x1a\xd8\xc5\xa1\x0e\x50\xab\xd7\xeb\xf7\xb2\xea\ +\xf2\x73\x18\xdf\x8b\x66\x3d\x46\xb6\x0b\xec\x83\x13\x5f\xb3\xe8\ +\x0b\x72\x04\xe0\x80\xe2\xb8\x4f\x5e\x26\x2a\x28\xab\x1c\x43\x33\ +\x0e\x6c\x00\x55\xac\x6a\x39\x65\xd4\x7c\x4b\xcf\x29\xd9\x1a\xda\ +\x99\x81\x9e\xd0\x19\x01\x08\xdd\x40\xf3\x18\x38\x06\x9c\x05\x96\ +\x30\x76\x98\x3c\x31\x30\x90\xe0\xc0\x00\xe7\xc8\xdc\x61\x34\x62\ +\xf0\x34\x70\x02\x78\x82\xb1\xf3\x2e\x8f\xc7\x68\xdc\x26\x89\xc4\ +\x5d\xe0\x52\x8a\x30\x7f\x04\xe6\x80\x49\x60\x87\xc5\xfb\x2d\x8b\ +\x42\x24\x16\xb5\x08\x8c\x2b\x4a\xf7\x00\xb7\x53\xee\xf1\x7e\xe0\ +\x66\x8c\x71\xa1\x6d\xc0\x95\xa4\x2d\xd8\xf0\x7a\x4f\xdf\x93\x1c\ +\xa8\xf6\xd8\x89\x4f\xc0\xad\xc4\x3a\xc0\x84\x5b\x64\xd8\x93\xa8\ +\x05\xac\xb2\x7f\x08\x28\xa6\x30\x7e\x06\xfb\xbf\xee\x2c\x44\x70\ +\x62\x8a\x7b\x1e\x47\xcf\x81\x29\x28\x7a\x67\xc9\x1c\x61\xa2\x8e\ +\x28\x72\x13\x90\x99\x75\x56\x42\x1e\xa3\x96\x92\x70\xf7\x25\xbb\ +\xa1\xa8\xab\x38\x2e\xb2\x52\x8e\xaf\xc6\xb0\xd7\x80\x83\xb6\xac\ +\x6f\x94\xd7\xa8\xc2\xc9\x39\x7f\xa4\xac\xfc\x5c\xa4\x00\x32\x92\ +\x3f\x83\xe4\xad\x60\x7c\xd3\x70\x22\x54\x22\x51\x06\x3e\xb3\x6c\ +\xb7\xa5\x6c\xfb\x10\x98\x64\xe8\x5c\xf7\xc2\xd1\x28\xec\x90\x91\ +\x3d\x9f\x97\x15\x91\xd7\x04\x46\xc1\x5f\x35\xb6\xe3\xad\x43\x9f\ +\x38\x71\x2d\xe0\xad\xe6\x32\xde\x32\x8c\x07\x96\x71\x8f\xfd\x79\ +\xf2\x3c\xce\x6d\xa5\xb8\x08\xa7\x45\xa0\x3f\xc5\xf1\x69\x1a\xfd\ +\x21\xcb\xb8\xe9\xc4\xa0\x22\xa3\x51\x7f\xe0\xfd\x67\x0a\xf8\x98\ +\x70\x91\xb9\xe2\x65\x65\x75\x32\xb6\xa2\xc8\x68\xd4\x09\x78\x5d\ +\x76\x1d\x13\x8b\x4c\x2c\x8f\xd9\x3e\x6a\x39\x11\x25\xe1\xa6\x91\ +\x84\xc5\x14\x49\x58\xcb\x72\x0c\x17\x78\x93\x99\xc7\x70\x28\x8a\ +\x4a\xee\x63\xa8\x14\x93\x35\xde\x6a\x5b\x59\x88\xda\x12\x15\x5b\ +\xf6\xaf\x24\xe4\x84\x39\x25\x6c\xa2\x38\x8c\xb6\x23\xa6\x14\x87\ +\x8a\x71\xa1\x87\x71\x8e\xc7\x45\x40\x5e\x32\xcf\x94\xfb\xdc\xbe\ +\x8c\x9a\x46\xc2\xb9\xf6\x5c\x6e\xd9\x61\x38\xf1\xde\xf5\x86\x0b\ +\x53\x18\xcf\x4b\xe2\xc4\x49\x38\xd1\xd4\xb6\xa0\xd6\x43\xe3\xd1\ +\xcb\xea\x7a\x52\x0e\x14\xfe\x41\xed\x29\x24\x39\x30\xc3\x87\x63\ +\xdc\x63\x62\x82\xa7\xc3\x45\x6d\xae\x32\xee\x65\xd5\xe1\x29\x89\ +\x77\x80\xef\xf6\x0b\x96\x13\xd1\x4b\x66\x96\xc9\x56\x4e\x30\x5e\ +\xe6\x51\xbb\x23\x09\x67\x39\x21\xc6\x47\xc0\x7b\x63\x0a\xf4\xd9\ +\x1a\x1a\x8d\x46\xab\x54\x2a\xbd\x62\x2e\xbc\x04\x2e\x46\xdf\x2d\ +\xf0\x3c\xf0\x76\xcb\x98\xe2\xc0\x03\xcc\xfd\xc2\xb9\xdf\x30\xf7\ +\x29\xba\x3b\x81\x0f\xc0\x65\xf0\x5e\x6f\xc5\xdf\x50\x3e\x1a\x4b\ +\x0a\x5b\x22\xf5\xa2\xd7\x7f\xc3\xb6\x72\x77\x74\xc9\xcb\x44\x7d\ +\x59\x05\x10\xda\x9f\x08\xed\x2f\x74\x8f\x03\xdb\x39\xfc\x43\x3e\ +\x23\x58\xfd\x42\x56\x7d\x7f\x04\x18\x00\xe5\xb8\x12\x0b\xa0\x46\ +\x15\xe4\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x05\xa0\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ @@ -313,125 +452,64 @@ \x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ \x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ \x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\ -\x34\x65\x39\x38\x62\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\ -\x62\x62\x33\x65\x2d\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\ -\x34\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x33\x46\x32\ -\x30\x46\x32\x41\x42\x45\x43\x35\x32\x31\x31\x45\x32\x42\x41\x42\ -\x37\x45\x31\x37\x42\x37\x44\x34\x45\x35\x43\x31\x31\x22\x20\x78\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x31\x45\x45\ +\x31\x42\x33\x30\x45\x35\x39\x38\x35\x31\x31\x45\x33\x38\x46\x34\ +\x31\x43\x38\x46\x38\x31\x43\x33\x30\x33\x39\x39\x45\x22\x20\x78\ \x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ -\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x33\x46\x32\x30\x46\x32\x41\ -\x41\x45\x43\x35\x32\x31\x31\x45\x32\x42\x41\x42\x37\x45\x31\x37\ -\x42\x37\x44\x34\x45\x35\x43\x31\x31\x22\x20\x78\x6d\x70\x3a\x43\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x31\x45\x45\x31\x42\x33\x30\ +\x44\x35\x39\x38\x35\x31\x31\x45\x33\x38\x46\x34\x31\x43\x38\x46\ +\x38\x31\x43\x33\x30\x33\x39\x39\x45\x22\x20\x78\x6d\x70\x3a\x43\ \x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ \x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ \x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ \x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ \x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x69\x69\x64\x3a\x38\x63\x63\x61\x63\x62\x39\x36\ -\x2d\x66\x66\x39\x38\x2d\x31\x39\x34\x64\x2d\x61\x39\x30\x32\x2d\ -\x30\x62\x32\x37\x31\x63\x63\x61\x31\x37\x63\x39\x22\x20\x73\x74\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x63\x31\x65\x61\x38\x31\x32\x35\ +\x2d\x65\x62\x64\x64\x2d\x63\x38\x34\x62\x2d\x39\x66\x37\x61\x2d\ +\x30\x36\x39\x39\x32\x39\x38\x64\x62\x39\x33\x63\x22\x20\x73\x74\ \x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\x34\x65\x39\x38\x62\ -\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\x62\x62\x33\x65\x2d\ -\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\x34\x22\x2f\x3e\x20\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ \x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ \x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ \x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ -\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x44\x49\ -\x00\x91\x00\x00\x05\x88\x49\x44\x41\x54\x78\xda\xc4\x57\x6b\x4c\ -\x53\x57\x1c\x3f\xed\xed\x6d\x0b\xad\xa5\x45\x54\x4a\xc1\xe2\x32\ -\x5a\xcb\xa3\xb6\x0a\x6a\x23\x30\xea\x24\x3a\x30\xba\x38\xdd\x18\ -\x8b\x9b\x71\xfa\x41\x13\x49\xdc\x5c\xb6\x6c\xcb\xb6\x6f\xee\xc3\ -\x36\xb3\xe9\x36\xb7\x30\x1f\x33\x3e\x58\xc8\x36\x71\xd3\x29\x0c\ -\x70\x28\x32\x98\x52\x01\x59\x11\x1f\x30\x84\x0a\xca\xd3\x62\x9f\ -\xb7\x77\xbf\x5b\xe8\x28\xfb\xe2\xa3\x25\x9e\xe4\xe4\xdc\xfb\xef\ -\xb9\xe7\xf7\x3b\xff\x77\x79\x2c\xcb\x92\x27\x39\xf8\xe4\x09\x0f\ -\x41\xe0\xa1\xa8\x68\x1b\x69\x6e\x6e\x21\x29\x86\x05\x9a\x64\xe3\ -\xfc\x8d\x0c\xc3\x2c\x82\xd8\x29\x10\xd0\xe5\x0d\x35\xd5\x07\xda\ -\x5b\x5b\x06\x04\x34\x1d\x36\xe0\x5d\xbb\x76\x11\x83\xc1\x30\x41\ -\xa0\xbe\xbe\x81\xb0\x11\xb2\x35\x44\x1a\x55\xdc\xd4\x6a\x55\x04\ -\xc0\x18\x2f\xb3\x82\x2f\x53\xbc\xd6\x76\xa3\x63\xdd\x1d\x5b\xf7\ -\xd5\x70\x11\xe8\xef\xef\x9f\x6c\x82\x05\xa6\x4c\x6d\x46\x66\xd6\ -\x7e\x8a\x10\x85\x54\x2a\x1d\x1e\xe8\xbd\xfd\x03\xe6\x71\x89\x24\ -\xd2\x2d\x9b\x26\xd3\x17\x6e\xde\x72\x40\x31\x3d\x86\x0a\x17\x01\ -\x8a\xa2\x26\x9b\x20\xc5\x38\x7f\x13\x6e\x2e\x13\x4b\xa5\x83\xd7\ -\x5a\x5b\x56\x96\x95\x1c\xae\xe5\xe4\x2b\x5f\x2c\x2c\x4c\xd2\xa5\ -\xec\x87\x46\x4c\x99\xcb\x56\x6c\x6e\xac\x3b\x7f\x0e\x62\x5e\xe0\ -\x3b\x1e\x9f\x47\x39\x1d\x8e\xde\x3b\xb7\x6d\xb6\x90\x7c\x00\x36\ -\x4f\xe7\xd4\x6e\xeb\xea\x3c\x73\x02\xe0\xac\xcf\xe7\x97\x37\xfc\ -\x51\x7d\x44\x93\x92\xb6\xdd\xe3\x76\xa7\x27\x25\xa7\x7e\xa5\x49\ -\x4d\x73\x05\x13\xa0\x85\x42\xea\x66\x9b\xf5\xf3\x92\x7d\xdf\xec\ -\x08\x89\x00\x86\x77\x7c\x15\x4f\xda\x31\x06\x25\x0a\x7a\xf3\xff\ -\xce\xfa\x58\xe2\xf5\x7a\xc6\x3e\xf4\x7a\x84\x21\x47\x01\x6c\x72\ -\xd6\xeb\xf1\x2c\x53\x26\xa8\x97\xe7\xaf\x2b\x2c\x84\xaa\x8f\x40\ -\x2c\x34\x2c\x32\xed\x80\x36\x92\x71\x53\x72\xb5\xa5\xf9\x3d\xc8\ -\xfd\xa6\x99\x11\xab\x24\xe6\xfc\x55\xbb\xf1\x98\x8a\xe9\x0b\x99\ -\xc0\x95\xc6\x4b\xfb\xe8\x69\xf2\xd7\x41\x22\x31\x29\x39\xe5\x30\ -\x54\xbd\x9d\x23\x00\x70\x3d\x97\xac\x18\x8f\xc7\x72\xae\xe2\xb7\ -\x4f\x06\xfb\xef\xba\xc7\x6f\x4d\x78\x3c\xde\x40\xd8\x12\x91\xb5\ -\xa9\xb1\xe7\x72\xfd\x85\x02\x96\xf5\xfd\x4d\x09\xfc\xbc\xd2\x31\ -\xf5\xdc\xb3\xcf\xe7\xab\x2f\x3b\x7a\xa8\x20\x00\xee\x1f\x41\x09\ -\x14\x24\x3d\x21\x6b\x80\x61\xbc\xa4\xa6\xf2\xe4\x9f\xb7\x6e\x5e\ -\x5f\x92\x91\x95\xb3\x1a\x37\xce\xe0\x53\x94\x7b\x78\x70\xb0\xee\ -\x62\x6d\xcd\x2f\xfd\x7d\xbd\xa3\xc1\x21\x14\x37\x5b\x1d\x07\xcd\ -\x44\x73\xef\x11\x52\xe9\xec\xe9\x33\x67\x49\xb1\xc7\xfe\xa8\x04\ -\x78\x81\x5a\x60\x36\x9b\x49\x75\x75\xf5\x43\xc5\x2f\x42\x73\x9b\ -\x36\x6d\xde\x3b\x08\xbf\xb8\x80\x0c\x17\x68\xb6\x36\x5f\x2e\xaa\ -\xfc\xb5\xac\x1a\x66\x7c\xe0\x39\x55\x55\x55\x24\x27\x27\xe7\xd1\ -\x6a\x01\x17\xa6\x00\x7f\x03\xe0\x5f\xb8\x9c\xce\x38\x38\xe6\x08\ -\x66\x27\x7c\x01\xfe\xc0\x4f\x5b\x60\xca\x2a\xd5\xe8\x52\xe7\x4e\ -\x59\x31\xd2\xa6\xe8\xd5\x73\xe7\x19\x3f\x00\x38\x97\x37\x4e\x9d\ -\x2a\x3d\xb6\xb0\xa4\x78\x6f\x46\x7b\xeb\x95\x0d\x20\xe7\x70\x39\ -\x1d\xd3\xd3\x33\xb3\xdf\x14\x89\xc5\x8f\x95\x07\x1e\x38\x90\x2d\ -\x33\xa1\xde\x28\x80\x0d\x9d\xfe\xa9\xb4\xc8\xda\x6c\xb9\xc6\xc9\ -\x6d\xb7\xba\x0e\xca\x14\xf2\x85\xb3\x94\xaa\xad\xb3\x54\xf1\xa6\ -\x99\xb1\x2a\x51\x57\xc7\x75\xd7\x54\x94\xe3\xa8\xf1\x75\x04\x0e\ -\xd7\x17\xec\xc0\xa3\xf7\x46\x6e\xf0\xf8\xfe\xe3\xb8\xa4\x44\x4f\ -\x89\x09\x86\x07\x07\x5a\xf8\x00\x41\xd8\xa9\x16\x9b\x9f\x5d\x43\ -\x51\x63\x0a\x9c\xa3\xd1\x4a\x54\xea\xa7\x0a\x7c\x0c\x43\x60\x06\ -\x9b\xd3\x71\x7f\x74\x4a\x4c\xd0\x70\xae\xa6\x6e\xae\xde\x58\x01\ -\x12\xcb\x50\x1f\xbe\x94\x45\xc9\x33\x00\xf6\x4f\x6c\x7c\xc2\x5a\ -\xa1\x50\xe8\xaf\x25\x2d\x97\x1a\x0e\xde\xe9\xb5\xb1\x53\xa2\x81\ -\x81\xbb\x7d\x6e\x24\xa4\x4d\x48\x4c\x7f\xc1\xeb\x23\x01\xbc\x35\ -\xf1\x69\xed\xc7\x42\xa1\x28\x9d\x12\xd0\xc4\xed\x72\x7d\x7f\xb1\ -\xf6\xfc\xa1\xc7\x2d\x46\x0f\x35\x6e\xb6\xb7\x75\x82\x44\x6e\x46\ -\x76\xce\x16\x45\x74\xcc\x8e\x48\x89\x24\x1a\x51\xd1\x71\xcd\x7a\ -\x69\x27\x12\xd6\x77\x20\xc9\x4c\x4e\x58\x89\x72\x98\x4c\x09\xff\ -\x18\xbe\x3f\x6a\xef\x81\xef\x84\x46\x60\x9c\xc4\x10\xe6\xce\x35\ -\xeb\x37\x64\x6a\xd2\x0c\x79\x9d\xd7\xaf\x96\x9e\xf9\xb9\xf4\xdb\ -\xe0\x3d\x73\x92\xb4\x92\xec\xe5\x79\xef\xcf\x54\xc6\xad\x85\xc6\ -\x94\x30\xdb\x30\xfc\xa3\xe6\xf7\x13\xc7\x3f\x6a\x6d\x6a\xb4\x06\ -\x12\xa0\x20\x94\x42\x02\x33\x50\x04\x07\x61\xa5\xff\x07\x2e\x5e\ -\xf5\xf2\xfa\x52\xf8\xc4\x0a\xc6\xeb\x25\x5c\x74\x60\x95\x60\xdf\ -\x4b\x90\x3f\x23\x53\x44\x3f\x07\x73\x59\xc2\xd6\x15\xa3\x80\x79\ -\x26\xd4\x2e\x20\xb8\xf9\x76\x0e\x1c\x51\xe1\xed\xed\xe9\xde\xdd\ -\xd1\xde\xb6\x1c\xeb\x87\x90\x8d\xc2\x0c\xb1\x3a\x83\xf1\x33\x95\ -\x5a\x4d\x87\xac\x81\xb1\xb2\xec\x45\x6f\xa0\x9a\xf7\xc2\xab\x1b\ -\x5f\xe1\xce\x13\x47\x44\x52\xd1\x31\x33\xb6\x72\x1d\x55\xdf\xed\ -\x9e\xaf\x8f\x15\xef\x2d\xe2\xf2\x04\x88\x9d\xc9\x5b\x57\xd0\x8f\ -\xf6\x6e\x8f\x48\x1c\x91\x15\x29\x91\xea\xb0\xbf\x29\x54\x02\x34\ -\x07\x04\xd0\xdc\xc4\x24\x6d\x6e\x70\xa7\x44\x8b\x44\x5c\x72\x2a\ -\xe3\xc0\x03\xc9\xea\x42\x65\xf9\x69\x4d\xaa\xde\x03\x9f\xa0\x31\ -\x63\x42\xd6\x00\xfe\x33\x74\xa3\x18\x75\x05\x75\x07\x2c\x9a\x54\ -\x3e\x6c\x1d\xcf\x32\x0c\x4f\x32\x4d\x66\xc2\xcd\x2b\xc6\x35\x40\ -\x4c\x4b\x73\xe7\x43\x2e\x80\x43\xb2\x98\x23\x21\x13\xa8\x3c\x59\ -\xb6\x4d\x5c\x55\x2e\xc6\xad\xff\x6b\xc9\x64\x72\x39\x7f\xe9\xca\ -\xe7\x8f\xc2\x1b\xcc\xb1\xaa\x84\xb7\xf3\xd6\x16\x0c\x70\x9d\xb4\ -\x71\xf1\x92\x64\x9d\xde\xf0\x29\x42\x96\x87\x68\xb0\xc0\x17\xae\ -\x84\x4c\x00\xad\xf8\x30\x97\xa1\x27\x09\x3b\x09\x51\xa9\xe7\xbc\ -\x9b\xbe\x24\xbb\x02\x20\x12\xb4\x77\x7b\xd0\xde\x79\x60\x2a\x9a\ -\xab\xa2\xb0\xbd\xab\xbe\xe6\xec\x5b\xdd\x9d\x66\x47\xaa\x4e\x37\ -\x11\x05\x0e\x87\x23\x6c\x7f\xbb\xca\xcb\x7e\xac\x3b\x5b\x7e\x2a\ -\xff\xde\xbd\x91\x5a\x87\xd3\xc9\xd8\xed\x76\x1a\x2b\xc1\xfb\x45\ -\xc8\x57\x5f\xa8\x2a\xaf\x18\x6f\xfb\x26\x3a\x22\x8b\xc5\x42\x86\ -\x86\x86\x48\x78\xc2\x12\x8e\x88\xae\x48\x19\x9f\x40\x45\x48\xa4\ -\x69\x08\x53\x39\xfc\xc2\xee\x18\xb5\x37\xa1\x74\xbb\x69\xd4\x0c\ -\x83\xd1\x48\xe4\x72\xf9\x04\x81\x27\x35\xfe\x15\x60\x00\x07\x61\ -\x96\x1e\x5f\xc4\x4f\xac\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ -\x60\x82\ -\x00\x00\x07\xad\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x68\x12\ +\x49\xb3\x00\x00\x01\xc5\x49\x44\x41\x54\x78\xda\x62\xfc\xff\xff\ +\x3f\x03\x23\x23\x23\x03\x3e\x90\x97\x97\x37\x01\x48\xe5\x33\x90\ +\x06\x26\x4e\x9a\x34\xa9\x00\x9f\x02\x90\xdd\x4c\x0c\x03\x0c\x58\ +\x88\x54\x77\x0a\x88\x17\x92\x68\xf6\x29\x6a\x3a\x60\x07\x10\x1f\ +\x23\xd1\x01\x9f\xa8\xe9\x80\x3a\x72\xd2\x00\x10\x17\x10\x52\x34\ +\xe0\x69\x60\xc8\x24\xc2\x26\x20\x9e\x30\x90\x69\x20\x10\x88\x7d\ +\x49\x74\xc0\x66\x20\x9e\x4b\x2d\x07\xe8\x02\xb1\x3f\x89\x0e\x78\ +\x30\x24\xd2\xc0\xa8\x03\x58\xa0\x95\x4d\x22\x90\x92\xc7\xa3\xce\ +\x82\x0c\xb3\x2d\x80\xe6\x36\xe0\x91\x7f\x08\xc4\xf3\x61\x89\x70\ +\x1b\x10\xaf\x07\x62\x4b\x2a\x7a\xce\x1c\x8a\xb1\x81\xe3\xd0\x9c\ +\x05\x89\x02\x60\xb5\xf9\x12\x48\x39\x92\x51\xe1\x90\x03\x40\x76\ +\x38\x42\xed\x64\x60\x44\x6f\x0f\x00\x83\xad\x0c\x48\xb5\xd3\x20\ +\x7d\xfc\x03\xe2\x4a\xa0\xc5\x5d\xc8\xed\x01\x46\x6c\x0d\x12\xa0\ +\x23\xbc\x81\xd4\x72\x20\xe6\xa5\x92\xe5\x9f\x81\x38\x12\x68\xf9\ +\x56\xf4\x06\x09\x23\xae\x16\x11\xd0\x11\xda\x40\x6a\x13\x10\x2b\ +\x51\x68\xf9\x3d\x20\xf6\x03\x5a\x7e\x95\xa4\x16\x11\x54\x83\x19\ +\x10\x1f\xa4\xc0\x72\x90\x5e\x33\x6c\x96\x13\x55\x0e\x00\x35\xbe\ +\x05\x52\xae\x40\x3c\x93\x0c\xcb\x41\x7a\x5c\xa1\x66\xe0\x04\x8c\ +\xc4\x34\x4a\xa1\x51\x92\x0b\xa4\xfa\x81\x98\x99\x80\xd2\xbf\x40\ +\x5c\x08\xb4\x78\x32\x21\x33\xf1\xa6\x01\x1c\x8e\x70\x01\x52\xab\ +\x81\x58\x00\x87\x92\x0f\x40\x1c\x0a\xb4\x7c\x0f\x31\xe6\x91\xec\ +\x00\xa8\x23\xd4\xa0\x89\x53\x1d\x4d\xea\x26\x34\xb1\xdd\x22\xd6\ +\x2c\xb2\x9a\xe5\x50\x0b\x40\x45\xf3\x2e\x24\xe1\xdd\x20\x31\x52\ +\x2c\x27\x39\x0d\x60\x09\x09\x50\x5a\xe8\x85\x72\x8b\x81\x96\xff\ +\x25\xd5\x0c\x78\x14\xe4\xe7\xe7\x83\x42\x42\x13\x88\x59\xe9\x54\ +\x09\xfe\x06\xe2\x1b\x13\x27\x4e\xfc\x0b\xab\x8c\xd6\x91\xd1\xe2\ +\xa1\x14\x6c\x07\x62\x2f\x58\x1a\xf0\x1b\x80\xa6\x80\x27\x72\x41\ +\xc4\xc8\x30\x40\x00\xe6\x80\x3f\x03\x60\xf7\x3f\x64\x07\x4c\x81\ +\x09\xd0\xd1\xf2\xa9\x20\x06\x40\x80\x01\x00\xc6\x51\x9f\x7a\x83\ +\x78\x67\xeb\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x06\xbd\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ @@ -466,97 +544,82 @@ \x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ \x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ \x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\ -\x34\x65\x39\x38\x62\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\ -\x62\x62\x33\x65\x2d\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\ -\x34\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x37\x42\x34\ -\x38\x31\x37\x43\x35\x45\x43\x35\x32\x31\x31\x45\x32\x39\x38\x36\ -\x38\x44\x30\x44\x46\x44\x37\x41\x33\x33\x41\x42\x43\x22\x20\x78\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x41\x41\x42\ +\x31\x33\x44\x37\x30\x35\x39\x38\x34\x31\x31\x45\x33\x41\x44\x39\ +\x31\x44\x46\x46\x41\x36\x32\x34\x34\x38\x41\x34\x46\x22\x20\x78\ \x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ -\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x37\x42\x34\x38\x31\x37\x43\ -\x34\x45\x43\x35\x32\x31\x31\x45\x32\x39\x38\x36\x38\x44\x30\x44\ -\x46\x44\x37\x41\x33\x33\x41\x42\x43\x22\x20\x78\x6d\x70\x3a\x43\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x41\x41\x42\x31\x33\x44\x36\ +\x46\x35\x39\x38\x34\x31\x31\x45\x33\x41\x44\x39\x31\x44\x46\x46\ +\x41\x36\x32\x34\x34\x38\x41\x34\x46\x22\x20\x78\x6d\x70\x3a\x43\ \x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ \x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ \x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ \x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ \x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x69\x69\x64\x3a\x38\x63\x63\x61\x63\x62\x39\x36\ -\x2d\x66\x66\x39\x38\x2d\x31\x39\x34\x64\x2d\x61\x39\x30\x32\x2d\ -\x30\x62\x32\x37\x31\x63\x63\x61\x31\x37\x63\x39\x22\x20\x73\x74\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x63\x31\x65\x61\x38\x31\x32\x35\ +\x2d\x65\x62\x64\x64\x2d\x63\x38\x34\x62\x2d\x39\x66\x37\x61\x2d\ +\x30\x36\x39\x39\x32\x39\x38\x64\x62\x39\x33\x63\x22\x20\x73\x74\ \x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\x34\x65\x39\x38\x62\ -\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\x62\x62\x33\x65\x2d\ -\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\x34\x22\x2f\x3e\x20\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ \x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ \x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ \x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ -\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x75\x05\ -\xc6\x8b\x00\x00\x03\xd2\x49\x44\x41\x54\x78\xda\xcc\x57\x4b\x4c\ -\x13\x51\x14\x7d\x6f\x3a\x43\x5b\x28\x18\xc2\xbf\x52\x7e\x42\x11\ -\xd4\x08\x6a\xd8\xe8\xc2\x68\x42\xa2\xc4\xaa\x60\xfc\x25\x10\x35\ -\x31\xc6\x85\x89\x2b\x77\xee\x4c\x5c\xb8\x20\x1a\x12\x8d\x0b\x13\ -\xe3\xc2\x18\x3f\x89\x24\xfe\x0d\x31\x7c\x22\xf8\x09\x20\x48\xa9\ -\xd8\xf2\x29\xb5\x05\xa9\x14\x08\x6d\xe9\xfc\xbc\xaf\xa1\xd8\x16\ -\x0a\x33\xa5\x8a\x37\x99\xbc\xd7\x99\xce\xbb\xe7\xdd\x77\xee\xb9\ -\x77\xb0\x28\x8a\x68\x2d\x8d\x42\x6b\x6c\x74\x60\xf2\xe4\xc5\xeb\ -\xe2\x21\xab\xed\x0a\xc3\xd0\xa9\x31\x77\x42\x33\xee\x8f\x2d\xef\ -\x2e\x0d\xf4\xf5\x7e\xa5\x19\xc6\x7f\xaf\xbe\xbe\x1e\x95\x95\x95\ -\xfd\x01\x00\xce\xaf\xf6\xf4\x9b\x0e\x2b\xe3\xe2\x62\x1f\x66\x8a\ -\x42\x54\x52\xb2\xde\x64\x19\x32\xfc\xb4\xdb\x8c\xe4\x9e\xd3\xe9\ -\x0c\x8d\x00\xd9\x39\x71\x1e\x0c\x00\x90\x23\x4c\x61\x2f\x4c\x39\ -\xb8\x70\x24\x07\xa2\x20\x8a\x1c\xc7\x2e\x90\x09\xc3\x4b\x34\xe3\ -\x5f\x5a\xc3\xb1\x1c\x3c\xe7\x91\x2a\x31\xa9\xf0\xe4\xd9\xf3\x8d\ -\x8d\xf7\xef\x19\x06\x07\x4c\x46\x85\x42\x11\x0a\x00\x8c\x0f\x5e\ -\x94\x89\x8b\x9b\xfb\xd6\xdb\x73\xb9\xb3\xbd\xed\xc5\x3c\x80\x88\ -\xa6\x54\xa9\x50\x5a\x96\x56\x20\x84\xc6\x18\x23\xaf\xc7\x4d\x4d\ -\x38\x1c\xa8\x64\x6b\xb9\xae\xa8\x74\x73\x03\xa3\x54\xea\x79\x9e\ -\x47\xe0\xb4\xd0\x70\xa2\xb6\xf1\xc1\x9d\xdb\x06\xd6\xe7\x33\x86\ -\x03\x58\x30\x0c\x21\xf3\x7a\x3c\x5d\xad\x6f\x5f\x5e\x9b\x74\x4e\ -\xac\x18\xe2\xcc\xf5\xd9\x19\x87\xf6\x56\xde\x85\x45\xd5\x00\x1c\ -\x0d\x7e\x33\x5e\xea\xea\x78\xdf\x31\x3a\x3c\xd8\x9f\xb8\x2e\xe9\ -\x46\xbe\xbe\xa4\x01\x9e\xa1\x00\x88\xfd\x47\x4f\x34\x66\x65\xeb\ -\xf6\xc2\xab\x23\xf4\xd2\xa4\xa1\x91\xd5\x3c\xe0\x96\xe2\x7c\xfe\ -\xa8\x52\x60\xa8\x0c\x1c\x13\x1c\x41\x36\x0c\x1d\xf3\xf3\x99\xe0\ -\xff\x12\x10\x4a\xa5\xaa\x30\x5e\xa3\x29\x22\x00\x22\xa6\x21\x44\ -\x01\xcb\xe0\x99\x00\x97\x3b\xc2\x71\x2e\xf2\x21\x08\x02\xb9\xf8\ -\xff\x42\x07\xa8\xc8\xcc\x16\xfe\xad\x10\x85\x38\x07\x36\xab\x13\ -\x34\x02\x11\x0d\x8e\x65\x57\x5c\x04\xce\x99\x02\xf2\x25\xcc\x67\ -\x0f\xe1\x04\x1d\xb4\x11\x4e\x36\x00\xe2\x54\x9b\x93\x9b\xa7\x2f\ -\xdd\x9c\xd2\xd7\xdd\xe9\x5c\x09\xc0\xcc\x94\xcb\x64\xea\xf9\x72\ -\x18\xb4\x00\xf8\xcb\x60\x87\x6d\xa4\x89\xdc\x57\x28\x68\xa4\xd6\ -\x68\x2a\x96\xab\x37\x74\xa4\x07\x3e\x9f\xaf\x60\xf7\xbe\x03\x6f\ -\x20\x97\xc9\x62\xec\x72\x42\x24\x08\xa2\x00\xce\xfd\x24\x84\x11\ -\xa5\x67\xae\xdf\x5a\x53\x77\x86\x52\xa9\xe3\x37\xa4\x67\x6a\xab\ -\x97\x8b\x62\x44\x00\x0a\xd0\x02\x46\x93\x58\x5e\xb4\x69\x4b\x79\ -\xb4\xe7\x0b\x0a\xe9\x07\x44\x81\xea\xf9\x15\x51\x14\xa4\x01\x20\ -\x42\xe4\xb0\x8d\xb6\xcf\x79\x3d\xae\xe5\x76\x2e\x07\x4b\x6a\x46\ -\xd6\x36\x55\x7c\x7c\x7a\x38\xb9\x23\x0a\x51\xd3\xb3\xa7\xe7\x00\ -\xc4\x97\x58\xb1\xbd\xba\xf6\xd4\x23\x50\xc4\x1a\xa2\x88\x92\xd2\ -\x10\xc8\xa4\x8e\x65\xba\x41\xa6\xd0\xb2\x38\x10\xb0\x3d\x55\x86\ -\x1a\xad\x2e\x77\x17\x9c\x25\x2f\xd7\x27\x6c\xc2\xfb\xfa\xe9\xe3\ -\xeb\xe3\xf6\x1f\xe3\xb2\x49\xb8\x90\x92\x1c\x97\x0c\x19\x91\xc3\ -\x4b\x11\x84\x30\x00\x90\x1d\x1e\x20\x22\x23\x5b\x07\xc2\x34\xa1\ -\x8d\xf5\xcd\x0d\x03\x10\xf9\x2a\x07\x7a\x0f\xcc\x77\xad\x0a\x80\ -\x2e\xaf\xe0\x58\x7e\xf1\xc6\xe3\x40\x1e\xb9\xdd\x2b\x06\x55\x74\ -\x7f\x6a\x6d\x39\x82\xd0\x98\x25\x6a\x00\x3d\x9f\x3f\xdc\xb2\x0e\ -\x59\x1e\x42\x19\x95\x5b\x1c\x30\xd4\x7e\x7e\xca\xf5\xcb\xb6\xaa\ -\x08\x80\x12\x5e\xc8\x2b\x2a\xae\x83\x08\x70\x51\x44\x60\x76\xc4\ -\xfc\xdd\x30\xed\x9a\x34\x47\x0d\xc0\xd8\xdd\x79\xd3\x3e\x6a\x7d\ -\xc2\x93\x4e\x22\x8a\x08\x4c\x4f\xb9\x46\x57\x15\x81\x2d\xdb\x2b\ -\x6a\x81\x03\x8b\x04\x44\x8a\x41\x04\x3c\x56\x8b\xa5\x16\x22\x30\ -\x14\x35\x00\xbb\xcd\xda\x0c\xec\x1b\xe7\x83\xba\x5e\xc9\x11\xa0\ -\x19\x16\x1a\x54\xc9\x59\x80\x43\xf3\x9f\xf5\x90\xb1\xf9\xd5\xf3\ -\x36\x18\xda\x56\x5d\x0c\xc4\xa5\xfb\x02\x7a\xa9\x39\xc9\xf9\x3d\ -\x55\x07\x4f\x43\x31\x32\x4b\x89\x92\x04\xe3\xa0\x18\x15\x87\x69\ -\x09\x0e\x71\xca\xb2\xdc\xe3\x39\x9f\x6f\x67\xe0\x77\x72\x5a\xc6\ -\x45\x4c\xc5\xa2\x10\x06\x04\x8d\x43\x5e\xaf\xd7\x3f\x07\x3f\xbd\ -\xf0\x11\xd1\xef\x47\x11\xe8\x56\x6c\x8e\x31\x34\xeb\xf6\xec\x80\ -\x66\x58\xf3\xb7\xfb\x40\x90\xe8\x3e\x9d\x36\x73\x5c\x0d\x1f\x34\ -\x78\xad\x3f\xcf\x7f\x0b\x30\x00\xf9\xa2\xb3\x56\xda\xeb\x98\xe8\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x74\x3f\ +\x67\x43\x00\x00\x02\xe2\x49\x44\x41\x54\x78\xda\xbc\x97\x5d\x88\ +\xcc\x51\x14\xc0\x67\xd6\x60\xdb\x98\x15\xa5\x79\xf0\x15\x4b\x48\ +\xbe\x8a\x44\xc8\xee\x4a\x11\xf2\x64\x1f\x58\x91\x42\x69\xac\xf2\ +\x91\xb2\xa5\x15\x25\xe5\x61\x3c\xd9\x97\x8d\x37\x1e\xb0\x51\xe4\ +\xa3\x59\xad\x94\x07\xab\xb4\xb2\x59\xb2\x25\xd2\x96\xb0\xd8\xf5\ +\xd1\x18\xbf\x53\x67\x74\xfb\x37\xf7\xce\xfd\x9b\x7f\x7b\xea\xd7\ +\xbd\x73\x3f\xfe\xf7\x9c\x73\xcf\x3d\xf7\x4e\x3c\x16\xa1\xa4\xd3\ +\xe9\x75\x14\x19\x98\x05\xcf\x61\x5f\x26\x93\xe9\xb4\x8d\xcf\xe7\ +\xf3\xb1\x78\x84\x8b\x4f\xa3\xe8\x81\xd1\x46\xf3\x57\xa8\x41\x89\ +\x7e\x9b\x02\x15\x11\x3a\x60\x7d\x60\x71\x91\xb1\x50\xe7\x9a\x14\ +\xa5\x02\xdf\x2d\xed\x83\xae\x49\x89\x08\x5c\x5f\x25\x6e\x86\x6b\ +\x70\x12\x26\x1b\xdd\xb2\x25\xb7\x23\x55\x80\x05\x47\x50\x2c\x55\ +\xd7\xd6\xc3\x72\x18\x09\xbd\xd0\x0e\x93\x60\x1c\x3c\x83\x53\xec\ +\xff\xcf\xb2\x15\x60\x51\x09\xd6\x46\xd8\x02\x6b\x20\x59\x64\xd8\ +\x4c\xe5\x0f\xdc\x82\x07\xf0\xb1\xd4\xb7\x7d\x3d\xb0\x1b\x5a\x3d\ +\xc7\x4a\x5c\x6d\x50\x36\xc1\x8d\xb2\x82\x10\xeb\x47\x51\x34\x07\ +\x9a\xdf\xc0\x7b\x0f\x65\xea\xa3\xf0\xc0\x4e\x23\xb0\xde\xc2\x2a\ +\xf8\x0c\x7d\x1e\x73\xd7\x16\x09\xd8\xd5\x30\x1b\xae\x8b\x21\x89\ +\x12\xd6\x4b\xff\x61\xa3\xe9\x34\x41\xd5\x47\xbb\x78\xa4\xda\x96\ +\xe0\x20\xa7\xc6\xcd\x61\xac\x6c\xc3\x02\x0d\xda\x42\xc0\x8a\x34\ +\xc1\xd4\x52\x1e\xd8\x06\x33\xb4\xfe\x01\xda\xf8\xe0\x18\xca\x03\ +\x8e\x39\x57\xf4\x24\xac\xd0\xdf\xed\x96\x71\x55\xce\x18\x50\xeb\ +\x8f\x1b\x4d\x67\xf4\x48\xed\x87\x09\x0e\xeb\x5b\xe0\x9e\x43\xc1\ +\x77\x70\x51\x33\xa7\xfd\x2e\x40\x81\x46\x1d\x58\xb0\x7e\xba\xd6\ +\x65\xef\x27\x5a\xa6\x5d\x46\xc9\x06\xe6\xca\x71\xec\x02\xf1\xd6\ +\x00\x64\x55\xa9\xfb\xf4\xbf\x30\xef\x02\xd7\x16\xec\x30\xea\xe7\ +\x98\x38\xc4\x87\x9b\x1c\x8b\x17\xac\x8f\x31\xb6\x97\xb1\x53\xa8\ +\xa6\xe0\x25\xbf\x73\xb6\x45\x5c\x1e\x38\x4b\x71\x08\x5e\xc3\x42\ +\xf8\xad\xd6\xa7\x2c\x53\x9e\xc2\x32\x16\xfb\xe5\x9b\x55\x4b\xdd\ +\x86\x47\x60\x2e\xcc\xe7\xa3\xdf\xf4\x38\xa6\x1c\xe3\x17\x41\xb7\ +\x46\xbd\xb7\xc4\x3d\x53\xb1\x24\xa3\x57\x81\x8b\xc6\x25\xb2\xdf\ +\x07\x51\xbc\xbb\x1c\x0f\x98\xb2\x3d\xc4\xe2\x85\x0c\xd8\x85\xe2\ +\x4b\x7c\xf2\x76\xcc\x23\x19\x1d\x2b\xd2\xb5\x07\x2e\x68\xd2\x29\ +\x26\x92\x70\x76\x95\xad\x40\x20\x19\x15\xe4\x31\xee\x6d\x85\xbd\ +\xd4\xe7\xc1\x4d\xcb\xdc\xea\xb2\x14\xc0\xfa\x0a\x0d\xc6\xa0\x9c\ +\x28\x54\x50\xa2\x07\x36\xea\x35\xfd\xa4\x58\xb6\x0b\x15\x84\x2c\ +\x3a\x9e\xa2\xd6\x78\x70\xd4\x04\x86\x3c\x64\xc1\x95\x16\x85\xe5\ +\x21\xf2\xc9\x68\xca\x32\xb6\xd6\x15\x84\x09\xb5\xb2\x4e\x6f\xae\ +\x3a\x3d\x4e\xae\xd3\xd1\xec\xe8\x0b\xbe\xff\x2a\x7d\xb6\xe0\x12\ +\xdc\xd1\x5b\x6f\x71\x89\xc5\xcf\x63\x51\x87\xad\x53\x93\x50\x3e\ +\xcc\x16\x48\x84\x37\x38\xfa\xe5\x83\x8f\xf4\x5c\x5f\x35\xf3\xb8\ +\x43\x06\x8c\xe0\x4b\xfa\x28\x90\x0d\xbc\x5c\xe4\x31\x79\x57\xe9\ +\x64\xd1\xc1\x90\xef\xd6\x21\x43\x81\x4a\x1f\x05\x36\xc3\x56\x7d\ +\xd7\x77\xd8\xfe\xc5\x84\x90\x1f\xa1\xb6\x40\x2d\x6c\x8b\xf0\x0f\ +\xca\x17\xa3\x9e\x8c\x22\x11\xc5\xfe\x63\x0b\xfe\x1d\x73\xbd\x47\ +\x86\x55\x81\xfe\xc0\x76\xe4\x86\x5b\x81\x16\x7d\x37\x88\x27\x8e\ +\xba\x1e\x23\x22\x7f\x05\x18\x00\x68\x1f\xde\x97\xa8\x2b\x9f\x11\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x0a\x87\ +\x00\x00\x06\xbd\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ @@ -591,143 +654,82 @@ \x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ \x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ \x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\ -\x34\x65\x39\x38\x62\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\ -\x62\x62\x33\x65\x2d\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\ -\x34\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x38\x41\x42\ -\x36\x41\x42\x31\x45\x45\x43\x35\x32\x31\x31\x45\x32\x42\x45\x31\ -\x34\x45\x36\x35\x41\x46\x33\x38\x37\x34\x32\x38\x30\x22\x20\x78\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x39\x46\x38\ +\x32\x32\x30\x43\x30\x35\x39\x38\x34\x31\x31\x45\x33\x42\x35\x45\ +\x42\x44\x32\x39\x33\x41\x33\x42\x36\x34\x41\x32\x38\x22\x20\x78\ \x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ -\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x38\x41\x42\x36\x41\x42\x31\ -\x44\x45\x43\x35\x32\x31\x31\x45\x32\x42\x45\x31\x34\x45\x36\x35\ -\x41\x46\x33\x38\x37\x34\x32\x38\x30\x22\x20\x78\x6d\x70\x3a\x43\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x39\x46\x38\x32\x32\x30\x42\ +\x46\x35\x39\x38\x34\x31\x31\x45\x33\x42\x35\x45\x42\x44\x32\x39\ +\x33\x41\x33\x42\x36\x34\x41\x32\x38\x22\x20\x78\x6d\x70\x3a\x43\ \x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ \x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ \x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ \x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ \x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x69\x69\x64\x3a\x38\x63\x63\x61\x63\x62\x39\x36\ -\x2d\x66\x66\x39\x38\x2d\x31\x39\x34\x64\x2d\x61\x39\x30\x32\x2d\ -\x30\x62\x32\x37\x31\x63\x63\x61\x31\x37\x63\x39\x22\x20\x73\x74\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x63\x31\x65\x61\x38\x31\x32\x35\ +\x2d\x65\x62\x64\x64\x2d\x63\x38\x34\x62\x2d\x39\x66\x37\x61\x2d\ +\x30\x36\x39\x39\x32\x39\x38\x64\x62\x39\x33\x63\x22\x20\x73\x74\ \x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\x34\x65\x39\x38\x62\ -\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\x62\x62\x33\x65\x2d\ -\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\x34\x22\x2f\x3e\x20\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ \x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ \x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ \x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ -\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x18\x02\ -\x43\x51\x00\x00\x06\xac\x49\x44\x41\x54\x78\xda\xc4\x57\x7b\x4c\ -\x93\x57\x14\xbf\x2d\x5f\x5b\x4a\x0b\x14\x51\x5e\x2d\x14\x0a\xd8\ -\x52\x0b\x05\x8a\x8a\x88\x53\xc2\xf0\x05\x53\xf1\xcd\x88\x91\x99\ -\x65\xce\xb9\x25\xc3\x25\xcb\xe6\x5f\xdb\xfe\xd8\x23\x2e\xf3\x8f\ -\xb9\x99\x65\x59\x8c\x71\x9a\xe9\x0c\x4e\xf1\x31\x1d\xe2\x44\xe5\ -\x21\x8c\x42\x8b\xd8\xa2\x22\x8f\x52\x2a\x5a\x01\xa1\x4f\xda\x7e\ -\x3b\x97\x51\xe8\x57\x5a\x98\x26\x9b\x37\x39\xf9\x5e\xf7\xde\xf3\ -\x3b\xe7\x9e\xf3\x3b\xe7\xa3\x91\x24\x89\x5e\xe6\xa0\xa3\x97\x3c\ -\x08\xf7\x4d\x79\x79\x39\x6a\x69\x69\x99\x36\xc1\x31\x36\x86\x5c\ -\xa4\x0b\x45\x0b\xe2\x50\x54\x8c\x40\x2a\xcd\xc8\x5c\xe4\x74\x3a\ -\xb3\xe0\x53\x02\x48\x10\xc8\x18\x48\x5f\x40\x40\x40\x53\xbb\xb2\ -\xb9\xd6\xa0\xd7\x29\xfb\x75\x3d\x88\x4e\xa3\x23\x82\xc1\xa0\xec\ -\xe5\x72\xb9\x90\xcb\xe9\x1c\x7f\x7f\xf0\xe0\x41\x94\x9e\x9e\x3e\ -\x05\xa0\xae\xae\x0e\x35\x34\x34\x4c\x03\x10\x18\xc4\x41\x8a\x9c\ -\x65\xc5\xa1\x7c\xe1\xdb\xae\x40\x76\xae\xaa\x5d\x13\xe4\xc7\x98\ -\x32\x3a\x9b\xeb\x84\x79\x8d\x86\xa7\xc3\x47\x9a\x6a\x6f\x9c\xb0\ -\x9a\x4d\xa3\xde\x93\x82\x82\x43\x90\x79\xe4\x19\x32\x1a\x8d\x54\ -\x0f\xb0\xd9\x6c\xca\x44\xb0\x08\x49\xd2\xd2\x53\xf2\x8b\xd6\x1f\ -\x60\x05\xb2\x0b\xed\x36\x3b\x22\xc1\x13\xb3\x8c\x00\x66\x70\x68\ -\x76\x4e\x5e\x7e\xb6\x62\x49\xce\x5e\x8d\x5a\xf5\xc9\x5f\xb5\x37\ -\xce\x18\x07\x1e\xc1\x7e\x04\x2a\xde\x51\x56\xce\x62\xb1\x3a\x8e\ -\xff\xf0\xdd\x05\xbc\xbf\xdf\x18\xc0\x1f\x8b\xb6\xbe\xbe\xb1\x68\ -\x5b\xe9\x0d\x1a\x2d\xa0\xd0\x66\xb5\xfe\x1b\xe5\xe3\x03\xcf\xc3\ -\xf3\x61\x5d\x9a\x7c\xe1\xe2\x8a\xd2\xdd\x7b\xbf\x15\xcb\xd2\xc2\ -\x57\x15\x6f\xf9\x48\x2c\x93\x7f\x63\x36\x99\x16\xfb\x8c\x81\xc9\ -\x17\x70\x3e\x85\x9b\xb7\x97\x88\x53\xe5\x47\x2d\x26\x13\xe3\x45\ -\x83\xcb\x03\xc8\xbb\x60\xc8\x5a\xd2\x45\x8a\x2c\x70\x22\x41\x1c\ -\xae\x04\xeb\x70\x67\xdf\x34\x00\x79\x6b\x8a\x72\x25\xf2\x8c\x23\ -\xfe\x94\x13\x04\x03\xd1\xe8\x34\x7c\xab\x07\x19\x02\x61\x81\x08\ -\x41\x01\xe1\x70\x8c\xf9\x04\x32\x66\xb7\x8b\xdc\xcf\x31\x71\xc2\ -\xa4\xe0\xd0\xb0\x00\x08\x6e\x27\x05\x00\x4c\x42\x51\x82\xb8\xb0\ -\x14\x79\xe6\x8f\x56\x8b\x85\xe5\xbd\x11\x0d\xa2\x9a\xc9\x62\x0e\ -\x1b\xfa\x74\xc7\x0c\xba\xde\x53\x77\x5b\x95\xf7\xe1\xf5\x30\x06\ -\x10\xc2\xe3\x09\x15\x4b\x5f\x29\x8c\xe2\x0b\x76\x39\x1d\x4e\x91\ -\x2f\x20\x1e\x99\xc0\x77\x38\x1c\xd1\x70\xab\xa3\x00\x60\x30\x99\ -\x28\x27\x7f\x65\x39\x5c\x25\x18\x8c\x77\x4c\x38\x9d\x8e\x9a\x8b\ -\xa7\x7f\xd9\xab\x51\xb5\xb6\xc1\xbd\xe7\x67\x33\xea\x46\x83\xda\ -\x36\x75\x8b\x58\x96\x7a\x38\x6d\x61\xf6\x9e\x48\xbe\x60\x1f\xe9\ -\x72\xcd\xf1\x83\x61\x5e\x58\x78\x38\x7f\x1a\x00\x69\xba\x22\x8a\ -\x64\x73\x77\x7b\x2b\xa7\xd1\xe9\xa0\xdc\x79\xa5\xf2\xe4\xf1\x4d\ -\x0f\x3b\xb4\xa3\xfe\x2c\xc3\xa0\xda\x5b\x95\x4f\x09\x06\xf3\x08\ -\xb8\x79\x97\xc3\x3f\x00\x9a\x2c\x33\x6b\x3e\x5c\x1b\x28\x59\x90\ -\x9a\xb5\x70\x3b\xb8\x27\x62\x1a\x0f\xb0\xd9\x5d\x55\x67\x2b\xca\ -\x66\x52\xfe\xcf\xbc\x20\xb4\xa1\x74\x67\xde\xea\x8d\x5b\xea\xe1\ -\x7c\x45\x33\xcd\x85\xef\xa9\x98\x94\x28\x00\x06\x9f\x3c\x0e\x01\ -\xf7\x3f\xc4\x47\x81\x05\x9f\x39\x41\x10\xa8\xbd\xa5\xf9\x8b\x8e\ -\xbb\x6d\xfd\xb3\x45\xbd\x54\x9e\x31\x37\x51\x22\xdd\xe7\x72\x91\ -\x91\x78\x3d\x0e\x56\xdf\xd9\x41\x22\x36\x87\x2b\x0b\xe2\x72\xa9\ -\x59\x50\x7d\xe1\xdc\x67\xed\xda\x8e\x43\xbc\xb0\x39\x92\x05\x99\ -\x59\x4b\x23\xa2\x63\x0a\x38\xc1\x73\x78\x4d\x37\x6b\x2a\x30\x1d\ -\xcf\x36\x9a\xeb\x6f\x3d\xe9\xee\xbc\x5f\x0c\x81\x98\x24\x4d\xcf\ -\xcc\x60\x32\x59\xab\xe0\x28\x14\x60\x69\x0a\x0e\x23\xc8\x12\x84\ -\x83\x13\xef\x05\xef\x85\xfc\x38\x21\x66\x3e\x0b\xcd\x9d\x8f\x2b\ -\x56\x2c\x47\xd7\xaf\xd7\x4c\x6e\x18\x1e\x11\x89\x38\xc1\xc1\xdc\ -\x47\x7d\xba\x51\x9c\xcf\xcf\x3b\x30\xf3\x81\x22\x56\x70\x48\x88\ -\x14\x0c\xca\x06\x40\x05\xf0\x2c\x07\x40\x22\x9b\xdd\xee\x7a\xff\ -\xcd\x9d\x0b\x12\xe3\x62\x35\xc4\x54\x10\x39\x29\x1b\x60\xfa\x04\ -\x19\x7d\x51\x22\xc2\x41\xd9\xfb\xf0\x81\x0d\x6e\x95\x10\x9c\x4a\ -\x00\x74\x18\x00\x84\x49\x52\xe5\x32\x4e\x48\xe8\xab\x56\xb3\x99\ -\x9c\x3c\x13\x2c\x5b\xb6\x97\xc4\xf1\xe3\x13\x98\x18\xf9\xff\x31\ -\xaa\xab\xaf\x8e\xeb\x9d\xd4\x96\xb7\x76\xdd\xa7\x51\xf3\x65\x99\ -\x43\x4f\x06\x6e\x01\xd1\xfc\xa1\x51\xb7\xb6\x42\x31\xeb\xc4\x9e\ -\xf8\x2f\x06\x0e\x72\x4a\x10\x02\x65\x76\xda\x6d\xd6\xb2\x79\x91\ -\xd1\x69\x10\x80\x7b\xd2\x17\x2f\x19\x04\x00\x77\x06\xfa\xf5\x35\ -\x43\x46\x63\x35\x00\xba\x03\xcf\x86\xe7\x05\xb4\xac\x60\xb5\x42\ -\x90\x20\x4a\x51\x35\x36\x34\x01\x8b\x6a\x61\x3d\xe9\xa6\x68\x0a\ -\x80\x41\xa3\x71\xbc\x1b\xf1\xa0\xd1\x30\x82\x60\xe6\xc6\x89\x92\ -\xb0\xec\x07\x40\x3a\x00\xa0\x1e\xd0\xeb\xaf\x77\xdc\x51\x5f\xd2\ -\xb6\xa9\x54\x56\x8b\x79\xe6\x6e\x07\x8a\x8e\x48\x2c\xf9\x18\x28\ -\x7e\x93\x40\x98\x60\x82\xf5\x1a\x30\xe8\xb6\x41\xdf\x77\x0d\x82\ -\xf2\x32\x4c\x79\x36\x09\xa0\xad\xb9\xa9\x0b\x9a\x09\xdb\x44\x71\ -\xf1\x2c\x24\xee\x07\x01\x2c\x12\x88\xd3\xe4\xb9\xf0\xbe\x19\x00\ -\xcc\x6a\x3d\x14\x36\x45\x44\x34\xbf\x10\x0a\x1b\x7e\xe4\x80\x41\ -\x0a\x30\x46\x11\x15\x1b\xff\x16\x04\xa4\x84\x02\x80\xc1\x60\xf4\ -\xd1\xe9\x74\x4c\x38\xf1\x3e\xcf\x0c\xea\x81\xc5\x62\x6e\x52\x35\ -\x35\xbc\xf1\xe7\xa5\xf3\x6d\xde\x59\xe3\x3d\x12\x92\xc5\x5c\x28\ -\x6c\xdf\xdb\xed\xf6\x40\x4f\x83\xa0\x10\x21\xd3\xc8\xf0\xef\xa6\ -\xd1\x91\x07\x14\x26\x04\xf7\x3c\x05\xd1\x61\xee\xf7\xd7\xa4\x3c\ -\x1b\x1c\x3c\xdd\x78\xb3\x66\x76\xe5\xf3\xc5\x73\xd7\x95\xec\x38\ -\x05\x6b\x16\x91\x2e\x6a\x23\xc3\x04\x96\xbc\xdb\xa2\x3c\xd4\xd7\ -\xdd\x4d\x52\x00\xf4\xf7\x74\x63\xd1\x60\xfa\xf5\xc3\xdf\x28\x32\ -\x86\xff\x79\xd9\x7b\xe5\x15\x2b\x37\x6c\x5e\x8a\x89\xca\x9b\x78\ -\x62\x13\x12\xd9\x05\xeb\x36\x96\xbc\xb6\xad\xf4\x16\x78\x73\x8d\ -\x37\x50\x6c\x9c\xcd\x6a\xb9\xd0\x72\xbb\xfe\x4a\xc0\x84\x1e\xc2\ -\xf3\x23\x04\x8d\x6a\x66\x72\x71\xd2\xa1\xc3\x29\x86\x56\x6b\x7d\ -\xb2\x74\x41\x3d\xa4\x2b\xa6\xce\x4e\x5c\x8b\xa0\x18\xc9\xe0\x5c\ -\x73\x81\xe9\xa4\x8e\x31\x07\xf2\xe5\x25\x28\x6c\xc6\xca\x13\xc7\ -\x3e\xb0\x98\x46\x5c\x84\x37\x80\x89\x4c\x68\xf7\x8c\x60\xdc\x42\ -\xbb\xbc\x5c\x38\xd1\x6a\xd1\x21\xa0\x72\xe2\x93\xc5\x39\x93\xef\ -\x81\xeb\x67\xa2\x6c\x50\xee\xd0\xb4\x2a\x77\x41\x61\xd3\xfa\xfd\ -\x31\x81\x4c\xe8\x81\x8b\x15\x57\xb3\xfe\xde\x9e\xaf\x6c\x36\xdb\ -\xcf\xf8\xde\x5f\xcf\x87\x33\xc4\x2d\xfe\xba\x20\x4c\x38\x6c\x0e\ -\xc7\xac\x55\xb7\xee\x3c\x7f\xea\xc4\x39\xef\xc2\x46\x50\xfb\x3d\ -\xc2\x00\x93\xbb\xd4\x8d\x0d\x47\xcf\x9d\x3c\xfe\xa5\x50\x94\x44\ -\x5b\xbe\xba\x50\x05\xc4\xb4\x1f\x5a\x2d\xde\x4c\xad\x96\xaf\x81\ -\xc1\x8f\xd9\x6d\x1a\x65\x7d\xed\x3b\x57\x2b\xcf\x5c\xf3\x75\x2c\ -\x94\x18\x00\x97\x8f\x36\xd7\xdd\xdc\x7a\xb9\xe2\x57\x35\x8e\xde\ -\xae\xfb\x1d\x64\xef\xe1\x07\x07\xe0\xff\xa0\x32\x73\x49\xee\x87\ -\x50\x6a\xb7\xc2\x91\x70\xf0\x19\xfb\x6b\xd3\xc7\xfb\x08\x06\x81\ -\x20\x08\x1f\x03\xe9\xfc\x54\x73\xe5\xe2\xd7\xd0\xcc\x18\xfd\x52\ -\xb2\xbb\x1c\x67\x67\x67\xfb\xfc\x33\xf2\x1c\xc2\x64\x71\x0a\xd4\ -\xfa\xcd\xe0\x91\xb5\xd0\x5e\x27\x02\x98\x79\x9e\xfd\x26\x28\xd5\ -\x43\x2a\xdf\x03\xc5\x67\xa1\x91\xf9\xad\xfb\x9e\xb6\xdb\xdf\x5e\ -\x55\x55\x55\x28\x3f\x3f\x7f\x0a\x00\xfe\x2f\x1c\x1a\x1a\x9a\xa1\ -\xcf\x27\x91\xfb\xfc\xa2\x05\xb1\xb8\xab\x11\x82\x17\x22\x27\xfe\ -\x0f\xb1\x3b\x46\xc1\x7a\x3d\xf4\xfe\x86\x7e\x5d\xef\x64\x20\xd3\ -\x68\x34\x9f\xfb\xe1\xff\x42\x1e\x8f\x37\x05\xe0\x65\x8d\xbf\x05\ -\x18\x00\x73\x59\x49\xbb\xe5\xdd\xcf\x9e\x00\x00\x00\x00\x49\x45\ -\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x09\xda\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x7d\x29\ +\xa2\x1a\x00\x00\x02\xe2\x49\x44\x41\x54\x78\xda\xbc\x97\x5d\x88\ +\xcc\x51\x14\xc0\x67\xd6\x60\xdb\x98\x15\xa5\x79\xf0\xb1\xb1\x84\ +\xe4\xab\x48\x84\xec\xac\x14\x21\x4f\xf6\x81\x15\x6d\xa1\x94\x55\ +\x8b\x94\x2d\xad\x28\x91\x07\x9e\x6c\x6a\xe3\x8d\x07\x6c\x14\xf9\ +\x68\x6c\x2b\xe5\xc1\x2a\xad\x6c\x96\x6c\x89\xb4\x25\x2c\x76\x7d\ +\x34\xc6\xef\xd4\xf9\xeb\xf6\x6f\xee\x9d\x3b\xe6\xdf\x9e\xfa\x75\ +\xef\xdc\x8f\xff\x3d\xe7\xdc\x73\xcf\xbd\x13\x8f\x45\x28\x7d\x4d\ +\x0d\x6b\x29\xce\xc2\x4c\x78\x0e\x7b\xaa\x4e\x5f\xe8\xb4\x8d\xcf\ +\xe5\x72\xb1\x78\x84\x8b\x57\x51\xf4\xc0\x68\xa3\xf9\x2b\x54\xa3\ +\x44\xbf\x4d\x81\xb2\x08\x1d\xb0\x2e\xb4\xb8\xc8\x58\x48\xbb\x26\ +\x45\xa9\xc0\x77\x4b\xfb\xa0\x6b\x52\x22\x02\xd7\x57\x88\x9b\xe1\ +\x1a\x1c\x83\xc9\x46\xb7\x6c\xc9\xed\x48\x15\x60\xc1\x11\x14\x4b\ +\xd4\xb5\xb5\xb0\x0c\x46\x42\x2f\xb4\xc3\x24\x18\x07\xcf\xe0\x38\ +\xfb\xff\xb3\x64\x05\x58\x54\x82\xb5\x1e\x36\xc3\x6a\x48\xe6\x19\ +\x36\x43\xf9\x03\xb7\xa0\x03\x3e\x16\xfa\xb6\xaf\x07\x1a\xa0\xd5\ +\x73\xac\xc4\xd5\x7a\x65\x23\xdc\x28\x29\x08\xb1\x7e\x14\x45\x73\ +\xa8\xf9\x0d\xbc\xf7\x50\xa6\x36\x0a\x0f\xec\x30\x02\xeb\x2d\xac\ +\x84\xcf\xa2\x9b\xc7\xdc\x35\x79\x02\x76\x15\xcc\x82\xeb\x62\x48\ +\xa2\x80\xf5\xd2\x7f\xc0\x68\x3a\x41\x50\xf5\xd1\x2e\x1e\xa9\xb4\ +\x25\x38\xc8\xaa\x71\xb3\x19\x2b\xdb\x30\x5f\x83\x36\x08\x58\x91\ +\x46\x98\x5a\xc8\x03\x5b\x61\xba\xd6\x3f\x40\x1b\x1f\x1c\x43\xb9\ +\xcf\x31\xe7\x8a\x9e\x84\xe5\xfa\xbb\xdd\x32\xae\xc2\x19\x03\x6a\ +\xfd\x11\xa3\xe9\xa4\x1e\xa9\xbd\x30\xc1\x61\x7d\x0b\xdc\x73\x28\ +\xf8\x0e\x2e\x6a\xe6\xb4\xdf\x05\x28\x50\xaf\x03\x03\xeb\xa7\x05\ +\x5d\x30\xd1\x32\xed\x32\x4a\xd6\x31\x57\x8e\x63\x17\x88\xb7\x06\ +\x20\xa3\x4a\xdd\xa7\xff\x85\x79\x17\xb8\xb6\x60\xbb\x51\x3f\xc3\ +\xc4\x21\x3e\xdc\xe8\x58\x3c\xb0\x3e\xc6\xd8\x5e\xc6\x4e\xa1\x9a\ +\x82\x97\xfc\xce\xda\x16\x71\x79\xe0\x14\x45\x13\xbc\x86\x05\xf0\ +\x5b\xad\x4f\x59\xa6\x3c\x85\xa5\x2c\xf6\xcb\x37\xab\x16\xba\x0d\ +\x0f\xc2\x1c\x98\xc7\x47\xbf\xe9\x71\x4c\x39\xc6\x2f\x84\x6e\x8d\ +\x7a\x6f\x89\x7b\xa6\x62\x49\x46\xaf\x42\x17\x8d\x4b\x64\xbf\xf7\ +\xa3\x78\x77\x29\x1e\x30\x65\x5b\x11\x8b\x07\x19\xb0\x0b\xc5\x17\ +\xfb\xe4\xed\x98\x47\x32\x3a\x9c\xa7\x6b\x17\x9c\xd7\xa4\x93\x4f\ +\x24\xe1\xec\x2c\x59\x81\x50\x32\x0a\xe4\x31\xee\x6d\x85\xdd\xd4\ +\xe7\xc2\x4d\xcb\xdc\xca\x92\x14\xc0\xfa\x32\x0d\xc6\xb0\x1c\x0d\ +\x2a\x28\xd1\x03\x1b\xf4\x9a\x7e\x92\x2f\xdb\x15\x15\x84\x2c\x3a\ +\x9e\xa2\xc6\x78\x70\x54\x87\x86\x3c\x64\xc1\x15\x16\x85\xe5\x21\ +\xf2\xc9\x68\xca\x30\xb6\xc6\x15\x84\x09\xb5\x32\xad\x37\x57\x5a\ +\x8f\x93\xeb\x74\x34\x3b\xfa\xc2\xef\xbf\x72\x9f\x2d\xb8\x04\x77\ +\xf4\xd6\x5b\x54\x60\xf1\x73\x58\xf4\xc0\xd6\xa9\x49\x28\x57\xcc\ +\x16\x48\x84\xd7\x39\xfa\xe5\x83\x8f\xf4\x5c\x5f\x35\xf3\xb8\x43\ +\x06\x8c\xe0\x4b\xfa\x28\x90\x09\xbd\x5c\xe4\x31\x79\x57\xe9\x64\ +\xd1\xc1\x22\xdf\xad\x43\x86\x02\xe5\x3e\x0a\x6c\x82\x2d\x20\xe9\ +\xb6\xc3\xf6\x2f\xa6\x08\xf9\x51\xd4\x16\xa8\x85\x6d\x11\xfe\x41\ +\xf9\x62\xd4\x93\x51\x24\xa2\xd8\x7f\x6c\xc1\xbf\x63\xae\xf7\xc8\ +\xb0\x2a\xd0\x1f\xda\x8e\xec\x70\x2b\xd0\xa2\xef\x06\xf1\xc4\x21\ +\xd7\x63\x44\xe4\xaf\x00\x03\x00\x67\x30\xde\x97\xf5\x5f\xa5\xbd\ +\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x07\x85\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ @@ -762,132 +764,95 @@ \x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ \x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ \x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\ -\x34\x65\x39\x38\x62\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\ -\x62\x62\x33\x65\x2d\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\ -\x34\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x36\x39\x31\ -\x36\x31\x31\x39\x46\x45\x43\x35\x32\x31\x31\x45\x32\x38\x33\x45\ -\x46\x41\x35\x38\x33\x37\x45\x44\x32\x45\x35\x32\x43\x22\x20\x78\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x45\x45\x35\ +\x37\x44\x41\x37\x43\x35\x39\x38\x34\x31\x31\x45\x33\x39\x44\x32\ +\x38\x41\x32\x46\x31\x34\x37\x35\x33\x41\x36\x39\x46\x22\x20\x78\ \x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ -\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x36\x39\x31\x36\x31\x31\x39\ -\x45\x45\x43\x35\x32\x31\x31\x45\x32\x38\x33\x45\x46\x41\x35\x38\ -\x33\x37\x45\x44\x32\x45\x35\x32\x43\x22\x20\x78\x6d\x70\x3a\x43\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x45\x45\x35\x37\x44\x41\x37\ +\x42\x35\x39\x38\x34\x31\x31\x45\x33\x39\x44\x32\x38\x41\x32\x46\ +\x31\x34\x37\x35\x33\x41\x36\x39\x46\x22\x20\x78\x6d\x70\x3a\x43\ \x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ \x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ \x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ \x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ \x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x69\x69\x64\x3a\x38\x63\x63\x61\x63\x62\x39\x36\ -\x2d\x66\x66\x39\x38\x2d\x31\x39\x34\x64\x2d\x61\x39\x30\x32\x2d\ -\x30\x62\x32\x37\x31\x63\x63\x61\x31\x37\x63\x39\x22\x20\x73\x74\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x63\x31\x65\x61\x38\x31\x32\x35\ +\x2d\x65\x62\x64\x64\x2d\x63\x38\x34\x62\x2d\x39\x66\x37\x61\x2d\ +\x30\x36\x39\x39\x32\x39\x38\x64\x62\x39\x33\x63\x22\x20\x73\x74\ \x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\x34\x65\x39\x38\x62\ -\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\x62\x62\x33\x65\x2d\ -\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\x34\x22\x2f\x3e\x20\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ \x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ \x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ \x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ -\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x07\x6b\ -\xda\x7d\x00\x00\x05\xff\x49\x44\x41\x54\x78\xda\xc4\x57\x7b\x4c\ -\x53\x57\x18\xbf\xf7\xb6\xb4\x5c\xa9\x5a\x56\x85\xbe\xa0\xd3\x48\ -\xa8\x4c\xa4\x14\x8d\xc2\x36\x93\x0d\xc2\xd4\x6c\xf8\x98\xf3\xb1\ -\xcd\x6d\x2e\x8b\xba\x65\x99\x71\xce\xcd\xbf\xa6\x59\xd4\x2c\xd9\ -\x1f\x4c\x47\xe6\xe2\x36\xb3\xcd\x89\x68\x88\x88\xf8\x2e\x8e\x81\ -\x8e\x52\xa8\xa5\xf2\x28\xf8\x58\x6c\x81\xf2\x52\xb0\x6a\xdf\x8f\ -\x7b\xf7\x1d\xd6\x62\x6f\xb9\x2d\x68\x4c\xfc\x92\x13\x7b\x3d\x87\ -\xfb\xfd\xce\x77\x7e\xdf\xef\xfc\x2e\x4e\xd3\x34\xf6\x2c\x83\xc0\ -\x9e\x71\x70\x43\x3f\xb6\x6e\xdd\x8a\x19\x8d\xc6\x31\x0b\x28\x8a\ -\xc2\xfc\x7e\x1f\x46\x92\x93\x30\x69\xaa\x42\xa0\xcc\x54\xcd\x13\ -\x8a\x44\x0b\x03\x81\x40\x26\x4c\x8b\x83\x9b\x70\xc2\xb0\x70\x38\ -\x9c\x26\x53\xb3\xa1\xa9\xbf\xb7\xa7\xad\xaf\xa7\x0b\x23\x70\x02\ -\xe3\xc6\xc5\xb1\x26\x2e\x2e\x2e\xc6\x54\x2a\xd5\x23\x00\x5a\xad\ -\x16\xd3\xe9\x74\xac\x8b\x15\x69\xe9\x62\x75\x6e\xc6\x46\x81\x58\ -\xbe\xae\x6b\xe0\x8e\x12\x46\xb4\x0d\x7d\x4c\x90\x02\xf7\x54\x99\ -\xe2\x4a\xff\xf0\xfd\x9f\xf4\xf5\x97\x4f\xb8\x9d\x0e\xd6\x33\x1e\ -\x1a\x1a\x62\x56\x80\x24\xc9\x31\x8b\x44\x49\xc9\xd8\x4b\xf9\x85\ -\x1b\x94\x59\xd9\xdf\xf8\x3c\x5e\x39\xaa\xc4\x04\x22\x9e\x37\x79\ -\x6a\x41\xde\x2b\xf9\x05\x39\xb9\x79\xe7\x3b\x5b\x5b\xbe\xb8\x54\ -\x55\xd1\x0e\x15\x63\x2c\x82\x6a\x31\x01\x44\xc6\x8c\xb4\x74\x5e\ -\xd1\xba\xf5\xfb\xa0\x84\x9b\x5d\x0e\xc7\x63\x9d\x2b\x4d\x53\x98\ -\xc7\xed\xc6\x70\x9c\xb3\x38\x7b\x61\xde\x02\xd8\xdc\xc6\xd3\xc7\ -\x4b\xcb\x23\x41\x44\x05\x10\x4c\xfe\x07\x41\x10\x6b\x7c\x5e\xef\ -\x13\x13\x0c\x01\x01\xf0\x89\xe9\x99\x59\xa5\xf0\xc8\x3b\x53\x5e\ -\x56\xea\xf7\xf9\x62\x03\x78\x6e\x5a\x12\x06\xc9\xbf\x43\xc9\xd9\ -\x10\xe3\x23\xc4\x1a\xf9\x33\x34\xd9\x0b\x03\x21\x9c\x0a\x63\x1a\ -\x4d\xd1\x18\xdb\x31\xb9\x5d\xae\x38\x38\xc6\x43\x4e\x87\xdd\xaa\ -\x39\x55\x51\x1b\x13\x40\x4e\xde\x8b\x2b\x79\x7c\xfe\x67\xa8\x84\ -\x91\x11\xc7\xe3\xc1\xcb\x9c\x2d\xbd\xdd\xe6\x43\xed\x06\x7d\xed\ -\x03\x9b\xad\x2f\x04\x60\x76\x56\xf6\x2c\xb1\x3c\x65\xb5\x58\x26\ -\x5f\xe7\xf5\x78\x05\x68\xf7\x11\x20\xf8\xb3\xb3\xd4\x3f\xdf\xea\ -\x30\xe5\xde\xbe\x79\x7d\x68\x0c\x00\x54\x9a\x94\x99\xb3\x92\x32\ -\x54\x39\x3f\x78\x3d\x1e\xb6\xe4\xbe\xbb\x03\xfd\xbb\xea\x2e\x9e\ -\xfd\xfe\xf6\x8d\xeb\xce\x88\xe9\x7b\x3d\x96\xdb\x66\x0e\x87\x5b\ -\x9d\xff\xc6\xf2\x03\xca\xcc\xb9\x25\xf0\x3b\x2f\xbc\x82\x34\xb4\ -\x33\xbc\x23\x6d\xd1\x6b\x4b\xb6\x9b\xff\xbd\xb9\x23\x24\x80\x0c\ -\x21\x92\x2b\x66\x90\x38\x41\xb4\xc7\xf1\xf8\x14\x2a\x75\x78\xf2\ -\x5b\xa6\xb6\x0f\xfe\x3c\xb0\x7f\x2f\x4b\xf2\xd1\x08\x04\xfc\xd8\ -\xc5\x93\xe5\xcd\x55\xc7\x8e\x2c\x86\xe4\x1a\x78\x17\x63\x1e\xf1\ -\x29\x49\x22\xfb\x28\x75\xe6\x2c\x79\x88\x0b\xa3\x2b\x90\x60\x68\ -\x6b\x34\x96\xc3\x3f\xee\x2b\x6c\xd1\xeb\x5e\xa6\xe9\xc0\x11\x7e\ -\x7c\xbc\x93\x4c\x48\xc0\x60\xe7\x7b\x81\xc5\xa5\x6c\x9c\x60\x0b\ -\x00\xf9\xb0\xba\xf2\xc4\xfb\xf1\x24\x69\x66\x11\x36\x11\x1c\xd7\ -\x9b\x48\xe0\x58\x39\x30\x34\x38\x80\x76\x51\x7f\xb5\xfe\x72\x3d\ -\x9c\xa7\x6a\xee\xfc\x05\x45\x0d\x35\x97\xf6\x4f\x34\x79\x28\x6e\ -\x74\xb4\xf5\x99\x8c\x86\xdd\x69\x19\x73\x7e\x09\x67\xbe\xdf\xef\ -\xc7\x92\x65\xf2\x22\x99\x42\xb1\x2f\xa6\x0e\x20\x20\x30\x8c\xed\ -\xcd\x57\x8d\x4f\xd2\x82\x28\xa9\xfe\x4a\x5d\xb9\x32\x33\xeb\x6b\ -\xf8\x9d\x1a\xce\x85\x49\x09\x82\x74\x18\xc9\xf0\x38\x40\x84\xf7\ -\xec\xd3\x8e\xe1\xbb\x83\xf7\x7b\xbb\x2c\xba\xc8\xfb\x00\xca\x9f\ -\x0c\x43\xca\xe0\xc0\x74\xb1\x4c\xba\xfc\xdd\x0d\x5f\xbd\x90\x9d\ -\x93\x89\x24\xf8\x69\x04\x6a\x65\x97\xc3\x7e\x1d\xc7\x71\x36\x01\ -\x9c\xcc\x38\x82\x78\x72\x92\x50\x98\xf2\xfc\xb7\x69\xb3\x33\x76\ -\x7a\xdc\x2e\x4d\xc7\x35\xe3\x6f\x9d\xad\xd7\x34\xb0\x03\x3b\x62\ -\xf7\x93\x06\x74\x82\x27\x96\x15\x78\xa4\x03\x7e\x1f\x09\x6d\x42\ -\xc1\xff\x92\xa0\xe1\x45\x88\x7c\xaa\x05\xb9\x9d\xfd\xd6\x9e\x63\ -\x06\xed\x95\x32\xf8\xb7\x13\xf1\xe2\xb1\xe5\x98\xa2\x24\xd1\x0a\ -\xc4\x00\x90\x28\x12\x91\x54\x10\x15\xe2\x43\xf0\x0e\x50\x4e\x4f\ -\x96\xec\x5c\xba\x6a\xed\xb6\x60\x55\x7e\xef\x6c\x35\x56\xf7\xf5\ -\x74\x3b\x22\x35\x9d\x2d\x40\xd6\x71\x49\xaa\x42\x8d\x98\x1f\x11\ -\x0f\x11\xcf\x19\x1c\x98\xa3\x9e\x37\x85\x95\xcd\xa0\xed\x70\x96\ -\x02\xa8\xca\x0a\xa8\xca\xc9\xf5\x9f\x6c\x31\xad\xfe\x70\xe3\xf2\ -\x29\xc2\xc4\x71\x01\x88\xa5\xb2\x6c\x60\xbb\x9a\xa6\x98\x04\x87\ -\x7b\xa6\x0b\x46\x37\x03\x00\xf4\xb9\x70\x5c\xff\x46\x10\x76\xab\ -\xd9\x7c\xa4\xe9\x72\xad\xf6\x81\xed\x5e\xcc\xb5\x89\xa2\x69\x58\ -\xc1\xb2\x95\x3b\xbc\x5e\x2f\x8f\xc1\x3e\xe8\x88\x01\x6b\x8f\xd6\ -\xda\x65\x71\x45\xea\x80\x30\x06\x91\xa0\x0a\xae\x9a\x16\x7d\xc3\ -\xa7\xb5\xe7\xcf\x98\x28\x2a\x76\xcb\x22\xb3\xb1\xa8\x70\xc9\x26\ -\x90\xf0\x55\x91\xd7\x39\xcc\xd1\x7d\xdd\x5d\x47\x9d\x76\xfb\x18\ -\x25\x1c\xaf\xa6\x14\xec\x7e\x78\xbc\x2a\x05\x5d\xd4\x26\xf0\x00\ -\xfb\xe1\x06\xc4\x59\x36\xa2\x35\x36\x36\xd4\x71\xb8\x5c\x6c\xc2\ -\x15\x40\x67\xc8\xe7\x93\xf9\x2b\xde\xdb\x60\x00\xd3\xb9\xc7\xd8\ -\xa8\x3d\x0e\xed\x79\x27\xbc\x3d\x51\x62\x90\x6e\x75\xfe\xeb\xcb\ -\xb6\xc1\x65\xf6\x36\x24\x1f\xf3\x1e\x1e\x8f\x47\x1b\x75\xf5\xbb\ -\x5c\x8e\x87\x7e\x6e\x34\x00\x21\xd5\x8a\x64\x79\xd0\xdd\x48\x40\ -\xdb\x4b\x94\x73\xb3\xb6\x03\x00\x3d\x78\x83\x0e\x98\x42\x99\xa4\ -\xe0\x05\x54\x40\xb8\xf9\xe0\x05\x78\x6c\x2e\x0a\x79\x89\xc1\x3e\ -\x6b\x49\xcd\xb9\xd3\x1a\x56\x43\x02\xe5\x91\xf2\xf8\xf1\x18\x9c\ -\x4f\x31\x3c\xd6\x82\x05\x3f\x0c\x2f\x9a\xcc\xd6\x15\x30\x14\xc9\ -\x52\xb9\x02\x27\xf0\x30\xed\xf7\x63\x6c\x26\x26\xc4\x09\xd8\x90\ -\xa6\xee\xc2\xb9\x2f\xa3\x5a\xb2\x80\xcf\x7f\xa3\xcd\xd0\x78\xf0\ -\xef\xb3\x55\x95\xe8\xb9\x68\xcd\x3b\x6f\x81\x8d\x3a\xea\x76\xba\ -\x12\xd9\xee\x89\x09\x3a\xe4\x91\xe4\x40\xda\x0b\xa7\x8e\x1e\x5e\ -\x0b\x4e\xc8\x1d\xf5\xcb\xa8\xba\xaa\xe2\xf3\x9a\xd3\x95\x95\xe8\ -\xbc\xd1\x80\xfb\xff\x42\x73\x43\x7d\x01\xf8\x02\x3d\x2a\xdf\x63\ -\x4b\x30\x18\x1a\xf0\x13\xf0\x2a\xaa\x04\x92\xaf\x84\xe4\xb6\x98\ -\x5f\x46\xf7\xef\x0d\xd3\x4c\x77\x13\x40\xbe\xc0\x70\xd3\xd4\xfa\ -\xea\xa2\xc2\xa5\x5b\x92\x24\xd2\xcd\xf0\x32\x19\x2a\x75\xac\x9b\ -\x93\xcb\x8d\xc3\x38\x5c\x0e\x62\xfb\x3f\xd7\x9a\x74\x7b\xc0\x57\ -\x9c\x8b\x25\xe1\xa3\x00\xbc\x51\xec\x37\x72\x37\x30\x76\xc3\xd7\ -\xd1\xaf\x19\x2a\xf5\x32\x00\xb2\x02\xc8\xa6\x44\x60\x50\x85\xc3\ -\x96\xda\x41\xa8\xcc\xdd\x16\x73\xe3\x60\xaf\xb5\x0c\x12\xff\x05\ -\x5f\x45\x81\xe8\xf6\xed\xff\x29\x3c\x64\x0e\xd1\x77\xa1\xcd\x66\ -\x8b\xe2\xef\xe9\xd1\xae\x90\xc8\x53\x30\x32\x41\x90\x04\x55\x40\ -\x00\x90\x7c\xe3\x41\x67\x3c\x04\x65\xb7\xf4\x76\x5b\xdc\x6e\xa7\ -\x73\xa4\xe7\x43\xad\xc6\x16\xe8\xbb\x50\x28\x14\x3e\x02\xf0\xac\ -\xe2\x3f\x01\x06\x00\x38\x2c\x0f\x54\xe7\x24\x21\xce\x00\x00\x00\ -\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x0b\xfc\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x33\xcd\ +\x50\xb2\x00\x00\x03\xaa\x49\x44\x41\x54\x78\xda\xbc\x97\x79\x48\ +\x55\x41\x14\xc6\xef\xb3\x97\x95\x59\xbd\x0a\x23\xa4\xc0\x25\xa2\ +\x3d\x21\x25\x69\x83\xc8\x32\x5b\xa0\x7d\xfb\xa3\x32\x5a\x6c\x7b\ +\x24\x45\x44\x86\x96\x45\x96\x08\x91\x11\x51\x08\x69\x54\x58\x58\ +\xfd\x51\x54\x44\xb6\x40\x94\x94\xa4\x66\x46\x84\x6d\x26\x11\x91\ +\xf9\xd0\x32\xb5\xb4\xbe\x13\xdf\x95\xe1\x72\xdf\x72\x5f\xcf\x0e\ +\xfc\x98\xb9\x33\xf7\xce\x7c\x33\xef\xcc\x99\xf3\x6c\x4e\xa7\xd3\ +\xa6\x69\x9a\x13\x6c\x00\xe1\x9a\x7f\x76\x17\x2c\xca\xcd\xcd\x6d\ +\xb3\xfa\xa1\x0d\x02\x76\xa1\xcc\x02\xcd\x20\x1f\x54\xb0\xee\x8b\ +\x85\x80\xe3\xac\x17\x80\x64\x88\xf8\x6d\x45\x80\x1d\x6c\x07\xdf\ +\xc0\x14\x7c\x5c\x66\xe5\x63\x88\x77\x50\xc0\x7b\xb0\x0a\xd4\x83\ +\x54\xab\x3b\x20\x8a\x0f\x83\x83\xa0\x1f\x70\x71\x07\x06\x1a\xde\ +\xfd\x04\xba\x03\x07\x9f\x9b\x89\x4c\xba\x14\xac\x04\xb3\x41\x3a\ +\x16\xb2\xdf\x57\x01\x41\x2c\x4b\xc1\x1a\xf0\x16\x6c\x03\xf1\xac\ +\xab\xc4\xb3\x4f\x7f\x2e\x54\xc6\x69\x05\x4b\xe8\x0b\x99\x58\xd4\ +\x66\xab\x02\x7e\x81\x12\xb0\x0f\xbc\xe3\x2a\xa5\xbe\x15\x4c\x67\ +\xdd\xc1\xbe\xb9\x60\x1d\xfd\xa5\xc3\xb0\xea\x26\x14\xf3\xc0\x63\ +\x79\x84\x88\xe5\x56\x04\x68\x5c\x61\x06\x38\x0d\xae\xb0\x9e\xc0\ +\xdd\xc9\x60\x9b\xf4\xd5\x82\x51\x60\xb5\xc1\x97\x44\x44\x03\x8a\ +\x99\xe0\x85\x38\x25\x44\xcc\xb2\x22\xe0\x3e\x1d\x28\x95\x3f\x47\ +\x24\xb8\xce\x95\x47\x2a\xc8\xe0\x99\x60\x19\xd0\x8f\x5d\x8c\xb2\ +\x13\xe2\x13\xd3\x40\x0d\x28\x82\x88\x89\xbe\x38\xe1\x7c\x10\x01\ +\x8e\xb0\xbd\x02\x03\xc5\xb0\x4f\x8e\x56\xbe\x87\x93\x50\xc7\x1d\ +\x98\x80\xf7\xaa\x94\xf6\x41\x28\x1e\x81\xde\x60\x32\xfa\x9e\x79\ +\x13\x70\x03\xf4\x30\x79\xa7\x09\x1f\xb7\x7a\x10\x90\x4e\x1f\x69\ +\x04\x79\xa0\x12\xe8\xb1\x60\x08\x48\x03\x9f\x41\x2c\xc6\xf9\x60\ +\x16\x07\x74\x13\xe7\xda\x62\x32\xc7\x21\x4c\x12\xaa\xf4\x55\x63\ +\xa0\xb5\x4a\xff\x01\xf0\x13\xa4\xf0\x94\xd8\x4c\xc6\x18\x00\xa2\ +\x81\x47\x01\x0d\xf4\x72\xa3\xb5\x73\x02\xbd\xef\xa3\xc1\xfb\xdb\ +\x19\x49\xb3\x3c\x04\xab\x7a\x5f\x9c\x30\x8c\xce\x24\xec\xa6\x13\ +\x49\x3d\x9b\x5b\x1c\x8d\xc9\xc4\xf3\x63\x31\x68\x39\xc8\xd3\x02\ +\x60\xea\x0e\xc8\xf1\xba\xc3\x9d\xe8\xcf\xe7\x7b\x4a\xff\x0f\x96\ +\x25\x8c\x98\xd5\x81\x16\x30\x42\xce\x3d\x56\x39\x06\xab\x93\xd8\ +\xde\x87\xed\x9b\xd0\x76\x5e\xd9\xf2\x4c\x2d\x80\xa6\x0a\x90\x95\ +\xb5\xe8\x8e\x07\xba\xb1\x5e\xae\x75\xa2\xd9\x95\x95\xc9\x4d\x58\ +\xc6\xfa\x09\xed\x3f\x99\xdd\x87\x2b\x37\x96\xc9\x4a\x98\x9f\x73\ +\x74\xd5\x8f\x2b\xc6\xfa\xc2\xba\x94\x79\x58\x68\x89\xdd\xcb\xe4\ +\x89\x28\xae\x2a\x83\xfc\x8b\x19\x43\x72\x32\xc6\x5f\x10\xe4\xe5\ +\xa3\xec\x00\x4d\xee\x2e\x04\xe4\x78\x13\x30\xd2\xa4\x4d\x76\x24\ +\x09\x3c\xe7\xf3\x6b\x20\xb7\x5e\x31\x9f\x9f\x32\x3a\x36\x32\x4b\ +\x4a\x60\x88\xae\x30\xdc\xa0\x7f\x43\xb5\x37\x01\x5d\x0c\xcf\x12\ +\xe3\x25\xf6\x8f\x05\x67\xd9\xf6\x15\x54\x31\x14\xb7\x30\xdc\xbe\ +\x02\x37\xc1\x4b\x70\x9b\x42\x5c\xbc\x9c\xdc\x46\x42\x5f\xac\x90\ +\xce\x28\xd7\xed\x39\x0a\x92\x44\x24\x0e\x4c\x65\x38\x6e\xe2\x0d\ +\x38\x07\x04\x83\xbd\xfc\x19\xbf\x33\x89\xf5\x5b\x40\x1b\x13\x93\ +\x71\xe0\x21\x6f\xce\x62\x46\xce\x5e\xf4\x97\x02\xfe\x34\xa1\xec\ +\xbf\xc5\xf8\x92\x43\x61\x3d\x2d\x1f\x43\xc5\x4e\x81\x61\xca\xa5\ +\x23\x93\x9e\x01\x89\x5c\xa9\x83\x22\x56\x80\x3d\x4c\x66\x5c\xec\ +\xab\x63\xf8\x0e\xb6\x2a\xc0\xa5\x64\xc1\xa3\x99\xf5\x76\x1c\x23\ +\xf0\x04\x0c\xa5\x4f\x88\x2d\xe6\xea\xa3\x18\x49\x1f\x80\xf5\x4c\ +\xd3\x6a\x98\xca\xa9\xd6\xe2\x4d\xc0\x05\x06\x21\xb1\x49\x86\xbe\ +\xbe\x60\x86\xc9\x37\x49\x4a\x3d\x42\xa9\x47\x11\xd5\x2e\x06\xb9\ +\xf1\x76\xdd\x76\x80\xcb\x9d\x14\x07\xae\x49\xd6\xad\xef\x80\x6c\ +\xcd\x25\xe3\x1b\x08\x95\xf2\x8f\x69\x21\x22\x56\x38\xb3\x1a\x7f\ +\x4c\x76\xee\x18\x53\xf9\x52\x3d\x14\x63\xec\x5a\x3d\x27\x74\xd1\ +\xc3\xe3\xd0\xf8\x26\x90\x4b\xc4\xd8\x21\xcc\x31\xc6\x8b\x9f\x98\ +\x25\xa6\xb2\x03\x27\xc1\x4e\x51\x87\x0f\x8e\x32\xa9\x6c\x0f\xc0\ +\xfc\x83\xc1\x46\x30\x9c\xc7\xb6\xd2\xdd\x6d\x98\xc6\x80\x92\xc2\ +\xa0\x11\x48\x93\x5c\xb2\x88\x49\x8d\xe9\xbf\xe6\x3f\x02\x0c\x00\ +\x19\xca\x22\x70\x0c\xa6\x9f\x87\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x06\xbb\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ @@ -922,166 +887,205 @@ \x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ \x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ \x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\ -\x34\x65\x39\x38\x62\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\ -\x62\x62\x33\x65\x2d\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\ -\x34\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x45\x46\x34\ -\x34\x46\x42\x41\x46\x46\x42\x33\x37\x31\x31\x45\x32\x39\x31\x41\ -\x33\x38\x44\x31\x43\x33\x43\x30\x31\x35\x39\x34\x44\x22\x20\x78\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x37\x34\x35\ +\x38\x33\x43\x33\x39\x35\x39\x38\x35\x31\x31\x45\x33\x41\x31\x43\ +\x32\x46\x42\x37\x41\x42\x30\x37\x44\x42\x42\x38\x37\x22\x20\x78\ \x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ -\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x45\x46\x34\x34\x46\x42\x41\ -\x45\x46\x42\x33\x37\x31\x31\x45\x32\x39\x31\x41\x33\x38\x44\x31\ -\x43\x33\x43\x30\x31\x35\x39\x34\x44\x22\x20\x78\x6d\x70\x3a\x43\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x37\x34\x35\x38\x33\x43\x33\ +\x38\x35\x39\x38\x35\x31\x31\x45\x33\x41\x31\x43\x32\x46\x42\x37\ +\x41\x42\x30\x37\x44\x42\x42\x38\x37\x22\x20\x78\x6d\x70\x3a\x43\ \x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ \x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ \x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ \x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ \x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x69\x69\x64\x3a\x30\x62\x33\x38\x38\x36\x38\x39\ -\x2d\x35\x62\x30\x34\x2d\x64\x66\x34\x35\x2d\x62\x34\x32\x38\x2d\ -\x32\x31\x33\x61\x62\x36\x62\x35\x38\x37\x38\x32\x22\x20\x73\x74\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x63\x31\x65\x61\x38\x31\x32\x35\ +\x2d\x65\x62\x64\x64\x2d\x63\x38\x34\x62\x2d\x39\x66\x37\x61\x2d\ +\x30\x36\x39\x39\x32\x39\x38\x64\x62\x39\x33\x63\x22\x20\x73\x74\ \x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\x34\x65\x39\x38\x62\ -\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\x62\x62\x33\x65\x2d\ -\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\x34\x22\x2f\x3e\x20\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ \x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ \x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ \x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ -\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\xf5\x19\ -\xe3\x80\x00\x00\x08\x21\x49\x44\x41\x54\x78\xda\xac\x57\x69\x70\ -\x14\xc7\x15\x7e\x3b\x33\x3b\x7b\x0a\x21\x69\x25\x74\x9f\xe8\x42\ -\xe8\xb0\x0e\x30\x08\x61\x4c\x24\x40\x10\x14\x14\x08\xa0\x32\xb1\ -\x1d\xa7\x62\x3b\x55\x51\x7e\x38\xb6\x7f\x38\xe5\xaa\xfc\x48\x55\ -\x62\x92\xb2\x5d\x15\x70\xd9\x4e\x8a\x40\x19\x0c\x01\x83\x2d\xb0\ -\xac\x80\x31\x20\x11\x71\x58\x27\x42\x02\x5d\xe8\xbe\x0f\x74\xad\ -\x76\x57\xbb\xb3\xb3\xf9\x7a\x24\x11\x2c\x63\x49\xc4\xee\xaa\xae\ -\x9d\xee\x99\xee\xf7\xf5\xf7\xbe\xf7\x5e\xaf\xaa\xb3\xb3\x93\x4a\ -\x8a\x8b\x29\x38\x62\xb9\xce\xcd\xdd\x3d\x4d\x76\xca\x5a\x22\x52\ -\xd1\xe2\x1a\xfb\xce\xc5\xf1\x5c\x57\x4b\xfd\xdd\x3a\xbb\xdd\x4e\ -\x1c\xc7\xd1\x62\x9b\xaf\xaf\x2f\x09\x57\x2e\x5f\xa6\xbf\xfd\xe3\ -\x50\x42\xca\xda\x75\x07\x74\x7a\xc3\x6a\xcc\xdb\xd1\x27\x16\x09\ -\xc2\x25\x39\x1c\x06\x9e\xe7\x07\x1b\x6a\x6f\xe7\x5d\x28\x38\x5d\ -\x86\xf1\xa2\x01\x6c\xd9\xb2\x85\x84\xd0\xe5\x51\xa6\x94\x35\xeb\ -\x0e\xe9\xf5\xc6\x94\xfe\xde\xee\x83\x15\xd7\xae\x7e\x34\x3e\x3a\ -\xba\x58\x00\xf2\xfa\x4d\xd9\x47\x7c\x03\x02\xd3\x56\xa6\xa4\x9e\ -\x6d\x6d\xac\xcf\xbc\x5b\x53\x5d\x47\x8f\xd1\x04\xd0\xbe\x56\x67\ -\x30\xa6\xf4\xf5\x74\xbd\x7d\xec\xfd\x03\xbf\xa3\xc7\x6c\x36\xab\ -\xd5\xc6\x0b\xc2\x25\x9c\x3c\x21\x33\x27\xb7\xc0\x66\xb5\x64\xb6\ -\x36\x35\xb6\x2d\x1a\x80\x2c\xcb\x6e\x92\xe4\xb0\xb4\x37\x37\x1d\ -\xdc\xb1\xef\xb9\xe7\x44\x51\x8c\xf8\xb2\xe0\xd3\xbf\xc6\x26\x24\ -\x6d\x0e\x0c\x0b\x4b\x92\x1c\x92\x53\x50\x0b\x7c\x57\x6b\x6b\x35\ -\x4e\x77\x3e\xeb\x27\xb9\xbf\xc5\x9c\x16\x73\x66\x7c\xf7\x8e\x4a\ -\xa5\x12\x7b\x3a\xda\xbf\xba\x3f\x34\xf8\x46\xd2\xaa\x35\x25\xdb\ -\xf7\xee\xfb\xec\xdc\x89\xa3\x9b\x00\x62\x60\x51\x00\xd0\x39\x97\ -\x2c\x8f\xd9\xa7\xa6\xc6\xc2\xa3\x62\x9e\x14\x45\x4d\x32\xc7\x17\ -\xec\xf7\xf6\xf5\x8b\x0b\x8b\x8a\xc9\x74\xc9\x2e\x3d\x2f\xf0\xd2\ -\x94\xd5\xe6\x68\xa8\xad\x29\x8a\x88\x59\xb1\xd5\x29\x39\x8d\x2a\ -\x4e\xd5\x23\x6a\x34\xef\x61\xbd\x13\xe2\x73\x3b\xff\xd9\xe9\x9b\ -\x58\x9b\xbb\x22\x29\xf9\x73\x80\x38\x03\x10\xd9\x00\x31\xb1\x10\ -\x80\x07\x92\xe5\x20\x65\xfc\x74\x3b\x1c\x8e\xae\xec\x9d\x7b\x0e\ -\x07\x84\x86\xc5\x61\xdc\x59\x74\xfa\x5f\x5b\xc1\xce\xdb\x21\xcb\ -\x23\x13\xb7\xe7\xed\x3b\x8a\xe7\xbf\x60\xee\xa7\x82\x5a\x3d\x88\ -\xf7\x12\xd3\x0a\x44\x28\xe3\x10\x54\x78\xea\xf8\x17\x77\xaa\x2b\ -\x77\xeb\x0d\xc6\x74\x80\x38\x19\x16\x19\xa5\x59\x0c\x03\xa4\x42\ -\xe8\x58\x2d\x66\x6a\xaa\xab\x25\x17\xb9\x64\x6c\xee\x34\x8f\x8f\ -\x69\x01\x8a\x1a\xeb\x6e\xdb\xb0\xa1\xe0\x94\x9d\x3a\x9e\xe3\x55\ -\x2d\x0d\xf5\x6a\x9c\x8c\xc7\xaf\x0e\xac\x71\x58\xcb\x18\xf4\x62\ -\xfb\x38\x9d\x4e\x06\xe2\x13\x3c\x3e\x0f\x26\x0e\x03\xc4\x47\x60\ -\x22\x0f\xdf\x3b\xe7\x05\xa0\x80\x50\x71\xa4\x16\x45\xb6\x91\x09\ -\x00\xa8\xa3\xa5\xf9\x15\xa0\x09\xd8\xf3\xcb\x97\x0e\x7e\x7e\xf2\ -\xe3\xdd\x37\x4b\x2e\xff\xf3\xe1\x85\xc7\x3f\x7c\x6f\xd7\x6c\x24\ -\xf8\x05\x87\x64\x85\x45\x46\xbb\xb7\x36\x35\x8c\x31\x10\x67\x4f\ -\x1c\x3d\x02\xb7\x68\x57\x26\xa7\xbc\x0f\x10\xa3\x00\xf1\x22\x40\ -\xcc\xef\x82\x99\xb0\x63\x21\x54\x8e\x4d\xca\x96\x7a\x7a\xd9\x97\ -\x7a\x79\x8d\x4f\x4d\xd9\x6e\x40\x68\xdf\x49\x21\xcf\x71\x5f\x68\ -\xb4\xda\xa0\x6d\xbb\xf3\x8e\xc7\x26\x26\x25\x04\x84\x84\xba\xf9\ -\x07\x87\x18\xee\x54\x57\x1c\x1a\x1e\x18\xf8\x23\xde\xfd\x2a\x63\ -\x53\xf6\x5b\xf8\x15\xe7\x65\xc0\xe5\x92\x39\x87\xdd\x7e\x0b\x8f\ -\x3d\x70\x03\x41\x60\xd1\x6c\x7a\x72\x62\xe2\x9a\xa7\xc9\x47\x7c\ -\x6a\xf3\xb6\x2c\x8c\x0d\x50\xbf\xeb\x52\xe1\xb9\x8b\x43\xfd\x7d\ -\x23\x6c\x5d\xf9\xb5\xab\xef\xfa\x06\x06\xa5\xe8\xf4\xfa\x1d\x39\ -\x79\x3f\xcf\x66\x3a\x62\xac\x40\xbc\x2e\x44\x97\xcc\x12\x93\xb7\ -\xaf\xff\xeb\xe8\x27\xba\xda\x5a\xaa\x1e\x09\x80\x09\x48\xa7\x37\ -\x4a\x91\x71\x2b\x5f\xc3\x30\x83\x53\x1a\xaf\xc1\x06\x56\x8c\x6f\ -\x38\xa6\xec\xcf\x84\x46\x46\xbd\x89\xc9\x68\xb8\xc9\x51\x72\xe1\ -\xdf\x6b\x30\xaf\x00\x80\x16\xcc\xc7\x3e\x38\xb0\x33\x65\x4d\x46\ -\xc6\x12\x0f\x8f\x70\xd9\xe9\x7c\x58\x78\x12\x4e\xbe\xcc\x3f\x24\ -\xf4\x0f\x38\xa0\x6e\x31\x0c\x14\xc3\xff\xa3\x6d\x4d\x8d\xb5\xb5\ -\x95\xe5\x45\xd9\xbb\xf6\xbc\x8c\x13\xf0\xa0\xf6\x75\x97\xcb\x55\ -\xd6\xde\xdc\xfc\x2a\xc2\xcf\x3b\x73\xfb\x8e\x67\xed\x53\xb6\xfb\ -\x60\xe2\x30\x98\x18\x03\xd5\x32\xd2\x70\x31\xb6\x29\x9e\x6b\x60\ -\x59\x40\x40\xe8\xf3\xf9\xaf\xfc\x7e\x41\x11\x32\x0c\xe8\x31\x50\ -\x75\x2a\x04\x69\xc6\xa0\x03\xe3\x78\x74\x0f\x8c\xdd\x34\x1a\xad\ -\x13\x46\x8f\x60\x6c\x04\x53\x7b\x21\xff\x91\x1b\x57\x2e\x9d\xc2\ -\x78\x6c\xde\x30\x13\xd4\xfa\x05\xc3\x70\x36\x0a\x74\x06\xc3\xfd\ -\x8e\x7b\xcd\x7f\x02\xcd\x8d\x3b\x9f\x7d\xe1\x18\xd2\xea\x28\xe6\ -\x2a\xbe\x2c\x38\xf3\x26\x4e\xea\xb2\x4c\x4e\xca\xf8\xb4\xa2\xf2\ -\x46\xe9\xc7\x0c\xf0\x40\x6f\x8f\x4c\xdf\xb3\x3d\xc8\x03\x30\x46\ -\xa0\xde\x13\xe1\xc7\xd4\xaa\x82\xff\x4d\xa0\x9f\xe5\x84\x41\x84\ -\x97\x34\x3a\x3c\xfc\x60\x11\x9e\x9c\xf4\x03\x35\x61\x9a\x26\x81\ -\x06\xfa\xba\xd5\xd5\x5f\x5f\xcf\x9f\x7d\x01\x7a\x37\xfc\x10\x06\ -\x58\x9d\x01\xbd\x34\x23\xe8\xf9\x5d\xf0\xa8\xe6\xe5\xe3\x43\x50\ -\xf8\x46\x28\x3c\x19\x0a\x57\xcf\x68\x65\xb1\xcd\x89\x28\xf0\x9b\ -\xb2\x58\x84\x8d\x5b\x73\x5e\x9c\xb2\xd9\x5a\xa6\x65\xa1\x6e\x2f\ -\xb9\x50\x74\xd6\x66\xb3\x99\x85\xf9\x56\x7b\x9a\xbc\xb9\x67\x5e\ -\xfa\xcd\x9f\x91\x13\x5e\x43\xd5\xfc\xbf\x18\x40\x3e\x20\xc9\x61\ -\x27\xdf\x80\xa0\x97\x11\x41\x33\x75\x87\xa3\xec\x9f\xed\x2d\x15\ -\x1d\xb6\xdc\x79\x01\xa4\xa6\x67\xac\x65\xc6\xad\x16\x0b\x49\x48\ -\xb1\x6a\xb8\x8a\x65\x45\x87\x24\xcd\x84\xae\x4b\xe9\x0f\xb2\x22\ -\xcf\x2b\xf5\x60\xb6\xa9\x91\xd2\x39\x96\x45\xd1\x2d\xd0\x18\x5b\ -\xaf\xbc\xc7\x18\x51\x95\x9e\x9c\x9a\x96\x3f\x2f\x00\x77\x0f\xcf\ -\x64\x76\xcf\xf3\x5b\xe6\x43\xdb\x36\x6e\xa0\x53\x85\x45\x34\x38\ -\x7c\x9f\x72\xb3\x37\x61\x33\x35\xf9\x78\x79\x92\x9b\xd1\xa0\x80\ -\x60\xc6\xae\x57\x54\x51\x4a\x7c\x9c\xf2\xcc\xda\xa9\x73\x45\xd4\ -\xd4\xd6\x46\x22\xbe\x7d\x7a\xed\x93\xf8\xde\x8b\x90\x49\xa9\xb4\ -\xac\x82\x9a\x5b\xdb\x98\x2e\xd2\xe6\xbd\x41\x02\x2d\x2f\x83\x42\ -\x37\x83\x81\xa2\x22\xc2\x50\x2c\x54\xc4\x5c\x11\x1e\x1c\x4c\x46\ -\x83\x9e\x8a\xae\x14\xd3\xb8\xd9\x4c\x06\xbd\x9e\x3e\x01\x38\x59\ -\x76\x52\xa0\xbf\x1f\x15\x7e\x75\x85\x0a\xce\x5f\xa4\xde\x81\x01\ -\xb2\xdb\x1d\x0a\x48\x06\xe0\x3f\x65\xe5\x24\x80\xa5\xb4\xc4\x78\ -\x85\x51\x25\x00\x17\x72\xe1\x34\x95\x02\x4d\x5a\xac\x34\x69\xb5\ -\x2a\x2e\x60\xe3\xd1\xf1\x09\xaa\xae\xbb\x4b\x3d\xfd\x83\xe8\x03\ -\xf4\x75\x55\x0d\x8d\x4f\x98\x15\xff\x66\xad\x4f\xa7\xa4\xb8\x58\ -\xf2\x31\x99\x68\xf5\x13\x89\xc4\xae\x1a\x7d\x03\x83\xb4\x61\xcd\ -\x6a\x0a\xc4\x4d\xb8\xe1\x5e\xeb\xec\xed\xd9\xb5\xe0\x1d\x9a\x15\ -\x26\xbd\x4e\x87\x53\xea\x14\xaa\xd9\xf3\x32\x93\x17\x59\xa0\x0b\ -\x8d\x28\x92\x56\x23\x12\x2e\x31\xf0\xa9\x48\x46\xa3\x51\x01\x71\ -\xa1\xe4\x2a\x95\xd7\xd4\x32\x57\x2b\x7a\x49\x8c\x8d\x25\x13\xdc\ -\x75\xf8\xe4\x69\xba\xd7\xde\x41\xab\x92\x12\x68\x56\xd4\xc2\x42\ -\x37\x26\x26\xac\xf6\xae\x6e\x85\x81\x37\xf2\x7f\xad\x4c\x32\x26\ -\x6e\xd7\x37\xa2\x14\xf3\xe4\xe9\xee\xae\x8c\x19\xb8\xa5\x4b\x96\ -\x28\xd4\x56\xc0\xb8\x28\x88\x4a\x81\x67\x1a\x8a\x8e\x08\xa7\xf4\ -\x55\x29\xb4\x6e\x55\x1a\x79\x9b\x3c\xe9\x16\x98\x9b\x29\xf1\xdc\ -\xbc\x00\x60\x7c\x84\xf9\xac\x7f\x70\x88\xde\xf9\xfb\x21\x0a\x0e\ -\xf0\x57\xe6\x3b\xba\x7b\x14\x17\xe8\x75\x5a\x2a\xba\x5c\x42\x76\ -\x84\x99\x11\x3a\x28\xbf\x55\x43\x77\x1a\x9b\x48\xaf\xd5\xcd\x1a\ -\x50\x94\xdf\xd6\xd5\x45\x1f\x1e\x3d\x41\x7e\x3e\xde\x54\x78\xf1\ -\x32\xd6\xf7\x92\xc8\x22\x84\xe7\xcd\x73\x8b\xd1\x37\x5a\x5d\x75\ -\xe5\xc5\xf0\x98\xd8\x5e\xa7\x24\xf9\x8d\xc1\x60\xd5\xc8\x9d\x69\ -\xda\x00\x8a\x75\xd6\xda\xbb\xbb\xa7\x75\x01\x43\x7d\x00\xca\xa8\ -\x15\x67\xa2\xe0\x41\xb6\xe3\x05\xea\x1f\x1a\x82\x56\xfa\x15\xdf\ -\x2b\xeb\xf1\xcd\xf8\xe8\xc8\x51\x61\xc6\xb0\x00\xc5\x7f\xeb\xda\ -\x83\xfb\x60\x67\xd5\xf5\xd2\x5d\xd1\xf1\x89\xfb\xf5\x06\x43\x34\ -\x36\xff\x16\x63\x28\x5c\xff\x33\x34\xc7\xf0\xf4\x3f\x27\x09\xc9\ -\xc8\xe9\xa1\xd5\x68\xcd\x48\x44\xec\x6f\x93\x0a\xdf\xf5\x97\x95\ -\x5e\x3d\xd8\x52\x69\xff\x94\x6d\xc8\xe2\xc1\x14\x97\x94\x1c\xd9\ -\xd7\xd5\xd9\xf3\x8d\x3c\x0e\x71\x5d\x28\x38\x73\xad\xe2\x7a\xe9\ -\x7a\x00\x08\x7e\x14\x80\xef\x14\xaf\x8b\x65\x40\x87\xed\xe9\xad\ -\x39\x3b\x83\xc3\xc3\xdf\x45\x45\xfd\xc5\x60\x7f\x5f\xd5\x74\xed\ -\xe3\xfa\x3b\x5b\x5b\x26\xb2\xb2\xb2\x48\xc0\xa0\x03\x39\xde\x11\ -\x93\x90\xb4\xbf\xb7\xab\x33\xb7\xe1\xf6\xad\x9e\x87\xb3\x99\x52\ -\xfd\x06\xfa\x65\x54\xc0\xb6\xc7\x4d\xc3\x91\x2b\x56\x06\x2e\xf5\ -\xf2\x7c\x01\x3e\xb2\xf5\xf5\x74\x97\xe2\x80\xbd\x73\x34\x46\xc2\ -\xc8\xf0\xf0\xcd\xe1\xa1\xa1\x0f\x8c\x4b\x96\xe4\xff\x68\x7b\x6e\ -\x6d\x6c\x52\x72\x21\xfe\x6e\xf5\xce\xb9\xb0\x3e\x6e\x93\xb5\x3a\ -\x5d\x90\x7f\x50\xc8\x8f\x71\x39\x34\xde\xab\xaf\x7f\x6b\xae\x71\ -\xd6\xac\x88\x1e\x41\xb2\x59\x24\x9d\xcb\xf1\xea\x13\xf1\x71\x0d\ -\xa0\x2c\x27\x3e\x26\x2a\x04\x1c\x85\x7c\xdf\x32\xcc\xee\x99\x48\ -\xb5\x25\xf0\xf7\x69\x69\x74\xe8\xc8\xe6\xcd\x9b\x69\xee\xed\x3a\ -\x35\x35\x95\xfe\x2b\xc0\x00\xfd\x9e\xd0\xaa\x9d\x63\x34\xae\x00\ -\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x0b\xdd\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x83\x53\ +\x5b\xa8\x00\x00\x02\xe0\x49\x44\x41\x54\x78\xda\xc4\x97\x5d\x88\ +\x4d\x51\x14\x80\xcf\x3d\xf7\xc6\x0c\xe6\x87\x51\x1a\x43\x8d\x14\ +\xae\x19\x3f\xe3\xa7\x1b\xde\x66\x42\x89\x32\xf2\xa0\x79\x98\x97\ +\x21\x0f\xc6\x95\xbc\x88\x46\x24\xc9\x4f\xe8\x26\x2f\x46\x29\x49\ +\x1e\x64\x3c\x90\x78\xf0\xf3\xc2\x2d\xa1\xe6\x0e\x93\x22\xf2\x73\ +\xf3\x30\x4d\x83\x49\x46\x5c\xdf\xd2\xbe\x75\xbb\x73\xf6\xbe\xfb\ +\xdc\xb9\x87\x55\x5f\xeb\xfc\xec\xb3\xd6\x3a\x6b\xaf\xb3\xf7\x3a\ +\x21\xc7\x52\xe2\xf1\x78\x15\xaa\x15\x56\x42\x0c\xa6\xc3\x14\x70\ +\xe1\x3b\xbc\x85\x3e\x78\x00\xd7\x13\x89\xc4\x47\x1b\xbb\x21\x0b\ +\xc7\xf3\x50\x5d\xb0\x09\xca\x2c\xe3\xcd\xc0\x6d\x38\x4e\x20\xf7\ +\x8b\x0a\x00\xc7\x95\xa8\x13\xd0\x01\x61\xa7\x78\xe9\x81\x4e\x5d\ +\x46\x42\x1a\xe7\x8b\x25\x8d\x50\xef\x94\x46\x06\xa0\x8d\x20\xee\ +\xe4\xdf\x08\x7b\x38\x6f\x56\xe9\x9b\xe6\x94\x4e\x26\xc0\x96\x58\ +\x2c\xf6\x26\x99\x4c\xf6\x6a\x33\x80\xf3\x26\x55\x44\x15\x4e\x30\ +\xf2\x1b\x36\x90\x89\x5b\xa3\x02\xc0\x79\x35\xea\x99\x45\xda\x87\ +\xe1\x26\x3c\x86\x34\xfc\x84\x19\xb0\x5c\x8c\x43\x65\x81\xe7\x87\ +\x60\x29\x41\xbc\x96\x93\x48\xce\x8d\xa3\x05\x9c\x7f\x85\xc3\x70\ +\x8e\x87\x87\x35\xb5\x53\x8e\xda\x0e\x07\xa1\x4a\x63\x47\xae\x9f\ +\x67\x6c\x0b\x76\x32\x21\xf5\x60\x23\xea\xb9\xa1\xda\x53\xb0\x31\ +\x1b\xb5\xc5\xa7\x3b\x53\x55\xff\x12\xc3\xb0\x56\xec\xf5\xb8\xea\ +\xe4\x15\x6c\x53\x8e\xf2\xa5\x1f\x9a\x6d\x9d\x8b\x30\xf6\xbd\x3c\ +\xa3\x5e\x4a\x27\xfb\xbd\x8a\x50\xce\x57\xc3\x1e\x58\x03\x23\xd0\ +\x84\xc1\x17\xc5\x54\x1c\xf6\x66\xa3\xa4\xea\xcb\x35\x43\x16\x9a\ +\x16\xa2\x05\xa8\xf9\x38\xbf\x3a\x96\xb2\xc7\xce\x21\xd4\x01\xcd\ +\xed\xae\x90\x13\xb0\x10\x40\x2d\xea\x83\xda\x33\xf2\xe5\xae\x1b\ +\x74\x00\x64\x30\x6d\xa8\x85\x68\x84\x08\xeb\x38\x58\x25\x55\xcb\ +\xe0\x91\x80\xe2\x48\x69\xbe\x88\x5a\xc9\xc0\x1c\x90\x79\xfe\x44\ +\x30\xa7\xa0\x21\x80\x00\x06\x35\xd7\xc3\xb2\x10\x4d\x56\x27\x35\ +\xb0\x5b\x20\x88\x47\xe8\x0b\x12\x18\x59\xf9\x56\x82\x00\x6a\x34\ +\xd7\x7f\x49\x06\xaa\x3d\x6e\xac\x80\x6e\x59\x6a\x09\xa6\x1b\x62\ +\x63\x0c\xa0\x51\x73\x3d\x9d\x9b\x01\x2f\x99\xa4\xfa\x81\x0e\x82\ +\x48\xa9\xac\x5c\x22\x2b\x03\x3e\xbe\x02\xd9\x27\x16\x69\x6e\xbf\ +\x74\x0b\x04\x90\xff\x16\xa7\xe1\x22\x46\xcb\x7c\xbc\xfd\x4e\x43\ +\xe3\xf3\x30\xe2\x23\x80\xcf\x52\x1f\xbc\xfd\x15\x1f\x6f\x1f\x45\ +\xed\x32\x0c\xb9\x11\xd1\xd4\x40\xbe\x5c\x86\x1d\x38\x1f\xf2\xe1\ +\x7c\x2a\xea\x1a\x8c\xd7\x0c\x79\x82\xbd\x5e\xdb\x29\x58\x26\xdf\ +\xac\xcf\x3d\x40\x1a\x9b\xa8\x61\xd8\x91\x6c\x3f\x60\x13\xc0\x5c\ +\x78\x8a\x61\x69\x52\xcf\x10\xf9\xa0\xa1\x91\xed\x84\x7d\x30\xd1\ +\x60\xef\x9e\xa4\xff\xef\x6e\xc8\x43\xfd\xca\x81\xad\xfc\x90\x35\ +\x1c\x92\x6a\x8d\x17\xa9\x53\x1d\xd1\x5a\x8b\xd6\x7d\x54\x47\x94\ +\xcd\xc0\x3b\x38\xa9\x52\x63\x6a\xab\x64\x4e\xd7\x2b\x8a\xe9\x09\ +\xdb\x72\x7b\x0b\x57\xa5\xea\x98\xda\x7a\xcf\xaa\xbe\xee\x4b\x00\ +\xcb\xb1\xf4\x8e\xed\xb9\x0d\x69\x76\x0a\x1a\xb8\xd8\xe7\xd1\x0b\ +\xc8\x1c\xcd\x0a\xfa\xbf\xc0\xd4\x90\x54\xa8\x29\xd9\xaa\xd9\xcb\ +\x83\xfb\x33\xf2\xc8\xc6\x5e\xd8\x0c\xe3\xfe\xd9\xbf\xa1\x66\x61\ +\x59\x07\x2d\x6a\x6d\xaf\xcf\x69\xbd\x8b\xff\x3b\xce\x64\x32\xce\ +\xff\x94\x3f\x02\x0c\x00\xbe\x84\xeb\xde\xd4\xad\xd3\x24\x00\x00\ +\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x07\x88\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ +\x79\x71\xc9\x65\x3c\x00\x00\x03\x71\x69\x54\x58\x74\x58\x4d\x4c\ +\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00\x00\ +\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\ +\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\x57\x35\x4d\ +\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\x4e\x54\x63\ +\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\x6d\x70\x6d\ +\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\x61\x64\x6f\ +\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\x78\x3a\x78\ +\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\x4d\x50\x20\ +\x43\x6f\x72\x65\x20\x35\x2e\x35\x2d\x63\x30\x31\x34\x20\x37\x39\ +\x2e\x31\x35\x31\x34\x38\x31\x2c\x20\x32\x30\x31\x33\x2f\x30\x33\ +\x2f\x31\x33\x2d\x31\x32\x3a\x30\x39\x3a\x31\x35\x20\x20\x20\x20\ +\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x20\ +\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\ +\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\ +\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\x3a\x44\x65\ +\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\x3a\x61\x62\ +\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\ +\x4d\x4d\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\ +\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\ +\x6d\x6d\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x74\x52\x65\x66\ +\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\ +\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\ +\x79\x70\x65\x2f\x52\x65\x73\x6f\x75\x72\x63\x65\x52\x65\x66\x23\ +\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x3d\x22\x68\x74\x74\ +\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ +\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ +\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x30\x31\x43\ +\x33\x45\x33\x41\x37\x35\x39\x38\x35\x31\x31\x45\x33\x42\x46\x41\ +\x33\x46\x46\x39\x46\x44\x38\x42\x31\x45\x45\x45\x30\x22\x20\x78\ +\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x30\x31\x43\x33\x45\x33\x41\ +\x36\x35\x39\x38\x35\x31\x31\x45\x33\x42\x46\x41\x33\x46\x46\x39\ +\x46\x44\x38\x42\x31\x45\x45\x45\x30\x22\x20\x78\x6d\x70\x3a\x43\ +\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ +\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ +\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ +\x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ +\x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x63\x31\x65\x61\x38\x31\x32\x35\ +\x2d\x65\x62\x64\x64\x2d\x63\x38\x34\x62\x2d\x39\x66\x37\x61\x2d\ +\x30\x36\x39\x39\x32\x39\x38\x64\x62\x39\x33\x63\x22\x20\x73\x74\ +\x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ +\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ +\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ +\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x90\x2e\ +\xe6\x71\x00\x00\x03\xad\x49\x44\x41\x54\x78\xda\xbc\x97\x69\x48\ +\x55\x41\x14\xc7\xef\xd3\xd7\x26\x2d\x56\x28\x25\xb6\x88\x49\x54\ +\x52\x7e\x50\xb3\xc5\x28\x69\x5f\xa0\x45\x2a\xa1\x32\xa3\x68\x7f\ +\x24\x45\x44\x82\x96\x85\x96\x08\x81\x12\x51\xbd\xc8\x16\x22\xc2\ +\xea\x43\x1b\xf5\x21\xeb\x4b\x4a\x09\x6a\x52\x10\xd8\x2e\x11\x11\ +\xee\xb8\x96\xf5\x3f\xf0\xbf\x32\x5d\x6e\xef\xde\x6b\xcf\x0e\xfc\ +\x98\xb9\x33\x6f\xce\x9c\x99\x39\x73\xe6\x3c\x97\xc7\xe3\x71\x69\ +\x9a\xe6\x01\xdb\x41\x98\xd6\x3b\x29\x01\xc9\x05\x05\x05\x3f\x9d\ +\x0e\x74\xc1\x80\x43\x28\x73\x41\x3b\x28\x02\x55\xac\xdb\x91\x20\ +\x70\x9a\xf5\xcb\x60\x33\x8c\xf8\xe5\xc4\x00\x37\xd8\x0f\x5a\xc0\ +\x1c\x0c\xae\x70\x32\x18\xc6\x07\xd3\x80\x8f\x60\x13\xa8\x03\xe9\ +\x4e\x77\x40\x2c\x3e\x09\x72\xc0\x08\xd0\xc0\x1d\x18\x65\xf8\xed\ +\x57\x30\x10\x04\xf3\xbb\x9d\xd4\x83\x75\x60\x23\x58\x0e\x32\xb1\ +\x90\x63\x76\x0d\x08\x60\x59\x0e\xb6\x80\xf7\x60\x1f\x48\x60\x5d\ +\x25\x81\x7d\xfa\xf7\x75\x45\x4f\x27\x8d\x10\x5f\xc8\xc6\xa2\x76\ +\x3b\x35\xe0\x07\x28\x03\x47\xc1\x07\xae\x52\xea\x7b\xc1\x02\xd6\ +\x83\xd9\xb7\x02\x6c\xa3\xbf\xf4\x08\x56\xdd\x8a\x62\x25\x78\x2e\ +\x9f\x30\x22\xc5\x89\x01\x1a\x57\x98\x05\x2e\x82\xdb\xac\xcf\xe7\ +\xee\x64\xb1\x4d\xfa\x6a\x41\xb4\x38\x9c\xc1\x97\xc4\x88\x26\x14\ +\x8b\xc1\x6b\x70\x09\x46\x2c\x75\x62\xc0\x53\x3a\x50\x3a\x8f\x23\ +\x02\xdc\xe7\xca\x23\x14\x44\x79\x36\x58\x0f\xf4\x6b\x17\xa3\xec\ +\x84\xf8\x44\x12\xf8\x04\x8a\x61\xc4\x2c\x3b\x4e\xb8\x0a\x8c\x07\ +\xa7\xd8\x5e\x05\x45\x31\xec\x4b\x43\xbd\xc8\xc7\x4d\x10\xcf\x0f\ +\x04\x33\xf1\xbb\x57\x4a\x7b\x38\x8a\x52\x30\x14\x24\xa2\xef\xa5\ +\x95\x01\x0f\xc0\x20\x93\xdf\xb4\x62\x70\xa7\x0f\x03\x32\xe9\x23\ +\xcd\xc0\x0b\xaa\x81\x1e\x0b\x26\x80\x0c\xf0\x0d\xc4\x42\xcf\x67\ +\xb3\x38\xa0\x8b\x38\xd7\x1e\x93\x39\x4e\x60\x92\xc1\x4a\x5f\x0d\ +\x14\x6d\x55\xfa\x8f\x83\x2e\xb0\x83\xb7\xc4\x65\xa2\x23\x14\x44\ +\x02\x9f\x06\x34\xd1\xcb\x8d\xd2\xcd\x09\xf4\xbe\x2f\x06\xef\xef\ +\x66\x24\xcd\xf5\x11\xac\xea\xed\x38\x61\x08\x9d\x49\x38\x4c\x27\ +\x92\x7a\x1e\xb7\x38\x12\x93\x89\xe7\xc7\x42\x69\x25\xf0\x6a\x7e\ +\x10\x75\x07\xe4\x7a\x3d\xe6\x4e\x8c\xe4\xf7\x13\xa5\xbf\x8d\x65\ +\x19\x23\x66\x8d\xbf\x0d\x98\x2c\xf7\x1e\xab\x9c\x8a\xd5\x49\x6c\ +\x1f\xc6\xf6\x5d\x68\xbb\xa6\x6c\x79\xb6\xe6\x47\x51\x0d\x90\x95\ +\x75\xe8\x8e\x07\x06\xb0\x5e\xa9\xf5\xa1\xb8\x95\x95\xc9\x4b\x58\ +\xc1\xfa\x19\xed\x3f\x89\xdb\xc6\x93\x1b\xcb\x64\x25\xa4\x97\x73\ +\xf4\xd3\xaf\x2b\x74\x7d\x67\x5d\x4a\x2f\x16\x5a\xe6\xb6\x98\x7c\ +\x11\x8a\x3b\x8a\x92\x7f\x11\x63\x48\x4e\x83\xfe\xd5\x01\x16\x83\ +\xf2\xfc\x34\xf9\xdf\x42\x40\xbe\x95\x01\x53\x58\x5e\x01\xaa\x5f\ +\xa4\x82\x7b\x60\x1e\x58\xc6\x67\x58\xea\x0f\x59\x4a\x68\x5f\x08\ +\xde\x2a\x63\x6e\xb2\x3d\x19\xbc\xd1\x43\xb5\x95\x01\x81\x2c\xab\ +\x0d\x61\x54\x8e\x25\x8a\x09\x48\x28\x9f\xe0\x12\x25\x97\x94\xa7\ +\xfb\x11\xc3\x6f\xcf\x89\x82\xab\x60\x09\xdf\x0c\x7b\x4e\x48\x69\ +\xe6\x6b\xa9\x4b\x8b\x12\x27\x1a\x95\x47\xac\x93\x01\x4a\x9e\xf4\ +\x70\xe6\x9b\xba\xac\x65\x0e\x21\x21\xfd\x82\x59\x28\xb6\x32\xa0\ +\x3f\xeb\x75\xf0\xde\x2e\x25\x37\x6c\x53\xea\xad\x0c\x68\xf2\x28\ +\x6d\x90\xa4\x84\x93\xde\xe2\xf1\xe4\xf3\xb8\xce\x3b\xdd\x81\x78\ +\x70\x0e\x0c\x91\xc4\x05\xde\x9b\xa4\x04\xaa\x46\xc3\x83\x36\x1a\ +\x8c\x53\x7c\x25\x95\xef\x8a\x24\xbb\x2f\x98\xf6\xc7\xdb\x35\x40\ +\x5e\xb1\xe1\x3c\xbf\x19\xcc\x86\x52\x98\x27\xea\x92\xc3\x14\x4d\ +\xa3\xe3\xcd\x36\xd1\x33\x96\x19\x57\x29\xf3\xcc\x44\xb6\x77\x58\ +\x19\x70\x83\x41\x48\x24\x8e\x18\x65\xae\x52\x9f\xe8\x43\x57\x14\ +\xf9\x43\x7f\x80\xc1\xdb\x8d\x72\x80\xe7\xd7\x17\x72\x57\x76\x43\ +\xdf\x81\x68\xde\x53\xcd\x90\x6c\x88\xb7\xaf\xc1\x99\x87\xf1\xba\ +\xf5\x46\xe4\x48\x0a\x99\xca\x97\xeb\xa1\x18\xba\x6b\xf5\x9c\xb0\ +\x81\xd9\x6d\x1c\x1a\xdf\xf9\x73\x89\xd0\x1d\xc4\x1c\x63\x3a\x98\ +\x66\x96\x98\xca\x0e\x9c\x05\x07\xe5\x0f\x05\x06\x14\x32\xe8\x74\ +\xfb\x61\xfe\x31\x60\x27\x98\x04\x9e\x51\xaf\xe9\x6b\x98\xc1\x2c\ +\x56\x92\xca\x23\x7e\x3e\x67\x89\x17\xc5\x4c\x6a\x4c\xff\x35\xff\ +\x16\x60\x00\x9d\x8f\x25\xe2\xca\x2c\x04\xd4\x00\x00\x00\x00\x49\ +\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x06\xed\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ @@ -1116,163 +1120,621 @@ \x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ \x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ \x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\ -\x34\x65\x39\x38\x62\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\ -\x62\x62\x33\x65\x2d\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\ -\x34\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ -\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x46\x45\x41\ -\x33\x45\x41\x46\x33\x46\x42\x33\x36\x31\x31\x45\x32\x38\x32\x41\ -\x46\x42\x43\x32\x46\x33\x38\x39\x30\x41\x43\x34\x36\x22\x20\x78\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x36\x31\x41\ +\x31\x30\x32\x43\x34\x35\x39\x38\x35\x31\x31\x45\x33\x42\x46\x35\ +\x45\x43\x42\x45\x34\x45\x41\x32\x36\x32\x30\x45\x41\x22\x20\x78\ \x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ -\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x46\x45\x41\x33\x45\x41\x46\ -\x32\x46\x42\x33\x36\x31\x31\x45\x32\x38\x32\x41\x46\x42\x43\x32\ -\x46\x33\x38\x39\x30\x41\x43\x34\x36\x22\x20\x78\x6d\x70\x3a\x43\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x36\x31\x41\x31\x30\x32\x43\ +\x33\x35\x39\x38\x35\x31\x31\x45\x33\x42\x46\x35\x45\x43\x42\x45\ +\x34\x45\x41\x32\x36\x32\x30\x45\x41\x22\x20\x78\x6d\x70\x3a\x43\ \x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ \x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ \x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ \x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ \x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x69\x69\x64\x3a\x34\x37\x33\x38\x33\x34\x65\x30\ -\x2d\x62\x62\x61\x65\x2d\x36\x61\x34\x30\x2d\x61\x31\x37\x33\x2d\ -\x39\x31\x66\x37\x31\x33\x66\x61\x38\x32\x36\x31\x22\x20\x73\x74\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x63\x31\x65\x61\x38\x31\x32\x35\ +\x2d\x65\x62\x64\x64\x2d\x63\x38\x34\x62\x2d\x39\x66\x37\x61\x2d\ +\x30\x36\x39\x39\x32\x39\x38\x64\x62\x39\x33\x63\x22\x20\x73\x74\ \x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ -\x78\x6d\x70\x2e\x64\x69\x64\x3a\x62\x62\x65\x34\x65\x39\x38\x62\ -\x2d\x34\x38\x33\x63\x2d\x62\x63\x34\x33\x2d\x62\x62\x33\x65\x2d\ -\x62\x35\x35\x32\x61\x31\x32\x61\x31\x39\x34\x34\x22\x2f\x3e\x20\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ \x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ \x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ \x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ -\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x5e\xcf\ -\xe3\xe7\x00\x00\x08\x02\x49\x44\x41\x54\x78\xda\xac\x57\x79\x50\ -\x55\xd7\x1d\xfe\xbd\x7b\xef\xdb\x41\x76\x65\xdf\x57\x41\xa4\x2c\ -\xa6\x2a\xd8\xd4\x82\x08\x89\x44\xa2\x51\x99\x98\xc4\xda\xc9\xf2\ -\x47\xed\x4c\xd3\x24\x7f\xb4\x93\x99\xfc\xd1\x99\x36\x36\x4d\xd3\ -\x56\x53\xd3\x71\x8c\x26\xb8\x26\xa8\x18\x95\xba\x54\x03\x0e\xa8\ -\x55\x90\x28\x44\x59\x02\xc8\xbe\xef\xcb\x7b\xef\x2e\xaf\xdf\xb9\ -\x80\x45\x63\x9e\xcf\x26\x67\xe6\xce\xbd\xe7\xdc\x7b\xce\xf9\xce\ -\xf7\xfb\x7e\xcb\xd5\xb4\xb5\xb5\x51\x59\x69\x29\x05\x47\x44\x1a\ -\x5d\xdd\xdc\xd2\x14\x59\x31\x10\x91\x86\x9c\x6b\xec\x3b\x3b\xc7\ -\x73\xed\x4d\x77\x6e\xd7\xda\x6c\x36\xe2\x38\x8e\x9c\x6d\xbe\xbe\ -\xbe\x24\x7c\x79\xf1\x22\xfd\x7d\xf7\x9e\xc4\x94\x65\xe9\x3b\x8c\ -\x26\xf3\x13\x18\xb7\xe1\x1a\x73\x12\x84\x5d\x12\x45\x33\xcf\xf3\ -\x7d\x75\x35\xb7\x0a\xce\x16\x17\x5d\x43\xdf\x69\x00\xab\x57\xaf\ -\x26\x21\x34\x32\xda\x3b\x65\x69\xfa\x1e\x93\xc9\x25\xa5\xa7\xab\ -\x63\x67\x65\xc5\xa5\x4f\x47\x87\x87\x9d\x05\xa0\xac\x58\x95\xb3\ -\xcf\x37\x20\x30\x2d\x21\x25\xf5\x44\x73\xfd\x9d\xcc\xdb\x37\xab\ -\x6b\xe9\x31\x9a\x00\xda\x97\x19\xcd\x2e\x29\xdd\x9d\xed\xef\xef\ -\xdf\xb5\xe3\x37\xf4\x98\xcd\x32\x35\x65\xe1\x05\xe1\x02\x4e\x9e\ -\x98\x99\x97\x5f\x6c\x99\x9a\xcc\x6c\x6e\xa8\x6f\x71\x1a\x80\xa2\ -\x28\xae\x92\x24\x4e\xde\x6d\x6c\xd8\xb9\x76\xf3\x4b\x2f\xe9\x74\ -\xba\x88\x73\xc5\xc7\xde\x8b\x4b\x4c\xca\x0e\x0c\x0b\x4b\x92\x44\ -\x49\x16\xb4\x02\xdf\xde\xdc\x5c\x8d\xd3\x9d\xc9\x7a\x26\xff\x57\ -\x18\x33\x60\x6c\x1c\xdf\xfd\x45\xa3\xd1\xe8\x3a\x5b\xef\xfe\x7b\ -\xb0\xbf\xef\xb7\x49\x4b\x96\x96\xad\xd9\xb4\xf9\xf8\x17\x87\x0a\ -\x57\x01\x44\xaf\x53\x00\x70\x71\x76\x45\x19\xb1\x59\xad\x23\xe1\ -\xd1\xb1\x3f\xd6\xe9\xf4\xc9\x1c\x5f\xbc\xdd\xc7\xd7\x2f\x3e\x2c\ -\x3a\x36\xd3\xae\xd8\x4d\xbc\xc0\x4b\xd6\x29\x8b\x58\x57\x73\xb3\ -\x24\x22\x76\x61\xae\x2c\xc9\x2e\x1a\x4e\xd3\xa9\xd3\xeb\x3f\xc4\ -\x7c\x19\xe2\x73\x3d\x73\xbc\xe8\x2a\xe6\xe6\x2f\x4c\x4a\x3e\x09\ -\x10\x47\x01\x22\x07\x20\xc6\x1e\x05\xe0\x9e\x64\x39\x48\x19\xb7\ -\x0e\x51\x14\xdb\x73\xd6\x6d\xdc\x1b\x10\x1a\x16\x8f\x7e\x5b\x49\ -\xd1\xe1\x5c\xb0\xf3\x7e\x48\x64\xd4\xe2\x35\x05\x9b\x0b\xf1\xfc\ -\x27\x8c\x3d\x2b\x68\xb5\x7d\x78\x2f\x31\xad\x40\x84\x0a\x0e\x41\ -\xa7\x3e\x3b\x78\xfa\xeb\xea\xaa\x0d\x26\xb3\xcb\x72\x80\x38\x12\ -\x16\x15\xad\x77\x86\x01\xd2\xc0\x75\xa6\x26\xc7\xa9\xa1\xb6\x86\ -\xec\x64\x57\xb0\xb8\x3c\x3e\x3a\x62\x00\x28\xaa\xaf\xbd\x65\xc1\ -\x82\x82\xac\xc8\x46\x9e\xe3\x35\x4d\x75\x77\xb4\x38\x19\x8f\xbb\ -\x11\xac\x71\x98\xcb\x18\xf4\x62\xeb\xc8\xb2\xcc\x40\x7c\x8e\xc7\ -\x2d\x60\x62\x2f\x40\x7c\x0a\x26\x0a\xf0\xbd\xec\x10\x80\x0a\x42\ -\xc3\x91\x56\xa7\x63\x0b\x79\x03\x00\xb5\x36\x35\xbe\x0e\x34\x01\ -\x1b\x7f\xf1\xea\xce\x93\x47\x0e\x6c\xb8\x5a\x76\xf1\xe3\xb9\x13\ -\x0f\xfe\xf3\xc3\xf5\xb3\x9e\xe0\x17\x1c\x92\x15\x16\x15\xe3\xd6\ -\xdc\x50\x37\xc2\x40\x9c\x38\x54\xb8\x0f\x66\x31\x24\x24\xa7\xec\ -\x02\x88\x61\x80\x78\x05\x20\x1c\x9b\x60\xc6\xed\x98\x0b\x5d\xc7\ -\x22\xd7\xdc\x3d\xbd\x6c\xee\x5e\x5e\xa3\x56\xab\xe5\x0a\x84\xf6\ -\x9d\x14\xf2\x1c\x77\x5a\x6f\x30\x04\x3d\xb5\xa1\xe0\x60\xdc\xe2\ -\xa4\xc4\x80\x90\x50\x57\xff\xe0\x10\xf3\xd7\xd5\x95\x7b\x06\x7a\ -\x7b\x7f\x8f\x77\x2f\x67\xac\xca\x79\x17\x77\x9d\x43\x06\xec\x76\ -\x85\x13\x6d\xb6\xaf\xf0\xd8\x09\x33\x10\x04\x16\xc3\x86\x27\xc6\ -\xc6\x2a\x3c\xbd\xe7\xeb\x7e\x92\xfd\x54\x16\xfa\x66\xa8\xdf\x7e\ -\xe1\xd4\x17\xe7\xfb\x7b\xba\x87\xd8\xbc\xeb\x15\x97\x3e\xf0\x0d\ -\x0c\x4a\x31\x9a\x4c\x6b\xf3\x0a\x5e\xc8\x61\x3a\x62\xac\x40\xbc\ -\x76\x78\x97\xc2\x02\x93\x8f\xaf\xff\x5b\xb8\x0e\xb5\xb7\x34\xdd\ -\x78\x28\x00\x26\x20\xa3\xc9\x45\x8a\x8a\x4f\x78\x13\xdd\x0c\x4e\ -\x6d\xbc\x1e\x0b\x4c\xa1\x7f\x45\xb4\xda\x9e\x0f\x8d\x8a\x7e\x1b\ -\x83\x31\x30\x93\x58\x76\xf6\x5f\x4b\x31\xae\x02\x80\x16\xc6\xf7\ -\x7f\xb4\x63\x5d\xca\xd2\x8c\x8c\x79\x1e\x1e\xe1\x8a\x2c\xcf\x15\ -\x9e\x84\x93\x2f\xf0\x0f\x09\x7d\x07\x07\x34\x3a\xc3\x40\x29\xec\ -\x3f\xdc\xd2\x50\x5f\x53\x53\x75\xbd\x24\x67\xfd\xc6\xd7\x70\x02\ -\x1e\xd4\xbe\x65\xb7\xdb\xaf\xdd\x6d\x6c\x7c\x03\xee\xe7\x93\xb9\ -\x66\xed\x8b\x36\xab\x65\x10\x4c\xec\x05\x13\x23\xa0\x5a\x41\x18\ -\x2e\xc5\x32\xa5\x0f\x6e\xb0\x20\x20\x20\x74\xcb\xb6\xd7\x7f\xf7\ -\x48\x11\x32\x0c\xb8\x62\xa1\xea\x54\x08\x72\x1c\x9d\x56\xf4\x17\ -\xe1\xf2\x40\xdf\x55\xaf\x37\xc8\xd8\x74\x1f\xfa\x2e\x60\x6a\x13\ -\xe4\x3f\x74\xe5\xcb\x0b\x9f\xa1\x3f\xe2\xd0\xcd\x04\xad\xe9\x91\ -\x6e\x38\xeb\x05\x46\xb3\x79\xb0\xf5\x9b\xc6\x3f\x80\xe6\xfa\x75\ -\x2f\x6e\xdd\x8f\xb0\x3a\x8c\xb1\xca\x73\xc5\x47\xdf\xc6\x49\xed\ -\x93\x13\x13\x0a\x3e\xad\xac\xba\x52\x7e\x80\x01\xee\xed\xea\x54\ -\xe8\x7b\xb6\x7b\x71\x00\x9b\x11\xa8\xf7\x84\xfb\x31\xb5\x6a\x60\ -\x7f\x6f\xd0\xcf\x62\x42\x1f\xdc\x4b\x1a\x1e\x18\xb8\x37\x09\x4f\ -\x32\xfd\x40\x4d\x98\xa6\x49\xa0\xde\xee\x0e\x6d\xf5\x7f\x2e\x6f\ -\x9b\x7d\x01\x7a\x9f\xfc\x21\x36\x60\x79\x06\xf4\xd2\x8c\xa0\x1d\ -\x9b\xe0\x61\xcd\x6b\xfe\x7c\x82\xc2\x57\x42\xe1\xc9\x50\xb8\x76\ -\x46\x2b\xce\x36\x19\x5e\xe0\x67\x9d\x9c\x14\x56\xe6\xe6\xbd\x62\ -\xb5\x58\x9a\xa6\x65\xa1\xbd\x5b\x76\xb6\xe4\x84\xc5\x62\x19\x17\ -\x1c\xcd\xf6\xf4\xf6\xe1\x9e\x7f\xf5\x97\x7f\x44\x4c\x78\x13\x59\ -\xf3\xff\x62\x00\xf1\x80\x24\xd1\x46\xbe\x01\x41\xaf\xc1\x83\x66\ -\xf2\x0e\x47\x39\xcf\x6d\x2a\xd7\x89\x96\x7c\x87\x00\x52\x97\x67\ -\x2c\x63\x9b\x03\xf9\xff\x2a\x10\x00\x11\x25\x89\x38\x16\xba\xb5\ -\x02\xdc\x97\x48\x64\x55\x10\xd6\xd6\x21\x84\x23\xfe\x80\x6e\x89\ -\x04\x9e\x57\xbf\x9b\x89\x96\x24\x2b\x56\x5c\xb2\xfa\x0d\x6b\xf0\ -\xaa\xe5\xc9\xa9\x69\xdb\x1c\x02\x70\xf3\xf0\x4c\x9e\x7b\x72\x09\ -\x71\xde\xcb\xdd\x8d\xb6\x6c\x58\x47\xf5\xcd\x2d\x74\xac\xe4\x2c\ -\x79\xba\xbb\xd3\x0b\xeb\x0b\xa8\xb3\xbb\x87\x8e\x9c\x38\x4d\x51\ -\xe1\xa1\xb4\x32\x7d\x19\xde\x9d\xa1\xec\x27\x57\x50\x68\x60\x00\ -\x95\x5c\x28\x25\x1e\xc9\x76\x51\x5c\x2c\x15\x16\x1d\x27\x16\xda\ -\xd9\xba\xd0\x45\x9a\xc3\x0a\x12\x39\x81\xbf\x5f\x50\x12\xa5\x3f\ -\x91\xa6\x52\x98\x14\x1f\x47\xf3\x5c\x5d\x60\x50\x9e\x82\xfc\xfd\ -\x28\x33\x63\x39\x45\x84\x06\xab\x27\x0c\xf2\xf3\xa5\x98\x88\x70\ -\x4a\x4f\x4b\xa1\x73\x97\xca\xc1\x92\x9d\xe6\x7b\x7b\x53\x20\xc6\ -\x45\xe9\xbe\x9a\x51\xf3\xa8\x12\xd6\x3e\xf7\xf4\x0b\x7c\xbc\x69\ -\x49\xd2\x62\xba\x51\x73\x9b\x8c\x7a\x03\xc5\x62\x13\x66\x8a\xfe\ -\x81\x41\xaa\xb8\x5e\x45\xcf\xe6\xae\x26\x57\x17\x33\xd9\x60\xf3\ -\xaa\x9b\xb5\x74\xf3\x76\x1d\xc5\x45\x46\x50\x55\x4d\xad\x0a\xcc\ -\x62\xb5\xaa\x26\x9b\xbb\xbe\xd3\x35\x34\xaa\x20\xca\x4c\x5f\xae\ -\x52\x99\xb8\x30\x46\x1d\x4b\x4e\x4c\x20\xbd\x4e\xcb\xd2\x38\x9d\ -\x3c\x7f\x91\x79\x1b\x65\xad\x48\xa7\x89\x29\x8b\xca\xcc\xc7\x87\ -\x3f\x27\x2f\x0f\x77\xda\xba\xe9\x39\x95\x05\xab\xd5\xe6\x30\x1d\ -\x7f\x67\xba\x66\x62\x8a\x0c\x0b\xa1\xf4\x25\x29\xb4\x7b\xff\x61\ -\x7a\xe7\xcf\x7f\xa5\xbd\x47\x8a\x54\x06\x22\x42\x43\xc8\xa0\xd7\ -\x11\x5c\x8a\x8e\x9e\x3e\x43\xc1\x01\xfe\x6a\x61\x12\x1f\x13\x45\ -\xbf\x7e\x79\x2b\x2d\x00\xf5\xa3\x63\xe3\x64\x36\x19\x1f\xf6\xcf\ -\xc0\x39\x14\x21\x4a\xad\xa1\x59\x15\x8f\x4f\x4c\xd0\xdf\xf6\x7c\ -\x42\xcd\x6d\xed\xe4\xe1\xe6\xa6\xde\xff\xf1\xc9\x01\x9a\x98\x9c\ -\xa4\x8e\xae\x6e\xd5\x56\xad\x1d\x9d\xf4\xde\xae\xdd\x30\x81\x48\ -\xdd\x7d\x7d\x78\x37\x1d\x7b\xea\x9b\x9a\xa1\x01\x2f\xd5\x33\xb4\ -\x33\x5e\xa0\xee\xce\xf3\xe3\xc2\xc3\xec\x3d\xdb\x6a\xab\xab\xce\ -\x87\xc7\xc6\x75\xc9\x92\xe4\xd7\x3f\x38\x44\x3d\xfd\x03\xf7\xdc\ -\x88\xa9\xb8\x01\x9e\x30\xed\x62\x8a\x3a\x0e\xc0\xd4\xd8\x72\x57\ -\x55\xb9\x16\xd1\xb5\xa6\xae\x9e\xa5\x59\x75\x53\xe6\x25\x6c\x03\ -\x36\xae\x46\x40\x8c\x8d\x0e\x0f\x15\x0a\x33\x1b\x0b\xa0\xed\x5b\ -\x65\x0f\xea\xc1\xb6\x1b\x97\xcb\xd7\xc7\x2c\x5a\xbc\xdd\x64\x36\ -\xc7\x60\xd3\xfb\x18\x43\x8c\xf8\x16\x6b\x4c\x0f\x73\x9e\xf1\xe7\ -\x24\x21\x18\xc9\x1e\x06\x83\x71\x1c\x81\x88\xb9\x80\x06\x9b\xf7\ -\x5c\x2b\xbf\xb4\xb3\xa9\xca\x76\x8c\x2d\xc8\x12\x8b\x77\x7c\x52\ -\x72\x54\x77\x7b\x5b\xe7\x7d\x6e\x07\x2a\xcf\x16\x1f\xad\xa8\xbc\ -\x5c\xbe\x02\x00\x82\x1f\x04\xe0\xd0\x7d\x58\x40\x12\x45\xcb\x4f\ -\x73\xf3\xd6\x05\x87\x87\x7f\x80\x8c\xfa\xf3\xbe\x9e\xee\x1b\xd3\ -\xb9\x8f\xeb\x69\x6b\x6e\x1a\xcb\xca\xca\x22\x01\x9d\x56\xc4\x78\ -\x31\x36\x31\x69\x7b\x57\x7b\x5b\x7e\xdd\xad\xaf\x3a\x99\x88\xe6\ -\xb6\x81\xde\x1e\x05\x19\xb0\xe5\x71\xc3\x70\xd4\xc2\x84\x40\x77\ -\x2f\xcf\xad\xb0\x89\xa5\xbb\xb3\xa3\x1c\x07\xec\x7a\x40\x63\x24\ -\x0c\x0d\x0c\x5c\x1d\xe8\xef\xff\xc8\x65\xde\xbc\x6d\x3f\x5b\x93\ -\x5f\x13\x97\x94\x7c\x0a\xbf\x5b\x5d\x4e\x78\x88\xc3\x7f\x46\x83\ -\xd1\x18\xe4\x1f\x14\xf2\x34\x8a\x43\x97\x6f\xee\xdc\x79\xf7\xc1\ -\xcd\x59\x9b\x9a\x9a\x22\x41\xb2\x4c\x4a\x46\xbb\xf8\xc6\x8f\x16\ -\xc5\xd7\x81\xb2\xbc\x45\xb1\xd1\x21\xe0\x28\xe4\xfb\xa6\x61\xfb\ -\x74\xa8\x2d\x83\xbd\x8b\xa4\xe1\xfe\x7d\xd9\xd9\xd9\xf4\x60\x75\ -\x9d\x9a\x9a\x4a\xff\x15\x60\x00\x38\xf0\xbb\x5d\x6e\xf5\xd0\xf0\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\xf0\xfb\ +\xe3\xbf\x00\x00\x03\x12\x49\x44\x41\x54\x78\xda\xc4\x97\x59\x68\ +\x14\x41\x10\x86\x67\x36\x6b\x3c\x58\x3c\x50\x30\xa8\xa8\xa0\x46\ +\xe3\x85\x20\xc6\x20\x51\x04\x2f\x54\x44\xd4\x27\xf3\x10\x04\x11\ +\x3c\xe2\x2a\xe2\x8b\x04\x3c\x02\x1e\xa0\x08\xae\x27\x88\x22\x06\ +\x7c\x92\x48\x10\x73\x78\x60\x50\x09\x1e\x08\x12\x95\xa8\x41\xf0\ +\x26\x3e\x88\x9a\x88\x17\xd9\xe8\x57\x50\x23\xcd\xb2\x99\xe9\xdd\ +\x6c\xd6\x82\x2f\x95\xdd\xe9\xa9\xfa\xa7\xa7\xbb\xba\xd6\x75\x2c\ +\x2c\x1a\x8d\xe6\xe0\xe6\xc0\x12\x98\x09\xf9\x30\x54\x2f\xff\x82\ +\x37\xf0\x08\x6e\x40\x75\x2c\x16\x6b\x75\x2c\xcd\x0d\x48\x1c\xc1\ +\x95\xc1\x26\x18\x61\x19\xb3\x03\xae\xc0\x01\x84\xdc\x4d\x5b\x00\ +\xc9\x57\xe2\x8e\xc2\x30\x27\x7d\xbb\x04\xdb\x10\xf2\xca\x88\x3b\ +\x1c\x57\xc1\x77\x6b\x93\x0a\x60\x40\x2f\x5c\x0c\xd6\x3b\x99\xb1\ +\x76\x99\x41\x12\x56\x12\x7b\x22\xff\xd7\xc1\x10\x88\xf0\x5d\xa7\ +\x9b\x90\x3c\x17\x77\x11\x96\x39\x99\xb7\xf3\x1a\x77\x90\x7e\xce\ +\x47\x40\x4b\xc8\x48\x2e\x62\x2e\xf4\x50\x72\xb1\x52\x23\xb9\xd8\ +\x64\xf9\x13\x36\xbe\xd8\x01\xab\x2c\x02\xb5\x41\x03\x3c\x87\x2f\ +\x30\x18\x8a\xa1\x30\x45\x41\x53\x64\x8d\x84\xf5\xe9\x45\x4d\x45\ +\xc0\x0d\xb2\x90\xf6\xc8\x2c\x31\x75\xbf\x93\xac\x9d\x31\xb8\xcd\ +\xb0\x01\x72\x2d\x05\xfc\x9b\x81\x43\x90\x13\xf0\xfe\x64\x21\x7d\ +\xeb\x6a\x00\xd7\x5e\xe2\xb6\x22\x44\x16\xf0\x39\x98\x6d\x23\x20\ +\xc4\x0d\xd3\xf1\x8b\x7c\x06\x9e\x80\x35\x7e\xc9\x13\xec\x35\xb4\ +\x58\x8c\x1b\x4b\xee\x3e\x32\x03\xeb\x7c\x06\xdd\x86\x2d\x24\xff\ +\x63\x59\x31\xfb\xe9\x2e\x5a\x6c\x31\x5c\x66\xbc\x20\xac\xe5\x35\ +\x99\x49\xd2\x32\x92\x77\x58\x26\xef\x8b\xbb\x06\xb3\x52\x59\x88\ +\xb2\x0d\x27\xc0\x02\xd8\x0b\x8d\x10\xd7\x8b\x57\x49\xde\x64\x1b\ +\x89\xb1\x3f\xf4\x61\x96\x6b\x05\x6d\xb6\x11\xe0\x76\x51\xff\x65\ +\x5b\x7d\x22\xe8\x83\xee\x6c\x7c\x2d\xbb\xf3\x0d\xf2\x12\x86\xd4\ +\xbb\x4e\x16\x0d\x41\x93\x0c\x31\x73\xe1\x6b\x56\x05\x24\x88\x91\ +\xf5\x57\x24\xff\x14\xeb\x87\xff\x62\x2e\xc9\xdf\xe1\x07\x68\x79\ +\xbd\x2e\xf0\xee\x9f\x66\x53\x40\x5d\x92\x42\xd4\xea\x89\x51\x41\ +\xef\xbb\x39\xdd\x33\xf4\xcc\xb8\x93\x58\xd0\x44\xc0\x41\xfc\xf6\ +\x80\x18\xcd\x86\xa0\x06\x82\xb4\xa5\x28\xc0\x7b\x48\xd9\xe2\xf7\ +\xe0\xa6\xce\x78\xa3\xd4\x81\xc7\x16\x31\x0a\xf4\xa0\xa9\x86\x5a\ +\x2d\x3a\xb6\xc9\xa7\xe2\x16\x1a\xd5\x4f\x0a\x55\xb9\x16\xad\x67\ +\xb6\x02\x3c\xab\x95\xa2\xa5\x45\xc7\x76\xa5\x1f\xf3\x69\xfd\x6a\ +\x42\x3a\xbd\x9d\x16\xf1\xce\x4a\xb3\x42\xf2\xef\x96\xc9\x25\xe9\ +\x91\x80\x53\xf1\x74\x88\x80\x3f\x2d\x4f\xaf\x71\x30\xca\x32\x79\ +\x44\x8f\xe4\x8d\x3e\xc3\xea\xc9\xfd\xd0\xdb\xff\xf2\x1a\xc6\x07\ +\xc4\x95\x27\x69\x26\xf8\x49\xa9\xf5\x7a\xfe\x3b\x49\x7a\xca\x12\ +\xd8\x05\xa3\x7d\x62\xc5\xbd\x85\xef\xea\x8d\x72\xc3\xee\x14\x77\ +\xd7\x7d\xd9\x56\x72\x66\xc0\x40\x7d\x00\x29\xaf\xfd\x2d\xee\x2d\ +\xe7\x01\xf6\x99\x1d\x51\x53\x1a\xdb\xbb\x30\x8d\x3e\x50\xac\x0a\ +\xf6\x7b\x1f\xbc\xae\xf8\x89\x31\xe0\x33\x54\xf6\x50\xe1\xbb\x0c\ +\xab\xcd\x06\xc7\x13\x20\xef\x53\xb6\xd6\x5b\x39\x8a\x19\x50\xaa\ +\x6d\x74\x7b\x06\x93\x9f\x92\xae\x3b\xb1\xa1\x75\x8d\x05\x74\x06\ +\xb7\xd3\x2c\xbb\x7c\x27\x0b\xe9\x30\xac\xe8\x46\xe2\x0f\x52\xc4\ +\x88\x5b\x95\xf2\x8f\x53\x43\x48\x91\xfe\x6e\x58\x1a\xd0\x3d\x9b\ +\x26\x87\xdc\x71\x29\x44\x7e\x0d\x6d\x4a\xfd\x00\x42\xf2\xb4\xe5\ +\x9a\x07\xd3\x60\x24\xf4\xd6\xcb\x1f\xe1\x85\xd6\xfa\x1a\xb8\x45\ +\xe2\x78\x50\xcc\xbf\x02\x0c\x00\xb3\x4a\xfb\x1f\xcd\xe1\x9d\xc3\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x07\x89\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ +\x79\x71\xc9\x65\x3c\x00\x00\x03\x71\x69\x54\x58\x74\x58\x4d\x4c\ +\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00\x00\ +\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\ +\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\x57\x35\x4d\ +\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\x4e\x54\x63\ +\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\x6d\x70\x6d\ +\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\x61\x64\x6f\ +\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\x78\x3a\x78\ +\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\x4d\x50\x20\ +\x43\x6f\x72\x65\x20\x35\x2e\x35\x2d\x63\x30\x31\x34\x20\x37\x39\ +\x2e\x31\x35\x31\x34\x38\x31\x2c\x20\x32\x30\x31\x33\x2f\x30\x33\ +\x2f\x31\x33\x2d\x31\x32\x3a\x30\x39\x3a\x31\x35\x20\x20\x20\x20\ +\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x20\ +\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\ +\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\ +\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\x3a\x44\x65\ +\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\x3a\x61\x62\ +\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\ +\x4d\x4d\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\ +\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\ +\x6d\x6d\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x74\x52\x65\x66\ +\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\ +\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\ +\x79\x70\x65\x2f\x52\x65\x73\x6f\x75\x72\x63\x65\x52\x65\x66\x23\ +\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x3d\x22\x68\x74\x74\ +\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ +\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ +\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x44\x39\x41\ +\x43\x30\x30\x39\x35\x35\x39\x38\x44\x31\x31\x45\x33\x41\x41\x46\ +\x43\x43\x39\x35\x30\x31\x33\x33\x31\x41\x30\x30\x39\x22\x20\x78\ +\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x44\x39\x41\x43\x30\x30\x39\ +\x34\x35\x39\x38\x44\x31\x31\x45\x33\x41\x41\x46\x43\x43\x39\x35\ +\x30\x31\x33\x33\x31\x41\x30\x30\x39\x22\x20\x78\x6d\x70\x3a\x43\ +\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ +\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ +\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ +\x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ +\x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x36\x63\x33\x30\x35\x65\x36\x65\ +\x2d\x66\x31\x33\x66\x2d\x35\x65\x34\x38\x2d\x62\x37\x32\x65\x2d\ +\x33\x31\x38\x39\x62\x37\x63\x66\x34\x66\x34\x38\x22\x20\x73\x74\ +\x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ +\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ +\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ +\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x3e\x1d\ +\x49\x08\x00\x00\x03\xae\x49\x44\x41\x54\x78\xda\xbc\x97\x69\x48\ +\x54\x51\x14\xc7\xdf\x8c\x93\x95\x59\x4d\x8b\x11\x52\xe0\x46\xb4\ +\x59\x7e\x50\xb2\x15\x22\xcb\x16\x82\xf6\x0d\x5a\x8c\x16\x93\x8a\ +\xa4\x85\xc8\xd0\xb2\xc8\x32\xa1\x0f\x12\x51\x08\x69\x1b\x11\x56\ +\x1f\x8c\x82\xc8\x16\xa8\x94\x92\xd4\xac\x88\xb0\xcd\x24\x22\x4a\ +\xc5\x6c\x52\x4b\xeb\x7f\xe0\xff\xe4\xf6\x78\xce\xcc\x9b\xc6\x0e\ +\xfc\xb8\xf7\xdd\xfb\xde\xbd\xff\x7b\xe7\xdc\x73\xcf\xd8\x76\x9e\ +\x2d\xb1\x69\x9a\xb6\x15\x6c\x04\xa1\x9a\x6f\x76\x07\x2c\x3a\xba\ +\x72\x7c\x9b\xd5\x0f\x6d\x10\xb0\x1b\x65\x16\x68\x06\xf9\xa0\x92\ +\x75\x6f\x2c\x08\x1c\x67\xbd\x00\x24\x41\xc4\x6f\x2b\x02\x1c\x60\ +\x3b\x68\x02\x53\xf0\x71\xb9\x95\x8f\x21\xde\x49\x01\xef\xc1\x6a\ +\x50\x0f\x52\xad\xee\x80\x28\x3e\x02\x0e\x81\xfe\xa0\x81\x3b\x30\ +\xd8\xf0\xee\x27\xd0\x03\x38\xf9\xdc\x4c\x64\xd2\xa5\x60\x15\x98\ +\x03\xd2\xb1\x90\x03\xde\x0a\xb0\xb3\x2c\x03\x6b\xc1\x5b\xb0\x0d\ +\xc4\xb3\xae\x12\xcf\x3e\xfd\xf9\xa2\x32\x4e\x2b\x58\x42\x5f\xc8\ +\xc4\xa2\x52\xac\x0a\xf8\x05\x4a\xc1\x7e\xf0\x8e\xab\x94\xfa\x16\ +\x30\x9d\x75\x27\xfb\xe6\x82\xf5\xf4\x97\x0e\xc3\xaa\x5d\x28\xe6\ +\x81\x47\x20\x17\x22\x96\x5b\x11\xa0\x71\x85\x19\xe0\x34\xb8\xca\ +\x7a\x02\x77\x27\x83\x6d\xd2\x57\x0b\x46\x83\x35\x06\x5f\x12\x11\ +\x8d\x28\x66\x82\x17\xe2\x94\x10\x31\xdb\x8a\x80\x7b\x74\xa0\x54\ +\xfe\x1c\xe1\xe0\x3a\x57\x1e\xae\x20\x83\x67\x82\x65\x40\x3f\x76\ +\x31\xca\x4e\x88\x4f\x4c\x03\x35\xa0\x10\x22\x26\x7a\xe3\x84\xf3\ +\x41\x18\x38\xc6\xf6\x4a\x0c\x14\xc3\x3e\x39\x5a\xf9\x6e\x4e\x42\ +\x1d\x8a\x00\x30\x01\xef\x3d\x57\xda\x87\xa0\x28\x01\x7d\xc0\x64\ +\xf4\x3d\xf5\x24\xe0\x06\xe8\x69\xf2\x8e\x0b\x1f\xb7\xba\x11\x90\ +\x4e\x1f\xf9\x06\xf2\x40\x15\xd0\x63\x41\x14\x48\x03\x9f\x41\x2c\ +\xc6\xf9\x60\x16\x07\x74\x13\xe7\xda\x6c\x32\xc7\x61\x4c\x12\xac\ +\xf4\x55\x63\xa0\x75\x4a\xff\x41\xf0\x13\x24\xf3\x94\xd8\x4c\xc6\ +\x18\x04\x22\x81\x5b\x01\x8d\xf4\x72\xa3\xb5\x73\x02\xbd\xef\xa3\ +\xc1\xfb\xdb\x19\x49\xb3\xdc\x04\xab\x7a\x6f\x9c\x30\x84\xce\x24\ +\xec\xa1\x13\x49\x3d\x9b\x5b\x1c\x89\xc9\xc4\xf3\x63\x31\x68\x05\ +\xc8\xd3\xfc\x60\xea\x0e\xc8\xf1\xba\xcd\x9d\x18\xc0\xe7\xbb\x4a\ +\xff\x0f\x96\xa5\x8c\x98\xd5\xfe\x16\x30\x52\xce\x3d\x56\x39\x06\ +\xab\x93\xd8\xde\x97\xed\x29\x68\xbb\xa0\x6c\x79\xa6\xe6\x47\x53\ +\x05\xc8\xca\x5a\x74\xc7\x03\xdd\x59\xaf\xd0\xba\xd0\x1c\xca\xca\ +\xe4\x26\x2c\x67\xfd\x84\xf6\x9f\xcc\xe1\xc5\x95\x1b\xcb\x64\x25\ +\xc4\xc7\x39\xba\xe9\xc7\x15\x63\x7d\x61\x5d\xca\x3c\x2c\xb4\xd4\ +\xe1\x61\xf2\x44\x14\x45\xca\x20\xff\x62\xc6\x90\x9c\x84\xf1\x17\ +\xd8\x3d\x7c\x94\xed\xa7\xc9\x3b\x0b\x01\x39\x9e\x04\x8c\x32\x69\ +\x2b\x62\xe2\xf1\x8c\xcf\xaf\xf9\x5c\xcc\xe7\x27\x8c\x8e\x4d\xcc\ +\x92\x12\x18\xa2\x2b\x79\xc9\xa9\x16\xe5\x49\x40\x80\xe1\x59\x62\ +\xbc\xc4\xfe\x68\x70\x8e\x6d\x75\x14\x93\xcc\x53\x24\xe1\xf6\x15\ +\xef\x96\x97\xe0\x16\x85\x48\xa6\xf5\xc0\x5d\x24\xf4\xc6\x24\x0b\ +\x1a\xc8\xeb\xf6\x3c\x05\x49\x22\x12\x07\xa6\x32\x1c\xbb\x78\x03\ +\xca\xdd\x12\x08\xf6\xf1\x67\x74\x31\x89\xf5\x59\x40\x1b\x13\x13\ +\x39\x15\x0f\x79\x73\x16\x33\x72\xf6\xa6\xbf\x14\x70\x37\x82\x99\ +\x3f\xde\x64\x7c\xc9\x01\xdf\x41\x2f\xcb\xc7\x50\xb1\x53\x60\xb8\ +\x72\xe9\xc8\xa4\x67\x40\x22\x57\xea\xa4\x88\x15\x60\x2f\x93\x99\ +\x06\xf6\x7d\x65\xf8\x0e\xb4\x2a\x40\x6e\xb1\x7e\xac\x47\xd3\xd9\ +\x3a\x8e\x11\x78\x0c\x86\x81\xb1\x6c\x5b\xcc\xd5\x47\x30\x92\xde\ +\x07\x1b\x98\xa6\xd5\x30\x95\x53\xad\xc5\x93\x80\x4b\x0c\x42\x62\ +\x93\x0c\x7d\x22\x6c\x86\xc9\x37\xb3\x94\x7a\x98\x52\x8f\x20\x7f\ +\x8d\x6f\xef\xc4\xdb\x75\xdb\x01\xae\x74\x51\x1c\xb8\x26\x59\xb7\ +\xbe\x03\xb2\x35\x97\x8d\x6f\x20\x54\xca\x59\x5e\x88\x88\x15\xca\ +\xac\xc6\x17\x93\x9d\xcb\x65\x2a\x5f\xa6\x87\x62\x8c\x5d\xab\xe7\ +\x84\x0d\xf4\xf0\x38\x34\xbe\xf1\xe7\x12\x31\x76\x10\x73\x8c\x71\ +\xe2\x27\x66\x89\xa9\xec\xc0\x49\xb0\x4b\xfe\x50\xe0\x83\x5c\x26\ +\x95\xed\x7e\x98\x7f\x28\xd8\x04\x46\xf0\xd8\x56\x75\x76\x1b\xa6\ +\x31\xa0\x24\x33\x68\xf8\xd3\x24\x97\x2c\x64\x52\x63\xfa\xaf\xf9\ +\x8f\x00\x03\x00\xa7\xa0\x22\x71\x6e\x63\x94\xd3\x00\x00\x00\x00\ +\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x06\xed\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ +\x79\x71\xc9\x65\x3c\x00\x00\x03\x71\x69\x54\x58\x74\x58\x4d\x4c\ +\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00\x00\ +\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\ +\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\x57\x35\x4d\ +\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\x4e\x54\x63\ +\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\x6d\x70\x6d\ +\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\x61\x64\x6f\ +\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\x78\x3a\x78\ +\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\x4d\x50\x20\ +\x43\x6f\x72\x65\x20\x35\x2e\x35\x2d\x63\x30\x31\x34\x20\x37\x39\ +\x2e\x31\x35\x31\x34\x38\x31\x2c\x20\x32\x30\x31\x33\x2f\x30\x33\ +\x2f\x31\x33\x2d\x31\x32\x3a\x30\x39\x3a\x31\x35\x20\x20\x20\x20\ +\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x20\ +\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\ +\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\ +\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\x3a\x44\x65\ +\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\x3a\x61\x62\ +\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\ +\x4d\x4d\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\ +\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\ +\x6d\x6d\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x74\x52\x65\x66\ +\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\ +\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\ +\x79\x70\x65\x2f\x52\x65\x73\x6f\x75\x72\x63\x65\x52\x65\x66\x23\ +\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x3d\x22\x68\x74\x74\ +\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ +\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ +\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x35\x34\x30\ +\x45\x44\x39\x43\x31\x35\x39\x38\x35\x31\x31\x45\x33\x39\x39\x43\ +\x37\x38\x31\x46\x35\x33\x32\x45\x32\x43\x37\x44\x43\x22\x20\x78\ +\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x35\x34\x30\x45\x44\x39\x43\ +\x30\x35\x39\x38\x35\x31\x31\x45\x33\x39\x39\x43\x37\x38\x31\x46\ +\x35\x33\x32\x45\x32\x43\x37\x44\x43\x22\x20\x78\x6d\x70\x3a\x43\ +\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ +\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ +\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ +\x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ +\x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x63\x31\x65\x61\x38\x31\x32\x35\ +\x2d\x65\x62\x64\x64\x2d\x63\x38\x34\x62\x2d\x39\x66\x37\x61\x2d\ +\x30\x36\x39\x39\x32\x39\x38\x64\x62\x39\x33\x63\x22\x20\x73\x74\ +\x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ +\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ +\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ +\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\xce\x34\ +\xc5\x6a\x00\x00\x03\x12\x49\x44\x41\x54\x78\xda\xc4\x97\x7b\x68\ +\x8d\x71\x18\xc7\xdf\xf7\xec\x98\x4b\x27\x97\x28\x0b\xa1\x30\xe6\ +\x96\x92\x59\x1a\xa9\xb9\x84\x24\xfc\x65\x7f\x2c\x91\x62\x26\x92\ +\x7f\xb4\x72\x59\xb9\x14\x29\xb7\x51\xb2\x64\xe5\x2f\x4d\x4b\x76\ +\x71\xc9\x42\xcb\x25\xa5\xa1\x83\xa5\xdc\x9b\x3f\x84\x4d\x6e\xed\ +\x8c\xcf\x53\xcf\xab\x5f\xa7\xb3\xf7\xfd\x9d\xcb\xe6\xa9\xcf\x9e\ +\x9d\xf3\xfe\xde\xe7\xf9\xbe\xbf\xf7\xf7\x7b\x7e\xcf\x71\x1d\x0b\ +\xbb\x51\xb9\x2e\x0b\x37\x0f\x96\xc2\x6c\xc8\x85\xe1\x7a\xf9\x17\ +\xbc\x81\x47\x32\x14\x6a\x8b\x4a\xab\xda\x1c\x4b\x73\x03\x12\x47\ +\x70\x65\xb0\x19\x46\x59\xc6\xec\x84\x2b\x70\x10\x21\x77\x53\x16\ +\x40\xf2\x55\xb8\xe3\x30\xc2\x49\xdd\x2e\xc1\x76\x84\xbc\x32\xe2\ +\x8e\xc4\x55\xf0\xdd\xfa\x84\x02\x18\xd0\x07\x77\x0c\x36\x3a\x99\ +\xb1\x0e\x99\x41\x12\x56\x13\x7b\x32\xff\x37\xc0\x30\x88\xf0\x5d\ +\x97\x1b\x97\x3c\x1b\x77\x11\x96\x3b\x99\xb7\xf3\x1a\x77\x88\x7e\ +\xce\x45\x40\x6b\xc8\x48\x2e\x62\x2e\xf4\x50\x72\xb1\x12\x23\xb9\ +\xd8\x54\xf9\x13\x36\xbe\xd8\x09\xab\x2d\x02\xb5\x43\x13\x3c\x87\ +\x2f\x30\x14\x0a\x21\x3f\x49\x41\xd3\x64\x8d\x84\xf5\xe9\x45\x4d\ +\x45\xc0\x0d\xb2\x90\xf6\xca\x2c\x31\x75\xbf\x13\xac\x9d\x71\xb8\ +\x2d\xb0\x09\xb2\x2d\x05\xfc\x9b\x81\xc3\x90\x15\xf0\xfe\x64\x21\ +\x7d\xeb\x6e\x00\xd7\x5e\xe2\xb6\x21\x44\x16\xf0\x39\x98\x6b\x23\ +\x20\xc4\x0d\x33\xf1\x8b\x7d\x06\x56\xc2\x5a\xbf\xe4\x71\xf6\x1a\ +\x5a\x2d\xc6\x8d\x27\x77\x3f\x99\x81\x0d\x3e\x83\x6e\xc3\x56\x92\ +\xff\xb1\xac\x98\x03\x74\x17\x2d\xb1\x18\x2e\x33\x9e\x17\xd6\xf2\ +\x9a\xc8\x24\x69\x19\xc9\x3b\x2d\x93\xf7\xc7\x5d\x83\x39\xc9\x2c\ +\x44\xd9\x86\x93\x60\x21\xec\x83\x66\x88\xe9\xc5\xab\x24\x6f\xb1\ +\x8d\xc4\xd8\x1f\xfa\x30\x2b\xb4\x82\x46\x6d\x04\xb8\xdd\xd4\x7f\ +\xd9\x56\x9f\x08\xfa\x20\x9d\x8d\xaf\x65\x77\x81\x41\x4e\xdc\x90\ +\x46\xd7\xe9\x45\x43\xd0\x14\x43\xcc\x7c\xf8\xda\xab\x02\xe2\xc4\ +\xc8\xfa\x2b\x90\x7f\x0a\xf5\xc3\x7f\x31\x97\xe4\xef\xf0\x83\xb4\ +\xbc\x5e\x17\x78\xf7\x4f\x7b\x53\x40\x43\x82\x42\xd4\xe6\x89\x51\ +\x41\xef\xd3\x9c\xee\x59\x7a\x66\xdc\x89\x2f\x68\x22\xe0\x10\x7e\ +\x47\x40\x8c\xa8\x21\xa8\x89\x20\xed\x49\x0a\xf0\x1e\x52\xb6\xf8\ +\x3d\xb8\xa9\x33\xde\x2c\x75\xe0\xb1\x45\x8c\x3c\x3d\x68\x6a\xa1\ +\x5e\x8b\x8e\x6d\xf2\xe9\xb8\x45\x46\xf5\x93\x42\x55\xae\x45\xeb\ +\x99\xad\x00\xcf\xea\xa5\x68\x69\xd1\xb1\x5d\xe9\x27\x7c\x5a\xbf\ +\xba\x90\x4e\x6f\x97\x45\xbc\x2a\x69\x56\x48\xfe\xdd\x32\xb9\x24\ +\x3d\x1a\x70\x2a\x9e\x09\x11\xf0\xa7\xe5\xe9\x35\x01\xc6\x58\x26\ +\x8f\xe8\x91\x5c\xea\x33\xac\x91\xdc\x0f\xbd\xfd\x2f\xaf\x61\x62\ +\x40\x5c\x79\x92\x28\xc1\x4f\x49\xad\xd7\xf3\xdf\x49\xd0\x53\x16\ +\xc3\x6e\x18\xeb\x13\x2b\xe6\x2d\x7c\x57\x6f\x94\x1b\xf6\x24\xb9\ +\xbb\xee\xcb\xb6\x92\x33\x03\x06\xeb\x03\x48\x79\x1d\x68\x71\x6f\ +\x39\x0f\xb0\xdf\xec\x88\x5a\x52\xd8\xde\xf9\x29\xf4\x81\x62\x35\ +\x70\xc0\xfb\xe0\x75\xc5\x4f\x8c\x01\x9f\xa1\xba\x87\x0a\xdf\x65\ +\x58\x63\x36\x38\x9e\x00\x79\x9f\xb2\xb5\xde\xca\x51\xcc\x80\x12\ +\x6d\xa3\x3b\x32\x98\xfc\xb4\x74\xdd\xf1\x0d\xad\x6b\x2c\xa0\xb3\ +\xb8\x5d\x66\xd9\xe5\x3b\x59\x48\x47\x60\x65\x1a\x89\x3f\x48\x11\ +\x23\x6e\x4d\xd2\x3f\x4e\x0d\x21\x05\xfa\xbb\x61\x59\x40\xf7\x6c\ +\x9a\x1c\x72\x27\xa5\x10\xf9\x35\xb4\x49\xf5\x03\x08\xc9\xd1\x96\ +\xab\x08\x66\xc0\x68\xe8\xab\x97\x3f\xc2\x0b\xad\xf5\x75\x70\x8b\ +\xc4\xb1\xa0\x98\x7f\x05\x18\x00\x90\xb5\xfd\x36\x34\xeb\xb9\xe4\ +\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x06\xa4\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ +\x79\x71\xc9\x65\x3c\x00\x00\x03\x71\x69\x54\x58\x74\x58\x4d\x4c\ +\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00\x00\ +\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\ +\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\x57\x35\x4d\ +\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\x4e\x54\x63\ +\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\x6d\x70\x6d\ +\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\x61\x64\x6f\ +\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\x78\x3a\x78\ +\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\x4d\x50\x20\ +\x43\x6f\x72\x65\x20\x35\x2e\x35\x2d\x63\x30\x31\x34\x20\x37\x39\ +\x2e\x31\x35\x31\x34\x38\x31\x2c\x20\x32\x30\x31\x33\x2f\x30\x33\ +\x2f\x31\x33\x2d\x31\x32\x3a\x30\x39\x3a\x31\x35\x20\x20\x20\x20\ +\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x20\ +\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\ +\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\ +\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\x3a\x44\x65\ +\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\x3a\x61\x62\ +\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\ +\x4d\x4d\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\ +\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\ +\x6d\x6d\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x74\x52\x65\x66\ +\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\ +\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\ +\x79\x70\x65\x2f\x52\x65\x73\x6f\x75\x72\x63\x65\x52\x65\x66\x23\ +\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x3d\x22\x68\x74\x74\ +\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ +\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ +\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x42\x33\x41\ +\x34\x45\x35\x42\x34\x35\x39\x38\x34\x31\x31\x45\x33\x42\x33\x31\ +\x41\x45\x43\x34\x30\x43\x43\x32\x45\x39\x37\x31\x33\x22\x20\x78\ +\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x42\x33\x41\x34\x45\x35\x42\ +\x33\x35\x39\x38\x34\x31\x31\x45\x33\x42\x33\x31\x41\x45\x43\x34\ +\x30\x43\x43\x32\x45\x39\x37\x31\x33\x22\x20\x78\x6d\x70\x3a\x43\ +\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ +\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ +\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ +\x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ +\x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x63\x31\x65\x61\x38\x31\x32\x35\ +\x2d\x65\x62\x64\x64\x2d\x63\x38\x34\x62\x2d\x39\x66\x37\x61\x2d\ +\x30\x36\x39\x39\x32\x39\x38\x64\x62\x39\x33\x63\x22\x20\x73\x74\ +\x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ +\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ +\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ +\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x47\x2d\ +\xcb\x84\x00\x00\x02\xc9\x49\x44\x41\x54\x78\xda\xc4\x57\x3f\x68\ +\x93\x41\x14\xff\xbe\x10\x07\x07\x3b\x39\x89\x53\x51\x52\x1b\xd4\ +\x45\x70\x90\xaa\x74\x28\xba\x28\x14\x07\xd7\x12\x41\x68\x27\x69\ +\x52\x1d\xc4\x21\x76\x51\x11\xb7\xba\xa8\x38\x38\x04\x07\xc1\xe2\ +\x10\x1d\x4a\x1d\xbb\xf9\x87\xb4\x69\xa3\x99\x82\x53\x1d\xcc\x2a\ +\x34\xfe\x1e\xfc\x0e\x8e\xf3\xde\xdd\x97\xd0\x4f\x1f\xfc\xf8\xc2\ +\x5d\xde\x7b\xbf\x7b\xef\xdd\xbb\xbb\x34\x19\x41\xce\xbe\xbd\x5e\ +\xc5\xe7\x1e\x70\x88\x43\x7d\xa0\xbe\x71\xb5\xf1\x78\x58\x5b\xe9\ +\x08\xce\x8f\xe0\xd3\xf3\xe8\x0e\x80\xa3\x20\xf1\x63\x18\x7b\x85\ +\x11\x02\x70\x5c\x21\x9e\x72\x6e\x28\x29\x2a\xab\x9c\xc3\x67\x1e\ +\xd8\x05\xaa\x58\x55\x2b\x63\xd4\x52\xc7\xce\x79\x49\x0d\xfd\x2c\ +\xc3\x4e\x33\x1a\x01\x28\xdd\xc1\xe7\x05\x70\x06\xb8\x04\xac\x63\ +\xec\x24\xe7\xc4\xc1\x78\x80\xc0\x38\xff\x23\xff\x9d\xc6\x47\x1c\ +\x5e\x00\xce\x01\xab\x18\xbb\x12\x63\x3c\x47\xe7\xae\x48\x24\x1e\ +\x01\x37\x32\x84\xf9\x1b\xd0\x00\x16\x81\x83\xce\xdc\x6f\x59\x14\ +\x22\xb1\xa6\x45\x60\x5e\x31\x7a\x18\x78\x90\x31\xc7\xc7\x80\xbb\ +\x1e\xe7\x22\x07\x80\x9b\xa1\x14\xec\x26\xf9\xcb\xcf\x10\x81\x6a\ +\xce\x24\xbe\x03\xf7\x83\x7d\x80\x05\xb7\xc6\xb0\x87\x64\x1b\xd8\ +\xe2\xef\x13\x40\x29\x83\xf3\x8b\xc8\x7f\x2f\xda\x88\x40\x62\x89\ +\x39\xf7\xc9\x7b\x60\x09\x86\xbe\x38\x3a\xa7\x58\xa8\x33\x8a\xde\ +\x02\x74\x56\xa2\x9d\x90\xdb\x68\x5b\x29\xb8\x27\x52\xdd\x30\x34\ +\x50\x88\x8b\xae\xb4\xe3\x5b\x9e\xe9\x1d\x60\xc2\xd5\x4d\xad\xf6\ +\x6a\x3a\x9c\xec\xf3\xe7\xca\xca\x2f\x1b\x03\xd0\x91\xfa\x99\xe4\ +\xdc\x26\xc6\xf7\x2c\x12\x4d\x25\x12\x15\xa0\xcb\xb6\xdd\x91\xb6\ +\x9d\x42\x61\x91\xa1\x8b\x9d\x0b\xa7\x4d\xd8\xa1\x23\x39\x7f\x23\ +\x2b\xe2\x5c\x1b\x98\xc5\xfc\x96\x95\x8e\xcf\x11\x7b\x42\xa2\x26\ +\x04\x7e\xe1\xc7\x58\xac\xe0\x60\x7c\xc2\x5a\x79\xcb\x72\x9e\x58\ +\x24\xca\x56\x24\xda\x19\x0a\xb3\x5f\xc8\xe0\xdc\x18\x37\x52\xf6\ +\x38\x4f\x38\x36\xa9\xe8\x68\x32\x56\x48\xfe\xb3\x14\x78\x99\x88\ +\x89\xbd\xe2\x96\xb2\x3a\x19\xdb\x54\x74\x82\x29\xa8\xb3\x20\x42\ +\x52\x62\x61\x25\xcc\xf1\xac\x43\xc2\x14\xe1\x9e\x55\x84\xa5\x0c\ +\x45\x58\x1f\x66\x1b\x7e\xe0\x49\x66\x6f\xc3\xb2\x89\xca\xc8\xdb\ +\x50\x69\x26\x3b\x3c\xd5\xf6\xb3\x11\x75\x24\x2a\xae\xee\x5f\x45\ +\xc8\x3f\x34\x94\xb0\x89\xe1\xa6\x49\x87\xa7\x15\x37\x15\xe7\x22\ +\xcf\x7c\xc4\x7d\x11\x90\x9b\xcc\x3b\xe5\x3c\x77\x0f\xa3\xb6\x55\ +\x70\xb1\x9c\xcb\x29\x3b\x0d\x12\x5f\x63\x77\xb8\x66\x06\xe7\xa3\ +\x8a\x90\x98\x02\x89\xb6\x96\x82\x7a\x8e\xce\xcd\xcd\xea\x76\xa8\ +\x06\x8a\xff\xa0\xf7\x14\x43\x04\x96\x79\x71\xf4\x5d\x26\x16\xb8\ +\x3b\x62\xd2\xe1\x2a\x7d\x37\xab\x3e\x77\x89\x9f\x00\xef\xed\xd7\ +\x1c\x12\xe6\x26\xb3\xc2\x62\xab\x04\x9c\x57\xb8\xd5\x1e\x4a\xc1\ +\x39\x24\xc4\xf9\x0c\xe6\x3e\xc5\xb6\xe1\x2a\xdf\x03\xaf\x81\xa7\ +\x2c\x9a\x9e\xb5\x45\xbb\x01\x02\x5d\xb3\xd5\x58\xed\x53\xc0\x4b\ +\xe0\x95\xbc\x0f\x30\xb6\xb1\x1f\x6f\x43\x79\x68\xac\x2b\xd3\x12\ +\xa9\x8f\x79\xbf\x0d\x3b\xca\xd9\x31\xe0\x5c\x92\x2b\x01\xbe\x7e\ +\x6b\xce\x29\x2a\x97\x9a\xda\xb0\x2f\x63\x91\x3f\x02\x0c\x00\x21\ +\x27\x10\xbf\xa7\x82\xc6\x68\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ +\x42\x60\x82\ +\x00\x00\x04\xf8\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ +\x79\x71\xc9\x65\x3c\x00\x00\x03\x71\x69\x54\x58\x74\x58\x4d\x4c\ +\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00\x00\ +\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\ +\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\x57\x35\x4d\ +\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\x4e\x54\x63\ +\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\x6d\x70\x6d\ +\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\x61\x64\x6f\ +\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\x78\x3a\x78\ +\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\x4d\x50\x20\ +\x43\x6f\x72\x65\x20\x35\x2e\x35\x2d\x63\x30\x31\x34\x20\x37\x39\ +\x2e\x31\x35\x31\x34\x38\x31\x2c\x20\x32\x30\x31\x33\x2f\x30\x33\ +\x2f\x31\x33\x2d\x31\x32\x3a\x30\x39\x3a\x31\x35\x20\x20\x20\x20\ +\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x20\ +\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\ +\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\ +\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\x3a\x44\x65\ +\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\x3a\x61\x62\ +\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\ +\x4d\x4d\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\ +\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\ +\x6d\x6d\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x74\x52\x65\x66\ +\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\ +\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\ +\x79\x70\x65\x2f\x52\x65\x73\x6f\x75\x72\x63\x65\x52\x65\x66\x23\ +\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x3d\x22\x68\x74\x74\ +\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ +\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ +\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x41\x45\x36\ +\x37\x43\x43\x34\x36\x35\x39\x38\x44\x31\x31\x45\x33\x39\x32\x37\ +\x33\x46\x43\x46\x32\x35\x44\x37\x31\x38\x43\x35\x39\x22\x20\x78\ +\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x41\x45\x36\x37\x43\x43\x34\ +\x35\x35\x39\x38\x44\x31\x31\x45\x33\x39\x32\x37\x33\x46\x43\x46\ +\x32\x35\x44\x37\x31\x38\x43\x35\x39\x22\x20\x78\x6d\x70\x3a\x43\ +\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ +\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ +\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ +\x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ +\x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x37\x31\x65\x61\x35\x61\x61\x61\ +\x2d\x63\x33\x30\x31\x2d\x30\x61\x34\x35\x2d\x62\x36\x30\x35\x2d\ +\x38\x64\x36\x65\x63\x37\x33\x34\x65\x37\x62\x66\x22\x20\x73\x74\ +\x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ +\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ +\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ +\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\xe1\x20\ +\xe3\x43\x00\x00\x01\x1d\x49\x44\x41\x54\x78\xda\x62\x6c\x4f\x5c\ +\x74\x8e\x81\x81\xc1\x90\x01\x3b\xf8\x0b\xc4\x61\x95\xf3\xe3\xd6\ +\x81\x38\x40\xb5\x09\x40\x6a\x1e\x10\x33\x32\x50\x07\x9c\x67\xc2\ +\x63\x39\x08\x30\x03\xb1\x1e\x12\xdf\x81\x8a\x96\x83\x80\x21\x13\ +\xc3\x00\x83\x51\x07\x8c\x3a\x00\xe4\x80\x4f\x04\xd4\x7c\x44\x62\ +\x3f\xa7\xb2\xfd\x9f\x58\x80\x84\x31\x10\xeb\xe0\x50\xf0\x03\x88\ +\xf7\x20\xf1\x1b\x80\xf8\x30\x10\xb3\x51\xc9\x01\x57\x18\x46\x3c\ +\x60\x84\x16\xaf\x0e\x38\xe4\xbf\x00\x71\x07\xb0\x28\x7e\x02\x2d\ +\x8a\xd5\x80\x54\x31\x10\xb3\x53\xc9\xfe\x03\x2c\x44\x94\xed\xaf\ +\x80\xb8\x09\xca\x2e\x04\xe2\x34\x2a\x06\x40\x1c\x13\x11\x65\x3b\ +\x72\x56\xe5\xa4\x76\x0c\x8c\x16\x44\xa3\x0e\x00\x39\xe0\x3f\x01\ +\x35\xff\x90\xd8\xdf\xa9\x6c\xff\x7f\x50\x36\x4c\x22\x50\x0e\xcc\ +\x43\xe2\xf7\x43\x1d\x4d\xb5\x72\x60\xb4\x28\x06\x15\xc5\x2a\x78\ +\x6a\x43\x50\x9c\xef\x05\x16\xc5\x7f\xa0\x45\x31\x28\xe8\x9d\xa9\ +\x59\x1b\x82\xd2\xc0\x59\x20\xe6\xc3\xa3\xa8\x08\x1a\xf7\xb0\xea\ +\xb8\x82\x9a\xed\x01\x26\x02\x96\x83\x00\x3f\x12\x5b\x92\xca\x31\ +\xc0\x37\x5a\x10\x8d\x3a\x60\x50\x38\xe0\x1c\x1e\x79\x50\xfe\xbf\ +\x84\x56\x74\xfe\xa7\xa2\xfd\xe7\x18\xff\xff\xff\x3f\xa0\x21\x00\ +\x10\x60\x00\xb3\xf5\x3a\xe9\xf9\xc0\x6c\x8c\x00\x00\x00\x00\x49\ +\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x06\xb1\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ +\x79\x71\xc9\x65\x3c\x00\x00\x03\x71\x69\x54\x58\x74\x58\x4d\x4c\ +\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00\x00\ +\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\ +\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\x57\x35\x4d\ +\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\x4e\x54\x63\ +\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\x6d\x70\x6d\ +\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\x61\x64\x6f\ +\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\x78\x3a\x78\ +\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\x4d\x50\x20\ +\x43\x6f\x72\x65\x20\x35\x2e\x35\x2d\x63\x30\x31\x34\x20\x37\x39\ +\x2e\x31\x35\x31\x34\x38\x31\x2c\x20\x32\x30\x31\x33\x2f\x30\x33\ +\x2f\x31\x33\x2d\x31\x32\x3a\x30\x39\x3a\x31\x35\x20\x20\x20\x20\ +\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x20\ +\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\ +\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\ +\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\x3a\x44\x65\ +\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\x3a\x61\x62\ +\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\ +\x4d\x4d\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\ +\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\ +\x6d\x6d\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x74\x52\x65\x66\ +\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\ +\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\ +\x79\x70\x65\x2f\x52\x65\x73\x6f\x75\x72\x63\x65\x52\x65\x66\x23\ +\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x3d\x22\x68\x74\x74\ +\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ +\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\x78\x6d\x70\x4d\x4d\ +\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\ +\x39\x66\x62\x31\x39\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\ +\x39\x39\x31\x31\x2d\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\ +\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\ +\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x42\x45\x42\ +\x44\x37\x42\x46\x37\x35\x39\x38\x44\x31\x31\x45\x33\x39\x39\x41\ +\x31\x41\x44\x34\x30\x37\x44\x35\x45\x43\x33\x39\x32\x22\x20\x78\ +\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\ +\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x42\x45\x42\x44\x37\x42\x46\ +\x36\x35\x39\x38\x44\x31\x31\x45\x33\x39\x39\x41\x31\x41\x44\x34\ +\x30\x37\x44\x35\x45\x43\x33\x39\x32\x22\x20\x78\x6d\x70\x3a\x43\ +\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ +\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\ +\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x3e\x20\x3c\x78\x6d\x70\x4d\ +\x4d\x3a\x44\x65\x72\x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\ +\x52\x65\x66\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x69\x69\x64\x3a\x37\x31\x65\x61\x35\x61\x61\x61\ +\x2d\x63\x33\x30\x31\x2d\x30\x61\x34\x35\x2d\x62\x36\x30\x35\x2d\ +\x38\x64\x36\x65\x63\x37\x33\x34\x65\x37\x62\x66\x22\x20\x73\x74\ +\x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\ +\x78\x6d\x70\x2e\x64\x69\x64\x3a\x63\x34\x37\x39\x66\x62\x31\x39\ +\x2d\x34\x33\x34\x34\x2d\x62\x65\x34\x33\x2d\x39\x39\x31\x31\x2d\ +\x33\x64\x35\x32\x63\x31\x30\x33\x35\x37\x65\x31\x22\x2f\x3e\x20\ +\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ +\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\ +\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\ +\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x59\x34\ +\x5e\xf3\x00\x00\x02\xd6\x49\x44\x41\x54\x78\xda\xc4\x97\x5d\x88\ +\x4d\x51\x14\x80\xcf\x3d\x73\x63\x26\xe6\x0f\x2f\x63\xa8\x91\xc2\ +\x35\xe3\x67\xfc\x34\xe1\x6d\x26\x94\x28\x23\x4f\xa3\xa6\x34\xe4\ +\x61\x46\x92\x17\x3f\x8d\x48\x92\x9f\xf0\x20\x2f\x46\x44\x92\x07\ +\x19\x85\xc4\x83\x9f\x17\x94\x50\x73\x87\x49\x29\xf2\x73\xf3\x30\ +\x4d\x83\x49\x46\x5c\xdf\xd2\x3e\x75\xba\x73\xf6\xbe\xfb\x9c\xb9\ +\x87\x55\x5f\xeb\xde\x73\xf6\x59\x6b\xed\xb5\xd7\xd9\x7b\x9d\x84\ +\x63\x29\x87\x36\x5e\x28\x47\x35\xc3\x52\x68\x80\xc9\x30\x01\x5c\ +\xf8\x0e\x6f\xa1\x17\x1e\xc0\xb5\x5d\xe7\x5a\x3f\xda\xd8\x4d\x58\ +\x38\x9e\x85\xea\x84\x75\x50\x6c\x19\x6f\x16\x6e\xc3\x11\x02\xb9\ +\x1f\x29\x00\x1c\x97\xa1\x8e\x42\x1b\x14\x39\xd1\xa5\x1b\x3a\x74\ +\x19\x49\x68\x9c\xcf\x97\x34\x42\x8d\x53\x18\xe9\x87\x16\x82\xb8\ +\x93\x7b\xc3\x0d\x70\xde\xa8\xd6\xb1\x50\xce\x45\x26\xc2\x0d\x6c\ +\x6f\x30\x66\x80\x01\xf5\xca\x79\xa9\x13\x8f\xfc\x86\x35\x64\xe2\ +\xd6\x88\x00\x70\x5e\x81\x7a\x6e\x31\xf3\x21\xb8\x09\x8f\x21\x03\ +\x3f\x61\x0a\x2c\x16\xe3\x50\x96\xe7\xf9\x41\x58\x48\x10\x6f\xe4\ +\x4f\xd2\x9f\x80\x3c\xce\xbf\xc2\x01\x38\xcd\xc3\x43\x9a\xda\x29\ +\x41\x6d\x81\x7d\x50\xae\xb1\x23\xd7\xcf\x30\xb6\x09\x3b\xd9\x84\ +\x7a\xb0\x0e\xf5\xc2\x50\xed\x69\x58\xeb\x45\x6d\xf1\xea\x4e\x55\ +\xd5\xbf\xc0\x30\xac\x19\x7b\xdd\x5e\x11\xbe\x86\xcd\xca\x51\xae\ +\xf4\x41\xa3\xad\x73\x11\xc6\xbe\x97\x67\xd4\xa4\x74\xb2\x27\xa8\ +\x08\xe5\xff\x72\xd8\x01\x2b\x60\x18\xea\x31\xf8\x32\x4a\xc5\x61\ +\x6f\x3a\xaa\x07\x4a\x34\x43\xe6\x9a\x36\xa2\x39\xa8\xd9\x38\xbf\ +\x32\x9a\xb2\xc7\xce\x7e\xd4\x5e\xcd\xed\xce\x84\x13\xb3\x10\x40\ +\x15\xea\x43\xd0\x9e\x83\xdc\x75\xe3\x0e\x80\x0c\x66\x0c\xb5\x90\ +\x4a\x12\x61\x35\x3f\x96\x49\xd5\x32\x78\x38\xa6\x38\xd2\x9a\x37\ +\xa2\x4a\x32\x30\x03\x64\x9d\x3f\x11\xcc\x71\xa8\x8d\x21\x80\x01\ +\xcd\xf5\x22\xd9\x88\x2a\x7d\xfb\xf5\x76\x81\x20\x1e\xa1\xcf\x4a\ +\x60\x64\xe5\x5b\x81\xce\x82\x20\xf9\x25\x19\xa8\x08\xb8\xb1\x04\ +\xba\x64\xab\x25\x98\x2e\x68\x18\x65\x00\x75\x9a\xeb\x19\x7f\x06\ +\x82\x64\xbc\xea\x07\xda\x08\x22\xad\xb2\x72\x91\xac\xf4\x87\x78\ +\x0b\xe4\x9c\x98\xa7\xb9\xfd\xca\xcd\x13\x40\xee\x2c\x4e\xc0\x79\ +\x8c\x16\x87\x98\xfd\x56\x43\xe3\xf3\x30\x19\x22\x80\xcf\x52\x1f\ +\xcc\xfe\x72\x88\xd9\xa7\x50\xdb\x0c\x43\xae\x27\x35\x35\x90\x2b\ +\x97\xa0\x1d\xe7\x83\x21\x9c\x4f\x42\x5d\x85\xb1\x9a\x21\x4f\xb1\ +\xd7\x63\xbb\x04\x8b\xe4\x9d\x0d\x79\x06\x48\x63\x93\x32\x0c\x3b\ +\xe8\xf5\x03\x36\x01\xcc\x84\x67\x18\x96\x26\xf5\x24\x91\x0f\x18\ +\x1a\xd9\x0e\xd8\x0d\xe3\x0c\xf6\xee\x49\xfa\xff\x9e\x86\x3c\xd4\ +\xa7\x1c\xd8\xca\x0f\xd9\xc3\xe1\x89\xda\xe3\x45\xaa\x55\x47\xb4\ +\xd2\xa2\x75\x1f\xd1\x11\x79\x19\x78\x07\xc7\x54\x6a\x4c\x6d\x95\ +\xac\xe9\x6a\x45\x94\x9e\xb0\xc5\xdf\x5b\xb8\x2a\x55\x87\xd5\xd1\ +\x7b\x4a\xf5\x75\x5f\x62\xd8\x8e\xa5\x77\x6c\xf5\x37\xa4\xde\x12\ +\xd4\x72\xb1\x37\xa0\x17\x90\x35\x9a\x16\xf7\x77\x81\xa9\x21\x29\ +\x55\x4b\xb2\x49\x73\x96\xc7\xf7\x65\x14\x90\x8d\x9d\xb0\x1e\xc6\ +\xfc\xb3\x6f\x43\xcd\xc6\xb2\x0a\x9a\xd4\xde\x5e\xe3\x6b\xbd\xa3\ +\x7f\x1d\x67\xb3\x59\xe7\x7f\xca\x1f\x01\x06\x00\x05\x3b\xea\xc8\ +\xfa\x24\x85\x20\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\ \x00\x00\x12\x6c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -1585,38 +2047,82 @@ \x00\x00\x70\x37\ \x00\x69\ \x00\x6d\x00\x67\ -\x00\x0e\ -\x0e\x53\xf5\x27\ -\x00\x69\ -\x00\x63\x00\x6f\x00\x6e\x00\x5f\x00\x66\x00\x65\x00\x74\x00\x63\x00\x68\x00\x2e\x00\x70\x00\x6e\x00\x67\ -\x00\x0d\ -\x00\x4b\xdd\x67\ -\x00\x69\ -\x00\x63\x00\x6f\x00\x6e\x00\x5f\x00\x65\x00\x78\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ -\x00\x0e\ -\x03\xf4\xfc\x47\ -\x00\x69\ -\x00\x63\x00\x6f\x00\x6e\x00\x5f\x00\x61\x00\x70\x00\x70\x00\x6c\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1a\ +\x0d\x95\x42\xe7\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x62\x00\x61\x00\x63\x00\x6b\x00\x75\x00\x70\x00\x5f\x00\x64\x00\x69\x00\x73\ +\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x13\ +\x09\x34\xc1\x67\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x64\x00\x6f\x00\x77\x00\x6e\x00\x6c\x00\x6f\x00\x61\x00\x64\x00\x2e\x00\x70\ +\x00\x6e\x00\x67\ \x00\x0f\ -\x0e\x49\xe6\x87\ -\x00\x69\ -\x00\x63\x00\x6f\x00\x6e\x00\x5f\x00\x62\x00\x61\x00\x63\x00\x6b\x00\x75\x00\x70\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x0d\xf5\x7d\xe7\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x75\x00\x74\x00\x66\x00\x38\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x19\ +\x01\x96\x0f\x07\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x61\x00\x70\x00\x70\x00\x6c\x00\x79\x00\x5f\x00\x64\x00\x69\x00\x73\x00\x61\ +\x00\x62\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1c\ +\x0b\x10\x37\x07\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x64\x00\x6f\x00\x77\x00\x6e\x00\x6c\x00\x6f\x00\x61\x00\x64\x00\x5f\x00\x64\ +\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x18\ +\x0c\x40\x62\x67\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x65\x00\x78\x00\x69\x00\x74\x00\x5f\x00\x64\x00\x69\x00\x73\x00\x61\x00\x62\ +\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ -\x04\x2c\x64\x87\ -\x00\x69\ -\x00\x63\x00\x6f\x00\x6e\x00\x5f\x00\x75\x00\x70\x00\x64\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x08\x69\x7b\xe7\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x65\x00\x78\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x18\ +\x0c\x12\xc4\x27\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x61\x00\x6e\x00\x73\x00\x69\x00\x5f\x00\x64\x00\x69\x00\x73\x00\x61\x00\x62\ +\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1b\ +\x06\xc3\x72\x67\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x72\x00\x65\x00\x73\x00\x74\x00\x6f\x00\x72\x00\x65\x00\x5f\x00\x64\x00\x69\ +\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x18\ +\x0c\x81\x05\x67\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x75\x00\x74\x00\x66\x00\x38\x00\x5f\x00\x64\x00\x69\x00\x73\x00\x61\x00\x62\ +\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1a\ +\x0d\xa7\xd8\x07\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x75\x00\x70\x00\x64\x00\x61\x00\x74\x00\x65\x00\x5f\x00\x64\x00\x69\x00\x73\ +\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x02\xf6\x79\x67\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x61\x00\x6e\x00\x73\x00\x69\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x11\ +\x06\x8e\xf4\xc7\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x75\x00\x70\x00\x64\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ \x00\x10\ -\x0e\x4e\x2b\xa7\ -\x00\x69\ -\x00\x63\x00\x6f\x00\x6e\x00\x5f\x00\x72\x00\x65\x00\x73\x00\x74\x00\x6f\x00\x72\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ -\x00\x0c\ -\x01\x5d\x9f\x87\ -\x00\x69\ -\x00\x63\x00\x6f\x00\x6e\x00\x5f\x00\x75\x00\x74\x00\x66\x00\x2e\x00\x70\x00\x6e\x00\x67\ -\x00\x0d\ -\x0a\xd8\xdc\xe7\ -\x00\x69\ -\x00\x63\x00\x6f\x00\x6e\x00\x5f\x00\x61\x00\x6e\x00\x73\x00\x69\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x01\xda\x95\x47\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x61\x00\x70\x00\x70\x00\x6c\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x11\ +\x0c\xef\x75\x47\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x62\x00\x61\x00\x63\x00\x6b\x00\x75\x00\x70\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x12\ +\x04\x27\x2f\xe7\ +\x00\x62\ +\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x72\x00\x65\x00\x73\x00\x74\x00\x6f\x00\x72\x00\x65\x00\x2e\x00\x70\x00\x6e\ +\x00\x67\ \x00\x0c\ \x09\xf7\x1c\xa7\ \x00\x75\ @@ -1625,19 +2131,28 @@ qt_resource_struct = "\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\ -\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0c\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x15\ \x00\x00\x00\x0e\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\ -\x00\x00\x00\x22\x00\x02\x00\x00\x00\x08\x00\x00\x00\x04\ -\x00\x00\x00\x50\x00\x00\x00\x00\x00\x01\x00\x00\x07\x7d\ -\x00\x00\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x35\xf8\ -\x00\x00\x00\x70\x00\x00\x00\x00\x00\x01\x00\x00\x10\x77\ -\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x01\x00\x00\x21\x8f\ -\x00\x00\x01\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x41\xf8\ -\x00\x00\x00\x92\x00\x00\x00\x00\x00\x01\x00\x00\x19\xde\ -\x00\x00\x00\xda\x00\x00\x00\x00\x00\x01\x00\x00\x2c\x1a\ +\x00\x00\x00\x22\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\ +\x00\x00\x00\x0e\x00\x02\x00\x00\x00\x10\x00\x00\x00\x05\ +\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x01\x00\x00\x12\x2c\ +\x00\x00\x02\xb6\x00\x00\x00\x00\x00\x01\x00\x00\x57\x58\ +\x00\x00\x02\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x48\xda\ +\x00\x00\x03\x04\x00\x00\x00\x00\x00\x01\x00\x00\x62\xfc\ +\x00\x00\x02\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x50\x67\ +\x00\x00\x01\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x33\x9e\ +\x00\x00\x01\x64\x00\x00\x00\x00\x00\x01\x00\x00\x25\x54\ +\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x04\xfc\ +\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x18\xef\ +\x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x00\x2c\x15\ +\x00\x00\x01\x2e\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x93\ +\x00\x00\x01\xfa\x00\x00\x00\x00\x00\x01\x00\x00\x3a\x5d\ +\x00\x00\x02\xdc\x00\x00\x00\x00\x00\x01\x00\x00\x5e\x00\ \x00\x00\x00\x2e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x00\x22\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0d\ -\x00\x00\x01\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x4d\xd9\ +\x00\x00\x02\x30\x00\x00\x00\x00\x00\x01\x00\x00\x41\xe9\ +\x00\x00\x00\x94\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xa0\ +\x00\x00\x00\x22\x00\x02\x00\x00\x00\x01\x00\x00\x00\x16\ +\x00\x00\x03\x2e\x00\x00\x00\x00\x00\x01\x00\x00\x69\xb1\ " def qInitResources(): diff --git a/qthostsui.py b/qthostsui.py index 23e4566..a393ff8 100644 --- a/qthostsui.py +++ b/qthostsui.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'qthostsui.ui' # -# Created: Sun Nov 24 19:38:26 2013 +# Created: Sat Nov 30 15:06:56 2013 # by: PyQt4 UI code generator 4.10.2 # # WARNING! All changes made in this file will be lost! @@ -164,7 +164,8 @@ def setupUi(self, HostsUtlMain): self.ButtonBackup.setGeometry(QtCore.QRect(0, 10, 48, 48)) self.ButtonBackup.setText(_fromUtf8("")) icon1 = QtGui.QIcon() - icon1.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/icon_backup.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon1.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_backup.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon1.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_backup_disabled.png")), QtGui.QIcon.Disabled, QtGui.QIcon.Off) self.ButtonBackup.setIcon(icon1) self.ButtonBackup.setIconSize(QtCore.QSize(32, 32)) self.ButtonBackup.setObjectName(_fromUtf8("ButtonBackup")) @@ -172,7 +173,8 @@ def setupUi(self, HostsUtlMain): self.ButtonUpdate.setGeometry(QtCore.QRect(60, 70, 48, 48)) self.ButtonUpdate.setText(_fromUtf8("")) icon2 = QtGui.QIcon() - icon2.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/icon_fetch.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon2.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_download.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon2.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_download_disabled.png")), QtGui.QIcon.Disabled, QtGui.QIcon.Off) self.ButtonUpdate.setIcon(icon2) self.ButtonUpdate.setIconSize(QtCore.QSize(32, 32)) self.ButtonUpdate.setObjectName(_fromUtf8("ButtonUpdate")) @@ -180,7 +182,8 @@ def setupUi(self, HostsUtlMain): self.ButtonRestore.setGeometry(QtCore.QRect(60, 10, 48, 48)) self.ButtonRestore.setText(_fromUtf8("")) icon3 = QtGui.QIcon() - icon3.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/icon_restore.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon3.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_restore.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon3.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_restore_disabled.png")), QtGui.QIcon.Disabled, QtGui.QIcon.Off) self.ButtonRestore.setIcon(icon3) self.ButtonRestore.setIconSize(QtCore.QSize(32, 32)) self.ButtonRestore.setObjectName(_fromUtf8("ButtonRestore")) @@ -188,7 +191,8 @@ def setupUi(self, HostsUtlMain): self.ButtonApply.setGeometry(QtCore.QRect(0, 220, 48, 48)) self.ButtonApply.setText(_fromUtf8("")) icon4 = QtGui.QIcon() - icon4.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/icon_apply.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon4.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_apply.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon4.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_apply_disabled.png")), QtGui.QIcon.Disabled, QtGui.QIcon.Off) self.ButtonApply.setIcon(icon4) self.ButtonApply.setIconSize(QtCore.QSize(32, 32)) self.ButtonApply.setObjectName(_fromUtf8("ButtonApply")) @@ -196,7 +200,8 @@ def setupUi(self, HostsUtlMain): self.ButtonExit.setGeometry(QtCore.QRect(60, 220, 48, 48)) self.ButtonExit.setText(_fromUtf8("")) icon5 = QtGui.QIcon() - icon5.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/icon_exit.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon5.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_exit.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon5.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_exit_disabled.png")), QtGui.QIcon.Disabled, QtGui.QIcon.Off) self.ButtonExit.setIcon(icon5) self.ButtonExit.setIconSize(QtCore.QSize(32, 32)) self.ButtonExit.setObjectName(_fromUtf8("ButtonExit")) @@ -204,7 +209,8 @@ def setupUi(self, HostsUtlMain): self.ButtonCheck.setGeometry(QtCore.QRect(0, 70, 48, 48)) self.ButtonCheck.setText(_fromUtf8("")) icon6 = QtGui.QIcon() - icon6.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/icon_update.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon6.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_update.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon6.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_update_disabled.png")), QtGui.QIcon.Disabled, QtGui.QIcon.Off) self.ButtonCheck.setIcon(icon6) self.ButtonCheck.setIconSize(QtCore.QSize(32, 32)) self.ButtonCheck.setObjectName(_fromUtf8("ButtonCheck")) @@ -212,7 +218,8 @@ def setupUi(self, HostsUtlMain): self.ButtonANSI.setGeometry(QtCore.QRect(0, 160, 48, 48)) self.ButtonANSI.setText(_fromUtf8("")) icon7 = QtGui.QIcon() - icon7.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/icon_ansi.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon7.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_ansi.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon7.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_ansi_disabled.png")), QtGui.QIcon.Disabled, QtGui.QIcon.Off) self.ButtonANSI.setIcon(icon7) self.ButtonANSI.setIconSize(QtCore.QSize(32, 32)) self.ButtonANSI.setObjectName(_fromUtf8("ButtonANSI")) @@ -220,7 +227,8 @@ def setupUi(self, HostsUtlMain): self.ButtonUTF.setGeometry(QtCore.QRect(60, 160, 48, 48)) self.ButtonUTF.setText(_fromUtf8("")) icon8 = QtGui.QIcon() - icon8.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/icon_utf.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon8.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_utf8.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon8.addPixmap(QtGui.QPixmap(_fromUtf8(":/buttons/img/buttons/button_utf8_disabled.png")), QtGui.QIcon.Disabled, QtGui.QIcon.Off) self.ButtonUTF.setIcon(icon8) self.ButtonUTF.setIconSize(QtCore.QSize(32, 32)) self.ButtonUTF.setObjectName(_fromUtf8("ButtonUTF")) diff --git a/qthostsui.ui b/qthostsui.ui index c1de29e..6d01345 100644 --- a/qthostsui.ui +++ b/qthostsui.ui @@ -345,7 +345,8 @@ - :/buttons/img/icon_backup.png:/buttons/img/icon_backup.png + :/buttons/img/buttons/button_backup.png + :/buttons/img/buttons/button_backup_disabled.png:/buttons/img/buttons/button_backup.png @@ -374,7 +375,8 @@ - :/buttons/img/icon_fetch.png:/buttons/img/icon_fetch.png + :/buttons/img/buttons/button_download.png + :/buttons/img/buttons/button_download_disabled.png:/buttons/img/buttons/button_download.png @@ -403,7 +405,8 @@ - :/buttons/img/icon_restore.png:/buttons/img/icon_restore.png + :/buttons/img/buttons/button_restore.png + :/buttons/img/buttons/button_restore_disabled.png:/buttons/img/buttons/button_restore.png @@ -432,7 +435,8 @@ - :/buttons/img/icon_apply.png:/buttons/img/icon_apply.png + :/buttons/img/buttons/button_apply.png + :/buttons/img/buttons/button_apply_disabled.png:/buttons/img/buttons/button_apply.png @@ -461,7 +465,8 @@ - :/buttons/img/icon_exit.png:/buttons/img/icon_exit.png + :/buttons/img/buttons/button_exit.png + :/buttons/img/buttons/button_exit_disabled.png:/buttons/img/buttons/button_exit.png @@ -490,7 +495,8 @@ - :/buttons/img/icon_update.png:/buttons/img/icon_update.png + :/buttons/img/buttons/button_update.png + :/buttons/img/buttons/button_update_disabled.png:/buttons/img/buttons/button_update.png @@ -519,7 +525,8 @@ - :/buttons/img/icon_ansi.png:/buttons/img/icon_ansi.png + :/buttons/img/buttons/button_ansi.png + :/buttons/img/buttons/button_ansi_disabled.png:/buttons/img/buttons/button_ansi.png @@ -548,7 +555,8 @@ - :/buttons/img/icon_utf.png:/buttons/img/icon_utf.png + :/buttons/img/buttons/button_utf8.png + :/buttons/img/buttons/button_utf8_disabled.png:/buttons/img/buttons/button_utf8.png diff --git a/style_rc.py b/style_rc.py index 615f2b0..af6e883 100644 --- a/style_rc.py +++ b/style_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: 周日 11月 24 19:38:26 2013 +# Created: 周六 11月 30 15:06:56 2013 # by: The Resource Compiler for PyQt (Qt v4.8.4) # # WARNING! All changes made in this file will be lost! diff --git a/theme/darkdefault.qss b/theme/darkdefault.qss index 4f151ee..9572709 100644 --- a/theme/darkdefault.qss +++ b/theme/darkdefault.qss @@ -8,6 +8,11 @@ QToolTip opacity: 100; } +QDialog#HostsUtlMain +{ + border: 1px solid black; +} + QWidget { color: #b1b1b1; @@ -28,7 +33,7 @@ QWidget:item:selected QFrame { - background-color: #3c3f41; + background-color: transparent; } QWidget:disabled @@ -74,6 +79,7 @@ QComboBox QComboBox:hover,QPushButton:hover { + background-color: #5b5d5f; border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); } From 3af75581d076a98b7ed287ae26e25224dfb8ac16 Mon Sep 17 00:00:00 2001 From: huhamhire Date: Sat, 30 Nov 2013 15:53:29 +0800 Subject: [PATCH 11/18] Update build script and description Signed-off-by: huhamhire --- README.md | 4 ++++ _build.py | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c60d719..0c7d39e 100644 --- a/README.md +++ b/README.md @@ -125,6 +125,10 @@ The Rest of the Distribution The files in this directory would on be included source code package for developers. +* theme/ - This directory contains QT stylesheet files of the program. + The stylesheet files (*.qss) are used to create the user interface of + Hosts Setup Utility. + * hostsutl.pro - Project file for QT. * qthosts.qrc - Resource file for main dialog designed by QT. diff --git a/_build.py b/_build.py index 2a043a3..f48ddef 100644 --- a/_build.py +++ b/_build.py @@ -14,7 +14,7 @@ # PURPOSE. # ===================================================================== -__version__ = "0.8.0" +__version__ = "0.9.0" __author__ = "huhamhire " import os @@ -34,7 +34,7 @@ AUTHOR = "Hamhire Hu" AUTHOR_EMAIL ="develop@huhamhire.com", LICENSE = "Public Domain, Python, BSD, GPLv3 (see LICENSE)", -URL = "http://hosts.huhamhire.com", +URL = "https://hosts.huhamhire.com", CLASSIFIERS = [ "Development Status :: 4 - Beta", "Environment :: MacOS X", @@ -69,6 +69,10 @@ "lang/zh_TW.qm", ] ), + ("style", [ + "style/darkdefault.qss", + ] + ), "LICENSE", "README.md", "network.conf", From 7444f8859fd0ecd3695ea45164a82d9f58296901 Mon Sep 17 00:00:00 2001 From: huhamhire Date: Sat, 30 Nov 2013 15:56:19 +0800 Subject: [PATCH 12/18] fix bug for building script Signed-off-by: huhamhire --- _build.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_build.py b/_build.py index f48ddef..ecdc647 100644 --- a/_build.py +++ b/_build.py @@ -69,8 +69,8 @@ "lang/zh_TW.qm", ] ), - ("style", [ - "style/darkdefault.qss", + ("theme", [ + "theme/darkdefault.qss", ] ), "LICENSE", From e4917c8045230fe547a0ef1e8b897f73ff73aeb8 Mon Sep 17 00:00:00 2001 From: huhamhire Date: Sun, 1 Dec 2013 17:39:06 +0800 Subject: [PATCH 13/18] Fix QFrame borer bug on X11 desktop and fix packing issue of building script. --- _build.py | 11 +++++++---- theme/darkdefault.qss | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/_build.py b/_build.py index ecdc647..f184469 100644 --- a/_build.py +++ b/_build.py @@ -84,7 +84,8 @@ # Pack up script package for Linux users file_path = lambda rel_path: SCRIPT_DIR + rel_path includes = [ - "*.py", "lang/*.qm", "LICENSE", "README.md", "network.conf"] + "*.py", "lang/*.qm", "theme/*.qss", "LICENSE", "README.md", + "network.conf"] excludes = ["_*.py", ".gitattributes"] ex_files = [] prefix = "HostsUtl-x11-gpl-" @@ -116,7 +117,8 @@ files = glob.glob(file_path(name_format)) for src_file in files: if src_file not in ex_files: - tar.add(src_file, src_file[rel_len:]) + tar_path = os.path.join(prefix[:-1], src_file[rel_len:]) + tar.add(src_file, tar_path) print src_file tar.close() exit(1) @@ -173,7 +175,8 @@ PLAT = "x64" elif struct.calcsize("P") * 8 == 32: PLAT = "x86" - ZIP_NAME = DIR_NAME + '-win-gpl-' + VERSION + '-' + PLAT + ".zip" + DIR_NAME = DIR_NAME + '-win-gpl-' + VERSION + '-' + PLAT + ZIP_NAME = DIR_NAME + ".zip" ZIP_FILE = WORK_DIR + ZIP_NAME compressed = zipfile.ZipFile(ZIP_FILE, 'w', zipfile.ZIP_DEFLATED) for root, dirs, files in os.walk(DIST_DIR): @@ -182,7 +185,7 @@ print "compressing: %s" % os.path.join(root, name) compressed.write( os.path.join(root, name), - os.path.join(rel_path, name)) + os.path.join(DIR_NAME, rel_path, name)) compressed.close() # Move ZIP file to release directory RELEASE_PATH = RELEASE_DIR + ZIP_NAME diff --git a/theme/darkdefault.qss b/theme/darkdefault.qss index 9572709..20c4205 100644 --- a/theme/darkdefault.qss +++ b/theme/darkdefault.qss @@ -33,6 +33,7 @@ QWidget:item:selected QFrame { + border: 0px; background-color: transparent; } From 3678739e2abf7c5ca04192f7b3a55e4abab50136 Mon Sep 17 00:00:00 2001 From: huhamhire Date: Sun, 1 Dec 2013 19:07:15 +0800 Subject: [PATCH 14/18] redesigned the set_style() function Signed-off-by: huhamhire --- hostsutl.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/hostsutl.py b/hostsutl.py index 1330378..ff0dc5d 100644 --- a/hostsutl.py +++ b/hostsutl.py @@ -164,7 +164,7 @@ def __init__(self, Ui, trans): self.Ui = Ui self._trans = trans self.set_platform() - self.set_font() + self.set_style() self.set_stylesheet() def on_Mirror_changed(self, mirr_id): @@ -615,19 +615,16 @@ def set_platform_label(self): self.set_label_text(self.Ui.labelOSStat, "[%s]" % self.platform) - def set_font(self): - """Set font and window style - Public Method + def set_style(self): + """Set window style - Public Method - Set the font of the elements on the main dialog with a windows style - depending on this program. + Set the main dialog with a window style depending on the os platform. """ + self.setWindowFlags(QtCore.Qt.FramelessWindowHint) system = self.platform if system == "Windows": pass elif system == "Linux": - font = QtGui.QFont() - font.setFamily("Sans") - self.setFont(font) # Set window style for sudo users. QtGui.QApplication.setStyle( QtGui.QStyleFactory.create("Cleanlooks")) @@ -1538,7 +1535,6 @@ def qt_main(): app.installTranslator(trans) ui = Ui_HostsUtlMain() HostsUtlMain = MainDialog(ui, trans) - HostsUtlMain.setWindowFlags(QtCore.Qt.FramelessWindowHint) ui.setupUi(HostsUtlMain) HostsUtlMain.set_languages() if not HostsUtlMain.initd: From cb356087472c8180feb1d925274298db597beaa5 Mon Sep 17 00:00:00 2001 From: huhamhire Date: Mon, 2 Dec 2013 11:33:46 +0800 Subject: [PATCH 15/18] Fix issues on privilege checking method for posix Signed-off-by: huhamhire --- _build.py | 2 +- hostsutl.py | 7 ++++++- theme/darkdefault.qss | 3 +-- utilities.py | 8 ++------ 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/_build.py b/_build.py index f184469..5ec3ee1 100644 --- a/_build.py +++ b/_build.py @@ -117,7 +117,7 @@ files = glob.glob(file_path(name_format)) for src_file in files: if src_file not in ex_files: - tar_path = os.path.join(prefix[:-1], src_file[rel_len:]) + tar_path = os.path.join(prefix + VERSION, src_file[rel_len:]) tar.add(src_file, tar_path) print src_file tar.close() diff --git a/hostsutl.py b/hostsutl.py index ff0dc5d..ac68181 100644 --- a/hostsutl.py +++ b/hostsutl.py @@ -549,7 +549,12 @@ def move_hosts(self): "Copying new hosts file to\n" " %s", None)) % self.hostspath self.set_makemsg(msg) - shutil.copy2(filepath, self.hostspath) + try: + shutil.copy2(filepath, self.hostspath) + except IOError: + self.warning_permission() + os.remove(filepath) + return msg = unicode(_translate("HostsUtlMain", "Remove temporary file", None)) self.set_makemsg(msg) diff --git a/theme/darkdefault.qss b/theme/darkdefault.qss index 20c4205..a1c4309 100644 --- a/theme/darkdefault.qss +++ b/theme/darkdefault.qss @@ -78,13 +78,12 @@ QComboBox border-radius: 5; } -QComboBox:hover,QPushButton:hover +QComboBox:hover, QPushButton:hover { background-color: #5b5d5f; border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a); } - QComboBox:on { padding-top: 3px; diff --git a/utilities.py b/utilities.py index 7a1560e..e8a5f78 100644 --- a/utilities.py +++ b/utilities.py @@ -78,8 +78,7 @@ def check_platform(cls): hostname = socket.gethostname() if os.name == "nt": system = "Windows" - path = ''.join([os.getenv("WINDIR"), - "\\System32\\drivers\\etc\\hosts"]) + path = os.getenv("WINDIR") + "\\System32\\drivers\\etc\\hosts" encode = "win_ansi" elif os.name == "posix": path = "/etc/hosts" @@ -120,10 +119,7 @@ def check_privileges(cls): return (os.environ['USERNAME'], True) else: # Check wirte privileges to the hosts file for current user - if oct(os.stat("/etc/hosts").st_mode)[-3:-2] >= "6": - w_flag = True - else: - w_flag = False + w_flag = os.access("/etc/hosts", os.W_OK) try: return (os.environ['USERNAME'], w_flag) except KeyError: From e80aaffce1b81185eb41e8e8a0318e99ad4fa514 Mon Sep 17 00:00:00 2001 From: huhamhire Date: Mon, 2 Dec 2013 12:08:50 +0800 Subject: [PATCH 16/18] Update notification method for no data file warning while changing ip mode Signed-off-by: huhamhire --- hostsutl.py | 9 ++++++--- retrievedata.py | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/hostsutl.py b/hostsutl.py index ac68181..bfdcb29 100644 --- a/hostsutl.py +++ b/hostsutl.py @@ -192,9 +192,12 @@ def on_IPVersion_changed(self, ipv_id): represents IPv4. """ if self._ipv_id != ipv_id: - self._ipv_id = ipv_id - self.set_func_list(0) - self.refresh_func_list() + if not RetrieveData.db_exists(): + self.warning_no_datafile() + else: + self._ipv_id = ipv_id + self.set_func_list(0) + self.refresh_func_list() def on_Selection_changed(self, item): """Change the function selection setting - Public Method diff --git a/retrievedata.py b/retrievedata.py index 91612cb..93cef40 100644 --- a/retrievedata.py +++ b/retrievedata.py @@ -44,6 +44,21 @@ class RetrieveData(object): _cur = None _database = None + @classmethod + def db_exists(cls, database="hostslist.s3db"): + """Check if database exists - Class Method + + Check whether the database file exists or not. + + Args: + database (str): A string indicating the SQLite database file. + "hostslist.s3db" by default. + + Returns: + A boolean indicating if the database file exists. + """ + return os.path.isfile(database) + @classmethod def connect_db(cls, database="hostslist.s3db"): """Connect to database - Class Method From 9b4e4cdca73944e6aa189e9bc80df7ed6d572fb3 Mon Sep 17 00:00:00 2001 From: huhamhire Date: Mon, 2 Dec 2013 14:11:48 +0800 Subject: [PATCH 17/18] Update translations Signed-off-by: huhamhire --- hostsutl.pro | 3 +- hostsutl.py | 7 +- lang/de_DE.ts | 407 +++++++++++++++++++++++++++++++++++++++ lang/en_US.qm | Bin 4872 -> 5277 bytes lang/en_US.ts | 126 +++++++----- lang/zh_CN.qm | Bin 6587 -> 6917 bytes lang/zh_CN.ts | 520 ++++++++++++++++++++++++-------------------------- lang/zh_TW.qm | Bin 6553 -> 6890 bytes lang/zh_TW.ts | 126 +++++++----- 9 files changed, 812 insertions(+), 377 deletions(-) create mode 100644 lang/de_DE.ts diff --git a/hostsutl.pro b/hostsutl.pro index ca75caa..11f4793 100644 --- a/hostsutl.pro +++ b/hostsutl.pro @@ -1,6 +1,7 @@ SOURCES = hostsutl.py \ qthostsui.py -TRANSLATIONS = lang/en_US.ts \ +TRANSLATIONS = lang/de_DE.ts \ + lang/en_US.ts \ lang/zh_CN.ts \ lang/zh_TW.ts INTERFACES = qthostsui.ui diff --git a/hostsutl.py b/hostsutl.py index bfdcb29..753501e 100644 --- a/hostsutl.py +++ b/hostsutl.py @@ -133,11 +133,16 @@ class MainDialog(QtGui.QDialog): # Name of items from the function list to be localized __list_trans = [ _translate("HostsUtlMain", "google(cn)", None), + _translate("HostsUtlMain", "google(hk)", None), _translate("HostsUtlMain", "google(us)", None), _translate("HostsUtlMain", "google-apis(cn)", None), _translate("HostsUtlMain", "google-apis(us)", None), _translate("HostsUtlMain", "activation-helper", None), + _translate("HostsUtlMain", "facebook", None), + _translate("HostsUtlMain", "twitter", None), + _translate("HostsUtlMain", "youtube", None), _translate("HostsUtlMain", "wikipedia", None), + _translate("HostsUtlMain", "institutions", None), _translate("HostsUtlMain", "steam", None), _translate("HostsUtlMain", "others", None), _translate("HostsUtlMain", "adblock-hostsx", None), @@ -192,10 +197,10 @@ def on_IPVersion_changed(self, ipv_id): represents IPv4. """ if self._ipv_id != ipv_id: + self._ipv_id = ipv_id if not RetrieveData.db_exists(): self.warning_no_datafile() else: - self._ipv_id = ipv_id self.set_func_list(0) self.refresh_func_list() diff --git a/lang/de_DE.ts b/lang/de_DE.ts new file mode 100644 index 0000000..be2d277 --- /dev/null +++ b/lang/de_DE.ts @@ -0,0 +1,407 @@ + + + + + HostsUtlMain + + + google(cn) + + + + + google(hk) + + + + + google(us) + + + + + google-apis(cn) + + + + + google-apis(us) + + + + + activation-helper + + + + + facebook + + + + + twitter + + + + + youtube + + + + + wikipedia + + + + + institutions + + + + + steam + + + + + others + + + + + adblock-hostsx + + + + + adblock-mvps + + + + + adblock-mwsl + + + + + adblock-yoyo + + + + + Backup hosts + + + + + Backup File(*.bak) + + + + + Restore hosts + + + + + [Error] + + + + + Checking... + + + + + Export hosts + + + + + hosts File + + + + + Building hosts file... + + + + + Copying new hosts file to + %s + + + + + Remove temporary file + + + + + Operation completed + + + + + [OK] + + + + + [Failed] + + + + + Functions + + + + + Applying module: %s(%s/%s) + + + + + Progress + + + + + Notice: %i hosts entries has + been applied in %ssecs. + + + + + Operation Completed Successfully! + + + + + Error + + + + + Incorrect Data file! +Please use the "Download" key to +fetch a new data file. + + + + + Download Complete + + + + + Warning + + + + + You do not have permissions to change the +hosts file. +Please run this program as Administrator/root +so it can modify your hosts file. + + + + + Error retrieving data from the server. +Please try another server. + + + + + Data file not found! +Please use the "Download" key to +fetch a new data file. + + + + + Notice + + + + + Are you sure you want to apply changes +to the hosts file on your system? + +This operation could not be reverted if +you have not made a backup of your +current hosts file. + + + + + Data file is up-to-date. + + + + + Complete + + + + + Connecting... + + + + + Downloading: %s / %s + + + + + Hosts Setup Utility + + + + + Config + + + + + Server + + + + + IP Version + + + + + Status + + + + + Connection + + + + + N/A + + + + + OS + + + + + Hosts Info + + + + + Version + + + + + Release + + + + + Latest + + + + + Backup the hosts file of current system. + + + + + Download data file + + + + + Download the latest data file. + + + + + Restore backup + + + + + Restore a previous backup of hosts file. + + + + + Apply hosts + + + + + Apply changes to the hosts file. + + + + + Exit + + + + + Close this tool. + + + + + Check update / Refresh + + + + + Check the latest version of hosts data file. + + + + + Save with ANSI + + + + + Export to hosts file encoding by ANSI. + + + + + Save with UTF-8 + + + + + Export to hosts file encoding by UTF-8. + + + + + Copyleft (C) 2011-2014 <a href="https://hosts.huhamhire.com/"><span style="text-decoration: none;color: #b1b1b1;">huhamhire-hosts</span></a> + + + + + Powered by PyQT + + + + diff --git a/lang/en_US.qm b/lang/en_US.qm index 42836dc67adad981d6edfc86d88ccb99f7193cc5..6ea3657a978bcd5fad054c8bf7be26e902826a33 100644 GIT binary patch delta 395 zcmeBBo2xlNgfU~HsHS+%ZdL{c!FvoP{mKjsY@!TRt80P$h>5;(OoCe`=K6EqW_f;b zCj*0k<;0_5T!Mz|v!~2vVBniRS(dS!b2|5fU7LW)>n2ZSbl~7QpC1fVcxdufMkO(h zP6h^kO+H0|NTBKqe2P+>Kz`F?R;FMkA(72dOtblv1sL2I5*d;iQW=sM@_{g$g8>NG zfS4mKF*!9UKR|IFX?Us3HR>k_nV4W+(yDB@CrtIv*qg zw}K}#uec<$q;#?Zm+IshLJo>R^Z9`4%E3BHfMylJ)v}kAXO@&qPUKUX{8UIrg&C|g c66mW^h7cf5Vn{_Ot;{biDNRb9{9Z^B03p9vO#lD@ delta 160 zcmbQM*`YQ;gwbK5sHT2NzcK>@nRJW{fpCU}Z{9I5Ft;+gDDp8dFv&8W?O6w; zZ!obP`3RJ+omlG6>B;i^;!Xwz{^b+ThA{~kOx9&AXJnncmeFDIS4Jg1fk*}hzUh35 zQk+2g!(?5iU?zd(o12(s^G#kas5QAkFmm!sA->HHLadCFKQQr5J}B$}rd>p2*gF`2 Ib}=#n01XQ)wg3PC diff --git a/lang/en_US.ts b/lang/en_US.ts index cc5ec22..89d19d9 100644 --- a/lang/en_US.ts +++ b/lang/en_US.ts @@ -1,130 +1,129 @@ - - + HostsUtlMain - + Backup hosts - + Functions - + Hosts Setup Utility - + Config - + Server - + IP Version - + Status - + Connection - + N/A - + OS - + Backup the hosts file of current system. - + Download data file - + Download the latest data file. - + Restore backup - + Restore a previous backup of hosts file. - + Apply hosts - + Apply changes to the hosts file. - + Exit - + Close this tool. - + Check update / Refresh - + Check the latest version of hosts data file. - + Hosts Info - + Version - + Release - + Latest @@ -134,52 +133,52 @@ Google Web Service (CN) - + google(us) Google Web Service (US) - + activation-helper - + others - + adblock-hostsx - + adblock-mvps - + adblock-mwsl - + adblock-yoyo - + Building hosts file... - + Backup File(*.bak) - + Restore hosts @@ -194,13 +193,13 @@ - + Copying new hosts file to %s - + Remove temporary file @@ -319,64 +318,89 @@ current hosts file. - + Save with ANSI - + Export to hosts file encoding by ANSI. - + Save with UTF-8 - + Export to hosts file encoding by UTF-8. - + Export hosts - + hosts File - + google-apis(cn) Google API Service (CN) - + google-apis(us) Google API Service (US) - + wikipedia - + steam - + Copyleft (C) 2011-2014 <a href="https://hosts.huhamhire.com/"><span style="text-decoration: none;color: #b1b1b1;">huhamhire-hosts</span></a> - + Powered by PyQT + + + google(hk) + Google Web Service (HK) + + + + facebook + Facebook + + + + twitter + twitter + + + + youtube + YouTube + + + + institutions + Academy and Research institutions + diff --git a/lang/zh_CN.qm b/lang/zh_CN.qm index 51e436a8a43d1c8460db3c85b00ace787fb95ec4..175d07e33a044902ccd082b211418327382a37c4 100644 GIT binary patch delta 946 zcmYLHe`phD7=AAK?vlG)?qbuJbX{vg(Ppq@8=`~$VUcx?ZC!C%WTl`c*)=(1bF8^g z9caolu(ILGKBttns~!Frt*A5%Y8C%bi$+?d4(Zt3P(jL^$Q-iG{W16YPsj1yb1(P2 z@B6&Z`<+`|T02l(%mCsWfHnfW{~F*O0lUEfWiKS=1^i{S4kiKl40fIqfzW%fzi6O1 zfsZHl0Ko~2J$ytp970P(1DtVT?(0SrmE70OpD(u1pc z6yfNTert|Xfj?ZGs|tYouxrOd5)jv zlMqn-vOLm%i{kt8ndYxa@IARA{y_Xk^0UVj`x+HJ{gfKEC^7w2ioaBDCG*6~dm8KZ z6-m)H&&Dc?2wu;orV=$~o;%Z%g!esvuBXY|^D0iXk#!GLC3}D-=~h=Pn&iOiYG1sY zR`iK_aDo22ephFPb5xIJJEGC#f2(tQ3Dp7hhP9dMHLFja$N0w^`}7p?N4?oA#gAzB zSH1lkgS3;VCXCjT^$9KFCaVJ1w1}^Ru&6~|kjeUhwk}F{Ll5b$j+@l@j(+TRiYBV) zQ`@f7o$%??KhKgQ=k@7dXxG)f`h~)2$`|y?p&0Quk?PPsCrPO9e2OqKu*zwNB?#a0 z1?MXMuk&604r?gqSfeDg@Dd-_-Bct!=YxGi5Y|SDN9BmACU@ zBWL%RMn0TLDtA!tw3DJj95u*}O%%py3=g<4_@SgKL&pD?#eJJ&k(X#`9 z-31`s1=ybgpz8)QMF50G;D`=jT>!FglmhUN!F@3S(E%rY^#GB}&^0%Yy)3gkUIGY9 zVJ0s01CVqT_iPa$YO|`$_5&b1TGhP)`vhOutGBHH>Lp^R%tf79l4`358Hcw6mgof7|e)8T&9^t-G`j>x)%W2xt}jx*x#fsOsWG9Xxi14b7&YjqV7Am ziUt2Pd4(A`QHy3|a14VD@kQQg#B+S}ZxetqmA~bkLH>(>wEZ>){LTm2cUZs3uPq|i zTLgOeFMzm5u+S~Y+k}}?G-OX`lVh7uzgTNG)Zl-(_JFO~gT`mIe|F*oni&xu;A(_< zQK)Lg#I@qakQ0;I#M9QJcnYsL)=`ZDAO`P9IN7Q=(SRsk(OFvhakbsLsu#!bl#@EI zJqo~Jm6*;r+@wQ_*XQE~bENnf9W z_|}pHM)oTtnPYO4At4RPg3v{fT&75r1;MH;(=Tybb8FnrGKWo0bjlSqF1Jf|RJ)Hm u9WJ?|#3lQe^m_?&M%fmz2?fd{%2kTpv|f=-S^g&`J)^8eA5pqutp5Q&F2IBU diff --git a/lang/zh_CN.ts b/lang/zh_CN.ts index bdee9c1..731dce0 100644 --- a/lang/zh_CN.ts +++ b/lang/zh_CN.ts @@ -1,189 +1,217 @@ - - + HostsUtlMain - - Backup hosts - 备份 hosts 文件 + + google(cn) + Google Web服务(北京) - - Backup File(*.bak) - 备份文件(*.bak) + + google(hk) + Google Web服务(香港) - - Restore hosts - 还原备份的 hosts 文件 + + google(us) + Google Web服务(美国) - - Functions - 功能列表 + + google-apis(cn) + Google 应用程序服务(北京) - - Progress - 操作进度 + + google-apis(us) + Google 应用程序服务(美国) - - Warning - 警告 + + activation-helper + 屏蔽部分破解软件激活服务器 - - Notice - 注意 + + facebook + Facebook - - Data file is up-to-date. - 数据文件已经是最新版本。 + + twitter + twitter - - Complete - 完成 + + youtube + YouTube - - Operation completed - 操作完成 + + wikipedia + 维基百科 - - Hosts Setup Utility - hosts 文件配置工具 + + institutions + 教育科研机构 - - Config - 设置 + + steam + Steam 游戏平台 - - Server - 服务器 + + others + 其他墙外站点 - - IP Version - IP 协议版本 + + adblock-hostsx + 广告屏蔽-hostsx 列表 - - Status - 状态 + + adblock-mvps + 广告屏蔽-mvps 列表 - - Connection - 连接 + + adblock-mwsl + 广告屏蔽-mwsl 列表 - - N/A - 无状态 + + adblock-yoyo + 广告屏蔽-yoyo 列表 - - OS - 操作系统 + + Backup hosts + 备份 hosts 文件 - - Backup the hosts file of current system. - 备份当前系统的 hosts 文件。 + + Backup File(*.bak) + 备份文件(*.bak) - - Download data file - 下载数据文件 + + Restore hosts + 还原备份的 hosts 文件 - - Download the latest data file. - 下载最新数据文件。 + + [Error] + [错误] - - Restore backup - 还原备份 + + Checking... + 正在连接... - - Restore a previous backup of hosts file. - 还原先前备份的 hosts 文件。 + + Export hosts + 导出 hosts 文件 - - Apply hosts - 更改 hosts + + hosts File + hosts 文件 - - Apply changes to the hosts file. - 对 hosts 文件进行修改。 + + Building hosts file... + 正在生成 hosts 文件... - - Exit - 退出 + + Copying new hosts file to + %s + 正在将新的 hosts 配置到目标路径 + %s - - Close this tool. - 关闭本工具。 + + Remove temporary file + 清理临时文件 - - Check the latest version of hosts data file. - 在线检查数据文件的最新版本。 + + Operation completed + 操作完成 - - Hosts Info - 数据文件信息 + + [OK] + [正常] - - Version - 当前版本 + + [Failed] + [失败] - - Release - 发布日期 + + Functions + 功能列表 - - Latest - 最新版本 + + Applying module: %s(%s/%s) + 应用选定的模块: %s(%s/%s) - - Check update / Refresh - 检查更新/刷新 + + Progress + 操作进度 - - Data file not found! + + Notice: %i hosts entries has + been applied in %ssecs. + 注意:共有 %i 条 hosts 条目在 + %s秒内被插入到 hosts 文件中。 + + + + Operation Completed Successfully! + 操作成功完成! + + + + Error + 错误 + + + + Incorrect Data file! Please use the "Download" key to fetch a new data file. - 未找到数据文件! + 数据文件错误! 请点击“下载”按钮来获取 新的数据文件。 - + + Download Complete + 下载完成 + + + + Warning + 警告 + + + You do not have permissions to change the hosts file. Please run this program as Administrator/root so it can modify your hosts file. - 您未获取修改系统 hosts 文件的 + 您未获取修改系统 hosts 文件的 相关权限。 请以管理员方式或者根用户运行本 工具。 @@ -196,249 +224,195 @@ Please try another server. 请在更换服务器之后尝试先前的操作。 - - Operation Completed Successfully! - 操作成功完成! - - - - Error - 错误 - - - - Download Complete - 下载完成 + + Data file not found! +Please use the "Download" key to +fetch a new data file. + 未找到数据文件! +请点击“下载”按钮来获取 +新的数据文件。 - - [Error] - [错误] + + Notice + 注意 - - Checking... - 正在连接... + + Are you sure you want to apply changes +to the hosts file on your system? + +This operation could not be reverted if +you have not made a backup of your +current hosts file. + 您确认继续执行当前操作以修改系统 hosts +文件吗? + +若先前未对 hosts 文件进行备份,该操作将 +不可逆转。 - - [OK] - [正常] + + Data file is up-to-date. + 数据文件已经是最新版本。 - - [Failed] - [失败] + + Complete + 完成 - - Building hosts file... - 正在生成 hosts 文件... + + Connecting... + 正在连接服务器... - - Applying module: %s(%s/%s) - 应用选定的模块: %s(%s/%s) + + Downloading: %s / %s + 正在下载: %s / %s - - Notice: %i hosts entries has - been applied in %ssecs. - 注意:共有 %i 条 hosts 条目在 - %s秒内被插入到 hosts 文件中。 + + Hosts Setup Utility + hosts 文件配置工具 - - Downloading: %s / %s - 正在下载: %s / %s + + Config + 设置 - - Connecting... - 正在连接服务器... + + Server + 服务器 - - Incorrect Data file! -Please use the "Download" key to -fetch a new data file. - 数据文件错误! -请点击“下载”按钮来获取 -新的数据文件。 + + IP Version + IP 协议版本 - - Copying new hosts file to - %s - 正在将新的 hosts 配置到目标路径 - %s + + Status + 状态 - - Remove temporary file - 清理临时文件 + + Connection + 连接 - - google(cn) - Google Web服务(北京) + + N/A + 无状态 - - google(us) - Google Web服务(美国) + + OS + 操作系统 - - activation-helper - 屏蔽部分破解软件激活服务器 + + Hosts Info + 数据文件信息 - - others - 其他墙外站点 + + Version + 当前版本 - - adblock-hostsx - 广告屏蔽-hostsx 列表 + + Release + 发布日期 - - adblock-mvps - 广告屏蔽-mvps 列表 + + Latest + 最新版本 - - adblock-mwsl - 广告屏蔽-mwsl 列表 + + Backup the hosts file of current system. + 备份当前系统的 hosts 文件。 - - adblock-yoyo - 广告屏蔽-yoyo 列表 + + Download data file + 下载数据文件 - - Are you sure you want to apply changes -to the hosts file on your system? - -This operation could not be reverted if -you have not made a backup of your -current hosts file. - 您确认继续执行当前操作以修改系统 hosts -文件吗? - -若先前未对 hosts 文件进行备份,该操作将 -不可逆转。 + + Download the latest data file. + 下载最新数据文件。 - Save with ANSI - 保存为 ANSI 格式 + Restore backup + 还原备份 - Export to hosts file encoding by ANSI. - 以 ANSI 的编码方式导出 hosts 文件。 + Restore a previous backup of hosts file. + 还原先前备份的 hosts 文件。 - Save with UTF-8 - 保存为 UTF-8 格式 + Apply hosts + 更改 hosts - Export to hosts file encoding by UTF-8. - 以 UTF-8 的编码方式导出 hosts 文件。 - - - - Export hosts - 导出 hosts 文件 - - - - hosts File - hosts 文件 - - - - google-apis(cn) - Google 应用程序服务(北京) + Apply changes to the hosts file. + 对 hosts 文件进行修改。 - - google-apis(us) - Google 应用程序服务(美国) + + Exit + 退出 - - wikipedia - 维基百科 + + Close this tool. + 关闭本工具。 - - steam - Steam 游戏平台 + + Check update / Refresh + 检查更新/刷新 - - Notice: %i hosts entries has - been applied in %ssecs. - 注意:共有 %i 条 hosts 条目在 - %s秒内被插入到 hosts 文件中。 + + Check the latest version of hosts data file. + 在线检查数据文件的最新版本。 - - Incorrect Data file! -Please use the "Download" key to -fetch a new data file. - 数据文件错误! -请点击“下载”按钮来获取 -新的数据文件。 + + Save with ANSI + 保存为 ANSI 格式 - - You do not have permissions to change the -hosts file. -Please run this program as Administrator/root -so it can modify your hosts file. - 您未获取修改系统 hosts 文件的 -相关权限。 -请以管理员方式或者根用户运行本 -工具。 + + Export to hosts file encoding by ANSI. + 以 ANSI 的编码方式导出 hosts 文件。 - - Data file not found! -Please use the "Download" key to -fetch a new data file. - 未找到数据文件! -请点击“下载”按钮来获取 -新的数据文件。 + + Save with UTF-8 + 保存为 UTF-8 格式 - - Are you sure you want to apply changes -to the hosts file on your system? - -This operation could not be reverted if -you have not made a backup of your -current hosts file. - 您确认继续执行当前操作以修改系统 hosts -文件吗? - -若先前未对 hosts 文件进行备份,该操作将 -不可逆转。 + + Export to hosts file encoding by UTF-8. + 以 UTF-8 的编码方式导出 hosts 文件。 - + Copyleft (C) 2011-2014 <a href="https://hosts.huhamhire.com/"><span style="text-decoration: none;color: #b1b1b1;">huhamhire-hosts</span></a> 公共版权 (C) 2011-2014 <a href="https://hosts.huhamhire.com/"><span style="text-decoration: none;color: #b1b1b1;">huhamhire-hosts</span></a> - + Powered by PyQT diff --git a/lang/zh_TW.qm b/lang/zh_TW.qm index b02a686df5a129637946e44ad45fd5a186122af2..ca362e005391368b199e9c636f27d027614941b0 100644 GIT binary patch delta 357 zcmbPf{K|BK2xG=XQBCoj-K-1@5=IOq{mKjsocRn@t7{n;#3xMjm1B}%n3(IwCFala z{Nhdq2C?}QkA`uHC$i6;GMj-x)O4~eV>#!0?gzUz0o9+HJeARbgXesHFp#4$`6{E5 z7)K{i)lNP|fk+^o$EPU82{eOcGAmOslSIbmC?-o$WdQ~^hD3&BhE#?mhI}B*=3oE< zHX!CmOH58p%FoZ9ypUIH@;!0s$?L?urDo2|)Bn#2SHzW`pP!zSs*#bc2~xKCp12C5 zGEZt`!=}oM6(U*jnWy1Oc{1~gOEODJOEUBGios?wNoLCNF_bWrGh_nE5}+H3;Hue6 z$}>w!CMSwXOwN|nn>>M!#fXm~66nBEh7cf5Vn{_Ot;{biDNRac2RfR^Bfq$$IJ6|k JH!(Ah5di%MT5$jX delta 141 zcmV;80CNB8HJLMz6ahey6)7)tk0Ss832y*;t9<|f7SjNs?Ct;n1rGs4Ar1fl11$l~ zjIICx1Udo+#PI+C7Y&hhP6`#v1n1GY000&nk - - + HostsUtlMain @@ -9,57 +8,57 @@ Google Web服務(大陸) - + google(us) Google Web服務(美國) - + activation-helper 遮罩部分破解軟體啟動伺服器 - + others 其他網站 - + adblock-hostsx 廣告攔截-hostsx 清單 - + adblock-mvps 廣告攔截-mvps 清單 - + adblock-mwsl 廣告攔截-mwsl 清單 - + adblock-yoyo 廣告攔截-yoyo 清單 - + Building hosts file... 正在創建 hosts 檔... - + Backup hosts 備份 hosts 檔 - + Backup File(*.bak) 備份檔(*.bak) - + Restore hosts 還原 hosts @@ -74,14 +73,14 @@ 正在連接伺服器... - + Copying new hosts file to %s 將新的 hosts 檔案複製到 %s - + Remove temporary file 刪除暫存檔案 @@ -101,7 +100,7 @@ [失敗] - + Functions 功能清單 @@ -203,117 +202,117 @@ fetch a new data file. 正在下載: %s / %s - + Hosts Setup Utility hosts 設置實用程式 - + Config 配置 - + Server 伺服器 - + IP Version IP 協定版本 - + Status 狀態 - + Connection 連接狀態 - + N/A 不適用 - + OS 作業系統 - + Backup the hosts file of current system. 備份當前系統的 hosts 檔。 - + Download data file 下載資料檔案 - + Download the latest data file. 下載最新的資料檔案。 - + Restore backup 還原備份 - + Restore a previous backup of hosts file. 還原以前的備份的 hosts 檔。 - + Apply hosts 更改 hosts 檔 - + Apply changes to the hosts file. 將更改應用到主 hosts 檔。 - + Exit 退出 - + Close this tool. 關閉此程式。 - + Check update / Refresh 檢查更新 / 刷新 - + Check the latest version of hosts data file. 檢查 hosts 檔案的最新版本。 - + Hosts Info 資料檔案狀態 - + Version 當前版本 - + Release 發佈日期 - + Latest 最新版本 @@ -332,64 +331,89 @@ current hosts file. 不可逆轉。 - + Save with ANSI 保存為 ANSI 格式 - + Export to hosts file encoding by ANSI. 匯出由 ANSI 編碼的 hosts 檔。 - + Save with UTF-8 保存為 UTF-8 格式 - + Export to hosts file encoding by UTF-8. 匯出由 UTF-8 編碼的 hosts 檔。 - + Export hosts 匯出 hosts 檔 - + hosts File hosts 檔 - + google-apis(cn) Google API服務(大陸) - + google-apis(us) Google API服務(美國) - + wikipedia 維基百科 - + steam Steam 遊戲平台 - + Copyleft (C) 2011-2014 <a href="https://hosts.huhamhire.com/"><span style="text-decoration: none;color: #b1b1b1;">huhamhire-hosts</span></a> 公共版權 (C) 2011-2014 <a href="https://hosts.huhamhire.com/"><span style="text-decoration: none;color: #b1b1b1;">huhamhire-hosts</span></a> - + Powered by PyQT + + + google(hk) + Google Web服務(香港) + + + + facebook + Facebook + + + + twitter + twitter + + + + youtube + YouTube + + + + institutions + 教育科研機構 + From e95c43408ae201636ab7a059cbaffd10482948a0 Mon Sep 17 00:00:00 2001 From: huhamhire Date: Mon, 2 Dec 2013 14:39:53 +0800 Subject: [PATCH 18/18] Fix zh_CN translation problems Signed-off-by: huhamhire --- lang/de_DE.ts | 3 +-- lang/zh_CN.qm | Bin 6917 -> 6924 bytes lang/zh_CN.ts | 60 +++++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 56 insertions(+), 7 deletions(-) diff --git a/lang/de_DE.ts b/lang/de_DE.ts index be2d277..8114403 100644 --- a/lang/de_DE.ts +++ b/lang/de_DE.ts @@ -1,6 +1,5 @@ - - + HostsUtlMain diff --git a/lang/zh_CN.qm b/lang/zh_CN.qm index 175d07e33a044902ccd082b211418327382a37c4..d842be42b82b23a989ca1117ac43d9c131352165 100644 GIT binary patch delta 754 zcmWMkT}TvR6uqL_hWeu~Z_8mDq!J9_Bk7xcA(1?w#7C#-wWz?gvE2 z5{QhQ#AX$gor+Er#M&4A7VOAJT7+my?y+D{S5 zxvVQ~4Fd03x8F--_{>HH2?J7DU;;v0i&mEgy>9X@ukgQ%eHZ%c)Bl>*L9I!!O`#YQ{BvF6YGY|et|8)O782zsI^Y2i< zqTgHr53&k!@j8)sSg^{w!EXukg&53VFvLaHK)=9{X>zzx5NtS}TnhsR!x!HGaMAGh z021luMS6@?2}`0-)`SEV;*NkF&XdJU@n>-&k2uj*4j~f#_a!9V5T~kvVzW5oI02nQ zMr(Z^R^DkWdwGsXnl^ee!-!1r64!3VhHX-m&W)9X&Pq{1Ilww8YP%jQj*wC;_!nfe ztj&3YK>_(rEECkrmKL^6bdjJ3c delta 718 zcmWksZ%9*d6g_YIy|=x$xA$AqFa$DvrP`{Gf?0{DXxUWnqFyCXykQeX-kz$Kmk1_uO;teGSRJfpFbwU6=F{BJ;E`ut!&0T!W*)0!wy95mD~NZ#Fym0v`?<%4{JG7ColKn0hjlZ_2b*da1x{%1ZIkU}jnv>?d3@{W?U+j58`a zX;sRKs+8TPB<1R^^{a_@R!rRgfTM>(D6qA9b>pP;FGFD^HVN zn!53y4H^WqYeREV+bU&9OtK)!VdG zC;c1T&JDTmXz&7mGG9cA!h9fqif(D)gP$j8Bd_`37rJ%i6+TqmOZ@^5H@m1li(K35 z^<*J7ZxeC2fJ%5!MPFQ~MOQ2c&jMTegg^p29=OcnL(MEv5;6iqN>X5gyF Notice: %i hosts entries has been applied in %ssecs. - 注意:共有 %i 条 hosts 条目在 + 注意:共有 %i 条 hosts 条目在 %s秒内被插入到 hosts 文件中。 @@ -191,7 +191,7 @@ Incorrect Data file! Please use the "Download" key to fetch a new data file. - 数据文件错误! + 数据文件错误! 请点击“下载”按钮来获取 新的数据文件。 @@ -211,7 +211,7 @@ fetch a new data file. hosts file. Please run this program as Administrator/root so it can modify your hosts file. - 您未获取修改系统 hosts 文件的 + 您未获取修改系统 hosts 文件的 相关权限。 请以管理员方式或者根用户运行本 工具。 @@ -228,7 +228,7 @@ Please try another server. Data file not found! Please use the "Download" key to fetch a new data file. - 未找到数据文件! + 未找到数据文件! 请点击“下载”按钮来获取 新的数据文件。 @@ -245,7 +245,7 @@ to the hosts file on your system? This operation could not be reverted if you have not made a backup of your current hosts file. - 您确认继续执行当前操作以修改系统 hosts + 您确认继续执行当前操作以修改系统 hosts 文件吗? 若先前未对 hosts 文件进行备份,该操作将 @@ -416,5 +416,55 @@ current hosts file. Powered by PyQT + + + Notice: %i hosts entries has + been applied in %ssecs. + 注意:共有 %i 条 hosts 条目在 + %s秒内被插入到 hosts 文件中。 + + + + Incorrect Data file! +Please use the "Download" key to +fetch a new data file. + 数据文件错误! +请点击“下载”按钮来获取 +新的数据文件。 + + + + You do not have permissions to change the +hosts file. +Please run this program as Administrator/root +so it can modify your hosts file. + 您未获取修改系统 hosts 文件的 +相关权限。 +请以管理员方式或者根用户运行本 +工具。 + + + + Data file not found! +Please use the "Download" key to +fetch a new data file. + 未找到数据文件! +请点击“下载”按钮来获取 +新的数据文件。 + + + + Are you sure you want to apply changes +to the hosts file on your system? + +This operation could not be reverted if +you have not made a backup of your +current hosts file. + 您确认继续执行当前操作以修改系统 hosts +文件吗? + +若先前未对 hosts 文件进行备份,该操作将 +不可逆转。 +