pax_global_header00006660000000000000000000000064135460033460014516gustar00rootroot0000000000000052 comment=7f02f6e90a00b2f8058e762fc40f80c3571ea610 amdgpu-utils-2.6.0/000077500000000000000000000000001354600334600141365ustar00rootroot00000000000000amdgpu-utils-2.6.0/GPUmodules/000077500000000000000000000000001354600334600161625ustar00rootroot00000000000000amdgpu-utils-2.6.0/GPUmodules/GPUmodule.py000077500000000000000000001611661354600334600204130ustar00rootroot00000000000000#!/usr/bin/env python3 """GPUmodules - classes used in amdgpu-utils Copyright (C) 2019 RueiKe This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . """ __author__ = 'RueiKe' __copyright__ = 'Copyright (C) 2019 RueiKe' __credits__ = ['Craig Echt - Testing, Debug, and Verification'] __license__ = 'GNU General Public License' __program_name__ = 'amdgpu-utils' __version__ = 'v2.6.0' __maintainer__ = 'RueiKe' __status__ = 'Stable Release' import re import subprocess import shlex import os import sys from pathlib import Path from uuid import uuid4 import glob import shutil try: from GPUmodules import env except: import env try: from GPUmodules import PCImodule except: import PCImodule class GPU_ITEM: """An object to store GPU details.""" # GPU Frequency/Voltage Control Type: 0 = None, 1 = P-states, 2 = Curve def __init__(self, item_id): self.uuid = item_id self.card_num = -1 self.card_path = '' self.hwmon_path = '' self.compatible = True time_0 = env.gut_const.now(env.gut_const.USELTZ) self.energy = {'t0': time_0, 'tn': time_0, 'cummulative': 0.0} self.hwmon_disabled = [] self.params = {'uuid': item_id, 'card_num': '', 'pcie_id': '', 'driver': '', 'gpu_type': 0, 'id': {'vendor': '', 'device': '', 'subsystem_vendor': '', 'subsystem_device': ''}, 'model_device_decode': 'UNDETERMINED', 'model': '', 'model_short': '', 'model_display': '', 'card_path': '', 'hwmon_path': '', 'energy': 0.0, 'power': -1, 'power_cap': -1, 'power_cap_range': [-1, -1], 'fan_enable': -1, 'pwm_mode': [-1, 'UNK'], 'fan_pwm': -1, 'fan_speed': -1, 'fan_speed_range': [-1, -1], 'fan_pwm_range': [-1, -1], 'fan_target': -1, 'temp': -1, 'temp_crit': -1, 'vddgfx': -1, 'vddc_range': ['', ''], 'loading': -1, 'mclk_ps': -1, 'mclk_f': '', 'mclk_f_range': ['', ''], 'sclk_ps': -1, 'sclk_f': '', 'sclk_f_range': ['', ''], 'link_spd': '', 'link_wth': '', 'ppm': '', 'power_dpm_force': '', 'vbios': ''} self.clinfo = {'device_name': '', 'device_version': '', 'driver_version': '', 'opencl_version': '', 'pcie_id': '', 'max_cu': '', 'simd_per_cu': '', 'simd_width': '', 'simd_ins_width': '', 'max_mem_allocation': '', 'max_wi_dim': '', 'max_wi_sizes': '', 'max_wg_size': '', 'prf_wg_multiple': ''} self.sclk_state = {} # {'1': ['Mhz', 'mV']} self.mclk_state = {} # {'1': ['Mhz', 'mV']} self.vddc_curve = {} # {'1': ['Mhz', 'mV']} self.vddc_curve_range = {} # {'1': {SCLK:['val1', 'val2'], VOLT: ['val1', 'val2']} self.ppm_modes = {} # {'1': ['Name', 'Description']} def set_params_value(self, name, value): # update params dictionary self.params[name] = value if name == 'driver' and value != 'amdgpu': self.compatible = False if name == 'card_num': self.card_num = value if name == 'card_path': self.card_path = value if name == 'hwmon_path': self.hwmon_path = value def get_params_value(self, name): # reads params dictionary return self.params[name] def set_clinfo_value(self, name, value): # update clinfo dictionary self.clinfo[name] = value def get_clinfo_value(self, name): # reads clinfo dictionary return self.clinfo[name] def copy_clinfo_values(self, gpu_item): for k, v in gpu_item.clinfo.items(): self.clinfo[k] = v @staticmethod def get_all_params_labels(): # Human friendly labels for params keys GPU_Param_Labels = {'uuid': 'UUID', 'id': 'Device ID', 'gpu_type': 'GPU Frequency/Voltage Control Type', 'model_device_decode': 'Decoded Device ID', 'model': 'Card Model', 'model_short': 'Short Card Model', 'model_display': 'Display Card Model', 'card_num': 'Card Number', 'card_path': 'Card Path', 'pcie_id': 'PCIe ID', 'driver': 'Driver', 'vbios': 'vBIOS Version', 'hwmon_path': 'HWmon', 'power': 'Current Power (W)', 'power_cap': 'Power Cap (W)', 'power_cap_range': 'Power Cap Range (W)'} if env.gut_const.show_fans: GPU_Param_Labels.update({'fan_enable': 'Fan Enable', 'pwm_mode': 'Fan PWM Mode', 'fan_pwm': 'Current Fan PWM (%)', 'fan_speed': 'Current Fan Speed (rpm)', 'fan_target': 'Fan Target Speed (rpm)', 'fan_speed_range': 'Fan Speed Range (rpm)', 'fan_pwm_range': 'Fan PWM Range (%)'}) GPU_Param_Labels.update({'temp': 'Current Temp (C)', 'temp_crit': 'Critical Temp (C)', 'vddgfx': 'Current VddGFX (mV)', 'vddc_range': 'Vddc Range', 'loading': 'Current Loading (%)', 'link_spd': 'Link Speed', 'link_wth': 'Link Width', 'sclk_ps': 'Current SCLK P-State', 'sclk_f': 'Current SCLK', 'sclk_f_range': 'SCLK Range', 'mclk_ps': 'Current MCLK P-State', 'mclk_f': 'Current MCLK', 'mclk_f_range': 'MCLK Range', 'ppm': 'Power Performance Mode', 'power_dpm_force': 'Power Force Performance Level'}) return GPU_Param_Labels def get_all_clinfo_labels(self): # Human friendly labels for clinfo keys GPU_CLINFO_Labels = {'device_name': 'Device Name', 'device_version': 'Device Version', 'driver_version': 'Driver Version', 'opencl_version': 'Device OpenCL C Version', 'max_cu': 'Max Compute Units', 'simd_per_cu': 'SIMD per CU', 'simd_width': 'SIMD Width', 'simd_ins_width': 'SIMD Instruction Width', 'max_mem_allocation': 'CL Max Memory Allocation', 'max_wi_dim': 'Max Work Item Dimensions', 'max_wi_sizes': 'Max Work Item Sizes', 'max_wg_size': 'Max Work Group Size', 'prf_wg_multiple': 'Preferred Work Group Multiple'} return GPU_CLINFO_Labels def is_valid_power_cap(self, power_cap): power_cap_range = self.get_params_value('power_cap_range') # if power_cap >= power_cap_range[0] and power_cap <= power_cap_range[1]: if power_cap_range[0] <= power_cap <= power_cap_range[1]: return True elif power_cap < 0: # negative values will be interpreted as reset request return True else: return False def is_valid_fan_pwm(self, pwm_value): pwm_range = self.get_params_value('fan_pwm_range') # if pwm_value >= pwm_range[0] and pwm_value <= pwm_range[1]: if pwm_range[0] <= pwm_value <= pwm_range[1]: return True elif pwm_value < 0: # negative values will be interpreted as reset request return True else: return False def is_valid_mclk_pstate(self, pstate): mclk_range = self.get_params_value('mclk_f_range') mclk_min = int(re.sub(r'[a-z,A-Z]*', '', str(mclk_range[0]))) mclk_max = int(re.sub(r'[a-z,A-Z]*', '', str(mclk_range[1]))) if pstate[1] < mclk_min or pstate[1] > mclk_max: return False if self.get_params_value('gpu_type') != 2: vddc_range = self.get_params_value('vddc_range') vddc_min = int(re.sub(r'[a-z,A-Z]*', '', str(vddc_range[0]))) vddc_max = int(re.sub(r'[a-z,A-Z]*', '', str(vddc_range[1]))) if pstate[2] < vddc_min or pstate[2] > vddc_max: return False return True def is_valid_sclk_pstate(self, pstate): sclk_range = self.get_params_value('sclk_f_range') sclk_min = int(re.sub(r'[a-z,A-Z]*', '', str(sclk_range[0]))) sclk_max = int(re.sub(r'[a-z,A-Z]*', '', str(sclk_range[1]))) if pstate[1] < sclk_min or pstate[1] > sclk_max: return False if self.get_params_value('gpu_type') != 2: vddc_range = self.get_params_value('vddc_range') vddc_min = int(re.sub(r'[a-z,A-Z]*', '', str(vddc_range[0]))) vddc_max = int(re.sub(r'[a-z,A-Z]*', '', str(vddc_range[1]))) if pstate[2] < vddc_min or pstate[2] > vddc_max: return False return True def is_changed_sclk_pstate(self, pstate): if int(re.sub(r'[a-z,A-Z]*', '', self.sclk_state[pstate[0]][0])) != pstate[1]: return True if self.get_params_value('gpu_type') != 2: if int(re.sub(r'[a-z,A-Z]*', '', self.sclk_state[pstate[0]][1])) != pstate[2]: return True return False def is_changed_mclk_pstate(self, pstate): if int(re.sub(r'[a-z,A-Z]*', '', self.mclk_state[pstate[0]][0])) != pstate[1]: return True if self.get_params_value('gpu_type') != 2: if int(re.sub(r'[a-z,A-Z]*', '', self.mclk_state[pstate[0]][1])) != pstate[2]: return True return False def is_changed_vddc_curve_pt(self, pstate): if int(re.sub(r'[a-z,A-Z]*', '', self.vddc_curve[pstate[0]][0])) != pstate[1]: return True if int(re.sub(r'[a-z,A-Z]*', '', self.vddc_curve[pstate[0]][1])) != pstate[2]: return True return False def is_valid_vddc_curve_pts(self, curve_pts): sclk_min = int(re.sub(r'[a-z,A-Z]*', '', str(self.vddc_curve_range[str(curve_pts[0])]['SCLK'][0]))) sclk_max = int(re.sub(r'[a-z,A-Z]*', '', str(self.vddc_curve_range[str(curve_pts[0])]['SCLK'][1]))) if curve_pts[1] < sclk_min or curve_pts[1] > sclk_max: return False #vddc_min = int(re.sub(r'[a-z,A-Z]*', '', str(self.vddc_curve_range[str(curve_pts[0])]['VOLT'][0]))) vddc_min = int(re.sub(r'[a-z,A-Z]*', '', str('650mV'))) vddc_max = int(re.sub(r'[a-z,A-Z]*', '', str(self.vddc_curve_range[str(curve_pts[0])]['VOLT'][1]))) if curve_pts[2] < vddc_min or curve_pts[2] > vddc_max: return False return True def is_valid_pstate_list_str(self, ps_str, clk_name): if ps_str == '': return True for ps in ps_str.split(): ps_list = self.get_pstate_list(clk_name) try: ps_list.index(int(ps)) except: print('Error: Invalid pstate %s for %s.' % (ps, clk_name), file=sys.stderr) return False return True def get_pstate_list_str(self, clk_name): """Get list of pstate numbers and return as a string.""" ps_list = self.get_pstate_list(clk_name) return ','.join(str(ps) for ps in ps_list) def get_pstate_list(self, clk_name): """Get list of pstate numbers and return as a list.""" if clk_name == 'SCLK': return list(self.sclk_state.keys()) elif clk_name == 'MCLK': return list(self.mclk_state.keys()) return [] def get_current_ppm_mode(self): """Read GPU ppm definitions and current settings from driver files.""" if self.get_params_value('power_dpm_force').lower() == 'auto': return [-1, 'AUTO'] ppm_item = self.get_params_value('ppm').split('-') return [int(ppm_item[0]), ppm_item[1]] def read_gpu_ppm_table(self): if not os.path.isfile(self.card_path + 'pp_power_profile_mode'): print('Error getting power profile modes: ', self.card_path, file=sys.stderr) sys.exit(-1) with open(self.card_path + 'pp_power_profile_mode') as card_file: for line in card_file: linestr = line.strip() # Check for mode name: begins with '[ ]+[0-9].*' if re.fullmatch(r'[ ]+[0-9].*', line[0:3]): linestr = re.sub(r'[ ]*[*]*:', ' ', linestr) lineItems = linestr.split() if env.gut_const.DEBUG: print('Debug: ppm line: %s' % linestr, file=sys.stderr) if len(lineItems) < 2: print('Error: invalid ppm: %s' % linestr, file=sys.stderr) continue if env.gut_const.DEBUG: print('Debug: valid ppm: %s' % linestr, file=sys.stderr) self.ppm_modes[lineItems[0]] = lineItems[1:] self.ppm_modes['-1'] = ['AUTO', 'Auto'] card_file.close() if os.path.isfile(self.card_path + 'power_dpm_force_performance_level'): with open(self.card_path + 'power_dpm_force_performance_level') as card_file: self.set_params_value('power_dpm_force', card_file.readline().strip()) card_file.close() else: print('Error: card file does not exist: %s' % (self.card_path + 'power_dpm_force_performance_level'), file=sys.stderr) self.compatible = False def read_gpu_pstates(self): """Read GPU pstate definitions and parameter ranges from driver files. Set card type based on pstate configuration""" range_mode = False type_unknown = True if not os.path.isfile(self.card_path + 'pp_od_clk_voltage'): print('Error getting pstates: ', self.card_path, file=sys.stderr) self.compatible = False return if not os.path.isfile(self.card_path + 'power_dpm_state'): print('Error: Looks like DPM is not enabled: %s does not exist' % (self.card_path + 'power_dpm_state'), file=sys.stderr) self.compatible = False return with open(self.card_path + 'pp_od_clk_voltage') as card_file: for line in card_file: line = line.strip() if re.fullmatch('OD_.*:$', line): if re.fullmatch('OD_.CLK:$', line): clk_name = line.strip() elif re.fullmatch('OD_VDDC_CURVE:$', line): clk_name = line.strip() elif re.fullmatch('OD_RANGE:$', line): clk_name = '' range_mode = True continue lineitems = line.split() lineitems_len = len(lineitems) if type_unknown: if len(lineitems) == 3: # type 1 GPU self.set_params_value('gpu_type', 1) elif len(lineitems) == 2: self.set_params_value('gpu_type', 2) type_unknown = False if lineitems_len < 2 or lineitems_len > 3: print('Error: Invalid pstate entry: %s' % (self.card_path + 'pp_od_clk_voltage'), file=sys.stderr) #self.compatible = False continue if not range_mode: lineitems[0] = int(re.sub(':', '', lineitems[0])) if self.get_params_value('gpu_type') == 0 or self.get_params_value('gpu_type') == 1: if clk_name == 'OD_SCLK:': self.sclk_state[lineitems[0]] = [lineitems[1], lineitems[2]] elif clk_name == 'OD_MCLK:': self.mclk_state[lineitems[0]] = [lineitems[1], lineitems[2]] else: # Type 2 if clk_name == 'OD_SCLK:': self.sclk_state[lineitems[0]] = [lineitems[1], '-'] elif clk_name == 'OD_MCLK:': self.mclk_state[lineitems[0]] = [lineitems[1], '-'] elif clk_name == 'OD_VDDC_CURVE:': self.vddc_curve[lineitems[0]] = [lineitems[1], lineitems[2]] else: if lineitems[0] == 'SCLK:': self.set_params_value('sclk_f_range', [lineitems[1], lineitems[2]]) elif lineitems[0] == 'MCLK:': self.set_params_value('mclk_f_range', [lineitems[1], lineitems[2]]) elif lineitems[0] == 'VDDC:': self.set_params_value('vddc_range', [lineitems[1], lineitems[2]]) elif re.fullmatch('VDDC_CURVE_.*', line): if len(lineitems) == 3: index = re.sub(r'VDDC_CURVE_.*\[', '', lineitems[0]) index = re.sub(r'\].*','', index) param = re.sub(r'VDDC_CURVE_', '', lineitems[0]) param = re.sub(r'\[[0-9]\]:', '', param) if env.gut_const.DEBUG: print('Curve: index: %s param: %s, val1 %s, val2: %s' % (index, param, lineitems[1], lineitems[2])) if index in self.vddc_curve_range.keys(): self.vddc_curve_range[index].update({param: [lineitems[1], lineitems[2]]}) else: self.vddc_curve_range[index] = {} self.vddc_curve_range[index].update({param: [lineitems[1], lineitems[2]]}) else: print('Error: Invalid CURVE entry: %s' % (self.card_path + 'pp_od_clk_voltage'), file=sys.stderr) card_file.close() def read_gpu_sensor_static_data(self): """Read GPU static data from HWMON path.""" try: if os.path.isfile(self.hwmon_path + 'power1_cap_max'): with open(self.hwmon_path + 'power1_cap_max') as hwmon_file: power1_cap_max_value = int(int(hwmon_file.readline())/1000000) hwmon_file.close() if os.path.isfile(self.hwmon_path + 'power1_cap_min'): with open(self.hwmon_path + 'power1_cap_min') as hwmon_file: power1_cap_min_value = int(int(hwmon_file.readline())/1000000) self.set_params_value('power_cap_range', [power1_cap_min_value, power1_cap_max_value]) else: print('Error: HW file does not exist: %s' % (self.hwmon_path + 'power1_cap_min'), file=sys.stderr) hwmon_file.close() else: print('Error: HW file does not exist: %s' % (self.hwmon_path + 'power1_cap_max'), file=sys.stderr) self.compatible = False if os.path.isfile(self.hwmon_path + 'temp1_crit'): with open(self.hwmon_path + 'temp1_crit') as hwmon_file: self.set_params_value('temp_crit', int(hwmon_file.readline())/1000) hwmon_file.close() else: print('Error: HW file does not exist: %s' % (self.hwmon_path + 'temp1_crit'), file=sys.stderr) self.compatible = False # Get fan data if --no_fan flag is not set if env.gut_const.show_fans: if os.path.isfile(self.hwmon_path + 'fan1_max'): with open(self.hwmon_path + 'fan1_max') as hwmon_file: fan1_max_value = int(hwmon_file.readline()) hwmon_file.close() if os.path.isfile(self.hwmon_path + 'fan1_min'): with open(self.hwmon_path + 'fan1_min') as hwmon_file: fan1_min_value = int(hwmon_file.readline()) self.set_params_value('fan_speed_range', [fan1_min_value, fan1_max_value]) else: print('Error: HW file does not exist: %s' % (self.hwmon_path + 'fan1_min'), file=sys.stderr) hwmon_file.close() else: print('Error: HW file does not exist: %s' % (self.hwmon_path + 'fan1_max'), file=sys.stderr) #self.compatible = False if os.path.isfile(self.hwmon_path + 'pwm1_max'): with open(self.hwmon_path + 'pwm1_max') as hwmon_file: pwm1_max_value = int(100*(int(hwmon_file.readline())/255)) hwmon_file.close() if os.path.isfile(self.hwmon_path + 'pwm1_min'): with open(self.hwmon_path + 'pwm1_min') as hwmon_file: pwm1_pmin_value = int(100*(int(hwmon_file.readline())/255)) self.set_params_value('fan_pwm_range', [pwm1_pmin_value, pwm1_max_value]) hwmon_file.close() else: print('Error: HW file does not exist: %s' % (self.hwmon_path + 'pwm1_min'), file=sys.stderr) else: print('Error: HW file does not exist: %s' % (self.hwmon_path + 'pwm1_max'), file=sys.stderr) self.compatible = False except: print('Error: problem reading static data from GPU HWMON: %s' % self.hwmon_path, file=sys.stderr) self.compatible = False def read_gpu_sensor_data(self): """Read GPU sensor data from HWMON path.""" try: if os.path.isfile(self.hwmon_path + 'power1_cap'): with open(self.hwmon_path + 'power1_cap') as hwmon_file: self.set_params_value('power_cap', int(hwmon_file.readline())/1000000) hwmon_file.close() else: print('Error: HW file does not exist: %s' % (self.hwmon_path + 'power1_cap'), file=sys.stderr) self.compatible = False if os.path.isfile(self.hwmon_path + 'power1_average'): with open(self.hwmon_path + 'power1_average') as hwmon_file: power_uw = int(hwmon_file.readline()) time_n = env.gut_const.now(env.gut_const.USELTZ) self.set_params_value('power', int(power_uw)/1000000) delta_hrs = ((time_n - self.energy['tn']).total_seconds())/3600 self.energy['tn'] = time_n self.energy['cummulative'] += delta_hrs * power_uw/1000000000 self.set_params_value('energy', round(self.energy['cummulative'], 6)) hwmon_file.close() else: print('Error: HW file does not exist: %s' % (self.hwmon_path + 'power1_average'), file=sys.stderr) self.compatible = False if os.path.isfile(self.hwmon_path + 'temp1_input'): with open(self.hwmon_path + 'temp1_input') as hwmon_file: self.set_params_value('temp', int(hwmon_file.readline())/1000) hwmon_file.close() else: print('Error: HW file does not exist: %s' % (self.hwmon_path + 'temp1_input'), file=sys.stderr) self.compatible = False except: print('Error: Problem reading sensor [power/temp] from GPU HWMON: %s' % self.hwmon_path, file=sys.stderr) self.compatible = False # Get fan data if --no_fan flag is not set if env.gut_const.show_fans: # First non-critical fan data # On error will be disabled, but still compatible name_hwfile = ('fan1_enable', 'fan1_target', 'fan1_input') name_param = ('fan_enable', 'fan_target', 'fan_speed') for nh, np in zip(name_hwfile, name_param): if not (nh in self.hwmon_disabled): if os.path.isfile(self.hwmon_path + nh): try: with open(self.hwmon_path + nh) as hwmon_file: self.set_params_value(np, hwmon_file.readline().strip()) hwmon_file.close() except: print('Warning: problem reading sensor [%s] data from GPU HWMON: %s' % (nh, self.hwmon_path), file=sys.stderr) self.hwmon_disabled.append(nh) else: print('Warning: HW file does not exist: %s' % (self.hwmon_path + nh), file=sys.stderr) self.hwmon_disabled.append(nh) # Now critical fan data try: if os.path.isfile(self.hwmon_path + 'pwm1_enable'): with open(self.hwmon_path + 'pwm1_enable') as hwmon_file: pwm_mode_value = int(hwmon_file.readline().strip()) if pwm_mode_value == 0: pwm_mode_name = 'None' elif pwm_mode_value == 1: pwm_mode_name = 'Manual' elif pwm_mode_value == 2: pwm_mode_name = 'Dynamic' self.set_params_value('pwm_mode', [pwm_mode_value, pwm_mode_name]) hwmon_file.close() else: print('Error: HW file does not exist: %s' % (self.hwmon_path + 'pwm1_enable'), file=sys.stderr) self.compatible = False if os.path.isfile(self.hwmon_path + 'pwm1'): with open(self.hwmon_path + 'pwm1') as hwmon_file: self.set_params_value('fan_pwm', int(100*(int(hwmon_file.readline())/255))) hwmon_file.close() else: print('Error: HW file does not exist: %s' % (self.hwmon_path + 'pwm1'), file=sys.stderr) self.compatible = False except: print('Error: problem reading sensor [pwm] data from GPU HWMON: %s' % self.hwmon_path, file=sys.stderr) print('Try running with --no_fan option', file=sys.stderr) self.compatible = False try: if os.path.isfile(self.hwmon_path + 'in0_label'): with open(self.hwmon_path + 'in0_label') as hwmon_file: if hwmon_file.readline().rstrip() == 'vddgfx': with open(self.hwmon_path + 'in0_input') as hwmon_file2: self.set_params_value('vddgfx', int(hwmon_file2.readline())) hwmon_file.close() else: print('Error: HW file does not exist: %s' % (self.hwmon_path + 'in0_label'), file=sys.stderr) self.compatible = False except: print('Error: problem reading sensor [in0_label] data from GPU HWMON: %s' % self.hwmon_path, file=sys.stderr) self.compatible = False def read_gpu_driver_info(self): """Read GPU current driver information from card path directory.""" try: # get all device ID information if os.path.isfile(self.card_path + 'device'): with open(self.card_path + 'device') as card_file: device_id = card_file.readline().strip() card_file.close() else: print('Error: card file does not exist: %s' % (self.card_path + 'device'), file=sys.stderr) self.compatible = False if os.path.isfile(self.card_path + 'vendor'): with open(self.card_path + 'vendor') as card_file: vendor_id = card_file.readline().strip() card_file.close() else: print('Error: card file does not exist: %s' % (self.card_path + 'vendor'), file=sys.stderr) self.compatible = False if os.path.isfile(self.card_path + 'subsystem_device'): with open(self.card_path + 'subsystem_device') as card_file: subsystem_device_id = card_file.readline().strip() card_file.close() else: print('Error: card file does not exist: %s' % (self.card_path + 'subsystem_device'), file=sys.stderr) self.compatible = False if os.path.isfile(self.card_path + 'subsystem_vendor'): with open(self.card_path + 'subsystem_vendor') as card_file: subsystem_vendor_id = card_file.readline().strip() card_file.close() else: print('Error: card file does not exist: %s' % (self.card_path + 'subsystem_vendor'), file=sys.stderr) self.compatible = False # store device_id information self.set_params_value('id', {'vendor': vendor_id, 'device': device_id, 'subsystem_vendor': subsystem_vendor_id, 'subsystem_device': subsystem_device_id}) # use device info to set model if self.get_params_value('model_device_decode') == 'UNDETERMINED': pcid = PCImodule.PCI_ID() self.set_params_value('model_device_decode', pcid.get_model(self.get_params_value('id'))) # set display model to model_device_decode if shorter than model short if (self.get_params_value('model_device_decode') != 'UNDETERMINED' and len(self.get_params_value('model_device_decode')) < 1.2*len(self.get_params_value('model_short'))): self.set_params_value('model_display', self.get_params_value('model_device_decode')) else: self.set_params_value('model_display', self.get_params_value('model_short')) if os.path.isfile(self.card_path + 'vbios_version'): with open(self.card_path + 'vbios_version') as card_file: self.set_params_value('vbios', card_file.readline().strip()) card_file.close() else: print('Error: card file does not exist: %s' % (self.card_path + 'vbios_version'), file=sys.stderr) self.compatible = False except: print('Error: problem reading GPU driver information for Card Path: %s' % self.card_path, file=sys.stderr) self.compatible = False def read_gpu_state_data(self): """Read GPU current state information from card path directory.""" try: if os.path.isfile(self.card_path + 'gpu_busy_percent'): with open(self.card_path + 'gpu_busy_percent') as card_file: self.set_params_value('loading', int(card_file.readline())) card_file.close() else: print('Error: card file does not exist: %s' % (self.card_path + 'gpu_busy_percent'), file=sys.stderr) self.compatible = False if os.path.isfile(self.card_path + 'current_link_speed'): with open(self.card_path + 'current_link_speed') as card_file: self.set_params_value('link_spd', card_file.readline().strip()) card_file.close() else: print('Error: card file does not exist: %s' % (self.card_path + 'current_link_speed'), file=sys.stderr) self.compatible = False if os.path.isfile(self.card_path + 'current_link_width'): with open(self.card_path + 'current_link_width') as card_file: self.set_params_value('link_wth', card_file.readline().strip()) card_file.close() else: print('Error: card file does not exist: %s' % (self.card_path + 'current_link_width'), file=sys.stderr) self.compatible = False if os.path.isfile(self.card_path + 'pp_dpm_sclk'): with open(self.card_path + 'pp_dpm_sclk') as card_file: for line in card_file: if line[len(line)-2] == '*': lineitems = line.split(sep=':') self.set_params_value('sclk_ps', lineitems[0].strip()) self.set_params_value('sclk_f', lineitems[1].strip().strip('*')) card_file.close() else: print('Error: card file does not exist: %s' % (self.card_path + 'pp_dpm_sclk'), file=sys.stderr) self.compatible = False if os.path.isfile(self.card_path + 'pp_dpm_mclk'): with open(self.card_path + 'pp_dpm_mclk') as card_file: for line in card_file: if line[len(line)-2] == '*': lineitems = line.split(sep=':') self.set_params_value('mclk_ps', lineitems[0].strip()) self.set_params_value('mclk_f', lineitems[1].strip().strip('*')) card_file.close() else: print('Error: card file does not exist: %s' % (self.card_path + 'pp_dpm_mclk'), file=sys.stderr) self.compatible = False if os.path.isfile(self.card_path + 'pp_power_profile_mode'): with open(self.card_path + 'pp_power_profile_mode') as card_file: for line in card_file: linestr = line.strip() searchObj = re.search(r'\*:', linestr) if searchObj: lineitems = linestr.split(sep='*:') mode_str = lineitems[0].strip() mode_str = re.sub(r'[ ]+', '-', mode_str) self.set_params_value('ppm', mode_str) break card_file.close() else: print('Error: card file does not exist: %s' % (self.card_path + 'pp_power_profile_mode'), file=sys.stderr) self.compatible = False if os.path.isfile(self.card_path + 'power_dpm_force_performance_level'): with open(self.card_path + 'power_dpm_force_performance_level') as card_file: self.set_params_value('power_dpm_force', card_file.readline().strip()) card_file.close() else: print('Error: card file does not exist: %s' % (self.card_path + 'power_dpm_force_performance_level'), file=sys.stderr) self.compatible = False except: print('Error: getting data from GPU Card Path: %s' % self.card_path, file=sys.stderr) self.compatible = False def print_ppm_table(self): """print human friendly table of ppm parameters.""" print(f'Card: {self.card_path}') print('Power Performance Mode: %s' % self.get_params_value('power_dpm_force')) for k, v in self.ppm_modes.items(): print(str(k).rjust(3, ' ') + ': ' + v[0].rjust(15, ' '), end='') for v_item in v[1:]: print(str(v_item).rjust(18, ' '), end='') print('') print('') def print_pstates(self): """print human friendly table of pstates.""" print(f'Card: {self.card_path}') print('SCLK:' + ' '.ljust(19, ' ') + 'MCLK:') for k, v in self.sclk_state.items(): print("{}: {} {}".format(str(k), v[0].ljust(8, ' '), v[1].ljust(8, ' ')), end='') if k in self.mclk_state.keys(): print(" {}: {} {}".format(str(k), self.mclk_state[k][0].ljust(8, ' '), self.mclk_state[k][1].ljust(8, ' '))) else: print('') if self.get_params_value('gpu_type') == 2: print('VDDC_CURVE') for k, v in self.vddc_curve.items(): print('{}: {}'.format(str(k), v)) print('') def print(self, clflag=False): """ls like listing function for GPU parameters.""" for i, (k, v) in enumerate(self.get_all_params_labels().items()): if i == 1: if self.compatible: print(f'{__program_name__} Compatibility: Yes') else: print(f'{__program_name__} Compatibility: NO') print(v + ': ' + str(self.get_params_value(k))) if clflag: for k, v in self.get_all_clinfo_labels().items(): print(v + ': ' + str(self.get_clinfo_value(k))) print('') def get_plot_data(self, gpu_list): """return a dictionary of dynamic gpu parameters used by amdgpu-plot to populate a df. """ gpu_state = {'Time': str(self.energy['tn'].strftime('%c')).strip(), 'Card#': int(self.card_num)} for table_item in gpu_list.table_parameters: gpu_state_str = str(re.sub('M[Hh]z', '', str(self.get_params_value(table_item)))).strip() if gpu_state_str.isnumeric(): gpu_state[table_item] = int(gpu_state_str) elif re.fullmatch(r'[0-9]+.[0-9]*', gpu_state_str) or re.fullmatch(r'[0-9]*.[0-9]+', gpu_state_str): gpu_state[table_item] = float(gpu_state_str) elif gpu_state_str == '' or gpu_state_str == '-1' or gpu_state_str == 'NA' or gpu_state_str is None: # new_line_item.append('NA') gpu_state[table_item] = 'NA' else: gpu_state[table_item] = gpu_state_str return gpu_state class GPU_LIST: """A list of GPU_ITEMS indexed with uuid. It also contains a table of parameters used for tabular printouts""" def __init__(self): self.list = {} if env.gut_const.show_fans: self.table_parameters = ['model_display', 'loading', 'power', 'power_cap', 'energy', 'temp', 'vddgfx', 'fan_pwm', 'sclk_f', 'sclk_ps', 'mclk_f', 'mclk_ps', 'ppm'] self.table_param_labels = {'model_display': 'Model', 'loading': 'Load %', 'power': 'Power (W)', 'power_cap': 'Power Cap (W)', 'energy': 'Energy (kWh)', 'temp': 'T (C)', 'vddgfx': 'VddGFX (mV)', 'fan_pwm': 'Fan Spd (%)', 'sclk_f': 'Sclk (MHz)', 'sclk_ps': 'Sclk Pstate', 'mclk_f': 'Mclk (MHz)', 'mclk_ps': 'Mclk Pstate', 'ppm': 'Perf Mode'} else: self.table_parameters = ['model_display', 'loading', 'power', 'power_cap', 'energy', 'temp', 'vddgfx', 'sclk_f', 'sclk_ps', 'mclk_f', 'mclk_ps', 'ppm'] self.table_param_labels = {'model_display': 'Model', 'loading': 'Load %', 'power': 'Power (W)', 'power_cap': 'Power Cap (W)', 'energy': 'Energy (kWh)', 'temp': 'T (C)', 'vddgfx': 'VddGFX (mV)', 'sclk_f': 'Sclk (MHz)', 'sclk_ps': 'Sclk Pstate', 'mclk_f': 'Mclk (MHz)', 'mclk_ps': 'Mclk Pstate', 'ppm': 'Perf Mode'} def get_gpu_list(self): """ This method should be the first called to popultate the list with potentially compatible GPUs It doesn't read any driver files, just checks their existence and sets them in the GPU_ITEM object. """ for card_name in glob.glob(env.gut_const.card_root + 'card?/device/pp_od_clk_voltage'): gpu_item = GPU_ITEM(uuid4().hex) gpu_item.set_params_value('card_path', card_name.replace('pp_od_clk_voltage', '')) gpu_item.set_params_value('card_num', card_name.replace('/device/pp_od_clk_voltage', '').replace(env.gut_const.card_root + 'card', '')) hw_file_srch = glob.glob(os.path.join(gpu_item.card_path, env.gut_const.hwmon_sub) + '?') if len(hw_file_srch) > 1: print('More than one hwmon file found: ', hw_file_srch) gpu_item.set_params_value('hwmon_path', hw_file_srch[0] + '/') self.list[gpu_item.uuid] = gpu_item def list_compatible_gpus(self): compatible_list = GPU_LIST() for k, v in self.list.items(): if v.compatible: compatible_list.list[k] = v return compatible_list def get_gpu_card_list(self): com_list = [] for k, v in self.list.items(): if v.compatible: com_list.append(v.card_num) return com_list def read_gpu_ppm_table(self): for k, v in self.list.items(): if v.compatible: v.read_gpu_ppm_table() def print_ppm_table(self): for k, v in self.list.items(): v.print_ppm_table() def read_gpu_pstates(self): for k, v in self.list.items(): if v.compatible: v.read_gpu_pstates() def print_pstates(self): for k, v in self.list.items(): v.print_pstates() def read_gpu_state_data(self): """Read dynamic state data from GPUs""" for k, v in self.list.items(): if v.compatible: v.read_gpu_state_data() def read_gpu_sensor_static_data(self): """Read dynamic sensor data from GPUs""" for k, v in self.list.items(): if v.compatible: v.read_gpu_sensor_static_data() def read_gpu_sensor_data(self): """Read dynamic sensor data from GPUs""" for k, v in self.list.items(): if v.compatible: v.read_gpu_sensor_data() def read_gpu_driver_info(self): """Read data static driver information for GPUs""" for k, v in self.list.items(): if v.compatible: v.read_gpu_driver_info() def read_allgpu_pci_info(self): """ This function uses lspci to get details for GPUs in the current list and populates the data structure of each GPU_ITEM in the list. It gets GPU name variants and gets the pcie slot ID for each card ID. Special incompatible cases are determined here, like the Fiji Pro Duo. This is the first function that should be called after the intial list is populated. """ pcie_ids = subprocess.check_output( 'lspci | grep -E \'^.*(VGA|Display).*\[AMD\/ATI\].*$\' | grep -Eo \'^([0-9a-fA-F]+:[0-9a-fA-F]+.[0-9a-fA-F])\'', shell=True).decode().split() if env.gut_const.DEBUG: print('Found %s GPUs' % len(pcie_ids)) for pcie_id in pcie_ids: if env.gut_const.DEBUG: print('GPU: ', pcie_id) lspci_items = subprocess.check_output('lspci -k -s ' + pcie_id, shell=True).decode().split('\n') if env.gut_const.DEBUG: print(lspci_items) # Get Long GPU Name gpu_name = '' # Line 0 name gpu_name_0 = '' gpu_name_items = lspci_items[0].split('[AMD/ATI]') if len(gpu_name_items) < 2: gpu_name_0 = 'UNKNOWN' else: gpu_name_0 = gpu_name_items[1] # Line 1 name gpu_name_1 = '' gpu_name_items = lspci_items[1].split('[AMD/ATI]') if len(gpu_name_items) < 2: gpu_name_1 = 'UNKNOWN' else: gpu_name_1 = gpu_name_items[1] # Check for Fiji ProDuo searchObj = re.search('Fiji', gpu_name_0) if searchObj: searchObj = re.search('Radeon Pro Duo', gpu_name_1) if searchObj: gpu_name = 'Radeon Fiji Pro Duo' if len(gpu_name) == 0: if len(gpu_name_0) > len(gpu_name_1): gpu_name = gpu_name_0 else: gpu_name = gpu_name_1 if env.gut_const.DEBUG: print('gpu_name: %s' % gpu_name) # Get Driver Name driver_module_items = lspci_items[2].split(':') if len(driver_module_items) < 2: driver_module = 'UNKNOWN' else: driver_module = driver_module_items[1].strip() # Find matching card device_dirs = glob.glob(env.gut_const.card_root + 'card?/device') for device_dir in device_dirs: sysfspath = str(Path(device_dir).resolve()) if env.gut_const.DEBUG: print('device_dir: ', device_dir) if env.gut_const.DEBUG: print('sysfspath: ', sysfspath) if env.gut_const.DEBUG: print('pcie_id: ', pcie_id) if env.gut_const.DEBUG: print('sysfspath-7: ', sysfspath[-7:]) if pcie_id == sysfspath[-7:]: for k, v in self.list.items(): if v.card_path == device_dir + '/': if gpu_name == 'Radeon Fiji Pro Duo': v.compatible = False v.set_params_value('pcie_id', pcie_id) v.set_params_value('driver', driver_module) v.set_params_value('model', gpu_name) model_short = re.sub(r'^.*\[', '', gpu_name) model_short = re.sub(r'\].*$', '', model_short) model_short = re.sub(r'.*Radeon', '', model_short) v.set_params_value('model_short', model_short) break break def read_gpu_opencl_data(self): # Check access to clinfo command if not shutil.which('/usr/bin/clinfo'): print('OS Command [clinfo] not found. Use sudo apt-get install clinfo to install', file=sys.stderr) return -1 cmd = subprocess.Popen(shlex.split('/usr/bin/clinfo --raw'), shell=False, stdout=subprocess.PIPE) for line in cmd.stdout: linestr = line.decode('utf-8').strip() if len(linestr) < 1: continue if linestr[0] != '[': continue linestr = re.sub(r' [ ]*', ':-:', linestr) searchObj = re.search('CL_DEVICE_NAME', linestr) if searchObj: # Found a new device tmp_gpu = GPU_ITEM(uuid4().hex) lineItem = linestr.split(':-:') dev_str = lineItem[0].split('/')[1] dev_num = int(re.sub(']', '', dev_str)) tmp_gpu.set_clinfo_value('device_name', lineItem[2].strip()) continue searchObj = re.search('CL_DEVICE_VERSION', linestr) if searchObj: lineItem = linestr.split(':-:') tmp_gpu.set_clinfo_value('device_version', lineItem[2].strip()) continue searchObj = re.search('CL_DRIVER_VERSION', linestr) if searchObj: lineItem = linestr.split(':-:') tmp_gpu.set_clinfo_value('driver_version', lineItem[2].strip()) continue searchObj = re.search('CL_DEVICE_OPENCL_C_VERSION', linestr) if searchObj: lineItem = linestr.split(':-:') tmp_gpu.set_clinfo_value('opencl_version', lineItem[2].strip()) continue searchObj = re.search('CL_DEVICE_TOPOLOGY_AMD', linestr) if searchObj: lineItem = linestr.split(':-:') pcie_id_str = (lineItem[2].split()[1]).strip() if env.gut_const.DEBUG: print(f'CL PCIE ID: [{pcie_id_str}]') tmp_gpu.set_clinfo_value('pcie_id', pcie_id_str) continue searchObj = re.search('CL_DEVICE_MAX_COMPUTE_UNITS', linestr) if searchObj: lineItem = linestr.split(':-:') tmp_gpu.set_clinfo_value('max_cu', lineItem[2].strip()) continue searchObj = re.search('CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD', linestr) if searchObj: lineItem = linestr.split(':-:') tmp_gpu.set_clinfo_value('simd_per_cu', lineItem[2].strip()) continue searchObj = re.search('CL_DEVICE_SIMD_WIDTH_AMD', linestr) if searchObj: lineItem = linestr.split(':-:') tmp_gpu.set_clinfo_value('simd_width', lineItem[2].strip()) continue searchObj = re.search('CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD', linestr) if searchObj: lineItem = linestr.split(':-:') tmp_gpu.set_clinfo_value('simd_ins_width', lineItem[2].strip()) continue searchObj = re.search('CL_DEVICE_MAX_MEM_ALLOC_SIZE', linestr) if searchObj: lineItem = linestr.split(':-:') tmp_gpu.set_clinfo_value('max_mem_allocation', lineItem[2].strip()) continue searchObj = re.search('CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS', linestr) if searchObj: lineItem = linestr.split(':-:') tmp_gpu.set_clinfo_value('max_wi_dim', lineItem[2].strip()) continue searchObj = re.search('CL_DEVICE_MAX_WORK_ITEM_SIZES', linestr) if searchObj: lineItem = linestr.split(':-:') tmp_gpu.set_clinfo_value('max_wi_sizes', lineItem[2].strip()) continue searchObj = re.search('CL_DEVICE_MAX_WORK_GROUP_SIZE', linestr) if searchObj: lineItem = linestr.split(':-:') tmp_gpu.set_clinfo_value('max_wg_size', lineItem[2].strip()) continue searchObj = re.search('CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE', linestr) if searchObj: lineItem = linestr.split(':-:') tmp_gpu.set_clinfo_value('prf_wg_multiple', lineItem[2].strip()) continue searchObj = re.search('CL_DEVICE_EXTENSIONS', linestr) if searchObj: # End of Device if env.gut_const.DEBUG: print('finding gpu with pcie ID: ', tmp_gpu.get_clinfo_value('pcie_id')) target_gpu_uuid = self.find_gpu_by_pcie_id(tmp_gpu.get_clinfo_value('pcie_id')) self.list[target_gpu_uuid].copy_clinfo_values(tmp_gpu) return 0 def find_gpu_by_pcie_id(self, pcie_id): for k, v in self.list.items(): if v.get_params_value('pcie_id') == pcie_id: return v.uuid return -1 def num_gpus(self): cnt = 0 for _, _ in self.list.items(): cnt += 1 return cnt def num_compatible_gpus(self): cnt = 0 for k, v in self.list.items(): if v.compatible: cnt += 1 return cnt def print(self, clflag=False): for k, v in self.list.items(): v.print(clflag) def num_table_rows(self): return len(self.table_parameters) def print_table(self): num_gpus = self.num_gpus() if num_gpus < 1: return -1 print('┌', '─'.ljust(13, '─'), sep='', end='') for _, _ in self.list.items(): print('┬', '─'.ljust(16, '─'), sep='', end='') print('┐') print('│', '\x1b[1;36m' + 'Card #'.ljust(13, ' ') + '\x1b[0m', sep='', end='') for k, v in self.list.items(): print('│', '\x1b[1;36m' + ('card'+ v.get_params_value('card_num')).ljust(16, ' ') + '\x1b[0m', sep='', end='') print('│') print('├', '─'.ljust(13, '─'), sep='', end='') for _, _ in self.list.items(): print('┼', '─'.ljust(16, '─'), sep='', end='') print('┤') for table_item in self.table_parameters: print('│', '\x1b[1;36m' + self.table_param_labels[table_item].ljust(13, ' ')[:13] + '\x1b[0m', sep='', end='') for k, v in self.list.items(): print('│', str(v.get_params_value(table_item)).ljust(16, ' ')[:16], sep='', end='') print('│') print('└', '─'.ljust(13, '─'), sep='', end='') for _, _ in self.list.items(): print('┴', '─'.ljust(16, '─'), sep='', end='') print('┘') def print_log_header(self, log_file_ptr): num_gpus = self.num_gpus() if num_gpus < 1: return -1 # Print Header print('Time|Card#', end='', file=log_file_ptr) for table_item in self.table_parameters: print('|' + table_item, end='', file=log_file_ptr) print('', file=log_file_ptr) def print_log(self, log_file_ptr): num_gpus = self.num_gpus() if num_gpus < 1: return -1 # Print Data for k, v in self.list.items(): print(str(v.energy['tn'].strftime('%c')).strip() + '|' + str(v.card_num), sep='', end='', file=log_file_ptr) for table_item in self.table_parameters: print('|', re.sub('M[Hh]z', '', str(v.get_params_value(table_item)).strip()), sep='', end='', file=log_file_ptr) print('', file=log_file_ptr) def print_plot_header(self, log_file_ptr): num_gpus = self.num_gpus() if num_gpus < 1: return -1 # Print Header line_str_item = ['Time|Card#'] for table_item in self.table_parameters: line_str_item.append('|' + table_item) line_str_item.append('\n') line_str = ''.join(line_str_item) log_file_ptr.write(line_str.encode('utf-8')) log_file_ptr.flush() def print_plot(self, log_file_ptr): num_gpus = self.num_gpus() if num_gpus < 1: return -1 # Print Data for k, v in self.list.items(): line_str_item = [str(v.energy['tn'].strftime('%c')).strip() + '|' + str(v.card_num)] for table_item in self.table_parameters: line_str_item.append('|' + str(re.sub('M[Hh]z', '', str(v.get_params_value(table_item)))).strip()) line_str_item.append('\n') line_str = ''.join(line_str_item) log_file_ptr.write(line_str.encode('utf-8')) log_file_ptr.flush() def about(): print(__doc__) print('Author: ', __author__) print('Copyright: ', __copyright__) print('Credits: ', __credits__) print('License: ', __license__) print('Version: ', __version__) print('Maintainer: ', __maintainer__) print('Status: ', __status__) sys.exit(0) if __name__ == '__main__': about() amdgpu-utils-2.6.0/GPUmodules/PCImodule.py000077500000000000000000000167551354600334600203760ustar00rootroot00000000000000#!/usr/bin/env python3 """PCImodules - classes to parse PCI ID Repository file https://pci-ids.ucw.cz/ Copyright (C) 2019 RueiKe This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . """ __author__ = 'RueiKe' __copyright__ = 'Copyright (C) 2019 RueiKe' __credits__ = [''] __license__ = 'GNU General Public License' __program_name__ = 'amdgpu-utils' __version__ = 'v2.6.0' __maintainer__ = 'RueiKe' __status__ = 'Stable Release' import re import os import sys from datetime import datetime from pathlib import Path import shutil import urllib.request class PCI_ID: def __init__(self, file_name='amd_pci_id.txt'): self.pciid_url = 'https://pci-ids.ucw.cz/v2.2/pci.ids' self.pciid_file = 'pci.ids' self.amdgpu_utils_file = os.path.join(os.path.dirname(str(Path(__file__).resolve())), file_name) try: self.pci_id_file_ptr = open(self.amdgpu_utils_file, 'r') except FileNotFoundError: print('File [%s] not found. Exiting...' % os.path.join(os.path.dirname(str(Path(__file__).resolve())), file_name)) sys.exit(-1) except OSError: print('Can not open [%s] to read. Exiting...' % os.path.join(os.path.dirname(str(Path(__file__).resolve())), file_name)) sys.exit(-1) def get_pciid_version(self, filename=''): """ Get version information of specified pci.ids file. Look for these lines: # Version: 2019.02.23 # Date: 2019-02-23 03:15:02 return version details as a string """ if filename == '': get_file_ptr = self.pci_id_file_ptr else: get_file_ptr = open(filename, 'r') file_version = 'Unknown' file_date = 'Unknown' for line in get_file_ptr: if line[0] != '#': break searchObj = re.search('Version:', line.strip()) if searchObj: lineItem = line.split(':', 1) if len(lineItem) > 1: file_version = lineItem[1].strip() searchObj = re.search('Date:', line.strip()) if searchObj: lineItem = line.split(':', 1) if len(lineItem) > 1: file_date = lineItem[1].strip() break return 'Version: ' + file_version + ', Date: ' + file_date def download_pciid(self): """ download from https://pci-ids.ucw.cz/v2.2/pci.ids return the new downloaded data's filename as a string """ file_name = self.pciid_file + datetime.utcnow().strftime('%m%d_%H%M%S') + '.txt' with urllib.request.urlopen(self.pciid_url) as response, open(file_name, 'wb') as out_file: shutil.copyfileobj(response, out_file) return file_name def update_pci_id(self, in_file_name): self.pci_id_file_ptr.close() self.extract_vendor_from_pci_id('0x1002', in_file_name, self.amdgpu_utils_file) return 0 @staticmethod def extract_vendor_from_pci_id(vendor, in_file_name, out_file_name=''): """ For a given vendor id, extract all relevant entries. """ try: in_file_ptr = open(in_file_name, 'r') except FileNotFoundError: print('File [%s] not found. Exiting...' % in_file_name) sys.exit(-1) except OSError: print('Can not open [%s] to read. Exiting...' % in_file_name) sys.exit(-1) if out_file_name == '': file_ptr = sys.stdout else: shutil.copy2(out_file_name, out_file_name + datetime.utcnow().strftime('%m%d_%H%M%S')) try: file_ptr = open(out_file_name, 'w') except OSError: print('Can not open [%s] to write. Exiting...' % out_file_name) sys.exit(-1) level = -1 vendor_match = False for line_item in in_file_ptr: line = line_item.rstrip() if level == -1: if len(line) < 4: print(line, file=file_ptr) continue if line[0] == '#': print(line, file=file_ptr) continue if re.fullmatch(r'^[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F].*', line): level = 0 if vendor_match: break if vendor_match: print(line, file=file_ptr) continue if line[:4] == vendor.replace('0x', ''): vendor_match = True print(line, file=file_ptr) continue in_file_ptr.close() return def get_model(self, dev_id): """ For a device id dict of the format: {"vendor":"","device":"","subsystem_vendor":"","subsystem_device":""} search a PCI ID file extract from the PCI ID Repository and return the resultant Model Name as a string. """ self.pci_id_file_ptr = open(self.amdgpu_utils_file, 'r') model_str = '' level = 0 for line_item in self.pci_id_file_ptr: line = line_item.rstrip() if len(line) < 4: continue if line[0] == '#': continue if level == 0: if re.fullmatch(r'^[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F].*', line): if line[:4] == dev_id['vendor'].replace('0x', ''): level += 1 continue elif level == 1: if re.fullmatch(r'^[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F].*', line): break if re.fullmatch(r'^\t[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F].*', line): if line[1:5] == dev_id['device'].replace('0x', ''): model_str = line[5:] level += 1 continue elif level == 2: if re.fullmatch(r'^[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F].*', line): break if re.fullmatch(r'^\t[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F].*', line): break if re.fullmatch(r'^\t\t[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F].*', line): if line[2:6] == dev_id['subsystem_vendor'].replace('0x', ''): if line[7:11] == dev_id['subsystem_device'].replace('0x', ''): model_str = line[11:] break return model_str.strip() def about(): print(__doc__) print('Author: ', __author__) print('Copyright: ', __copyright__) print('Credits: ', __credits__) print('License: ', __license__) print('Version: ', __version__) print('Maintainer: ', __maintainer__) print('Status: ', __status__) sys.exit(0) if __name__ == '__main__': about() amdgpu-utils-2.6.0/GPUmodules/__init__.py000066400000000000000000000015121354600334600202720ustar00rootroot00000000000000# This file is part the amdgpu-util package # # Copyright (C) 2019 RueiKe # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from GPUmodules import GPUmodule from GPUmodules import env from GPUmodules import PCImodule amdgpu-utils-2.6.0/GPUmodules/amd_pci_id.txt000066400000000000000000003116541354600334600210050ustar00rootroot00000000000000# # List of PCI ID's # # Version: 2019.10.02 # Date: 2019-10-02 03:15:02 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at https://pci-ids.ucw.cz/. # # New data are always welcome, especially if they are accurate. If you have # anything to contribute, please follow the instructions at the web site. # # This file can be distributed under either the GNU General Public License # (version 2 or higher) or the 3-clause BSD License. # # Vendors, devices and subsystems. Please keep sorted. # Syntax: # vendor vendor_name # device device_name <-- single tab # subvendor subdevice subsystem_name <-- two tabs 1002 Advanced Micro Devices, Inc. [AMD/ATI] 1304 Kaveri 1305 Kaveri 1306 Kaveri 1307 Kaveri 1308 Kaveri HDMI/DP Audio Controller 1309 Kaveri [Radeon R6/R7 Graphics] 130a Kaveri [Radeon R6 Graphics] 130b Kaveri [Radeon R4 Graphics] 130c Kaveri [Radeon R7 Graphics] 130d Kaveri [Radeon R6 Graphics] 130e Kaveri [Radeon R5 Graphics] 130f Kaveri [Radeon R7 Graphics] 1310 Kaveri 1311 Kaveri 1312 Kaveri 1313 Kaveri [Radeon R7 Graphics] 1314 Wrestler HDMI Audio 174b 1001 PURE Fusion Mini 1315 Kaveri [Radeon R5 Graphics] 1316 Kaveri [Radeon R5 Graphics] 1317 Kaveri 1318 Kaveri [Radeon R5 Graphics] 131b Kaveri [Radeon R4 Graphics] 131c Kaveri [Radeon R7 Graphics] 131d Kaveri [Radeon R6 Graphics] 13e9 Ariel 154c Kryptos 154e Garfield 1551 Arlene 1552 Pooky 1561 Anubis 15d8 Picasso 15dd Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series] 103c 83c6 Radeon Vega 8 Mobile 1458 d000 Radeon RX Vega 11 15de Raven/Raven2/Fenghuang HDMI/DP Audio Controller 15df Raven/Raven2/Fenghuang/Renoir Cryptographic Coprocessor 15ff Fenghuang [Zhongshan Subor Z+] 1607 Arden 1636 Renoir 1714 BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series] 103c 168b ProBook 4535s 3150 RV380/M24 [Mobility Radeon X600] 103c 0934 nx8220 3151 RV380 GL [FireMV 2400] 3152 RV370/M22 [Mobility Radeon X300] 3154 RV380/M24 GL [Mobility FireGL V3200] 3155 RV380 GL [FireMV 2400] 3171 RV380 GL [FireMV 2400] (Secondary) 3e50 RV380 [Radeon X600] 3e54 RV380 GL [FireGL V3200] 3e70 RV380 [Radeon X600] (Secondary) 4136 RS100 [Mobility IGP 320M] 4137 RS200 [Radeon IGP 340] 4144 R300 [Radeon 9500] 4146 R300 [Radeon 9700 PRO] 4147 R300 GL [FireGL Z1] 4148 R350 [Radeon 9800/9800 SE] 4150 RV350 [Radeon 9550/9600/X1050 Series] 1002 0002 R9600 Pro primary (Asus OEM for HP) 1002 0003 R9600 Pro secondary (Asus OEM for HP) 1002 4722 All-in-Wonder 2006 AGP Edition 1458 4024 GV-R96128D 148c 2064 R96A-C3N 148c 2066 R96A-C3N 174b 7c19 Atlantis Radeon 9600 Pro 174b 7c29 GC-R9600PRO 17ee 2002 Radeon 9600 256Mb Primary 18bc 0101 GC-R9600PRO (Primary) 4151 RV350 [Radeon 9600 Series] 1043 c004 A9600SE 174b 7c37 Radeon 9600SE 128M DDR V/D/VO 4152 RV360 [Radeon 9600/X1050 Series] 1002 0002 Radeon 9600XT 1002 4772 All-in-Wonder 9600 XT 1043 c002 Radeon 9600 XT TVD 1043 c01a A9600XT/TD 1462 9510 RX9600XT (MS-8951) 174b 7c29 Radeon 9600XT 1787 4002 Radeon 9600 XT 4153 RV350 [Radeon 9550] 1043 010c A9550GE/TD 1462 932c RX9550SE-TD128 (MS-8932) 4154 RV350 GL [FireGL T2] 4155 RV350 [Radeon 9600] 4157 RV350 GL [FireGL T2] 4158 68800AX [Graphics Ultra Pro PCI] 4164 R300 [Radeon 9500 PRO] (Secondary) 4165 R300 [Radeon 9700 PRO] (Secondary) 4166 R300 [Radeon 9700 PRO] (Secondary) 4168 RV350 [Radeon 9800 SE] (Secondary) 4170 RV350 [Radeon 9550/9600/X1050 Series] (Secondary) 1002 0003 R9600 Pro secondary (Asus OEM for HP) 1002 4723 All-in-Wonder 2006 AGP Edition (Secondary) 1458 4025 GV-R96128D (Secondary) 148c 2067 R96A-C3N (Secondary) 174b 7c28 GC-R9600PRO (Secondary) 17ee 2003 Radeon 9600 256Mb (Secondary) 18bc 0100 GC-R9600PRO (Secondary) 4171 RV350 [Radeon 9600] (Secondary) 1043 c005 A9600SE (Secondary) 174b 7c36 Radeon 9600SE 128M DDR V/D/VO (secondary) 4172 RV350 [Radeon 9600/X1050 Series] (Secondary) 1002 0003 Radeon 9600XT (Secondary) 1002 4773 All-in-Wonder 9600 XT (Secondary) 1043 c003 A9600XT (Secondary) 1043 c01b A9600XT/TD (Secondary) 174b 7c28 Radeon 9600XT (Secondary) 1787 4003 Radeon 9600 XT (Secondary) 4173 RV350 [Radeon 9550] (Secondary) 1043 010d A9550GE/TD (Secondary) 4242 R200 [All-In-Wonder Radeon 8500 DV] 1002 02aa Radeon 8500 AIW DV Edition 4243 R200 PCI Bridge [All-in-Wonder Radeon 8500DV] 4336 RS100 [Radeon IGP 320M] 1002 4336 Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M) 103c 0024 Pavilion ze4400 builtin Video 161f 2029 eMachines M5312 builtin Video 4337 RS200M [Radeon IGP 330M/340M/345M/350M] 1014 053a ThinkPad R40e 103c 0850 Radeon IGP 345M 4341 SB200 AC97 Audio Controller 4342 SB200 PCI to PCI Bridge 4345 SB200 EHCI USB Controller 4346 Crayola 6 [XENOS Parent Die (XBOX 360)] 4347 SB200 OHCI USB Controller #1 4348 SB200 OHCI USB Controller #2 4349 SB200 IDE Controller 434c SB200 PCI to LPC Bridge 434d SB200 AC97 Modem Controller 4353 SB200 SMBus Controller 4354 215CT [Mach64 CT PCI] 4358 Mach64 CX [Graphics Xpression] 4361 SB300 AC'97 Audio Controller 4362 SB300 PCI to PCI Bridge 4363 SB300 SMBus Controller 4365 SB300 USB Controller (EHCI) 4367 SB300 USB Controller (EHCI) 4368 SB300 USB Controller (EHCI) 4369 SB300 IDE Controller 436c SB300 PCI to LPC Bridge 436d SB300 AC97 Modem Controller 436e SB300 Serial ATA Controller 4370 IXP SB400 AC'97 Audio Controller 1025 0079 Aspire 5024WLMMi 1025 0091 Aspire 5032WXMi 103c 2a05 Pavilion t3030.de Desktop PC 103c 308b MX6125 105b 0c81 Realtek ALC 653 107b 0300 MX6421 1462 0131 MS-1013 Notebook 4371 IXP SB4x0 PCI-PCI Bridge 103c 308b MX6125 1462 7217 Aspire L250 4372 IXP SB4x0 SMBus Controller 1025 0080 Aspire 5024WLMMi 103c 2a20 Pavilion t3030.de Desktop PC 103c 308b MX6125 1462 0131 MS-1013 Notebook 1462 7217 Aspire L250 4373 IXP SB4x0 USB2 Host Controller 1025 0080 Aspire 5024WLMMi 103c 2a20 Pavilion t3030.de Desktop PC 103c 308b MX6125 1462 7217 Aspire L250 4374 IXP SB4x0 USB Host Controller 103c 2a20 Pavilion t3030.de Desktop PC 103c 308b MX6125 1462 7217 Aspire L250 4375 IXP SB4x0 USB Host Controller 1025 0080 Aspire 5024WLMMi 103c 2a20 Pavilion t3030.de Desktop PC 103c 308b MX6125 1462 7217 Aspire L250 4376 IXP SB4x0 IDE Controller 1025 0080 Aspire 5024WLMMi 103c 2a20 Pavilion t3030.de Desktop PC 103c 308b MX6125 1462 0131 MS-1013 Notebook 1462 7217 Aspire L250 4377 IXP SB4x0 PCI-ISA Bridge 1025 0080 Aspire 5024WLMi 103c 2a20 Pavilion t3030.de Desktop PC 103c 308b MX6125 1462 7217 Aspire L250 4378 IXP SB400 AC'97 Modem Controller 1025 0080 Aspire 5024WLMMi 103c 308b MX6125 1462 0131 MS-1013 Notebook 4379 IXP SB4x0 Serial ATA Controller 1462 7141 Aspire L250 437a IXP SB400 Serial ATA Controller 1002 4379 4379 Serial ATA Controller 1002 437a 437A Serial ATA Controller 1462 7141 Aspire L250 14f1 8800 Leadtek WinFast TV2000XP Expert 437b IXP SB4x0 High Definition Audio Controller 1002 437b IXP SB4x0 High Definition Audio Controller 10cf 1326 Fujitsu Lifebook A3040 1734 10b8 Realtek High Definition Audio 4380 SB600 Non-Raid-5 SATA 103c 2813 DC5750 Microtower 1179 ff50 Satellite P305D-S8995E 1458 b003 GA-MA790FX-DS5 (rev. 1.0) 1458 b005 Gigabyte GA-MA69G-S3H Motherboard 1462 7327 K9AG Neo2 17f2 5999 KI690-AM2 Motherboard 4381 SB600 SATA Controller (RAID 5 mode) 4382 SB600 AC97 Audio 4383 SBx00 Azalia (Intel HDA) 1019 2120 A785GM-M 103c 1611 Pavilion DM1Z-3000 103c 280a DC5750 Microtower 1043 8230 M3A78-EH Motherboard 1043 836c M4A785TD Motherboard 1043 8410 M4A89GTD PRO/USB3 Motherboard 1043 841b M5A88-V EVO 1043 8445 M5A78L LE 105b 0e13 N15235/A74MX mainboard / AMD SB700 1179 ff50 Satellite P305D-S8995E 1458 a022 GA-MA770-DS3rev2.0 Motherboard 17f2 5000 KI690-AM2 Motherboard 4384 SBx00 PCI to PCI Bridge 4385 SBx00 SMBus Controller 1019 2120 A785GM-M 103c 1611 Pavilion DM1Z-3000 103c 280a DC5750 Microtower 1043 82ef M3A78-EH Motherboard 1043 8389 M4A785TD Motherboard 105b 0e13 N15235/A74MX mainboard / AMD SB700 1179 ff50 Satellite P305D-S8995E 1458 4385 GA-MA770-DS3rev2.0 Motherboard 1462 7368 K9AG Neo2 15d9 a811 H8DGU 174b 1001 PURE Fusion Mini 17f2 5000 KI690-AM2 Motherboard 4386 SB600 USB Controller (EHCI) 103c 280a DC5750 Microtower 1179 ff50 Satellite P305D-S8995E 1462 7368 K9AG Neo2 17f2 5000 KI690-AM2 Motherboard 4387 SB600 USB (OHCI0) 103c 280a DC5750 Microtower 1179 ff50 Satellite P305D-S8995E 1462 7368 K9AG Neo2 17f2 5000 KI690-AM2 Motherboard 4388 SB600 USB (OHCI1) 103c 280a DC5750 Microtower 1179 ff50 Satellite P305D-S8995E 1462 7368 K9AG Neo2 17f2 5000 KI690-AM2 Motherboard 4389 SB600 USB (OHCI2) 103c 280a DC5750 Microtower 1179 ff50 Satellite P305D-S8995E 1462 7368 K9AG Neo2 17f2 5000 KI690-AM2 Motherboard 438a SB600 USB (OHCI3) 103c 280a DC5750 Microtower 1179 ff50 Satellite P305D-S8995E 1462 7368 K9AG Neo2 17f2 5000 KI690-AM2 Motherboard 438b SB600 USB (OHCI4) 103c 280a DC5750 Microtower 1179 ff50 Satellite P305D-S8995E 1462 7368 K9AG Neo2 17f2 5000 KI690-AM2 Motherboard 438c SB600 IDE 103c 280a DC5750 Microtower 1179 ff50 Satellite P305D-S8995E 1458 5002 Gigabyte GA-MA69G-S3H Motherboard 1462 7368 K9AG Neo2 17f2 5000 KI690-AM2 Motherboard 438d SB600 PCI to LPC Bridge 103c 280a DC5750 Microtower 1179 ff50 Satellite P305D-S8995E 1462 7368 K9AG Neo2 17f2 5000 KI690-AM2 Motherboard 438e SB600 AC97 Modem 4390 SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] 1043 82ef M3A78-EH Motherboard 1043 8389 M4A785TD Motherboard 105b 0e13 N15235/A74MX mainboard / AMD SB700 1458 b002 GA-MA770-DS3rev2.0 Motherboard 1849 4390 Motherboard (one of many) 4391 SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] 103c 1611 Pavilion DM1Z-3000 1043 82ef M3A78-EH Motherboard 1043 8443 M5A88-V EVO 1043 84dd M5A99X EVO (R1.0) SB950 105b 0e13 N15235/A74MX mainboard / AMD SB700 174b 1001 PURE Fusion Mini 4392 SB7x0/SB8x0/SB9x0 SATA Controller [Non-RAID5 mode] 105b 0e13 N15235/A74MX mainboard / AMD SB700 4393 SB7x0/SB8x0/SB9x0 SATA Controller [RAID5 mode] 4394 SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] 4395 SB8x0/SB9x0 SATA Controller [Storage mode] 4396 SB7x0/SB8x0/SB9x0 USB EHCI Controller 1019 2120 A785GM-M 103c 1611 Pavilion DM1Z-3000 1043 82ef M3A78-EH Motherboard 1043 8443 M5A88-V EVO 105b 0e13 N15235/A74MX mainboard / AMD SB700 15d9 a811 H8DGU 174b 1001 PURE Fusion Mini 4397 SB7x0/SB8x0/SB9x0 USB OHCI0 Controller 1019 2120 A785GM-M 103c 1611 Pavilion DM1Z-3000 1043 82ef M3A78-EH Motherboard 1043 8443 M5A88-V EVO 105b 0e13 N15235/A74MX mainboard / AMD SB700 15d9 a811 H8DGU 174b 1001 PURE Fusion Mini 4398 SB7x0 USB OHCI1 Controller 1019 2120 A785GM-M 1043 82ef M3A78-EH Motherboard 105b 0e13 N15235/A74MX mainboard / AMD SB700 15d9 a811 H8DGU 4399 SB7x0/SB8x0/SB9x0 USB OHCI2 Controller 1019 2120 A785GM-M 1043 82ef M3A78-EH Motherboard 1043 8443 M5A88-V EVO 105b 0e13 N15235/A74MX mainboard / AMD SB700 174b 1001 PURE Fusion Mini 439c SB7x0/SB8x0/SB9x0 IDE Controller 1002 4392 MSI MS-7713 motherboard 1019 2120 A785GM-M 1043 82ef M3A78-EH Motherboard 105b 0e13 N15235/A74MX mainboard / AMD SB700 439d SB7x0/SB8x0/SB9x0 LPC host controller 1019 2120 A785GM-M 103c 1611 Pavilion DM1Z-3000 1043 82ef M3A78-EH Motherboard 1043 8443 M5A88-V EVO 105b 0e13 N15235/A74MX mainboard / AMD SB700 174b 1001 PURE Fusion Mini 43a0 SB700/SB800/SB900 PCI to PCI bridge (PCIE port 0) 43a1 SB700/SB800/SB900 PCI to PCI bridge (PCIE port 1) 43a2 SB900 PCI to PCI bridge (PCIE port 2) 43a3 SB900 PCI to PCI bridge (PCIE port 3) 4437 RS250 [Mobility Radeon 7000 IGP] 4554 210888ET [Mach64 ET] 4630 XENOS Parent Die (XBOX 360) 4631 XENOS Daughter Die (XBOX 360) 4654 Mach64 VT 4742 Rage 3 [3D Rage PRO AGP 2X] 1002 0040 Rage Pro Turbo AGP 2X 1002 0044 Rage Pro Turbo AGP 2X 1002 0061 Rage Pro AIW AGP 2X 1002 0062 Rage Pro AIW AGP 2X 1002 0063 Rage Pro AIW AGP 2X 1002 0080 Rage Pro Turbo AGP 2X 1002 0084 Rage Pro Turbo AGP 2X 1002 4742 Rage Pro Turbo AGP 2X 1002 8001 Rage Pro Turbo AGP 2X 1028 0082 Rage Pro Turbo AGP 2X 1028 4082 Optiplex GX1 Onboard Display Adapter 1028 8082 Rage Pro Turbo AGP 2X 1028 c082 Rage Pro Turbo AGP 2X 8086 4152 Xpert 98D AGP 2X 8086 464a Rage Pro Turbo AGP 2X 4744 Rage 3 [3D Rage PRO AGP 1X] 1002 4744 Rage Pro Turbo AGP 8086 4d55 Rage 3D Pro AGP 1X [Intel MU440EX] 4749 3D Rage PRO PCI 1002 0061 Rage Pro AIW 1002 0062 Rage Pro AIW 474d Rage XL AGP 2X 1002 0004 Xpert 98 RXL AGP 2X 1002 0008 Xpert 98 RXL AGP 2X 1002 0080 Rage XL AGP 2X 1002 0084 Xpert 98 AGP 2X 1002 474d Rage XL AGP 1033 806a Rage XL AGP 474e Rage XC AGP 1002 474e Rage XC AGP 474f Rage XL 1002 0008 Rage XL 1002 474f Rage XL 4750 3D Rage Pro PCI 1002 0040 Rage Pro Turbo 1002 0044 Rage Pro Turbo 1002 0080 Rage Pro Turbo 1002 0084 Rage Pro Turbo 1002 4750 Rage Pro Turbo 4752 Rage 3 [Rage XL PCI] 0e11 001e Proliant Rage XL 1002 0008 Rage XL 1002 4752 Proliant Rage XL 1002 8008 Rage XL 1014 0240 eServer xSeries server mainboard 1028 00ce PowerEdge 1400 1028 00d1 PowerEdge 2550 1028 00d9 PowerEdge 2500 1028 0134 PowerEdge 600SC 1028 014a PowerEdge 1750 1028 0165 PowerEdge 750 103c 10e1 NetServer Rage XL 103c 3208 ProLiant DL140 G2 107b 6400 6400 Server 1734 007a PRIMERGY RX/TX series onboard VGA 1734 1073 Primergy Econel 200 D2020 mainboard 8086 3411 SDS2 Mainboard 8086 3427 S875WP1-E mainboard 8086 5744 S845WD1-E mainboard 4753 Rage XC 1002 4753 Rage XC 4754 Mach64 GT/GT-B [3D Rage I/II] 4755 Mach64 GT-B [3D Rage II+ DVD] 4756 Rage 2 [3D Rage IIC PCI] 1002 4756 Rage IIC 4757 Rage 2 [3D Rage IIC AGP] 1002 4757 Rage IIC AGP 1028 0089 Rage 3D IIC 1028 008e PowerEdge 1300 onboard video 1028 4082 Rage 3D IIC 1028 8082 Rage 3D IIC 1028 c082 Rage 3D IIC 4758 Mach64 GX [WinTurbo] 4759 Rage 3 [3D Rage IIC PCI] 475a 3D Rage IIC AGP 1002 0084 Rage 3D Pro AGP 2x XPERT 98 1002 0087 Rage 3D IIC 1002 475a Rage IIC AGP 4845 Xilleon 220 HBIU for HDTV2 4846 Xilleon 220 IDE for HDTV2 4847 Xilleon 220 USB for HDTV2 4848 Xilleon 220 DAIO-0 for HDTV2 4849 Xilleon 220 DAIO-1 for HDTV2 484a Xilleon 220 LPC for HDTV2 4850 Xilleon 215 HBIU for X215 4851 Xilleon 215 IDE for X215 4852 Xilleon 215 USB for X215 4853 Xilleon 215 DAIO-0 for X215 4854 Xilleon 215 DAIO-1 for X215 4855 Xilleon 225 HBIU for X225 4856 Xilleon 225 IDE for X225 4857 Xilleon 225 USB for X225 4858 Xilleon 225 DAIO-0 for X225 4859 Xilleon 225 DAIO-1 for X225 4860 Xilleon 210 HBIU for X210 4861 Xilleon 210 IDE for X210 4862 Xilleon 210 USB for X210 4863 Xilleon 210 DAIO-0 for X210 4864 Xilleon 210 DAIO-1 for X210 4865 Xilleon 226 HBIU for X226 4866 Xilleon 226 IDE for X226 4867 Xilleon 226 USB for X226 4868 Xilleon 226 DAIO-0 for X226 4869 Xilleon 226 DAIO-1 for X226 486a Xilleon 240S HBIU for X240S 486b Xilleon 240H HBIU for X240H 486c Xilleon 240S USB for X240S 486d Xilleon 240H USB for X240H 486e Xilleon 250 USB 1.1 for X250 486f Xilleon 260 USB 1.1 for X260 4870 Xilleon 250 HBIU for X250 4871 Xilleon 250 IDE for X250 4872 Xilleon 234/235 HBIU for X234/X235 4873 Xilleon 244/245 HBIU for X244/X245 4874 Xilleon 234/235 USB 1.1 for X234/X235 4875 Xilleon 260 HBIU for X260 4876 Xilleon 260 IDE for X260 4877 Xilleon 244/245 USB 1.1 for X244/X245 4878 Xilleon 270 HBIU for X270 487b Xilleon 242 HBIU for X242 487d Xilleon 242 USB 1.1 for X242 4880 Xilleon 254 HBIU for X254 4881 Xilleon 254 USB 1.1 for X254 4882 Xilleon 255 HBIU for X255 4883 Xilleon 255 USB 1.1 for X255 4884 Xilleon 243 HBIU for X243 4885 Xilleon 243 USB 1.1 for X243 4886 Xilleon 233 HBIU for X233 4887 Xilleon 233 USB 1.1 for X233 4888 Xilleon 143 HBIU for X143 4889 Xilleon 143 HBIU for X143L 488a Xilleon 143 HBIU for X143S 4966 RV250 [Radeon 9000 Series] 10f1 0002 RV250 If [Tachyon G9000 PRO] 148c 2039 RV250 If [Radeon 9000 Pro "Evil Commando"] 1509 9a00 RV250 If [Radeon 9000 "AT009"] 1681 0040 RV250 If [3D prophet 9000] 174b 7176 Radeon 9000 Pro 174b 7192 RV250 If [Radeon 9000 "Atlantis"] 17af 2005 RV250 If [Excalibur Radeon 9000 Pro] 17af 2006 RV250 If [Excalibur Radeon 9000] 496e RV250 [Radeon 9000] (Secondary) 4a49 R420 [Radeon X800 PRO/GTO AGP] 174b 2620 R420 [Radeon X800 GTO AGP] 4a4a R420 [Radeon X800 GT AGP] 4a4b R420 [Radeon X800 AGP Series] 4a4d R420 GL [FireGL X3-256] 4a4e RV420/M18 [Mobility Radeon 9800] 4a4f R420 [Radeon X850 AGP] 4a50 R420 [Radeon X800 XT Platinum Edition AGP] 4a54 R420 [Radeon X800 VE AGP] 1002 4422 All-In-Wonder X800 VE AGP 4a69 R420 [Radeon X800 PRO/GTO] (Secondary) 4a6a R420 [Radeon X800] (Secondary) 4a6b R420 [Radeon X800 XT AGP] (Secondary) 4a70 R420 [Radeon X800 XT Platinum Edition AGP] (Secondary) 4a74 R420 [Radeon X800 VE] (Secondary) 4b49 R481 [Radeon X850 XT AGP] 4b4b R481 [Radeon X850 PRO AGP] 4b4c R481 [Radeon X850 XT Platinum Edition AGP] 4b69 R481 [Radeon X850 XT AGP] (Secondary) 4b6b R481 [Radeon X850 PRO AGP] (Secondary) 4b6c R481 [Radeon X850 XT Platinum Edition AGP] (Secondary) 4c42 Mach64 LT [3D Rage LT PRO AGP] 0e11 b0e7 Rage LT Pro (Compaq Presario 5240) 0e11 b0e8 Rage 3D LT Pro 0e11 b10e 3D Rage LT Pro (Compaq Armada 1750) 1002 0040 Rage LT Pro AGP 2X 1002 0044 Rage LT Pro AGP 2X 1002 4c42 Rage LT Pro AGP 2X 1002 8001 Rage LT Pro AGP 2X 1028 0085 Rage 3D LT Pro 4c46 Rage Mobility 128 AGP 2X/Mobility M3 1002 0155 IBM Thinkpad A22p 1014 0155 Thinkpad A22p 1028 00b1 Latitude C600 4c47 3D Rage IIC PCI / Mobility Radeon 7500/7500C 4c49 3D Rage LT PRO PCI 1002 0004 Rage LT Pro 1002 0040 Rage LT Pro 1002 0044 Rage LT Pro 1002 4c49 Rage LT Pro 4c4d Rage Mobility AGP 2x Series 0e11 b111 Armada M700 0e11 b160 Armada E500 1002 0084 Xpert 98 AGP 2X (Mobility) 1014 0154 ThinkPad A20m/A21m 1028 00aa Latitude CPt 1028 00bb Latitude CPx 1179 ff00 Satellite 1715XCDS laptop 13bd 1019 PC-AR10 4c50 Rage 3 LT [3D Rage LT PRO PCI] 1002 4c50 Rage LT Pro 4c52 M1 [Rage Mobility-M1 PCI] 1033 8112 Versa Note VXi 4c54 264LT [Mach64 LT] 4c57 RV200/M7 [Mobility Radeon 7500] 1014 0517 ThinkPad T30 1014 0530 ThinkPad T4x Series 1028 00e6 Radeon Mobility M7 LW (Dell Inspiron 8100) 1028 012a Latitude C640 1043 1622 Mobility Radeon M7 (L3C/S) 144d c006 Radeon Mobility M7 LW in vpr Matrix 170B4 4c58 RV200/M7 GL [Mobility FireGL 7800] 4c59 RV100/M6 [Rage/Radeon Mobility Series] 0e11 b111 Evo N600c 1014 0235 ThinkPad A30/A30p (2652/2653) 1014 0239 ThinkPad X22/X23/X24 103c 0025 XE4500 Notebook 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 104d 8140 PCG-Z1SP laptop 1509 1930 Medion MD9703 4c66 RV250/M9 GL [Mobility FireGL 9000/Radeon 9000] 1014 054d ThinkPad T41 4c6e RV250/M9 [Mobility Radeon 9000] (Secondary) 4d46 Rage Mobility 128 AGP 4X/Mobility M4 4d52 Theater 550 PRO PCI [ATI TV Wonder 550] 4d53 Theater 550 PRO PCIe 4e44 R300 [Radeon 9700/9700 PRO] 1002 515e Radeon ES1000 1002 5965 Radeon ES1000 4e45 R300 [Radeon 9500 PRO/9700] 1002 0002 Radeon R300 NE [Radeon 9500 Pro] 1681 0002 Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] 4e46 R300 [Radeon 9600 TX] 4e47 R300 GL [FireGL X1] 4e48 R350 [Radeon 9800 Series] 4e49 R350 [Radeon 9800] 4e4a R360 [Radeon 9800 XXL/XT] 1002 4e4a R360 [Radeon 9800 XT] 4e4b R350 GL [FireGL X2 AGP Pro] 4e50 RV350/M10 / RV360/M11 [Mobility Radeon 9600 (PRO) / 9700] 1025 005a TravelMate 290 1025 0064 Extensa 3000 series laptop: ATI RV360/M11 [Mobility Radeon 9700] 103c 088c NC8000 laptop 103c 0890 NC6000 laptop 144d c00c P35 notebook 1462 0311 MSI M510A 1734 1055 Amilo M1420W 4e51 RV350 [Radeon 9550/9600/X1050 Series] 4e52 RV350/M10 [Mobility Radeon 9500/9700 SE] 144d c00c P35 notebook 4e54 RV350/M10 GL [Mobility FireGL T2] 4e56 RV360/M12 [Mobility Radeon 9550] 4e64 R300 [Radeon 9700 PRO] (Secondary) 4e65 R300 [Radeon 9500 PRO] (Secondary) 1002 0003 Radeon R300 NE [Radeon 9500 Pro] 1681 0003 Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary) 4e66 RV350 [Radeon 9600] (Secondary) 4e67 R300 GL [FireGL X1] (Secondary) 4e68 R350 [Radeon 9800 PRO] (Secondary) 4e69 R350 [Radeon 9800] (Secondary) 4e6a RV350 [Radeon 9800 XT] (Secondary) 1002 4e6a R360 [Radeon 9800 XT] (Secondary) 1002 4e71 M10 NQ [Radeon Mobility 9600] 4e71 RV350/M10 [Mobility Radeon 9600] (Secondary) 4f72 RV250 [Radeon 9000 Series] 4f73 RV250 [Radeon 9000 Series] (Secondary) 5044 All-In-Wonder 128 PCI 1002 0028 Rage 128 AIW 1002 0029 Rage 128 AIW 5046 Rage 4 [Rage 128 PRO AGP 4X TMDS] 1002 0004 Rage Fury Pro 1002 0008 Rage Fury Pro/Xpert 2000 Pro 1002 0014 Rage Fury Pro 1002 0018 Rage Fury Pro/Xpert 2000 Pro 1002 0028 Rage 128 Pro AIW AGP 1002 002a Rage 128 Pro AIW AGP 1002 0048 Rage Fury Pro 1002 2000 Rage Fury MAXX AGP 4x (TMDS) (VGA device) 1002 2001 Rage Fury MAXX AGP 4x (TMDS) (Extra device?!) 5050 Rage128 [Xpert 128 PCI] 1002 0008 Xpert 128 5052 Rage 128 PRO AGP 4X TMDS 5144 R100 [Radeon 7200 / All-In-Wonder Radeon] 1002 0008 Radeon 7000/Radeon VE 1002 0009 Radeon 7000/Radeon 1002 000a Radeon 7000/Radeon 1002 001a Radeon 7000/Radeon 1002 0029 Radeon AIW 1002 0038 Radeon 7000/Radeon 1002 0039 Radeon 7000/Radeon 1002 008a Radeon 7000/Radeon 1002 00ba Radeon 7000/Radeon 1002 0139 Radeon 7000/Radeon 1002 028a Radeon 7000/Radeon 1002 02aa Radeon AIW 1002 053a Radeon 7000/Radeon 5148 R200 GL [FireGL 8800] 1002 010a FireGL 8800 64Mb 1002 0152 FireGL 8800 128Mb 1002 0162 FireGL 8700 32Mb 1002 0172 FireGL 8700 64Mb 514c R200 [Radeon 8500/8500 LE] 1002 003a Radeon R200 QL [Radeon 8500 LE] 1002 013a Radeon 8500 148c 2026 R200 QL [Radeon 8500 Evil Master II Multi Display Edition] 1681 0010 Radeon 8500 [3D Prophet 8500 128Mb] 174b 7149 Radeon 8500 LE 1787 0f08 Radeon R200 QL [PowerMagic Radeon 8500] 514d R200 [Radeon 9100] 5157 RV200 [Radeon 7500/7500 LE] 1002 013a Radeon 7500 1002 0f2b ALL-IN-WONDER VE PCI 1002 103a Dell Optiplex GX260 1458 4000 RV200 QW [RADEON 7500 PRO MAYA AR] 148c 2024 RV200 QW [Radeon 7500LE Dual Display] 148c 2025 RV200 QW [Radeon 7500 Evil Master Multi Display Edition] 148c 2036 RV200 QW [Radeon 7500 PCI Dual Display] 174b 7146 RV200 QW [Radeon 7500 LE] 174b 7147 Radeon 7500 LE 174b 7161 Radeon RV200 QW [Radeon 7500 LE] 17af 0202 RV200 QW [Excalibur Radeon 7500LE] 5159 RV100 [Radeon 7000 / Radeon VE] 1002 000a Radeon 7000/Radeon VE 1002 000b Radeon 7000 1002 0038 Radeon 7000/Radeon VE 1002 003a Radeon 7000/Radeon VE 1002 00ba Radeon 7000/Radeon VE 1002 013a Radeon 7000/Radeon VE 1002 0908 XVR-100 (supplied by Sun) # The IBM card doubles as an ATI PCI video adapter 1014 029a Remote Supervisor Adapter II (RSA2) 1014 02c8 eServer xSeries server mainboard 1028 016c PowerEdge 1850 Embedded Radeon 7000/VE 1028 016d PowerEdge 2850 Embedded Radeon 7000-M 1028 0170 PowerEdge 6850 Embedded Radeon 7000/VE 1028 019a PowerEdge SC1425 103c 1292 Radeon 7000 1043 c00a A7000/T/64M 1458 4002 RV100 QY [RADEON 7000 PRO MAYA AV Series] 148c 2003 RV100 QY [Radeon 7000 Multi-Display Edition] 148c 2023 RV100 QY [Radeon 7000 Evil Master Multi-Display] 148c 2081 RV6DE 174b 0280 Radeon RV100 QY [Radeon 7000/VE] 174b 7112 Radeon VE 7000 174b 7c28 Radeon VE 7000 DDR 1787 0202 RV100 QY [Excalibur Radeon 7000] 17ee 1001 Radeon 7000 64MB DDR + DVI 515e ES1000 1028 01bb PowerEdge 1955 Embedded ATI ES1000 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 1028 01f0 PowerEdge R900 Embedded ATI ES1000 1028 0205 PowerEdge 2970 Embedded ATI ES1000 1028 020b PowerEdge T605 Embedded ATI ES1000 1028 020f PowerEdge R300 Embedded ATI ES1000 1028 0210 PowerEdge T300 Embedded ATI ES1000 1028 0221 PowerEdge R805 Embedded ATI ES1000 1028 0223 PowerEdge R905 Embedded ATI ES1000 1028 0225 PowerEdge T105 Embedded ATI ES1000 1028 023c PowerEdge R200 Embedded ATI ES1000 103c 1304 Integrity iLO2 Advanced KVM VGA [AD307A] 15d9 8680 X7DVL-E-O motherboard 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board 5245 Rage 128 GL PCI 1002 0008 Xpert 128 1002 0028 Rage 128 AIW 1002 0029 Rage 128 AIW 1002 0068 Rage 128 AIW 5246 Rage 128 (Rage 4) series 1002 0004 Magnum/Xpert 128/Xpert 99 1002 0008 Rage 128 AGP 2x 1002 0028 Rage 128 AIW AGP 1002 0044 Rage Fury/Xpert 128/Xpert 2000 1002 0068 Rage 128 AIW AGP 1002 0448 Rage Fury 524b Rage 128 VR PCI 524c Rage 128 VR AGP 1002 0008 Xpert 99/Xpert 2000 1002 0088 Xpert 99 5346 Rage 128 SF/4x AGP 2x 1002 0048 RAGE 128 16MB VGA TVOUT AMC PAL 534d Rage 128 4X AGP 4x 1002 0008 Xpert 99/Xpert 2000 1002 0018 Xpert 2000 5354 Mach 64 VT 1002 5654 Mach 64 reference 5446 Rage 128 PRO Ultra AGP 4x 1002 0004 Rage Fury Pro 1002 0008 Rage Fury Pro/Xpert 2000 Pro 1002 0018 Rage Fury Pro/Xpert 2000 Pro 1002 0028 Rage 128 AIW Pro AGP 1002 0029 Rage 128 AIW 1002 002a Rage 128 AIW Pro AGP 1002 002b Rage 128 AIW 1002 0048 Xpert 2000 Pro 5452 Rage 128 PRO Ultra4XL VR-R AGP 1002 001c Rage 128 Pro 4XL 103c 1279 Rage 128 Pro 4XL 5460 RV370/M22 [Mobility Radeon X300] 1775 1100 CR11/VR11 Single Board Computer 5461 RV370/M22 [Mobility Radeon X300] 5462 RV380/M24C [Mobility Radeon X600 SE] 5464 RV370/M22 GL [Mobility FireGL V3100] 5549 R423 [Radeon X800 GTO] 554a R423 [Radeon X800 XT Platinum Edition] 554b R423 [Radeon X800 GT/SE] 1002 0302 Radeon X800 SE 554d R430 [Radeon X800 XL] 1002 0322 All-In-Wonder X800 XL 1458 2124 GV-R80L256V-B (AGP) 554e R430 [All-In-Wonder X800 GT] 554f R430 [Radeon X800] 5550 R423 GL [FireGL V7100] 5551 R423 GL [FireGL V5100] 5569 R423 [Radeon X800 PRO] (Secondary) 556b R423 [Radeon X800 GT] (Secondary) 556d R430 [Radeon X800 XL] (Secondary) 1458 2125 GV-R80L256V-B (AGP) 556f R430 [Radeon X800] (Secondary) 5571 R423 GL [FireGL V5100] (Secondary) 564b RV410/M26 GL [Mobility FireGL V5000] 564f RV410/M26 [Mobility Radeon X700 XL] 5652 RV410/M26 [Mobility Radeon X700] 5653 RV410/M26 [Mobility Radeon X700] 1025 0080 Aspire 5024WLMi 103c 0940 Compaq NW8240 Mobile Workstation 5654 Mach64 VT [Video Xpression] 1002 5654 Mach64VT Reference 5655 264VT3 [Mach64 VT3] 5656 Mach64 VT4 [Video Xpression+] 5657 RV410 [Radeon X550 XTX / X700] 5830 RS300 Host Bridge 5831 RS300 Host Bridge 5832 RS300 Host Bridge 5833 RS300 Host Bridge 5834 RS300 [Radeon 9100 IGP] 5835 RS300M [Mobility Radeon 9100 IGP] 5838 RS300 AGP Bridge 5854 RS480 [Radeon Xpress 200 Series] (Secondary) 5874 RS480 [Radeon Xpress 1150] (Secondary) 5940 RV280 [Radeon 9200 PRO] (Secondary) 17af 2021 Excalibur Radeon 9250 (Secondary) 5941 RV280 [Radeon 9200] (Secondary) 1458 4019 Radeon 9200 174b 7c12 Radeon 9200 17af 200d Excalibur Radeon 9200 18bc 0050 GC-R9200-C3 (Secondary) 5944 RV280 [Radeon 9200 SE PCI] 5950 RS480/RS482/RS485 Host Bridge 1025 0080 Aspire 5024WLMMi 103c 280a DC5750 Microtower 103c 2a20 Pavilion t3030.de Desktop PC 103c 308b MX6125 1462 0131 MS-1013 Notebook 1462 7217 Aspire L250 5951 RX480/RX482 Host Bridge 5952 RD580 Host Bridge 5954 RS480 [Radeon Xpress 200 Series] 1002 5954 RV370 [Radeon Xpress 200G Series] 5955 RS480M [Mobility Radeon Xpress 200] 1002 5955 RS480 0x5955 [Radeon XPRESS 200M 5955 (PCIE)] 103c 308b MX6125 1462 0131 MS-1013 Notebook 5956 RD790 Host Bridge 5957 RX780/RX790 Host Bridge 1849 5957 A770CrossFire Motherboard 5958 RD780 Host Bridge 5960 RV280 [Radeon 9200 PRO] 17af 2020 Excalibur Radeon 9250 5961 RV280 [Radeon 9200] 1002 2f72 All-in-Wonder 9200 Series 1019 4c30 Radeon 9200 VIVO 12ab 5961 YUAN SMARTVGA Radeon 9200 1458 4018 Radeon 9200 174b 7c13 Radeon 9200 17af 200c Excalibur Radeon 9200 18bc 0050 Radeon 9200 Game Buster 18bc 0051 GC-R9200-C3 18bc 0053 Radeon 9200 Game Buster VIVO 5962 RV280 [Radeon 9200] 5964 RV280 [Radeon 9200 SE] 1002 5964 Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz 1043 c006 Radeon 9200 SE / TD / 128M 1458 4018 Radeon 9200 SE 1458 4032 Radeon 9200 SE 128MB 147b 6191 R9200SE-DT 148c 2073 CN-AG92E 174b 7c13 Radeon 9200 SE 1787 5964 Excalibur 9200SE VIVO 128M 17af 2012 Radeon 9200 SE Excalibur 18bc 0170 Sapphire Radeon 9200 SE 128MB Game Buster 18bc 0173 GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] 5965 RV280 GL [FireMV 2200 PCI] 5974 RS482/RS485 [Radeon Xpress 1100/1150] 103c 280a DC5750 Microtower 1462 7141 Aspire L250 5975 RS482M [Mobility Radeon Xpress 200] 5978 RX780/RD790 PCI to PCI bridge (external gfx0 port A) 1849 5957 A770CrossFire Motherboard 5979 RD790 PCI to PCI bridge (external gfx0 port B) 597a RD790 PCI to PCI bridge (PCI express gpp port A) 597b RX780/RD790 PCI to PCI bridge (PCI express gpp port B) 597c RD790 PCI to PCI bridge (PCI express gpp port C) 597d RX780/RD790 PCI to PCI bridge (PCI express gpp port D) 597e RD790 PCI to PCI bridge (PCI express gpp port E) 1849 5957 A770CrossFire Motherboard 597f RD790 PCI to PCI bridge (PCI express gpp port F) 1849 5957 A770CrossFire Motherboard 5980 RD790 PCI to PCI bridge (external gfx1 port A) 5981 RD790 PCI to PCI bridge (external gfx1 port B) 5982 RD790 PCI to PCI bridge (NB-SB link) 5a10 RD890 Northbridge only dual slot (2x16) PCI-e GFX Hydra part 5a11 RD890 Northbridge only single slot PCI-e GFX Hydra part 5a12 RD890 Northbridge only dual slot (2x8) PCI-e GFX Hydra part 15d9 a811 H8DGU 5a13 RD890S/SR5650 Host Bridge 5a14 RD9x0/RX980 Host Bridge 5a15 RD890 PCI to PCI bridge (PCI express gpp port A) 5a16 RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GFX port 0) 5a17 RD890/RD9x0 PCI to PCI bridge (PCI Express GFX port 1) 5a18 RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 0) 15d9 a811 H8DGU 5a19 RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 1) 5a1a RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 2) 5a1b RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 3) 5a1c RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 4) 5a1d RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 5) 5a1e RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP2 Port 0) 5a1f RD890/RD990 PCI to PCI bridge (PCI Express GFX2 port 0) 15d9 a811 H8DGU 5a20 RD890/RD990 PCI to PCI bridge (PCI Express GFX2 port 1) 5a23 RD890S/RD990 I/O Memory Management Unit (IOMMU) 5a31 RC410 Host Bridge 5a33 RS400 Host Bridge 5a34 RS4xx PCI Express Port [ext gfx] 5a36 RC4xx/RS4xx PCI Express Port 1 5a37 RC4xx/RS4xx PCI Express Port 2 5a38 RC4xx/RS4xx PCI Express Port 3 5a39 RC4xx/RS4xx PCI Express Port 4 5a3f RC4xx/RS4xx PCI Bridge [int gfx] 1462 7217 Aspire L250 5a41 RS400 [Radeon Xpress 200] 5a42 RS400M [Radeon Xpress 200M] 5a61 RC410 [Radeon Xpress 200/1100] 5a62 RC410M [Mobility Radeon Xpress 200M] 5b60 RV370 [Radeon X300] 1043 002a Extreme AX300SE-X 1043 032e Extreme AX300/TD 1458 2102 GV-RX30S128D (X300SE) 1462 0400 RX300SE-TD128E (MS-8940 REV:200) 1462 0402 RX300SE-TD128E (MS-8940) 174b 0500 Radeon X300 (PCIE) 196d 1086 X300SE HM 5b62 RV370 [Radeon X600/X600 SE] 5b63 RV370 [Radeon X300/X550/X1050 Series] 5b64 RV370 GL [FireGL V3100] 5b65 RV370 GL [FireMV 2200] 5b66 RV370X 5b70 RV370 [Radeon X300 SE] # RX300SE-TD128E 1462 0403 Radeon X300 SE 128MB DDR 174b 0501 Radeon X300 SE 196d 1087 Radeon X300 SE HyperMemory 5b72 RV380 [Radeon X300/X550/X1050 Series] (Secondary) 5b73 RV370 [Radeon X300/X550/X1050 Series] (Secondary) 5b74 RV370 GL [FireGL V3100] (Secondary) 5b75 RV370 GL [FireMV 2200] (Secondary) 5c61 RV280/M9+ [Mobility Radeon 9200 AGP] 5c63 RV280/M9+ [Mobility Radeon 9200 AGP] 1002 5c63 Apple iBook G4 2004 144d c00c P30 notebook 5d44 RV280 [Radeon 9200 SE] (Secondary) 1458 4019 Radeon 9200 SE (Secondary) 1458 4032 Radeon 9200 SE 128MB 147b 6190 R9200SE-DT (Secondary) 174b 7c12 Radeon 9200 SE (Secondary) 1787 5965 Excalibur 9200SE VIVO 128M (Secondary) 17af 2013 Radeon 9200 SE Excalibur (Secondary) 18bc 0171 Radeon 9200 SE 128MB Game Buster (Secondary) 18bc 0172 GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] 5d45 RV280 GL [FireMV 2200 PCI] (Secondary) 5d48 R423/M28 [Mobility Radeon X800 XT] 5d49 R423/M28 GL [Mobility FireGL V5100] 5d4a R423/M28 [Mobility Radeon X800] 5d4d R480 [Radeon X850 XT Platinum Edition] 5d4e R480 [Radeon X850 SE] 5d4f R480 [Radeon X800 GTO] 5d50 R480 GL [FireGL V7200] 5d52 R480 [Radeon X850 XT] 1002 0b12 PowerColor X850XT PCIe (Primary) 5d57 R423 [Radeon X800 XT] 5d6d R480 [Radeon X850 XT Platinum Edition] (Secondary) 5d6f R480 [Radeon X800 GTO] (Secondary) 5d72 R480 [Radeon X850 XT] (Secondary) 1002 0b13 PowerColor X850XT PCIe (Secondary) 5d77 R423 [Radeon X800 XT] (Secondary) 5e48 RV410 GL [FireGL V5000] 5e49 RV410 [Radeon X700 Series] 5e4a RV410 [Radeon X700 XT] 5e4b RV410 [Radeon X700 PRO] 5e4c RV410 [Radeon X700 SE] 5e4d RV410 [Radeon X700] 148c 2116 Bravo X700 5e4f RV410 [Radeon X700] 1569 1e4f Radeon X550 XT 5e6b RV410 [Radeon X700 PRO] (Secondary) 5e6d RV410 [Radeon X700] (Secondary) 148c 2117 Bravo X700 (Secondary) 5f57 R423 [Radeon X800 XT] 6600 Mars [Radeon HD 8670A/8670M/8750M] 103c 1952 ProBook 455 G1 6601 Mars [Radeon HD 8730M] 103c 2100 FirePro M4100 6604 Opal XT [Radeon R7 M265/M365X/M465] 1025 0776 Aspire V5 Radeon R7 M265 103c 8006 FirePro M4170 103c 814f Litho XT [Radeon R7 M365X] 103c 82aa Litho XT [Radeon R7 M465] 17aa 3643 Radeon R7 A360 6605 Opal PRO [Radeon R7 M260X] 103c 2259 FirePro M4150 6606 Mars XTX [Radeon HD 8790M] 1028 0684 FirePro W4170M 6607 Mars LE [Radeon HD 8530M / R5 M240] 6608 Oland GL [FirePro W2100] 13cc 3d28 MXRT-2600 6610 Oland XT [Radeon HD 8670 / R7 250/350] 1019 0030 Radeon HD 8670 1028 2120 Radeon R7 250 1028 2322 Radeon R7 250 1462 2910 Radeon HD 8670 1462 2911 Radeon HD 8670 148c 7350 Radeon R7 350 1642 3c81 Radeon HD 8670 1642 3c91 Radeon HD 8670 1642 3f09 Radeon R7 350 6611 Oland [Radeon HD 8570 / R7 240/340 OEM] 1028 210b Radeon R5 240 OEM 174b 4248 Radeon R7 240 OEM 174b a240 Radeon R7 240 OEM 174b d340 Radeon R7 340 OEM 1b0a 90d3 Radeon R7 240 OEM 6613 Oland PRO [Radeon R7 240/340] 148c 7340 Radeon R7 340 1682 7240 R7 240 2048 MB 6631 Oland 6640 Saturn XT [FirePro M6100] 106b 014b Tropo XT [Radeon R9 M380 Mac Edition] 6641 Saturn PRO [Radeon HD 8930M] 6646 Bonaire XT [Radeon R9 M280X] 6647 Saturn PRO/XT [Radeon R9 M270X/M280X] 1043 223d N551ZU laptop Radeon R9 M280X 6649 Bonaire [FirePro W5100] 1002 0b0c FirePro W4300 103c 0b0c Bonaire [FirePro W4300] 103c 230c FirePro W5100 13cc 3d2a MXRT-5600 6650 Bonaire 6651 Bonaire 6658 Bonaire XTX [Radeon R7 260X/360] 1043 04d3 AMD Radeon R7 260X 148c 0907 Radeon R7 360 1682 0907 Radeon R7 360 1682 7360 Radeon R7 360 665c Bonaire XT [Radeon HD 7790/8770 / R7 360 / R9 260/360 OEM] 1043 0452 Radeon HD 7790 DirectCU II OC # R7790-1GD5/OC 1462 2930 Radeon HD 7790 OC 1462 2932 Radeon HD 8770 1462 2934 Radeon R9 260 OEM 1462 2938 Radeon R9 360 OEM 148c 0907 Radeon R7 360 148c 9260 Radeon R9 260 OEM 148c 9360 Radeon R9 360 OEM 1682 0907 Radeon R7 360 # FX-779A-CDB4 / FX-779A-CDBC 1682 3310 Radeon HD 7790 Black Edition 2 GB # 100356OCL / 11210-01-20G 174b e253 Radeon HD 7790 Dual-X OC 1787 2329 Radeon HD 7790 TurboDuo 665d Bonaire [Radeon R7 200 Series] 665f Tobago PRO [Radeon R7 360 / R9 360 OEM] 1028 0b04 Radeon R9 360 OEM 1462 2938 Radeon R9 360 OEM 1462 3271 Radeon R9 360 OEM 1682 7360 Radeon R7 360 6660 Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430 / Radeon 520 Mobile] 1028 05ea Radeon HD 8670M 1028 06bf Radeon R5 M335 103c 1970 Radeon HD 8670M 103c 80be Radeon R5 M330 103c 8136 Radeon R5 M330 103c 8329 Radeon R7 M520 17aa 3633 Radeon R5 A330 17aa 3804 Radeon R5 M330 17aa 3809 Radeon R5 M330 17aa 381a Radeon R5 M430 17aa 390c Radeon R5 M330 6663 Sun PRO [Radeon HD 8570A/8570M] 1025 0846 Radeon HD 8570A 17aa 3805 Radeon HD 8570M 6664 Jet XT [Radeon R5 M240] 6665 Jet PRO [Radeon R5 M230 / R7 M260DX / Radeon 520 Mobile] 17aa 1309 Radeon R7 M260DX 17aa 368f Radeon R5 A230 6667 Jet ULT [Radeon R5 M230] 666f Sun LE [Radeon HD 8550M / R5 M230] 66a0 Vega 20 [Radeon Instinct] 66a1 Vega 20 66a2 Vega 20 66a3 Vega 20 66a7 Vega 20 [Radeon Pro Vega 20] 66af Vega 20 [Radeon VII] 6704 Cayman PRO GL [FirePro V7900] 6707 Cayman LE GL [FirePro V5900] 6718 Cayman XT [Radeon HD 6970] 6719 Cayman PRO [Radeon HD 6950] 671c Antilles [Radeon HD 6990] 671d Antilles [Radeon HD 6990] 671f Cayman CE [Radeon HD 6930] 6720 Blackcomb [Radeon HD 6970M/6990M] 1028 048f Radeon HD 6990M 1028 0490 Alienware M17x R3 Radeon HD 6970M 1028 04a4 FirePro M8900 1028 04ba Radeon HD 6990M 1028 053f FirePro M8900 106b 0b00 Radeon HD 6970M 1558 5102 Radeon HD 6970M 1558 5104 Radeon HD 6990M 1558 7201 Radeon HD 6990M 174b e188 Radeon HD 6970M 6738 Barts XT [Radeon HD 6870] # HD-687A-ZDFC 1682 3103 Radeon HD 8670 1787 201a Barts XT [Radeon HD 6870 X2] 1787 201b Barts XT [Radeon HD 6870 X2] 6739 Barts PRO [Radeon HD 6850] 1043 03b4 EAH6850 [Radeon HD 6850] 673e Barts LE [Radeon HD 6790] 148c 7720 Radeon HD 7720 OEM 6740 Whistler [Radeon HD 6730M/6770M/7690M XT] 1019 238c Radeon HD 6730M 1019 238e Radeon HD 6730M 1019 2391 Radeon HD 6730M 1019 2392 Radeon HD 6770M 1028 04a3 Precision M4600 1028 053e FirePro M5950 103c 1630 FirePro M5950 103c 1631 FirePro M5950 103c 164b Radeon HD 6730M 103c 164e Radeon HD 6730M 103c 1657 Radeon HD 6770M 103c 1658 Radeon HD 6770M 103c 165a Radeon HD 6770M 103c 165b Radeon HD 6770M 103c 1688 Radeon HD 6770M 103c 1689 Radeon HD 6770M 103c 168a Radeon HD 6770M 103c 185e Radeon HD 7690M XT 103c 3388 Radeon HD 6770M 103c 3389 Radeon HD 6770M 103c 3582 Radeon HD 6770M 103c 366c Radeon HD 6730M 1043 1d02 Radeon HD 6730M 1043 1d12 Radeon HD 6730M 104d 9084 Radeon HD 6730M 104d 9085 Radeon HD 6730M 144d b074 Radeon HD 6730M 144d b077 Radeon HD 6730M 144d b084 Radeon HD 6730M 144d b088 Radeon HD 6730M 17aa 3982 Radeon HD 6730M 6741 Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] 1019 238e Radeon HD 6650M 1019 238f Radeon HD 6650M 1025 0379 Radeon HD 6650M 1025 037b Radeon HD 6650M 1025 037e Radeon HD 6650M 1025 0382 Radeon HD 6650M 1025 0384 Radeon HD 6650M 1025 0385 Radeon HD 6650M 1025 0386 Radeon HD 6650M 1025 0387 Radeon HD 6650M 1025 0388 Radeon HD 6650M 1025 0442 Radeon HD 6650M 1025 0451 Radeon HD 6650M 1025 0489 Radeon HD 6650M 1025 048b Radeon HD 6650M 1025 048c Radeon HD 6650M 1025 050a Radeon HD 6650M 1025 050b Radeon HD 6650M 1025 050c Radeon HD 6650M 1025 050e Radeon HD 6650M 1025 050f Radeon HD 6650M 1025 0513 Radeon HD 6650M 1025 0514 Radeon HD 6650M 1025 0515 Radeon HD 6650M 1025 0516 Radeon HD 6650M 1025 051e Radeon HD 6650M 1025 051f Radeon HD 6650M 1025 0520 Radeon HD 6650M 1025 0521 Radeon HD 6650M 1025 052a Radeon HD 6650M 1025 0555 Radeon HD 6650M 1025 0556 Radeon HD 6650M 1025 055d Radeon HD 6650M 1025 055e Radeon HD 6650M 1025 056d Radeon HD 6650M 1025 059a Radeon HD 6650M 1025 059b Radeon HD 6650M 1025 059e Radeon HD 6650M 1025 059f Radeon HD 6650M 1025 0600 Radeon HD 6650M 1025 0605 Radeon HD 6650M 1025 0606 Radeon HD 6650M 1025 0619 Radeon HD 6650M 1028 04c1 Radeon HD 6630M 1028 04c5 Radeon HD 6630M 1028 04cd Radeon HD 6630M 1028 04d7 Radeon HD 6630M 1028 04d9 Radeon HD 6630M 1028 052d Radeon HD 6630M 103c 1617 Radeon HD 6650M 103c 1646 Radeon HD 6750M 103c 1647 Radeon HD 6650M 103c 164b Radeon HD 6650M 103c 164e Radeon HD 6650M 103c 1688 Radeon HD 6750M 103c 1689 Radeon HD 6750M 103c 168a Radeon HD 6750M 103c 1860 Radeon HD 7690M 103c 3385 Radeon HD 6630M 103c 3560 Radeon HD 6750M 103c 358d Radeon HD 6750M 103c 3590 Radeon HD 6750M 103c 3593 Radeon HD 6750M 103c 366c Radeon HD 6650M 1043 1cd2 Radeon HD 6650M 1043 2121 Radeon HD 6650M 1043 2122 Radeon HD 6650M 1043 2123 Radeon HD 6650M 1043 2125 Radeon HD 7670M 1043 2127 Radeon HD 7670M 104d 907b Radeon HD 6630M 104d 9080 Radeon HD 6630M 104d 9081 Radeon HD 6630M 106b 00e2 MacBookPro8,2 [Core i7, 15", Late 2011] 1179 fd63 Radeon HD 6630M 1179 fd65 Radeon HD 6630M 144d c093 Radeon HD 6650M 144d c0ac Radeon HD 6650M 144d c0b3 Radeon HD 6750M 144d c539 Radeon HD 6630M 144d c609 Radeon HD 6630M 152d 0914 Radeon HD 6650M 17aa 21e1 Radeon HD 6630M 17aa 3970 Radeon HD 6650M 17aa 3976 Radeon HD 6650M 1854 0907 Radeon HD 6650M 6742 Whistler LE [Radeon HD 6610M/7610M] 1002 6570 Turks [Radeon HD 6570] 1019 2393 Radeon HD 6610M 1043 1d82 K53SK Laptop Radeon HD 7610M 1179 fb22 Radeon HD 7610M 1179 fb23 Radeon HD 7610M 1179 fb27 Radeon HD 7610M 1179 fb2a Radeon HD 7610M 1179 fb2c Radeon HD 7610M 1179 fb30 Radeon HD 7610M 1179 fb31 Radeon HD 7610M 1179 fb32 Radeon HD 7610M 1179 fb38 Radeon HD 7610M 1179 fb39 Radeon HD 7610M 1179 fb3a Radeon HD 7610M 1179 fb3b Radeon HD 7610M 1179 fb40 Radeon HD 7610M 1179 fb41 Radeon HD 7610M 1179 fb47 Radeon HD 7610M 1179 fb48 Radeon HD 7610M 1179 fb49 Radeon HD 7610M 1179 fb51 Radeon HD 7610M 1179 fb52 Radeon HD 7610M 1179 fb53 Radeon HD 7610M 1179 fb56 Radeon HD 7610M 1179 fb81 Radeon HD 7610M 1179 fb82 Radeon HD 7610M 1179 fb83 Radeon HD 7610M 1179 fc56 Radeon HD 7610M 1179 fcd4 Radeon HD 7610M 1179 fcee Radeon HD 7610M 1458 6570 Turks [Radeon HD 6570] 1462 6570 Turks [Radeon HD 6570] 148c 6570 Turks [Radeon HD 6570] 1682 6570 Turks [Radeon HD 6570] 174b 5570 Turks [Radeon HD 5570] 174b 6570 Turks [Radeon HD 6570] 174b 7570 Turks [Radeon HD 7570] 174b 8510 Turks [Radeon HD 8510] 174b 8570 Turks [Radeon HD 8570] 1787 6570 Turks [Radeon HD 6570] 17af 6570 Turks [Radeon HD 6570] 8086 2111 Radeon HD 6625M 6743 Whistler [Radeon E6760] 6749 Turks GL [FirePro V4900] 15c3 2b06 MED-X4900 674a Turks GL [FirePro V3900] 13cc 3d22 MXRT-2500 15c3 0106 MED-X3900 6750 Onega [Radeon HD 6650A/7650A] 1462 2670 Radeon HD 6670A 17aa 3079 Radeon HD 7650A 17aa 307a Radeon HD 6650A 17aa 3087 Radeon HD 7650A 17aa 3618 Radeon HD 6650A 17aa 3623 Radeon HD 6650A 17aa 3627 Radeon HD 6650A 6751 Turks [Radeon HD 7650A/7670A] 1028 0548 Radeon HD 7650A 1462 2671 Radeon HD 7670A 1462 2672 Radeon HD 7670A 1462 2680 Radeon HD 7650A 1462 2681 Radeon HD 7650A 17aa 3087 Radeon HD 7650A 6758 Turks XT [Radeon HD 6670/7670] 1028 0b0e Radeon HD 6670 103c 6882 Radeon HD 6670 1462 250a Radeon HD 7670 148c 7670 Radeon HD 7670 1545 7670 Radeon HD 7670 1682 3300 Radeon HD 7670 174b 7670 Radeon HD 7670 174b e181 Radeon HD 6670 1787 2309 Radeon HD 6670 6759 Turks PRO [Radeon HD 6570/7570/8550] 103c 3130 Radeon HD 6570 1043 0403 Radeon HD 6570 1462 2500 Radeon HD 6570 1462 2509 Radeon HD 7570 148c 7570 Radeon HD 7570 1642 3a67 Radeon HD 6570 1682 3280 Radeon HD 7570 1682 3530 Radeon HD 8550 174b 7570 Radeon HD 7570 174b e142 Radeon HD 6570 174b e181 Radeon HD 6570 1b0a 908f Radeon HD 6570 1b0a 9090 Radeon HD 6570 1b0a 9091 Radeon HD 6570 1b0a 9092 Radeon HD 6570 1b0a 909e Radeon HD 6570 1b0a 90b5 Radeon HD 7570 1b0a 90b6 Radeon HD 7570 675b Turks [Radeon HD 7600 Series] 675d Turks PRO [Radeon HD 7570] 675f Turks LE [Radeon HD 5570/6510/7510/8510] 148c 6510 Radeon HD 6510 148c 6530 Radeon HD 6530 148c 7510 Radeon HD 7510 1545 7570 Radeon HD 7570 174b 6510 Radeon HD 6510 174b 7510 Radeon HD 7510 174b 8510 Radeon HD 8510 1787 2012 Radeon HD 5570 2GB GDDR3 1787 2314 Radeon HD 5570 1GB DDR2/GDDR3 6760 Seymour [Radeon HD 6400M/7400M Series] 1002 0124 Radeon HD 6470M 1002 0134 Radeon HD 6470M 1019 238b Radeon HD 6470M 1019 238e Radeon HD 6470M 1019 2390 Radeon HD 6470M 1019 9985 Radeon HD 6470M 1028 04c1 Radeon HD 6470M 1028 04c3 Radeon HD 6470M 1028 04ca Radeon HD 6470M 1028 04cb Radeon HD 6470M 1028 04cc Vostro 3350 1028 04d1 Radeon HD 6470M 1028 04d3 Radeon HD 6470M 1028 04d7 Radeon HD 6470M 1028 0502 Radeon HD 6470M 1028 0503 Radeon HD 6470M 1028 0506 Radeon HD 6470M 1028 0507 Radeon HD 6470M 1028 0514 Radeon HD 6470M 1028 051c Radeon HD 6450M 1028 051d Radeon HD 6450M 103c 161a Radeon HD 6470M 103c 161b Radeon HD 6470M 103c 161e Radeon HD 6470M 103c 161f Radeon HD 6470M 103c 1622 Radeon HD 6450M 103c 1623 Radeon HD 6450M 103c 164a Radeon HD 6470M 103c 164d Radeon HD 6470M 103c 1651 Radeon HD 6470M 103c 1656 Radeon HD 6490M 103c 1658 Radeon HD 6490M 103c 1659 Radeon HD 6490M 103c 165b Radeon HD 6490M 103c 165d Radeon HD 6470M 103c 165f Radeon HD 6470M 103c 1661 Radeon HD 6470M 103c 1663 Radeon HD 6470M 103c 1665 Radeon HD 6470M 103c 1667 Radeon HD 6470M 103c 1669 Radeon HD 6470M 103c 166b Radeon HD 6470M 103c 166c Radeon HD 6470M 103c 166e Radeon HD 6470M 103c 1670 Radeon HD 6470M 103c 1672 Radeon HD 6470M 103c 167a Radeon HD 6470M 103c 167b Radeon HD 6470M 103c 167d Radeon HD 6490M 103c 167f Radeon HD 6490M 103c 168c Radeon HD 6470M 103c 168f Radeon HD 6470M 103c 1694 Radeon HD 6470M 103c 1696 Radeon HD 6470M 103c 1698 Radeon HD 6470M 103c 169a Radeon HD 6470M 103c 169c Radeon HD 6490M 103c 1855 Radeon HD 7450M 103c 1859 Radeon HD 7450M 103c 185c Radeon HD 7450M 103c 185d Radeon HD 7470M 103c 185f Radeon HD 7470M 103c 1863 Radeon HD 7450M 103c 355c Radeon HD 6490M 103c 355f Radeon HD 6490M 103c 3563 Radeon HD 6470M 103c 3565 Radeon HD 6470M 103c 3567 Radeon HD 6470M 103c 3569 Radeon HD 6470M 103c 3581 Radeon HD 6490M 103c 3584 Radeon HD 6470M 103c 358c Radeon HD 6490M 103c 358f Radeon HD 6490M 103c 3592 Radeon HD 6490M 103c 3596 Radeon HD 6490M 103c 366b Radeon HD 6470M 103c 3671 FirePro M3900 103c 3673 Radeon HD 6470M 1043 100a Radeon HD 7470M 1043 100c Radeon HD 6470M 1043 101b Radeon HD 6470M 1043 101c Radeon HD 6470M 1043 102a Radeon HD 7450M 1043 102c Radeon HD 6470M 1043 104b Radeon HD 7470M 1043 105d Radeon HD 7470M 1043 106b Radeon HD 7470M 1043 106d Radeon HD 7470M 1043 107d Radeon HD 7470M 1043 1cb2 Radeon HD 6470M 1043 1d22 Radeon HD 6470M 1043 1d32 Radeon HD 6470M 1043 2001 Radeon HD 6470M 1043 2002 Radeon HD 7470M 1043 2107 Radeon HD 7470M 1043 2108 Radeon HD 7470M 1043 2109 Radeon HD 7470M 1043 84a0 Radeon HD 6470M 1043 84e9 Radeon HD 6470M 1043 8515 Radeon HD 7470M 1043 8517 Radeon HD 7470M 1043 855a Radeon HD 7470M 104d 907b Radeon HD 6470M 104d 9081 Radeon HD 6470M 104d 9084 Radeon HD 6470M 104d 9085 Radeon HD 6470M 1179 0001 Radeon HD 6450M 1179 0003 Radeon HD 6450M 1179 0004 Radeon HD 6450M 1179 fb22 Radeon HD 7470M 1179 fb23 Radeon HD 7470M 1179 fb2c Radeon HD 7470M 1179 fb31 Radeon HD 7470M 1179 fb32 Radeon HD 7470M 1179 fb33 Radeon HD 7470M 1179 fb38 Radeon HD 7470M 1179 fb39 Radeon HD 7470M 1179 fb3a Radeon HD 7470M 1179 fb40 Radeon HD 7470M 1179 fb41 Radeon HD 7470M 1179 fb42 Radeon HD 7470M 1179 fb47 Radeon HD 7470M 1179 fb48 Radeon HD 7470M 1179 fb51 Radeon HD 7470M 1179 fb52 Radeon HD 7470M 1179 fb53 Radeon HD 7470M 1179 fb81 Radeon HD 7470M 1179 fb82 Radeon HD 7470M 1179 fb83 Radeon HD 7470M 1179 fc51 Radeon HD 6470M 1179 fc52 Radeon HD 7470M 1179 fc56 Radeon HD 7470M 1179 fcd3 Radeon HD 7470M 1179 fcd4 Radeon HD 7470M 1179 fcee Radeon HD 7470M 1179 fdee Radeon HD 7470M 144d b074 Radeon HD 6470M 144d b084 Radeon HD 6470M 144d c095 Radeon HD 6470M 144d c0b3 Radeon HD 6490M 144d c538 Radeon HD 6470M 144d c581 Radeon HD 6470M 144d c589 Radeon HD 6470M 144d c609 Radeon HD 7470M 144d c625 Radeon HD 7470M 144d c636 Radeon HD 7450M 1462 10ac Radeon HD 6470M 152d 0916 Radeon HD 6470M 17aa 21e5 Radeon HD 6470M 17aa 3900 Radeon HD 7450M 17aa 3902 Radeon HD 7450M 17aa 3969 Radeon HD 6470M 17aa 3970 Radeon HD 7450M 17aa 3976 Radeon HD 6470M 17aa 397b Radeon HD 6470M 17aa 397d Radeon HD 6470M 17aa 5101 Radeon HD 7470M 17aa 5102 Radeon HD 7450M 17aa 5103 Radeon HD 7450M 17aa 5106 Radeon HD 7450M 1854 0897 Radeon HD 6470M 1854 0900 Radeon HD 6470M 1854 0908 Radeon HD 6470M 1854 2015 Radeon HD 6470M 6761 Seymour LP [Radeon HD 6430M] 6763 Seymour [Radeon E6460] 6764 Seymour [Radeon HD 6400M Series] 6765 Seymour [Radeon HD 6400M Series] 6766 Caicos 6767 Caicos 6768 Caicos 6770 Caicos [Radeon HD 6450A/7450A] 17aa 308d Radeon HD 7450A 17aa 3623 Radeon HD 6450A 17aa 3627 Radeon HD 6450A 17aa 3629 Radeon HD 6450A 17aa 363c Radeon HD 6450A 17aa 3658 Radeon HD 7470A 6771 Caicos XTX [Radeon HD 8490 / R5 235X OEM] 6772 Caicos [Radeon HD 7450A] 6778 Caicos XT [Radeon HD 7470/8470 / R5 235/310 OEM] 1019 0024 Radeon HD 7470 1019 0027 Radeon HD 8470 1028 2120 Radeon HD 7470 1462 b491 Radeon HD 8470 1462 b492 Radeon HD 8470 1462 b493 Radeon HD 8470 OEM 1462 b499 Radeon R5 235 OEM 1642 3c65 Radeon HD 8470 1642 3c75 Radeon HD 8470 174b 8145 Radeon HD 8470 174b d145 Radeon R5 235 OEM 174b d335 Radeon R5 310 OEM 174b e145 Radeon HD 7470 17aa 3694 Radeon R5 A220 6779 Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] 1019 0016 Radeon HD 6450 1019 0017 Radeon HD 6450 1019 0018 Radeon HD 6450 1028 2120 Radeon HD 6450 103c 2128 Radeon HD 6450 103c 2aee Radeon HD 7450A 1092 6450 Radeon HD 6450 1462 2125 Radeon HD 6450 1462 2346 Radeon HD 7450 1462 2490 Radeon HD 6450 1462 2494 Radeon HD 6450 1462 2496 Radeon HD 7450 148c 7450 Radeon HD 7450 148c 8450 Radeon HD 8450 OEM 1545 7470 Radeon HD 7470 1642 3a65 Radeon HD 6450 1642 3a66 Radeon HD 7450 1642 3a75 Radeon HD 6450 1642 3a76 Radeon HD 7450 1682 3200 Radeon HD 7450 174b 7450 Radeon HD 7450 174b e127 Radeon HD 6450 174b e153 Radeon HD 6450 174b e164 Radeon HD 6450 1 GB DDR3 174b e180 Radeon HD 6450 174b e201 Radeon HD 6450 17af 8450 Radeon HD 8450 OEM 1b0a 9096 Radeon HD 6450 1b0a 9097 Radeon HD 6450 1b0a 90a8 Radeon HD 6450A 1b0a 90b1 Radeon HD 6450 1b0a 90b3 Radeon HD 7450A 1b0a 90bb Radeon HD 7450A 677b Caicos PRO [Radeon HD 7450] 6780 Tahiti XT GL [FirePro W9000] 6784 Tahiti [FirePro Series Graphics Adapter] 6788 Tahiti [FirePro Series Graphics Adapter] 678a Tahiti PRO GL [FirePro Series] 1002 030c FirePro W8000 1002 0310 FirePro S9000 1002 0420 Radeon Sky 700 1002 0422 Radeon Sky 900 1002 0710 FirePro S9050 1002 0b0e FirePro S10000 Passive 1002 0b2a FirePro S10000 1028 030c FirePro W8000 1028 0710 FirePro S9000 6798 Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] 1002 3000 Tahiti XT2 [Radeon HD 7970 GHz Edition] 1002 3001 Tahiti XTL [Radeon R9 280X] 1002 4000 Radeon HD 8970 OEM 1043 041c HD 7970 DirectCU II 1043 0420 HD 7970 DirectCU II TOP 1043 0444 HD 7970 DirectCU II TOP 1043 0448 HD 7970 DirectCU II TOP 1043 044a Tahiti XT2 [Matrix HD 7970] 1043 044c Tahiti XT2 [Matrix HD 7970 Platinum] 1043 3001 Tahiti XTL [ROG Matrix R9 280X] 1043 3006 Tahiti XTL [Radeon R9 280X DirectCU II TOP] 1043 9999 ARES II 106b 0127 FirePro D700 106b 0128 FirePro D700 1092 3000 Tahiti XT2 [Radeon HD 7970 GHz Edition] 1458 2261 Tahiti XT2 [Radeon HD 7970 GHz Edition OC] # GV-R928XOC-3GD 1458 3001 Tahiti XTL [Radeon R9 280X OC] 1462 2774 HD 7970 TwinFrozr III Boost Edition OC 1682 3001 Tahiti XTL [Radeon R9 280X] 1682 3211 Double D HD 7970 Black Edition # FX-797A-TNBC 1682 3213 HD 7970 Black Edition 1682 3214 Double D HD 7970 1787 201c HD 7970 IceQ X² # Radeon HD 7970 X2 1787 2317 Radeon HD 7990 1787 3000 Tahiti XT2 [Radeon HD 7970 GHz Edition] 679a Tahiti PRO [Radeon HD 7950/8950 OEM / R9 280] 1002 0b01 Radeon HD 8950 OEM 1002 3000 Tahiti PRO2 [Radeon HD 7950 Boost] 1462 3000 Radeon HD 8950 OEM 174b a003 Radeon R9 280 679b Malta [Radeon HD 7990/8990 OEM] 1002 0b28 Radeon HD 8990 OEM 1002 0b2a Radeon HD 7990 1462 8036 Radeon HD 8990 OEM 148c 8990 Radeon HD 8990 OEM 679e Tahiti LE [Radeon HD 7870 XT] 106b 0125 FirePro D500 106b 0126 FirePro D500 1787 2328 Radeon HD 7870 Black Edition 2 GB GDDR5 [2GBD5-2DHV3E] 679f Tahiti 67a0 Hawaii XT GL [FirePro W9100] 1002 0335 FirePro S9150 1002 0735 FirePro S9170 1028 031f FirePro W9100 1028 0335 FirePro S9150 67a1 Hawaii PRO GL [FirePro W8100] 1002 0335 FirePro S9100 1028 0335 FirePro S9100 67a2 Hawaii GL 67a8 Hawaii 67a9 Hawaii 67aa Hawaii 67b0 Hawaii XT / Grenada XT [Radeon R9 290X/390X] 1028 0b00 Grenada XT [Radeon R9 390X] 103c 6566 Radeon R9 390X 1043 046a R9 290X DirectCU II 1043 046c R9 290X DirectCU II OC 1043 0474 Matrix R9 290X Platinum 1043 0476 ARES III 1043 04d7 Radeon R9 390X 1043 04db Radeon R9 390X 1043 04df Radeon R9 390X 1043 04e9 Radeon R9 390X 1458 227c R9 290X WindForce 3X OC 1458 2281 R9 290X WindForce 3X OC 1458 228c R9 290X WindForce 3X 1458 228d R9 290X WindForce 3X OC 1458 2290 R9 290X WindForce 3X 1458 22bc Radeon R9 390X 1458 22c1 Grenada PRO [Radeon R9 390] 1462 2015 Radeon R9 390X 1462 3070 R9 290X Lightning 1462 3071 R9 290X Lightning 1462 3072 R9 290X Lightning LE 1462 3080 R9 290X Gaming 1462 3082 R9 290X Gaming OC 148c 2347 Devil 13 Dual Core R9 290X 148c 2357 Grenada XT [Radeon R9 390X] 1682 9290 Double Dissipation R9 290X 1682 9395 Grenada XT [Radeon R9 390X] 174b 0e34 Radeon R9 390X 174b e282 Vapor-X R9 290X Tri-X OC 174b e285 R9 290X Tri-X OC 174b e324 Grenada XT2 [Radeon R9 390X] 1787 2020 R9 290X IceQ X² Turbo 1787 2357 Grenada XT [Radeon R9 390X] 67b1 Hawaii PRO [Radeon R9 290/390] 1043 04dd STRIX R9 390 148c 2358 Radeon R9 390 174b e324 Sapphire Nitro R9 390 67b9 Vesuvius [Radeon R9 295X2] 67be Hawaii LE 67c0 Ellesmere [Radeon Pro WX 7100 Mobile] 67c2 Ellesmere [Radeon Pro V7300X / V7350x2] 67c4 Ellesmere [Radeon Pro WX 7100] 1002 0336 Radeon Pro Duo 1002 1336 Radeon Pro Duo 67c7 Ellesmere [Radeon Pro WX 5100] 67ca Ellesmere [Polaris10] 67cc Ellesmere [Polaris10] 67cf Ellesmere [Polaris10] 67d0 Ellesmere [Radeon Pro V7300X / V7350x2] 67df Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] 1002 0b37 Radeon RX 480 1028 1722 Radeon RX 570X 1028 1723 Radeon RX 580X 1043 04a8 Radeon RX 480 1043 04b0 Radeon RX 470 1043 04fb Radeon RX 480 1043 04fd Radeon RX 480 8GB 1043 056a Radeon RX 590 106b 0161 Radeon Pro 580 106b 0162 Radeon Pro 575 106b 0163 Radeon Pro 570 1458 22f0 Radeon RX 570 1458 22f7 Radeon RX 570 Gaming 4G 1462 3411 Radeon RX 470 1462 3413 Radeon RX 480 Gaming X 8GB 1462 3416 Radeon RX 570 1462 3418 Radeon RX 580 Armor 4G OC 1462 341e Radeon RX 570 Armor 4G OC 1462 8a92 Radeon RX 580 148c 2372 Radeon RX 480 148c 2373 Radeon RX 470 1682 9470 Radeon RX 470 1682 9480 Radeon RX 480 1682 9588 Radeon RX 580 XTR 1682 c570 Radeon RX 570 174b e347 Radeon RX 470/480 174b e349 Radeon RX 470 1787 a470 Radeon RX 470 1787 a480 Radeon RX 480 1849 5001 Phantom Gaming X RX 580 OC 1da2 e353 Radeon RX 570 Pulse 4GB 1da2 e366 Nitro+ Radeon RX 570/580 67e0 Baffin [Radeon Pro WX 4170] 103c 8270 Radeon Pro WX 4170 103c 8272 Radeon Pro WX 4170 67e1 Baffin [Polaris11] 67e3 Baffin [Radeon Pro WX 4100] 67e8 Baffin [Radeon Pro WX 4130/4150] 1028 075d Radeon Pro WX 4150 1028 07b0 Radeon Pro WX 4130/4150 1028 07b1 Radeon Pro WX 4130 1028 175d Radeon Pro WX 4150 1028 17b0 Radeon Pro WX 4130/4150 1028 17b1 Radeon Pro WX 4130 103c 8275 Radeon Pro WX 4150 103c 8277 Radeon Pro WX 4150 67e9 Baffin [Polaris11] 67eb Baffin [Radeon Pro V5300X] 67ef Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X] 1028 1703 RX 560D OEM OC 2 GB 103c 3421 Radeon RX 460 106b 0160 Radeon Pro 460 106b 0166 Radeon Pro 455 106b 0167 Radeon Pro 450 106b 0179 Radeon Pro 560 106b 017a Radeon Pro 555 106b 018f Radeon Pro 560X 106b 0190 Radeon Pro 555X 1642 1727 Polaris 21 XL [Radeon RX 560D] 1682 956d Polaris 21 XL [Radeon RX 560D] 67ff Baffin [Radeon RX 550 640SP / RX 560/560X] 1002 0b04 Radeon RX 560 1028 1721 Radeon RX 560X 1028 1726 Radeon RX 560DX 103c 8479 Radeon RX 560X Mobile 1043 04bc Radeon RX 560 1043 052f Radeon RX 560 1458 22ed Radeon RX 560 148c 2381 Radeon RX 560 1682 9560 Radeon RX 560 1da2 e348 Radeon RX 560 1da2 e367 Radeon RX 550 640SP 6800 Wimbledon XT [Radeon HD 7970M] 1002 0124 Radeon HD 7970M 8086 2110 Radeon HD 7970M 8086 2111 Radeon HD 7970M 6801 Neptune XT [Radeon HD 8970M] 1002 0124 Radeon HD 8970M 1462 1117 Radeon R9 M290X 8086 2110 Radeon HD 8970M 8086 2111 Radeon HD 8970M 6802 Wimbledon 6806 Neptune 6808 Pitcairn XT GL [FirePro W7000] 1002 0310 FirePro S7000 1002 0420 Radeon Sky 500 103c 030c MED-X7000 13cc 3d25 MXRT-7500 15c3 030c MED-X7000 6809 Pitcairn LE GL [FirePro W5000] 13cc 3d23 MXRT-5500 13cc 3d24 MXRT-5550 15c3 0b06 MED-X5000 6810 Curacao XT / Trinidad XT [Radeon R7 370 / R9 270X/370X] 106b 012a FirePro D300 106b 012b FirePro D300 148c 0908 Radeon R9 370 OEM 1682 7370 Radeon R7 370 6811 Curacao PRO [Radeon R7 370 / R9 270/370 OEM] 1028 0b00 Trinidad PRO [Radeon R9 370 OEM] 1043 2016 Trinidad PRO [Radeon R9 370 OEM] 1458 2016 Trinidad PRO [Radeon R9 370 OEM] 1462 2016 Trinidad PRO [Radeon R9 370 OEM] 1462 3050 R9 270 Gaming OC 148c 2016 Trinidad PRO [Radeon R9 370 OEM] 1682 2015 Trinidad PRO [Radeon R7 370] 174b 2015 NITRO Radeon R7 370 174b 2016 Trinidad PRO [Radeon R9 370 OEM] 1787 2016 Trinidad PRO [Radeon R9 370 OEM] 6816 Pitcairn 6817 Pitcairn 6818 Pitcairn XT [Radeon HD 7870 GHz Edition] 1002 0b05 Radeon HD 8870 OEM 174b 8b04 Radeon HD 8860 6819 Pitcairn PRO [Radeon HD 7850 / R7 265 / R9 270 1024SP] 1043 042c Radeon HD 7850 1682 7269 Radeon R9 270 1024SP 1682 9278 Radeon R9 270 1024SP 174b a008 Radeon R9 270 1024SP 174b e221 Radeon HD 7850 2GB GDDR5 DVI-I/DVI-D/HDMI/DP 6820 Venus XTX [Radeon HD 8890M / R9 M275X/M375X] 103c 1851 Radeon HD 7750M 17aa 3643 Radeon R9 A375 17aa 3801 Radeon R9 M275 17aa 3824 Radeon R9 M375 6821 Venus XT [Radeon HD 8870M / R9 M270X/M370X] 1002 031e FirePro SX4000 1028 05cc FirePro M5100 1028 15cc FirePro M5100 106b 0149 Radeon R9 M370X Mac Edition 6822 Venus PRO [Radeon E8860] 6823 Venus PRO [Radeon HD 8850M / R9 M265X] 6825 Heathrow XT [Radeon HD 7870M] 1028 053f FirePro M6000 1028 05cd FirePro M6000 1028 15cd FirePro M6000 103c 176c FirePro M6000 8086 2111 Chelsea PRO 6826 Chelsea LP [Radeon HD 7700M Series] 6827 Heathrow PRO [Radeon HD 7850M/8850M] 6828 Cape Verde PRO [FirePro W600] 15c3 2b1e MED-X6000 6829 Cape Verde 682a Venus PRO 682b Cape Verde PRO / Venus LE / Tropo PRO-L [Radeon HD 8830M / R7 250 / R7 M465X] 0128 079c Radeon R7 465X 1462 3012 Radeon R7 250 682c Cape Verde GL [FirePro W4100] 682d Chelsea XT GL [FirePro M4000] 682f Chelsea LP [Radeon HD 7730M] 103c 1851 Radeon HD 7750M 6835 Cape Verde PRX [Radeon R9 255 OEM] 6837 Cape Verde LE [Radeon HD 7730/8730] 1462 2796 Radeon HD 8730 1462 8092 Radeon HD 8730 148c 8730 Radeon HD 8730 1787 3000 Radeon HD 6570 683d Cape Verde XT [Radeon HD 7770/8760 / R7 250X] 1002 0030 Radeon HD 8760 OEM 1019 0030 Radeon HD 8760 OEM 103c 6890 Radeon HD 8760 OEM 1043 8760 Radeon HD 8760 OEM 1462 2710 R7770-PMD1GD5 174b 8304 Radeon HD 8760 OEM 683f Cape Verde PRO [Radeon HD 7750/8740 / R7 250E] 1462 2790 Radeon HD 8740 1462 2791 Radeon HD 8740 1642 3b97 Radeon HD 8740 6840 Thames [Radeon HD 7500M/7600M Series] 1025 050e Radeon HD 7670M 1025 050f Radeon HD 7670M 1025 0513 Radeon HD 7670M 1025 0514 Radeon HD 7670M 1025 056d Radeon HD 7670M 1025 059a Radeon HD 7670M 1025 059b Radeon HD 7670M 1025 059e Radeon HD 7670M 1025 0600 Radeon HD 7670M 1025 0606 Radeon HD 7670M 1025 0696 Radeon HD 7650M 1025 0697 Radeon HD 7650M 1025 0698 Radeon HD 7650M 1025 0699 Radeon HD 7650M 1025 0757 Radeon HD 7670M 1028 056a Radeon HD 7670M 1028 056e Radeon HD 7670M 1028 0598 Radeon HD 7670M 1028 059d Radeon HD 7670M 1028 05a3 Radeon HD 7670M 1028 05b9 Radeon HD 7670M 1028 05bb Radeon HD 7670M 103c 1789 FirePro M2000 103c 17f1 Radeon HD 7570M 103c 17f4 Radeon HD 7650M 103c 1813 Radeon HD 7590M 103c 182f Radeon HD 7670M 103c 1830 Radeon HD 7670M 103c 1835 Radeon HD 7670M 103c 183a Radeon HD 7670M 103c 183c Radeon HD 7670M 103c 183e Radeon HD 7670M 103c 1840 Radeon HD 7670M 103c 1842 Radeon HD 7670M 103c 1844 Radeon HD 7670M 103c 1848 Radeon HD 7670M 103c 184a Radeon HD 7670M 103c 184c Radeon HD 7670M 103c 1895 Radeon HD 7670M 103c 1897 Radeon HD 7670M 103c 18a5 Radeon HD 7670M 103c 18a7 Radeon HD 7670M 103c 18f4 Radeon HD 7670M 1043 100a Radeon HD 7670M 1043 104b Radeon HD 7670M 1043 10dc Radeon HD 7670M 1043 2121 Radeon HD 7670M 1043 2122 Radeon HD 7670M 1043 2123 Radeon HD 7670M 1043 2125 Radeon HD 7670M 1043 2127 Radeon HD 7670M 1179 fb11 Radeon HD 7670M 1179 fb22 Radeon HD 7670M 1179 fb23 Radeon HD 7670M 1179 fb2c Radeon HD 7670M 1179 fb31 Radeon HD 7670M 1179 fb32 Radeon HD 7670M 1179 fb38 Radeon HD 7670M 1179 fb39 Radeon HD 7670M 1179 fb3a Radeon HD 7670M 1179 fb40 Radeon HD 7670M 1179 fb41 Radeon HD 7670M 1179 fb47 Radeon HD 7670M 1179 fb48 Radeon HD 7670M 1179 fb51 Radeon HD 7670M 1179 fb52 Radeon HD 7670M 1179 fb53 Radeon HD 7670M 1179 fb81 Radeon HD 7670M 1179 fb82 Radeon HD 7670M 1179 fb83 Radeon HD 7670M 1179 fc56 Radeon HD 7670M 1179 fcd4 Radeon HD 7670M 1179 fcee Radeon HD 7670M 144d c0c5 Radeon HD 7690M 144d c0ce Radeon HD 7670M 144d c0da Radeon HD 7670M 17aa 3970 Radeon HD 7670M 17aa 397b Radeon HD 7670M 17aa 5101 Radeon HD 7670M 17aa 5102 Radeon HD 7670M 17aa 5103 Radeon HD 7670M 6841 Thames [Radeon HD 7550M/7570M/7650M] 1028 0561 Radeon HD 7650M 1028 056c Radeon HD 7650M 1028 057f Radeon HD 7570M 103c 17f1 Radeon HD 7570M 103c 17f4 Radeon HD 7650M 103c 1813 Radeon HD 7570M 103c 183a Radeon HD 7650M 103c 183c Radeon HD 7650M 103c 183e Radeon HD 7650M 103c 1840 Radeon HD 7650M 103c 1842 Radeon HD 7650M 103c 1844 Radeon HD 7650M 1043 100a Radeon HD 7650M 1043 104b Radeon HD 7650M 1043 10dc Radeon HD 7650M 1043 2134 Radeon HD 7650M 1179 0001 Radeon HD 7570M 1179 0002 Radeon HD 7570M 1179 fb43 Radeon HD 7550M 1179 fb91 Radeon HD 7550M 1179 fb92 Radeon HD 7550M 1179 fb93 Radeon HD 7550M 1179 fba2 Radeon HD 7550M 1179 fba3 Radeon HD 7550M 144d c0c7 Radeon HD 7550M 6842 Thames LE [Radeon HD 7000M Series] 6843 Thames [Radeon HD 7670M] 6860 Vega 10 [Radeon Instinct MI25] 1002 0c35 Radeon PRO V320 1002 6c75 Radeon PRO V320 106b 017c Radeon Pro Vega 64 6861 Vega 10 XT [Radeon PRO WX 9100] 6862 Vega 10 XT [Radeon PRO SSG] 6863 Vega 10 XTX [Radeon Vega Frontier Edition] 6864 Vega 6867 Vega 10 XL [Radeon Pro Vega 56] 6868 Vega 10 [Radeon PRO WX 8100/8200] 686c Vega 10 [Radeon Instinct MI25 MxGPU] 687f Vega 10 XL/XT [Radeon RX Vega 56/64] 1002 0b36 RX Vega64 1002 6b76 RX Vega56 6880 Lexington [Radeon HD 6550M] 103c 163c Pavilion dv6 Radeon HD 6550M 6888 Cypress XT [FirePro V8800] 6889 Cypress PRO [FirePro V7800] 1002 0301 FirePro V7800P 13cc 3d1f MXRT-7400 688a Cypress XT [FirePro V9800] 1002 030c FirePro V9800P 688c Cypress XT GL [FireStream 9370] 688d Cypress PRO GL [FireStream 9350] 6898 Cypress XT [Radeon HD 5870] 1002 0b00 Radeon HD 5870 Eyefinity⁶ Edition 106b 00d0 Radeon HD 5870 Mac Edition # R5870-PM2D1G 1462 8032 Radeon HD 5870 1 GB GDDR5 174b 6870 Radeon HD 6870 1600SP Edition 6899 Cypress PRO [Radeon HD 5850] # EAH5850 1043 0330 Radeon HD 5850 174b 237b Radeon HD 5850 X2 174b 6850 Radeon HD 6850 1440SP Edition 689b Cypress PRO [Radeon HD 6800 Series] 689c Hemlock [Radeon HD 5970] 1043 0352 ARES 689d Hemlock [Radeon HD 5970] 689e Cypress LE [Radeon HD 5830] 68a0 Broadway XT [Mobility Radeon HD 5870] 1028 12ef FirePro M7820 103c 1520 FirePro M7820 68a1 Broadway PRO [Mobility Radeon HD 5850] 106b 00cc iMac MC511 Mobility Radeon HD 5850 MXM Module 68a8 Granville [Radeon HD 6850M/6870M] 1025 0442 Radeon HD 6850M 1025 0451 Radeon HD 6850M 1025 050a Radeon HD 6850M 1025 050b Radeon HD 6850M 1025 050c Radeon HD 6850M 1025 050e Radeon HD 6850M 1025 050f Radeon HD 6850M 1025 0513 Radeon HD 6850M 1025 0514 Radeon HD 6850M 1025 0515 Radeon HD 6850M 1025 0516 Radeon HD 6850M 1025 0525 Radeon HD 6850M 1025 0526 Radeon HD 6850M 1025 056d Radeon HD 6850M 1028 048f Radeon HD 6870M 1028 0490 Radeon HD 6870M 1028 04b9 Radeon HD 6870M 1028 04ba Radeon HD 6870M 103c 159b Radeon HD 6850M 144d c0ad Radeon HD 6850M 68a9 Juniper XT [FirePro V5800] 13cc 3d1e MXRT-5400 13cc 3d20 MXRT-5450 68b8 Juniper XT [Radeon HD 5770] 106b 00cf MacPro5,1 [Mac Pro 2.8GHz DDR3] 68b9 Juniper LE [Radeon HD 5670 640SP Edition] 68ba Juniper XT [Radeon HD 6770] 68be Juniper PRO [Radeon HD 5750] 148c 3000 Radeon HD 6750 68bf Juniper PRO [Radeon HD 6750] 174b 6750 Radeon HD 6750 68c0 Madison [Mobility Radeon HD 5730 / 6570M] 1019 2383 Mobility Radeon HD 5730 1028 02a2 Mobility Radeon HD 5730 1028 02fe Mobility Radeon HD 5730 1028 0419 Mobility Radeon HD 5730 103c 147d Mobility Radeon HD 5730 103c 1521 Madison XT [FirePro M5800] 103c 1593 Mobility Radeon HD 6570 103c 1596 Mobility Radeon HD 6570 103c 1599 Mobility Radeon HD 6570 1043 1c22 Mobility Radeon HD 5730 17aa 3927 Mobility Radeon HD 5730 17aa 3952 Mobility Radeon HD 5730 17aa 3978 Radeon HD 6570M 68c1 Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] 1025 0205 Mobility Radeon HD 5650 1025 0293 Mobility Radeon HD 5650 1025 0294 Mobility Radeon HD 5650 1025 0296 Mobility Radeon HD 5650 1025 0308 Mobility Radeon HD 5650 1025 030a Mobility Radeon HD 5650 1025 0311 Mobility Radeon HD 5650 1025 0312 Mobility Radeon HD 5650 1025 031c Mobility Radeon HD 5650 1025 031d Mobility Radeon HD 5650 1025 033d Mobility Radeon HD 5650 1025 033e Mobility Radeon HD 5650 1025 033f Mobility Radeon HD 5650 1025 0346 Mobility Radeon HD 5650 1025 0347 Aspire 7740G 1025 0348 Mobility Radeon HD 5650 1025 0356 Mobility Radeon HD 5650 1025 0357 Mobility Radeon HD 5650 1025 0358 Mobility Radeon HD 5650 1025 0359 Mobility Radeon HD 5650 1025 035a Mobility Radeon HD 5650 1025 035b Mobility Radeon HD 5650 1025 035c Mobility Radeon HD 5650 1025 035d Mobility Radeon HD 5650 1025 035e Mobility Radeon HD 5650 1025 0360 Mobility Radeon HD 5650 1025 0362 Mobility Radeon HD 5650 1025 0364 Mobility Radeon HD 5650 1025 0365 Mobility Radeon HD 5650 1025 0366 Mobility Radeon HD 5650 1025 0367 Mobility Radeon HD 5650 1025 0368 Mobility Radeon HD 5650 1025 036c Mobility Radeon HD 5650 1025 036d Mobility Radeon HD 5650 1025 036e Mobility Radeon HD 5650 1025 036f Mobility Radeon HD 5650 1025 0372 Mobility Radeon HD 5650 1025 0373 Mobility Radeon HD 5650 1025 0377 Mobility Radeon HD 5650 1025 0378 Mobility Radeon HD 5650 1025 0379 Mobility Radeon HD 5650 1025 037a Mobility Radeon HD 5650 1025 037b Mobility Radeon HD 5650 1025 037e Mobility Radeon HD 5650 1025 037f Mobility Radeon HD 5650 1025 0382 Mobility Radeon HD 5650 1025 0383 Mobility Radeon HD 5650 1025 0384 Mobility Radeon HD 5650 1025 0385 Mobility Radeon HD 5650 1025 0386 Mobility Radeon HD 5650 1025 0387 Mobility Radeon HD 5650 1025 0388 Mobility Radeon HD 5650 1025 038b Mobility Radeon HD 5650 1025 038c Mobility Radeon HD 5650 1025 039a Mobility Radeon HD 5650 1025 0411 Mobility Radeon HD 5650 1025 0412 Mobility Radeon HD 5650 1025 0418 Mobility Radeon HD 5650 1025 0419 Mobility Radeon HD 5650 1025 0420 Mobility Radeon HD 5650 1025 0421 Mobility Radeon HD 5650 1025 0425 Mobility Radeon HD 5650 1025 042a Mobility Radeon HD 5650 1025 042e Mobility Radeon HD 5650 1025 042f Mobility Radeon HD 5650 1025 0432 Mobility Radeon HD 5650 1025 0433 Mobility Radeon HD 5650 1025 0442 Mobility Radeon HD 5650 1025 044c Mobility Radeon HD 5650 1025 044e Mobility Radeon HD 5650 1025 0451 Mobility Radeon HD 5650 1025 0454 Mobility Radeon HD 5650 1025 0455 Mobility Radeon HD 5650 1025 0475 Mobility Radeon HD 5650 1025 0476 Mobility Radeon HD 5650 1025 0487 Mobility Radeon HD 5650 1025 0489 Mobility Radeon HD 5650 1025 0498 Mobility Radeon HD 5650 1025 0517 Radeon HD 6550M 1025 051a Radeon HD 6550M 1025 051b Radeon HD 6550M 1025 051c Radeon HD 6550M 1025 051d Radeon HD 6550M 1025 0525 Radeon HD 6550M 1025 0526 Radeon HD 6550M 1025 052b Radeon HD 6550M 1025 052c Radeon HD 6550M 1025 053c Radeon HD 6550M 1025 053d Radeon HD 6550M 1025 053e Radeon HD 6550M 1025 053f Radeon HD 6550M 1025 0607 Radeon HD 6550M 1028 041b Mobility Radeon HD 5650 1028 0447 Mobility Radeon HD 5650 1028 0448 Mobility Radeon HD 5650 1028 0456 Mobility Radeon HD 5650 1028 0457 Mobility Radeon HD 5650 103c 1436 Mobility Radeon HD 5650 103c 1437 Mobility Radeon HD 5650 103c 1440 Mobility Radeon HD 5650 103c 1448 Mobility Radeon HD 5650 103c 1449 Mobility Radeon HD 5650 103c 144a Mobility Radeon HD 5650 103c 144b Mobility Radeon HD 5650 103c 147b Mobility Radeon HD 5650 103c 149c Mobility Radeon HD 5650 103c 149e Mobility Radeon HD 5650 103c 1521 Madison Pro [FirePro M5800] 1043 1bc2 Mobility Radeon HD 5650 104d 9071 Mobility Radeon HD 5650 104d 9077 Mobility Radeon HD 5650 104d 9081 Mobility Radeon HD 5650 1179 fd00 Mobility Radeon HD 5650 1179 fd12 Mobility Radeon HD 5650 1179 fd1a Mobility Radeon HD 5650 1179 fd30 Mobility Radeon HD 5650 1179 fd31 Mobility Radeon HD 5650 1179 fd50 Mobility Radeon HD 5650 1179 fd52 Radeon HD 6530M 1179 fd63 Radeon HD 6530M 1179 fd65 Radeon HD 6530M 1179 fdd0 Mobility Radeon HD 5650 1179 fdd2 Radeon HD 6530M 144d c07e Mobility Radeon HD 5650 144d c085 Mobility Radeon HD 5650 14c0 0043 Mobility Radeon HD 5650 14c0 004d Mobility Radeon HD 5650 17aa 3928 Mobility Radeon HD 5650 17aa 3951 Mobility Radeon HD 5650 17aa 3977 Radeon HD 6550M 68c7 Pinewood [Mobility Radeon HD 5570/6550A] 1462 2241 Mobility Radeon HD 5570 1462 2243 Mobility Radeon HD 5570 1462 2244 Mobility Radeon HD 5570 1462 2245 Radeon HD 6550A 1462 2246 Radeon HD 6550A 68c8 Redwood XT GL [FirePro V4800] 68c9 Redwood PRO GL [FirePro V3800] 13cc 3d1d MXRT-2400 68d8 Redwood XT [Radeon HD 5670/5690/5730] 1028 68e0 Radeon HD 5670 174b 5690 Radeon HD 5690 174b 5730 Radeon HD 5730 174b e151 Radeon HD 5670 1787 3000 Radeon HD 5730 17af 3010 Radeon HD 5730 17af 3011 Radeon HD 5690 68d9 Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] 103c 6870 Radeon HD 5570 103c 6872 Radeon HD 5570 1043 03ce Radeon HD 5550 1462 2151 Radeon HD 5570 1462 2240 Radeon HD 5570 148c 3000 Radeon HD 6510 148c 3001 Radeon HD 6610 1545 5550 Radeon HD 5550 1545 7570 Radeon HD 7570 1642 3985 Radeon HD 5570 1642 3996 Radeon HD 5570 174b 3000 Radeon HD 6510 174b 6510 Radeon HD 6510 174b 6610 Radeon HD 6610 174b e142 Radeon HD 5570 1787 3000 Radeon HD 6510 17af 3000 Radeon HD 6510 17af 3010 Radeon HD 5630 68da Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] 148c 3000 Radeon HD 6390 148c 3001 Radeon HD 6490 1545 7570 Radeon HD 7570 174b 3000 Radeon HD 6390 174b 5570 Radeon HD 5570 174b 5630 Radeon HD 5630 174b 6490 Radeon HD 6490 1787 3000 Radeon HD 5630 17af 3000 Radeon HD 6390 17af 3010 Radeon HD 5630 68de Redwood 68e0 Park [Mobility Radeon HD 5430/5450/5470] 1028 0404 Mobility Radeon HD 5450 1028 0414 Mobility Radeon HD 5450 1028 0434 Mobility Radeon HD 5450 103c 1433 Mobility Radeon HD 5450 103c 1434 Mobility Radeon HD 5450 103c 1469 Mobility Radeon HD 5450 103c 146b Mobility Radeon HD 5450 103c 1486 TouchSmart tm2-2050er discrete GPU (Mobility Radeon HD 5450) 103c 1622 Mobility Radeon HD 5450 103c 1623 Mobility Radeon HD 5450 103c eeee Mobility Radeon HD 5450 104d 9076 Mobility Radeon HD 5450 1682 304e Caicos [Radeon HD 5450] 1682 6000 Caicos [Radeon HD 5450] 17aa 9e52 FirePro M3800 17aa 9e53 FirePro M3800 68e1 Park [Mobility Radeon HD 5430] 1043 041f Caicos [Radeon HD 7350] 1043 3000 Caicos [Radeon HD 5450] 148c 3000 Caicos [Radeon HD 5450] 148c 3001 Caicos [Radeon HD 6230] 148c 3002 Caicos [Radeon HD 6250] 148c 3003 Caicos [Radeon HD 6350] 148c 7350 Caicos [Radeon HD 7350] 148c 8350 Caicos [Radeon HD 8350] 1545 5450 Caicos [Radeon HD 5450] 1545 7350 Caicos [Radeon HD 7350] 1682 3000 Caicos [Radeon HD 5450] 1682 6000 Caicos [Radeon HD 5450] 1682 7350 Caicos [Radeon HD 7350] 174b 3000 Caicos [Radeon HD 5450] 174b 5470 Caicos [Radeon HD 5470] 174b 6000 Caicos [Radeon HD 5450] 174b 6230 Caicos [Radeon HD 6230] 174b 6350 Caicos [Radeon HD 6350] 174b 7350 Caicos [Radeon HD 7350] 1787 3000 Caicos [Radeon HD 5450] 17af 3000 Caicos [Radeon HD 5450] 17af 3001 Caicos [Radeon HD 6230] 17af 3014 Caicos [Radeon HD 6350] 17af 3015 Caicos [Radeon HD 7350] 17af 8350 Caicos [Radeon HD 8350 OEM] 68e4 Robson CE [Radeon HD 6370M/7370M] 1019 2386 Radeon HD 6350M 1019 2387 Radeon HD 6350M 1019 238d Radeon HD 6370M 1019 238e Radeon HD 6370M 1025 0382 Radeon HD 6370M 1025 0489 Radeon HD 6370M 1025 048a Radeon HD 6370M 1025 048b Radeon HD 6370M 1025 048c Radeon HD 6370M 1028 04c1 Radeon HD 6370M 1028 04ca Radeon HD 6370M 1028 04cc Radeon HD 6370M 1028 04cd Radeon HD 6370M 1028 04d7 Radeon HD 6370M 103c 1411 Radeon HD 6370M 103c 1421 Radeon HD 6370M 103c 1426 Radeon HD 6370M 103c 1428 Radeon HD 6370M 103c 142a Radeon HD 6370M 103c 142b Radeon HD 6370M 103c 143a Radeon HD 6370M 103c 143c Radeon HD 6370M 103c 1445 Radeon HD 6370M 103c 162c Radeon HD 6370M 103c 162d Radeon HD 6370M 103c 162e Radeon HD 6370M 103c 162f Radeon HD 6370M 103c 1639 Radeon HD 6370M 103c 163a Radeon HD 6370M 103c 163b Radeon HD 6370M 103c 163c Radeon HD 6370M 103c 163d Radeon HD 6370M 103c 163e Radeon HD 6370M 103c 163f Radeon HD 6370M 103c 1641 Radeon HD 6370M 103c 1643 Radeon HD 6370M 103c 3578 Radeon HD 6370M 103c 357a Radeon HD 6370M 103c 3673 Radeon HD 6370M 103c 3675 Radeon HD 6370M 1043 1c92 Radeon HD 6370M 1043 84a1 Radeon HD 6370M 1043 84ad Radeon HD 6370M 104d 9081 Radeon HD 6370M 1545 7350 Cedar [Radeon HD 7350] 1558 4510 Radeon HD 6370M 1558 5505 Radeon HD 6370M 174b 5450 Cedar [Radeon HD 5450] 17aa 21dd Radeon HD 6370M 17aa 21e9 Radeon HD 6370M 17aa 3971 Radeon HD 6370M 17aa 3972 Radeon HD 7370M 17aa 397a Radeon HD 6370M/7370M 17aa 397b Radeon HD 6370M/7370M 17aa 397f Radeon HD 7370M 68e5 Robson LE [Radeon HD 6330M] 1179 fd3c Radeon HD 6330M 1179 fd50 Radeon HD 6330M 1179 fd52 Radeon HD 6330M 1179 fd63 Radeon HD 6330M 1179 fd65 Radeon HD 6330M 1179 fd73 Radeon HD 6330M 1179 fd75 Radeon HD 6330M 1179 fdd0 Radeon HD 6330M 1179 fdd2 Radeon HD 6330M 1179 fdea Radeon HD 6330M 1179 fdf8 Radeon HD 6330M 148c 5450 Cedar [Radeon HD 5450] 148c 6350 Cedar [Radeon HD 6350] 148c 7350 Cedar [Radeon HD 7350] 148c 8350 Cedar [Radeon HD 8350] 1545 7350 Cedar [Radeon HD 7350] 68e8 Cedar 68e9 Cedar [ATI FirePro (FireGL) Graphics Adapter] 68f1 Cedar GL [FirePro 2460] 68f2 Cedar GL [FirePro 2270] 68f8 Cedar [Radeon HD 7300 Series] 68f9 Cedar [Radeon HD 5000/6000/7350/8350 Series] 1019 0001 Radeon HD 5450 1019 0002 Radeon HD 5450 1019 0019 Radeon HD 6350 1025 0518 Radeon HD 5450 1025 0519 Radeon HD 5450 1028 010e XPS 8300 1028 2126 Radeon HD 6350 103c 2126 Radeon HD 6350 103c 2aac Radeon HD 5450 103c 2aae Radeon HD 5450 103c 3580 Radeon HD 5450 1043 0386 Radeon HD 5450 1043 03c2 EAH5450 SILENT/DI/512MD2 (LP) 1462 2130 Radeon HD 5450 1462 2131 Radeon HD 5450 1462 2133 Radeon HD 6350 1462 2180 Radeon HD 5450 1462 2181 Radeon HD 5450 1462 2182 Radeon HD 6350 1462 2183 Radeon HD 6350 1462 2230 Radeon HD 5450 1462 2231 Radeon HD 5450 1462 2495 Radeon HD 6350 148c 3001 Radeon HD 5530/6250 148c 3002 Radeon HD 6290 148c 3003 Radeon HD 6230 148c 3004 Radeon HD 6350 148c 7350 Radeon HD 7350 148c 8350 Radeon HD 8350 1545 7350 Radeon HD 7350 1642 3983 Radeon HD 5450 1642 3984 Radeon HD 6350 1642 3987 Radeon HD 6350 1642 3997 Radeon HD 5450 1642 3a05 Radeon HD 5450 1642 3b31 Radeon HD 6350A 1682 3270 Radeon HD 7350 174b 3000 Radeon HD 6230 174b 3987 Radeon HD 6350 174b 5470 Radeon HD 5470 174b 5490 Radeon HD 5490 174b 5530 Radeon HD 5530 174b 6230 Radeon HD 6230 174b 6250 Radeon HD 6250 174b 6290 Radeon HD 6290 174b 6350 Radeon HD 6350 174b 7350 Radeon HD 7350 174b 8350 Radeon HD 8350 174b e127 Radeon HD 5450 174b e145 Radeon HD 5450 174b e153 Radeon HD 5450 1787 3000 Radeon HD 5470 1787 3001 Radeon HD 5530 1787 3002 Radeon HD 5490 17aa 3602 Radeon HD 5450 17aa 3603 Radeon HD 5450 17aa 360f Radeon HD 5450 17aa 3619 Radeon HD 5450 17af 3000 Radeon HD 6250 17af 3001 Radeon HD 6230 17af 3002 Radeon HD 6290 17af 3011 Radeon HD 5470 17af 3012 Radeon HD 5490 17af 3013 Radeon HD 5470 17af 3014 Radeon HD 6350 68fa Cedar [Radeon HD 7350/8350 / R5 220] 1019 0019 Radeon HD 7350 1019 0021 Radeon HD 7350 1019 0022 Radeon HD 7350 1019 0026 Radeon HD 8350 103c 2adf Radeon HD 7350A 103c 2ae8 Radeon HD 7350A 1043 8350 Radeon HD 8350 1462 2128 Radeon HD 7350 1462 2184 Radeon HD 7350 1462 2186 Radeon HD 7350 1462 2495 Radeon HD 7350 1462 b490 Radeon HD 7350 1642 3985 Radeon HD 7350 174b 3510 Radeon HD 8350 174b 3521 Radeon R5 220 174b 3522 Radeon R5 220 174b 7350 Radeon HD 7350 174b 8153 Radeon HD 8350 174b e127 Radeon HD 7350 174b e153 Radeon HD 7350 174b e180 Radeon HD 7350 17af 3015 Radeon HD 7350 68fe Cedar LE 6900 Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445 / 530/535 / 620/625 Mobile] 1025 1056 Radeon R7 M360 / R8 M365DX 1028 0640 Radeon R7 M260/M265 1028 0643 Radeon R7 M260/M265 1028 067f Radeon R7 M260 1028 0767 Radeon R7 M445 1028 0810 Radeon 530 1028 130a Radeon R7 M260 103c 2263 Radeon R7 M260 103c 2269 Radeon R7 M260 103c 22c6 Radeon R7 M260 103c 22c8 Radeon R7 M260 103c 2b45 Radeon R7 A360 103c 808c Radeon R7 M260 103c 8099 Radeon R7 M360 103c 80b5 Radeon R7 M360 103c 80b9 Radeon R7 M360 103c 811c Radeon R7 M340 103c 8226 Radeon R7 M440 10cf 1906 Radeon R7 M260 1170 9979 Radeon R7 M360 1179 f903 Radeon R7 M260 1179 f922 Radeon R7 M260 1179 f923 Radeon R7 M260 1179 f934 Radeon R7 M260 17aa 3822 Radeon R7 M360 17aa 3824 Radeon R7 M360 17aa 5021 Radeon R7 M260 6901 Topaz PRO [Radeon R5 M255] 103c 1318 Radeon R6 M255DX 6907 Meso XT [Radeon R5 M315] 6921 Amethyst XT [Radeon R9 M295X] 6929 Tonga XT GL [FirePro S7150] 692b Tonga PRO GL [FirePro W7100] 13cc 3d2b MXRT-7600 692f Tonga XTV GL [FirePro S7150V] 6938 Tonga XT / Amethyst XT [Radeon R9 380X / R9 M295X] 1043 04f5 Radeon R9 380X 1043 04f7 Radeon R9 380X 106b 013a Radeon R9 M295X Mac Edition 1458 22c8 Radeon R9 380X 148c 2350 Radeon R9 380X 1682 9385 Radeon R9 380X 174b e308 Radeon R9 380X Nitro 4G D5 17af 2006 Radeon R9 380X 6939 Tonga PRO [Radeon R9 285/380] 148c 9380 Radeon R9 380 # Make naming scheme consistent 174b e308 Radeon R9 380 Nitro 4G D5 694c Polaris 22 XT [Radeon RX Vega M GH] 694e Polaris 22 XL [Radeon RX Vega M GL] 694f Polaris 22 MGL XL [Radeon Pro WX Vega M GL] 6980 Polaris12 6981 Lexa XT [Radeon PRO WX 3200] 6985 Lexa XT [Radeon PRO WX 3100] 6986 Polaris12 6987 Lexa [Radeon 540X/550X/630 / RX 640 / E9171 MCM] 6995 Lexa XT [Radeon PRO WX 2100] 699f Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X] 1028 1720 Radeon RX 550X 148c 2380 Lexa XL [Radeon RX 550] 1da2 e367 Lexa PRO [Radeon RX 550] 69a0 Vega 12 69a1 Vega 12 69a2 Vega 12 69a3 Vega 12 69af Vega 12 [Radeon Pro Vega 20] 6fdf Polaris 20 XL [Radeon RX 580 2048SP] 700f RS100 AGP Bridge 7010 RS200/RS250 AGP Bridge 7100 R520 [Radeon X1800 XT] 7101 R520/M58 [Mobility Radeon X1800 XT] 7102 R520/M58 [Mobility Radeon X1800] 7104 R520 GL [FireGL V7200] 13cc 3d0a MXRT-5100 7109 R520 [Radeon X1800 XL] 1002 0322 All-in-Wonder X1800XL 1002 0d02 Radeon X1800 CrossFire Edition 710a R520 [Radeon X1800 GTO] 1002 0b12 Radeon X1800 GTO² 710b R520 [Radeon X1800 GTO] 710e R520 GL [FireGL V7300] 13cc 3d0c MXRT-5150 710f R520 GL [FireGL V7350] 13cc 3d0e MXRT-7100 7120 R520 [Radeon X1800] (Secondary) 7124 R520 GL [FireGL V7200] (Secondary) 13cc 3d0b MXRT-5100 (Secondary) 7129 R520 [Radeon X1800] (Secondary) 1002 0323 All-In-Wonder X1800 XL (Secondary) 1002 0d03 Radeon X1800 CrossFire Edition (Secondary) 712e R520 GL [FireGL V7300] (Secondary) 13cc 3d0d MXRT-5150 (Secondary) 712f R520 GL [FireGL V7350] (Secondary) 13cc 3d0f MXRT-7100 (Secondary) 7140 RV515 [Radeon X1300/X1550/X1600 Series] 7142 RV515 PRO [Radeon X1300/X1550 Series] 1002 0322 All-in-Wonder 2006 PCI-E Edition 1043 0142 EAX1300PRO/TD/256M 7143 RV505 [Radeon X1300/X1550 Series] 7145 RV515/M54 [Mobility Radeon X1400] 17aa 2006 Thinkpad T60 model 2007 7146 RV515 [Radeon X1300/X1550] 1002 0322 All-in-Wonder 2006 PCI-E Edition 1545 1996 Radeon X1300 512MB PCI-e 7147 RV505 [Radeon X1550 64-bit] 7149 RV515/M52 [Mobility Radeon X1300] 714a RV515/M52 [Mobility Radeon X1300] 7152 RV515 GL [FireGL V3300] 7153 RV515 GL [FireGL V3350] 715f RV505 CE [Radeon X1550 64-bit] 7162 RV515 PRO [Radeon X1300/X1550 Series] (Secondary) 1002 0323 All-in-Wonder 2006 PCI-E Edition (Secondary) 7163 RV505 [Radeon X1550 Series] (Secondary) 7166 RV515 [Radeon X1300/X1550 Series] (Secondary) 1002 0323 All-in-Wonder 2006 PCI-E Edition (Secondary) 1545 1997 Radeon X1300 512MB PCI-e (Secondary) 7167 RV515 [Radeon X1550 64-bit] (Secondary) 7172 RV515 GL [FireGL V3300] (Secondary) 7173 RV515 GL [FireGL V3350] (Secondary) 7181 RV516 [Radeon X1600/X1650 Series] 7183 RV516 [Radeon X1300/X1550 Series] 7186 RV516/M64 [Mobility Radeon X1450] 7187 RV516 [Radeon X1300/X1550 Series] 7188 RV516/M64-S [Mobility Radeon X2300] 103c 30c1 6910p 718a RV516/M64 [Mobility Radeon X2300] 718b RV516/M62 [Mobility Radeon X1350] 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 718c RV516/M62-CSP64 [Mobility Radeon X1350] 718d RV516/M64-CSP128 [Mobility Radeon X1450] 7193 RV516 [Radeon X1550 Series] 7196 RV516/M62-S [Mobility Radeon X1350] 719b RV516 GL [FireMV 2250] 13cc 3d12 MXRT-1150 13cc 3d14 MXRT-2150 719f RV516 [Radeon X1550 Series] 71a0 RV516 [Radeon X1300/X1550 Series] (Secondary) 71a1 RV516 [Radeon X1600/X1650 Series] (Secondary) 71a3 RV516 [Radeon X1300/X1550 Series] (Secondary) 71a7 RV516 [Radeon X1300/X1550 Series] (Secondary) 71bb RV516 GL [FireMV 2250] (Secondary) 13cc 3d13 MXRT-1150 (Secondary) 13cc 3d15 MXRT-2150 (Secondary) 71c0 RV530 [Radeon X1600 XT/X1650 GTO] 1002 e160 Radeon X1650 GTO 174b e160 Radeon X1650 GTO 71c1 RV535 [Radeon X1650 PRO] 174b 0880 Radeon X1700 FSC 71c2 RV530 [Radeon X1600 PRO] 71c4 RV530/M56 GL [Mobility FireGL V5200] 17aa 2007 ThinkPad T60p 71c5 RV530/M56-P [Mobility Radeon X1600] 103c 309f Compaq nx9420 Notebook 103c 30a3 Compaq NW8440 1043 10b2 A6J-Q008 106b 0080 MacBook Pro 71c6 RV530LE [Radeon X1600/X1650 PRO] 71c7 RV535 [Radeon X1650 PRO] 1787 3000 PowerColor X1650 PRO AGP 71ce RV530 [Radeon X1300 XT/X1600 PRO] 71d2 RV530 GL [FireGL V3400] 13cc 3d08 MXRT-2100 71d4 RV530/M66 GL [Mobility FireGL V5250] 71d5 RV530/M66-P [Mobility Radeon X1700] 71d6 RV530/M66-XT [Mobility Radeon X1700] 71de RV530/M66 [Mobility Radeon X1700/X2500] 71e0 RV530 [Radeon X1600] (Secondary) 174b e161 Radeon X1600 GTO (Secondary) 71e1 RV535 [Radeon X1650 PRO] (Secondary) 174b 0881 Radeon X1700 FSC (Secondary) 71e2 RV530 [Radeon X1600] (Secondary) 71e6 RV530 [Radeon X1650] (Secondary) 71e7 RV535 [Radeon X1650 PRO] (Secondary) 1787 3001 Radeon X1650 PRO AGP 71f2 RV530 GL [FireGL V3400] (Secondary) 13cc 3d09 MXRT-2100 (Secondary) 7210 RV550/M71 [Mobility Radeon HD 2300] 7211 RV550/M71 [Mobility Radeon X2300 HD] 7240 R580+ [Radeon X1950 XTX] 1002 0d02 Radeon X1950 CrossFire Edition 7244 R580+ [Radeon X1950 XT] 7248 R580 [Radeon X1950] 7249 R580 [Radeon X1900 XT] 1002 0412 All-In-Wonder X1900 1002 0b12 Radeon X1900 XT/XTX 1002 0d02 Radeon X1900 CrossFire Edition 1043 0160 Radeon X1900 XTX 512 MB GDDR3 724b R580 [Radeon X1900 GT] 1002 0b12 Radeon X1900 (Primary) 1002 0b13 Radeon X1900 (Secondary) 724e R580 GL [FireGL V7350] 7269 R580 [Radeon X1900 XT] (Secondary) 726b R580 [Radeon X1900 GT] (Secondary) 726e R580 [AMD Stream Processor] (Secondary) 7280 RV570 [Radeon X1950 PRO] 7288 RV570 [Radeon X1950 GT] 7291 RV560 [Radeon X1650 XT] 1462 0810 Radeon X1700 SE 7293 RV560 [Radeon X1650 GT] 72a0 RV570 [Radeon X1950 PRO] (Secondary) 72a8 RV570 [Radeon X1950 GT] (Secondary) 72b1 RV560 [Radeon X1650 XT] (Secondary) 72b3 RV560 [Radeon X1650 GT] (Secondary) 7300 Fiji [Radeon R9 FURY / NANO Series] 1002 0b36 Radeon R9 FURY X / NANO 1002 1b36 Radeon Pro Duo 1043 049e Radeon R9 FURY 1043 04a0 Radeon R9 FURY X 174b e329 Radeon R9 FURY 7310 Navi 10 731f Navi 10 [Radeon RX 5700 / 5700 XT] 7833 RS350 Host Bridge 7834 RS350 [Radeon 9100 PRO/XT IGP] 7835 RS350M [Mobility Radeon 9000 IGP] 7838 RS350 AGP Bridge 7910 RS690 Host Bridge 1179 ff50 Satellite P305D-S8995E 17f2 5000 KI690-AM2 Motherboard 7911 RS690/RS740 Host Bridge 1002 7910 RS690/RS740 Host Bridge 7912 RS690/RS740 PCI to PCI Bridge (Internal gfx) 7913 RS690 PCI to PCI Bridge (PCI Express Graphics Port 0) 7915 RS690 PCI to PCI Bridge (PCI Express Port 1) 7916 RS690 PCI to PCI Bridge (PCI Express Port 2) 7917 RS690 PCI to PCI Bridge (PCI Express Port 3) 1002 7910 RS690 PCI to PCI Bridge 7919 RS690 HDMI Audio [Radeon Xpress 1200 Series] 1179 7919 Satellite P305D-S8995E 17f2 5000 KI690-AM2 Motherboard 791e RS690 [Radeon X1200] 1462 7327 K9AG Neo2 17f2 5000 KI690-AM2 Motherboard 791f RS690M [Radeon Xpress 1200/1250/1270] 1179 ff50 Satellite P305D-S8995E 7930 RS600 Host Bridge 7932 RS600 PCI to PCI Bridge (Internal gfx) 7933 RS600 PCI to PCI Bridge (PCI Express Graphics Port 0) 7935 RS600 PCI to PCI Bridge (PCI Express Port 1) 7936 RS600 PCI to PCI Bridge (PCI Express Port 2) 7937 RS690 PCI to PCI Bridge (PCI Express Port 3) 793b RS600 HDMI Audio [Radeon Xpress 1250] 793f RS690M [Radeon Xpress 1200/1250/1270] (Secondary) 7941 RS600 [Radeon Xpress 1250] 7942 RS600M [Radeon Xpress 1250] 796e RS740 [Radeon 2100] 105b 0e13 N15235/A74MX mainboard 9400 R600 [Radeon HD 2900 PRO/XT] 1002 2552 Radeon HD 2900 XT 1002 3000 Radeon HD 2900 PRO 1002 3142 HIS Radeon HD 2900XT 512MB GDDR3 VIVO PCIe 9401 R600 [Radeon HD 2900 XT] 9403 R600 [Radeon HD 2900 PRO] 9405 R600 [Radeon HD 2900 GT] 940a R600 GL [FireGL V8650] 13cc 3d16 MXRT-7200 940b R600 GL [FireGL V8600] 940f R600 GL [FireGL V7600] 9440 RV770 [Radeon HD 4870] 9441 R700 [Radeon HD 4870 X2] 9442 RV770 [Radeon HD 4850] 1002 0502 MSI Radeon HD 4850 512MB GDDR3 174b e810 Radeon HD 4850 512MB GDDR3 9443 R700 [Radeon HD 4850 X2] 9444 RV770 GL [FirePro V8750] 9446 RV770 GL [FirePro V7760] 944a RV770/M98L [Mobility Radeon HD 4850] 944b RV770/M98 [Mobility Radeon HD 4850 X2] 944c RV770 LE [Radeon HD 4830] 944e RV770 CE [Radeon HD 4710] 174b 3261 Radeon HD 4810 9450 RV770 GL [FireStream 9270] 9452 RV770 GL [FireStream 9250] 9456 RV770 GL [FirePro V8700] 945a RV770/M98-XT [Mobility Radeon HD 4870] 9460 RV790 [Radeon HD 4890] 9462 RV790 [Radeon HD 4860] 946a RV770 GL [FirePro M7750] 9480 RV730/M96 [Mobility Radeon HD 4650/5165] 103c 3628 Mobility Radeon HD 4650 [dv6-1190en] 9488 RV730/M96-XT [Mobility Radeon HD 4670] 9489 RV730/M96 GL [Mobility FireGL V5725] 9490 RV730 XT [Radeon HD 4670] 174b e880 Radeon HD 4670 512MB GDDR3 Dual DVI-I/TVO 9491 RV730/M96-CSP [Radeon E4690] 9495 RV730 [Radeon HD 4600 AGP Series] 1002 0028 Radeon HD 4650/4670 AGP 1092 0028 Radeon HD 4670 AGP 512MB DDR2 1458 0028 Radeon HD 4650 AGP 1682 0028 Radeon HD 4650 AGP 174b 0028 Radeon HD 4650 AGP DDR2 9498 RV730 PRO [Radeon HD 4650] 949c RV730 GL [FirePro V7750] 13cc 3d1b MXRT-7300 949e RV730 GL [FirePro V5700] 949f RV730 GL [FirePro V3750] 94a0 RV740/M97 [Mobility Radeon HD 4830] 94a1 RV740/M97-XT [Mobility Radeon HD 4860] 94a3 RV740/M97 GL [FirePro M7740] 94b3 RV740 PRO [Radeon HD 4770] 94b4 RV740 PRO [Radeon HD 4750] 94c1 RV610 [Radeon HD 2400 PRO/XT] 1028 0211 Optiplex 755 1028 0d02 Optiplex 755 94c3 RV610 [Radeon HD 2400 PRO] 1028 0302 Radeon HD 2400 Pro 174b e400 Radeon HD 2400 PRO 18bc 3550 Radeon HD 2400 PRO 94c4 RV610 LE [Radeon HD 2400 PRO AGP] 94c5 RV610 [Radeon HD 2400 LE] 94c7 RV610 [Radeon HD 2350] 94c8 RV610/M74 [Mobility Radeon HD 2400 XT] 94c9 RV610/M72-S [Mobility Radeon HD 2400] 1002 94c9 Radeon HD2400 94cb RV610 [Radeon E2400] 94cc RV610 LE [Radeon HD 2400 PRO PCI] 9500 RV670 [Radeon HD 3850 X2] 9501 RV670 [Radeon HD 3870] 174b e620 Radeon HD 3870 9504 RV670/M88 [Mobility Radeon HD 3850] 9505 RV670 [Radeon HD 3690/3850] 148c 3000 Radeon HD 3850 174b 3000 Radeon HD 3690/3850 1787 3000 Radeon HD 3690 9506 RV670/M88 [Mobility Radeon HD 3850 X2] 9507 RV670 [Radeon HD 3830] 9508 RV670/M88-XT [Mobility Radeon HD 3870] 9509 RV670/M88 [Mobility Radeon HD 3870 X2] 950f R680 [Radeon HD 3870 X2] 9511 RV670 GL [FireGL V7700] 9513 RV670 [Radeon HD 3850 X2] 9515 RV670 PRO [Radeon HD 3850 AGP] 9519 RV670 GL [FireStream 9170] 9540 RV710 [Radeon HD 4550] 954f RV710 [Radeon HD 4350/4550] 1462 1618 R4350 MD512H (MS-V161) 9552 RV710/M92 [Mobility Radeon HD 4330/4350/4550] 1028 1103 M92 [Mobility Radeon HD 4330] # GV-R435OC-512I/FF1 1458 21ac Radeon HD 4350 # GV-R455HM-512I/F41 1458 21ed Radeon HD 4550 # 113-100928-J01 148c 3000 Radeon HD 4350 Go! Green 512MB GDDR3 # 113-2E172001-003 174b 3000 Radeon HD 4350/4550 HyperMemory DDR2 9553 RV710/M92 [Mobility Radeon HD 4530/4570/545v] 1025 015e Mobility Radeon HD 4570 1025 017d Mobility Radeon HD 4570 1025 0205 Mobility Radeon HD 4570 / 545v 1025 0206 Mobility Radeon HD 4570 1025 0237 Mobility Radeon HD 4570 1028 02be Mobility Radeon HD 4570 / 545v 1028 02e8 Mobility Radeon HD 4530 103c 143c Mobility Radeon HD 545v 103c 1446 Mobility Radeon HD 545v 103c 3624 Mobility Radeon HD 4530 103c 3628 Mobility Radeon HD 4530 103c 3636 Mobility Radeon HD 4530 1043 1b32 Mobility Radeon HD 4570 1043 1b42 Mobility Radeon HD 4570 104d 9056 Mobility Radeon HD 4570 1179 ff82 Satellite L505-13T GPU (Mobility Radeon HD 5145) 144d c07f Mobility Radeon HD 545v 144d c571 Mobility Radeon HD 545v 1462 1006 Mobility Radeon HD 545v 17aa 2129 Mobility Radeon HD 545v 17aa 215b Mobility Radeon HD 545v 17aa 21bb Mobility Radeon HD 545v 9555 RV710/M92 [Mobility Radeon HD 4350/4550] 103c 1411 ProBook 4720s GPU (Mobility Radeon HD 4350) 9557 RV711 GL [FirePro RG220] 955f RV710/M92 [Mobility Radeon HD 4330] 9580 RV630 [Radeon HD 2600 PRO] 9581 RV630/M76 [Mobility Radeon HD 2600] 9583 RV630/M76 [Mobility Radeon HD 2600 XT/2700] 106b 0083 iMac 7,1 1734 1107 Mobility Radeon HD 2700 9586 RV630 XT [Radeon HD 2600 XT AGP] 9587 RV630 PRO [Radeon HD 2600 PRO AGP] 9588 RV630 XT [Radeon HD 2600 XT] 1458 216c Radeon HD 2600 XT, 256MB GDDR3, 2x DVI, TV-out, PCIe (GV-RX26T256H) 9589 RV630 PRO [Radeon HD 2600 PRO] # Rebranded HD 2600 PRO 1787 3000 Radeon HD 3610 958a RV630 [Radeon HD 2600 X2] 958b RV630/M76 [Mobility Radeon HD 2600 XT] 958c RV630 GL [FireGL V5600] 13cc 3d18 MXRT-5200 958d RV630 GL [FireGL V3600] 9591 RV635/M86 [Mobility Radeon HD 3650] 1002 9591 Mobility Radeon HD 3650 9593 RV635/M86 [Mobility Radeon HD 3670] 9595 RV635/M86 GL [Mobility FireGL V5700] 9596 RV635 PRO [Radeon HD 3650 AGP] 1043 0028 EAH3650 SILENT/HTDI/512M/A 9597 RV635 PRO [Radeon HD 3650 AGP] 9598 RV635 [Radeon HD 3650/3750/4570/4580] 1002 9598 Mobility Radeon HD 3600 1043 01d6 EAH3650 Silent 1043 3001 Radeon HD 4570 174b 3001 Radeon HD 3750 174b 4580 RV635 PRO [Radeon HD 4580] 17af 3011 RV635 PRO [Radeon HD 4580] 9599 RV635 PRO [Radeon HD 3650 AGP] 95c0 RV620 PRO [Radeon HD 3470] 1002 95c0 Mobility Radeon HD 3470 95c2 RV620/M82 [Mobility Radeon HD 3410/3430] 95c4 RV620/M82 [Mobility Radeon HD 3450/3470] 1002 95c4 Mobility Radeon HD 3400 95c5 RV620 LE [Radeon HD 3450] 1028 0342 OptiPlex 980 95c6 RV620 LE [Radeon HD 3450 AGP] 95c9 RV620 LE [Radeon HD 3450 PCI] 95cc RV620 GL [FirePro V3700] 95cd RV620 GL [FirePro 2450] 95cf RV620 GL [FirePro 2260] 960f RS780 HDMI Audio [Radeon 3000/3100 / HD 3200/3300] 9610 RS780 [Radeon HD 3200] 1458 d000 GA-MA78GM-S2H Motherboard 9611 RS780C [Radeon 3100] 9612 RS780M [Mobility Radeon HD 3200] 9613 RS780MC [Mobility Radeon HD 3100] 9614 RS780D [Radeon HD 3300] 9616 RS780L [Radeon 3000] 9640 Sumo [Radeon HD 6550D] 9641 Sumo [Radeon HD 6620G] 9642 SuperSumo [Radeon HD 6370D] 9643 SuperSumo [Radeon HD 6380G] 9644 SuperSumo [Radeon HD 6410D] 9645 SuperSumo [Radeon HD 6410D] 9647 Sumo [Radeon HD 6520G] 9648 Sumo [Radeon HD 6480G] 9649 SuperSumo [Radeon HD 6480G] 964a Sumo [Radeon HD 6530D] 964b Sumo 964c Sumo 964e Sumo 964f Sumo 970f RS880 HDMI Audio [Radeon HD 4200 Series] 1019 2120 A785GM-M 1043 83a2 M4A785TD Motherboard 1043 843e M5A88-V EVO 9710 RS880 [Radeon HD 4200] 1019 2120 A785GM-M 1043 83a2 M4A785TD Motherboard 9712 RS880M [Mobility Radeon HD 4225/4250] 9713 RS880M [Mobility Radeon HD 4100] 9714 RS880 [Radeon HD 4290] 9715 RS880 [Radeon HD 4250] 1043 843e M5A88-V EVO # Radeon HD 6250 too? 9802 Wrestler [Radeon HD 6310] 174b 1001 PURE Fusion Mini 9803 Wrestler [Radeon HD 6310] 9804 Wrestler [Radeon HD 6250] 9805 Wrestler [Radeon HD 6250] 9806 Wrestler [Radeon HD 6320] 9807 Wrestler [Radeon HD 6290] 9808 Wrestler [Radeon HD 7340] 9809 Wrestler [Radeon HD 7310] 980a Wrestler [Radeon HD 7290] 9830 Kabini [Radeon HD 8400 / R3 Series] 9831 Kabini [Radeon HD 8400E] 9832 Kabini [Radeon HD 8330] 9833 Kabini [Radeon HD 8330E] 9834 Kabini [Radeon HD 8210] 9835 Kabini [Radeon HD 8310E] 9836 Kabini [Radeon HD 8280 / R3 Series] 9837 Kabini [Radeon HD 8280E] 9838 Kabini [Radeon HD 8240 / R3 Series] 9839 Kabini [Radeon HD 8180] 983d Temash [Radeon HD 8250/8280G] 9840 Kabini HDMI/DP Audio 9850 Mullins [Radeon R3 Graphics] 9851 Mullins [Radeon R4/R5 Graphics] 1179 f928 Beema [Radeon R5 Graphics] 9852 Mullins [Radeon R2 Graphics] 9853 Mullins [Radeon R2 Graphics] 9854 Mullins [Radeon R3E Graphics] 9855 Mullins [Radeon R6 Graphics] 9856 Mullins [Radeon R1E/R2E Graphics] 9857 Mullins [Radeon APU XX-2200M with R2 Graphics] 9858 Mullins 9859 Mullins 985a Mullins 985b Mullins 985c Mullins 985d Mullins 985e Mullins 985f Mullins 9874 Wani [Radeon R5/R6/R7 Graphics] 1002 1871 Radeon R5 Graphics 1002 1e20 Radeon R7 Graphics 1028 06bd Radeon R6 Graphics 103c 2b44 Radeon R6 Graphics 103c 8221 Radeon R5 Graphics 103c 8223 Radeon R5 Graphics 103c 8238 Radeon R7 Graphics 103c 8353 Radeon R7 Graphics 1458 d000 Radeon R7 Graphics 17aa 5113 Radeon R6 Graphics 17aa 5116 Radeon R6 Graphics 17aa 5118 Radeon R5 Graphics 9890 Amur 98c0 Nolan 98e4 Stoney [Radeon R2/R3/R4/R5 Graphics] 9900 Trinity [Radeon HD 7660G] 103c 1985 Pavilion 17-e163sg Notebook PC # AMD A10-5800K CPU 9901 Trinity [Radeon HD 7660D] 9902 Trinity HDMI Audio Controller 103c 194e ProBook 455 G1 Notebook 103c 1985 Pavilion 17-e163sg Notebook PC 9903 Trinity [Radeon HD 7640G] 103c 194e ProBook 455 G1 Notebook 103c 1952 ProBook 455 G1 Notebook 9904 Trinity [Radeon HD 7560D] 9905 Trinity GL [FirePro A300] 9906 Trinity GL [FirePro A320] 9907 Trinity [Radeon HD 7620G] 9908 Trinity [Radeon HD 7600G] 9909 Trinity [Radeon HD 7500G] 990a Trinity [Radeon HD 7500G] 990b Richland [Radeon HD 8650G] 990c Richland [Radeon HD 8670D] 990d Richland [Radeon HD 8550G] 990e Richland [Radeon HD 8570D] 990f Richland [Radeon HD 8610G] 9910 Trinity [Radeon HD 7660G] 9913 Trinity [Radeon HD 7640G] 9917 Trinity [Radeon HD 7620G] 9918 Trinity [Radeon HD 7600G] 9919 Trinity [Radeon HD 7500G] 991e Bishop 9920 Liverpool [Playstation 4 APU] 9921 Liverpool HDMI/DP Audio Controller 9922 Starshp 9923 Starsha2 [Kingston/Clayton] 9924 Gladius 9925 Kingston/Clayton/Jupiter/Gladius/Montego HDMI Controller 9926 Jupiter 9990 Trinity 2 [Radeon HD 7520G] 9991 Trinity 2 [Radeon HD 7540D] 9992 Trinity 2 [Radeon HD 7420G] 9993 Trinity 2 [Radeon HD 7480D] 9994 Trinity 2 [Radeon HD 7400G] 9995 Richland [Radeon HD 8450G] 9996 Richland [Radeon HD 8470D] 9997 Richland [Radeon HD 8350G] 9998 Richland [Radeon HD 8370D] 9999 Richland [Radeon HD 8510G] 999a Richland [Radeon HD 8410G] 999b Richland [Radeon HD 8310G] 999c Richland [Radeon HD 8650D] # AMD Quad-Core A8-Series APU A8-6500T with Radeon HD 8550D 999d Richland [Radeon HD 8550D] 99a0 Trinity 2 [Radeon HD 7520G] 99a2 Trinity 2 [Radeon HD 7420G] 99a4 Trinity 2 [Radeon HD 7400G] aa00 R600 HDMI Audio [Radeon HD 2900 GT/PRO/XT] aa01 RV635 HDMI Audio [Radeon HD 3650/3730/3750] aa08 RV630 HDMI Audio [Radeon HD 2600 PRO/XT / HD 3610] aa10 RV610 HDMI Audio [Radeon HD 2350 PRO / 2400 PRO/XT / HD 3410] 174b aa10 Radeon HD 2400 PRO 18bc aa10 Radeon HD 2400 PRO aa18 RV670/680 HDMI Audio [Radeon HD 3690/3800 Series] aa20 RV635 HDMI Audio [Radeon HD 3650/3730/3750] aa28 RV620 HDMI Audio [Radeon HD 3450/3470/3550/3570] aa30 RV770 HDMI Audio [Radeon HD 4850/4870] 174b aa30 Radeon HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink aa38 RV710/730 HDMI Audio [Radeon HD 4000 series] 103c 3628 dv6-1190en aa50 Cypress HDMI Audio [Radeon HD 5830/5850/5870 / 6850/6870 Rebrand] aa58 Juniper HDMI Audio [Radeon HD 5700 Series] # 5500, 5600 and mobile 5700 series aa60 Redwood HDMI Audio [Radeon HD 5000 Series] 1025 033d Mobility Radeon HD 5650 1025 0347 Aspire 7740G aa68 Cedar HDMI Audio [Radeon HD 5400/6300/7300 Series] 1028 aa68 XPS 8300 aa80 Cayman/Antilles HDMI Audio [Radeon HD 6930/6950/6970/6990] aa88 Barts HDMI Audio [Radeon HD 6790/6850/6870 / 7720 OEM] aa90 Turks HDMI Audio [Radeon HD 6500/6600 / 6700M Series] 1028 04a3 Precision M4600 aa98 Caicos HDMI Audio [Radeon HD 6450 / 7450/8450/8490 OEM / R5 230/235/235X OEM] 174b aa98 Radeon HD 6450 1GB DDR3 aaa0 Tahiti HDMI Audio [Radeon HD 7870 XT / 7950/7970] aab0 Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series] aab8 Tiran HDMI Audio aac0 Tobago HDMI Audio [Radeon R7 360 / R9 360 OEM] aac8 Hawaii HDMI Audio [Radeon R9 290/290X / 390/390X] aad8 Tonga HDMI Audio [Radeon R9 285/380] 174b aad8 Radeon R9 285/380 HDMI Audio aae0 Baffin HDMI/DP Audio [Radeon RX 550 640SP / RX 560/560X] aae8 Fiji HDMI/DP Audio [Radeon R9 Nano / FURY/FURY X] aaf0 Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] aaf8 Vega 10 HDMI Audio [Radeon Vega 56/64] ab00 Baffin HDMI/DP Audio [Radeon RX 550 640SP / RX 560/560X] ab08 Polaris 22 HDMI Audio ab10 Lexa HDMI Audio ab18 Vega 12 HDMI Audio ab20 Vega 20 HDMI Audio [Radeon VII] ab38 Navi 10 HDMI Audio ac00 Theater 506 World-Wide Analog Decoder ac01 Theater 506 World-Wide Analog Decoder ac02 TV Wonder HD 600 PCIe ac03 Theater 506 PCIe ac04 Theater 506 USB ac05 Theater 506 USB ac06 Theater 506 External USB ac07 Theater 506 External USB ac08 Theater 506A World-Wide Analog Decoder + Demodulator ac09 Theater 506A World-Wide Analog Decoder + Demodulator ac0a Theater 506A PCIe ac0b Theater 506A PCIe ac0c Theater 506A USB ac0d Theater 506A USB ac0e Theater 506A External USB ac0f Theater 506A External USB ac12 Theater HD T507 (DVB-T) TV tuner/capture device cab0 RS100 Host Bridge cab2 RS200 Host Bridge cab3 RS250 Host Bridge cbb2 RS200 Host Bridge amdgpu-utils-2.6.0/GPUmodules/env.py000077500000000000000000000153471354600334600173410ustar00rootroot00000000000000#!/usr/bin/env python3 """env.py - sets environment for amdgpu-utils and establishes global variables Copyright (C) 2019 RueiKe This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . """ __author__ = 'RueiKe' __copyright__ = 'Copyright (C) 2019 RueiKe' __credits__ = ['Craig Echt - Testing, Debug, and Verification'] __license__ = 'GNU General Public License' __program_name__ = 'amdgpu-utils' __version__ = 'v2.6.0' __maintainer__ = 'RueiKe' __status__ = 'Stable Release' import re import subprocess import platform import sys import shlex import shutil import time from datetime import datetime class GUT_CONST: def __init__(self): self.featuremask = '/sys/module/amdgpu/parameters/ppfeaturemask' self.card_root = '/sys/class/drm/' self.hwmon_sub = 'hwmon/hwmon' self.execute_pac = False self.DEBUG = False self.PDEBUG = False self.SIMLOG = False self.LOG = False self.PLOT = False self.log_file_ptr = '' self.show_fans = True self.write_delta_only = False self.SLEEP = 2 self.PATH = '.' self.amdfeaturemask = '' self.USELTZ = False self.LTZ = datetime.utcnow().astimezone().tzinfo if self.DEBUG: print('Local TZ: %s' % str(self.LTZ)) @staticmethod def now(ltz=False): if ltz: return datetime.now() return datetime.utcnow() @staticmethod def utc2local(utc): # from https://stackoverflow.com/questions/4770297/convert-utc-datetime-string-to-local-datetime epoch = time.mktime(utc.timetuple()) offset = datetime.fromtimestamp(epoch) - datetime.utcfromtimestamp(epoch) return utc + offset def read_amdfeaturemask(self): with open(gut_const.featuremask) as fm_file: self.amdfeaturemask = int(fm_file.readline()) return self.amdfeaturemask def check_env(self): # Check python version required_pversion = [3, 6] (python_major, python_minor, python_patch) = platform.python_version_tuple() if self.DEBUG: print('Using python ' + python_major + '.' + python_minor + '.' + python_patch) if int(python_major) < required_pversion[0]: print('Using python' + python_major + ', but ' + __program_name__ + ' requires python ' + str(required_pversion[0]) + '.' + str(required_pversion[1]) + ' or higher.', file=sys.stderr) return -1 elif int(python_major) == required_pversion[0] and int(python_minor) < required_pversion[1]: print('Using python ' + python_major + '.' + python_minor + '.' + python_patch + ', but ' + __program_name__ + ' requires python ' + str(required_pversion[0]) + '.' + str(required_pversion[1]) + ' or higher.', file=sys.stderr) return -1 # Check Linux Kernel version required_kversion = [4, 8] linux_version = platform.release() if int(linux_version.split('.')[0]) < required_kversion[0]: print('Using Linux Kernel ' + linux_version + ', but ' + __program_name__ + ' requires > ' + str(required_kversion[0]) + '.' + str(required_kversion[1]), file=sys.stderr) return -2 elif int(linux_version.split('.')[0]) == required_kversion[0] and \ int(linux_version.split('.')[1]) < required_kversion[1]: print('Using Linux Kernel ' + linux_version + ', but ' + __program_name__ + ' requires > ' + str(required_kversion[0]) + '.' + str(required_kversion[1]), file=sys.stderr) return -2 # Check AMD GPU Driver Version lshw_out = subprocess.check_output(shlex.split('lshw -c video'), shell=False, stderr=subprocess.DEVNULL).decode().split('\n') for lshw_line in lshw_out: searchObj = re.search('configuration:', lshw_line) if searchObj: lineitems = lshw_line.split(sep=':') driver_str = lineitems[1].strip() searchObj = re.search('driver=amdgpu', driver_str) if searchObj: return 0 else: print(f'amdgpu-utils non-compatible driver: {driver_str}') print(f'amdgpu-utils requires AMD \'amdgpu\' driver package in order to function.') return -3 return 0 def get_amd_driver_version(self): if not shutil.which('/usr/bin/dpkg'): print('can not determine amdgpu version') return -1 version_ok = False for pkgname in ['amdgpu', 'amdgpu-core', 'amdgpu-pro']: try: dpkg_out = subprocess.check_output(shlex.split(f'dpkg -l {pkgname}'), shell=False, stderr=subprocess.DEVNULL).decode().split('\n') for dpkg_line in dpkg_out: searchObj = re.search('amdgpu', dpkg_line) if searchObj: if self.DEBUG: print('Debug: {}'.format(dpkg_line)) dpkg_items = dpkg_line.split() if len(dpkg_items) > 2: if re.fullmatch(r'.*none.*', dpkg_items[2]): continue else: print(f'amdgpu version: {dpkg_items[2]}') version_ok = True break if version_ok: break except subprocess.CalledProcessError: pass except OSError: pass if not version_ok: print('amdgpu version: UNKNOWN') return -1 return 0 gut_const = GUT_CONST() def about(): print(__doc__) print('Author: ', __author__) print('Copyright: ', __copyright__) print('Credits: ', __credits__) print('License: ', __license__) print('Version: ', __version__) print('Maintainer: ', __maintainer__) print('Status: ', __status__) sys.exit(0) if __name__ == '__main__': about() amdgpu-utils-2.6.0/LICENSE000066400000000000000000001045151354600334600151510ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . amdgpu-utils-2.6.0/README.md000066400000000000000000000304031354600334600154150ustar00rootroot00000000000000# amdgpu-utils A set of utilities for monitoring AMD GPU performance and modifying control settings. In order to use any of these utilities, you must have the *amdgpu* open source driver package installed. You also must first set your Linux machine to boot with amdgpu.ppfeaturemask=0xffff7fff or 0xfffd7fff. This can be accomplished by adding amdgpu.ppfeaturemask=0xffff7fff to the GRUB_CMDLINE_LINUX_DEFAULT value in /etc/default/grub and executing *sudo update-grub* Check out the [User Guide](docs/USER_GUIDE.md)! Download latest official release: [v2.6.0](https://github.com/Ricks-Lab/amdgpu-utils/releases/tag/v2.6.0) Or use this development version from master branch. ## amdgpu-chk This utility verifies if the environment is compatible with *amdgpu-util*s. ## amdgpu-ls This utility displays most relevant parameters for installed and compatible AMD GPUs. The default behavior is to list relevant parameters by GPU. OpenCL platform information is added when the *--clinfo* option is used. The *--no_fan* can be used to ignore fan settings. The *--pstate* option can be used to output the p-state table for each GPU instead of the list of basic parameters. The *--ppm* option is used to output the table of available power/performance modes instead of basic parameters. ## amdgpu-monitor A utility to give the current state of all compatible AMD GPUs. The default behavior is to continuously update a text based table in the current window until Ctrl-C is pressed. With the *--gui* option, a table of relevant parameters will be updated in a Gtk window. You can specify the delay between updates with the *--sleep N* option where N is an integer > zero that specifies the number of seconds to sleep between updates. The *--no_fan* option can be used to disable the reading and display of fan information. The *--log* option is used to write all monitor data to a psv log file. When writing to a log file, the utility will indicate this in red at the top of the window with a message that includes the log file name. The *--plot* will display a plot of critical GPU parameters which updates at the specified *--sleep N* interval. If you need both the plot and monitor displays, then using the --plot option is preferred over running both tools as a single read of the GPUs is used to update both displays. The *--ltz* option results in the use of local time instead of UTC. ## amdgpu-plot A utility to continuously plot the trend of critical GPU parameters for all compatible AMD GPUs. The *--sleep N* can be used to specify the update interval. The *amdgpu-plot* utility has 2 modes of operation. The default mode is to read the GPU driver details directly, which is useful as a standalone utility. The *--stdin* option causes *amdgpu-plot* to read GPU data from stdin. This is how *amdgpu-monitor* produces the plot and can also be used to pipe your own data into the process. The *--simlog* option can be used with the *--stdin* when a monitor log file is piped as stdin. This is useful for troubleshooting and can be used to display saved log results. The *--ltz* option results in the use of local time instead of UTC. If you plan to run both *amdgpu-plot* and *amdgpu-monitor*, then the *--plot* option of the *amdgpu-monitor* utility should be used instead of both utilities in order reduce data reads by a factor of 2. ## amdgpu-pac Program and Control compatible AMD GPUs with this utility. By default, the commands to be written to a GPU are written to a bash file for the user to inspect and run. If you have confidence, the *--execute_pac* option can be used to execute and then delete the saved bash file. Since the GPU device files are writable only by root, sudo is used to execute commands in the bash file, as a result, you will be prompted for credentials in the terminal where you executed *amdgpu-pac*. The *--no_fan* option can be used to eliminate fan details from the utility. The *--force_write* option can be used to force all configuration parameters to be written to the GPU. The default behavior is to only write changes. ## amdgpu-pciid This utility will display the version of the current pci.ids data extract in use. With the *--download* option, the latest pci.ids file from https://pci-ids.ucw.cz/ will be downloaded. With the *--install* option, the latest pci.ids will be downloaded and filtered for AMD specific data and written to the file used by amdgpu-utils to decode device names from the driver provided device id. The *--force* option can be used to update this file even if there is no change in version. If your GPU model is missing from the pci.ids file, you can use the device id of your card found with *amdgpu-ls* and make a request for the addition on the pci.ids website. ## New in this Release - [v2.6.0](https://github.com/Ricks-Lab/amdgpu-utils/releases/tag/v2.6.0) * PEP8 style modifications * Fixed a bug in monitor display. * Implement requirements file for with and without a venv. * Found and fixed a few minor bugs. * Fixed issue with *amdgpu-plot* becoming corrupt over time. * Implemented clean shutdown of monitor and better buffering to plot. This could have caused in problems in systems with many GPUs. ## Development Plans * Enhance formatting in Gtk monitor tool. Need to improve my Gtk skills! ## Known Issues * I/O error when selecting CUSTOM ppm. Maybe it requires arguments to specify the custom configuration. * Doesn't work well with Fiji ProDuo cards. * P-state mask gets intermittently reset for GPU used as display output. * *amdgpu-pac* doesn't show what the current P-state mask is. Not sure if that can be read back. * *amdgpu-pac* fan speed setting results in actual fan speeds a bit different from setting and pac interface shows actual values instead of set values. ## References * Original inspiration for this project: Reddit * Phoronix articles including these: Phoronix Power Cap, Phoronix HWMon * Repositories: amdgpu-clocks, WattmanGTK, ROC-smi * Relevant Kernel Details: Kernel Details * PCI ID Decode Table: PCI IDs * Radeon VII discussion on Reddit: Radeon VII Overclocking ## History #### New in Previous Release - [v2.5.2](https://github.com/Ricks-Lab/amdgpu-utils/releases/tag/v2.5.2) * Some preparation work for Debian package (@smoe). * Added *--ltz* option to use local times instead of UTC for logging and plot data. * Added 0xfffd7fff to valid amdgpu.ppfeaturemask values (@pastaq). * Updates to User Guide to include instructions to apply PAC conditions on startup (@csecht). #### New in Previous Release - [v2.5.1](https://github.com/Ricks-Lab/amdgpu-utils/releases/tag/v2.5.1) * Fixed a compatibility issue with matplotlib 3.x. Converted time string to a datetime object. * Display version information for pandas, matplotlib, and numpy with the *--about* option for *amdgpu-plot* #### New in Previous Release - [v2.5.0](https://github.com/Ricks-Lab/amdgpu-utils/releases/tag/v2.5.0) * Implemented the *--plot* option for amdgpu-monitor. This will display plots of critical GPU parameters that update at an interval defined by the *--sleep N* option. * Errors in reading non-critical parameters will now show a warning the first time and are disabled for future reads. * Fixed a bug in implementation of compatibility checks and improved usage of try/except. #### New in Previous Release - [v2.4.0](https://github.com/Ricks-Lab/amdgpu-utils/releases/tag/v2.4.0) * Implemented *amdgpu-pac* feature for type 2 Freq/Voltage controlled GPUs, which includes the Radeon VII. * Implemented the *amdgpu-pac --force_write* option, which writes all configuration parameters to the GPU, even if unchanged. The default behavior is changed to now only write changed configuration parameters. * Indicate number of changes to be written by PAC, and if no changes, don't execute bash file. Display execute complete message in terminal, and update messages in PAC message box. * Implemented a new GPU type 0, which represent some older cards whose p-states can not be changed. * Tuned *amdgpu-pac* window format. #### New in Previous Release - [v2.3.1](https://github.com/Ricks-Lab/amdgpu-utils/releases/tag/v2.3.1) * Fixed and improved Python/Kernel compatibility checks. * Added Python2 compatible utility to check *amdgpu-utils* compatibility. * Fixed confusing mode/level fileptr names. * Removed CUSTOM PPM mode until I figure out syntax. * Implemented classification of card type based on how it implements frequency/voltage control. This is reported by *amdgpu-ls* and alters the behavior of both *amdgpu-pac* and *amdgpu-monitor*. * Changed dpkg error to a warning to handle custom driver installs. * Initial [User Guide](docs/USER_GUIDE.md) - [Need contributors!](https://github.com/Ricks-Lab/amdgpu-utils/issues/13) #### New in Previous Release - v2.3.0 * Implemented a message box in amdgpu-pac to indicate details of PAC execution and indicate if sudo is pending credential entry. * Implement more robust classification of card compatibility and only use compatible GPUs in the utilities. * Official release of amdgpu-pciid which updates a local list of GPU names from the official pci.ids website. * Optimized refresh of data by moving static items to a different function and only read those that are dynamic. * Power Cap and Fan parameters can be reset by setting to -1 in the *amdgpu-pac* interface. * Initial basic functionality for Radeon VII GPU! #### New in Previous Release - v2.2.0 * Major bug fix in the way HWMON directory was determined. This fixes an issue in not seeing sensor files correctly when a some other card is resident in a PCIe slot. * Implemented logging option *--log* for amdgpu-monitor. A red indicator will indicate active logging and the target filename. * Implemented energy meter in amdgpu-monitor. * Implemented the ability to check the GPU extracted ID in a pci.ids file for correct model name. Implemented a function to extract only AMD information for the pci.ids file and store in the file amd_pci_id.txt which is included in this distribution. * Optimized long, short, and decoded GPU model names. * Alpha release of a utility to update device decode data from the pci.ids website. #### New in Previous Release - v2.1.0 * Significant bug fixes and error proofing. Added messages to stderr for missing driver related files. * Added fan monitor and control features. * Implemented --no_fan option across all tools. This eliminates the reading and display of fan parameters and useful for those who have installed GPU waterblocks. * Implemented P-state masking, which limits available P-states to those specified. Useful for power management. * Fixed implementation of global variables that broke with implementation of modules in library. * Added more validation checks before writing parameters to cards. #### New in Previous Release - v2.0.0 * Many bug fixes! * First release of amdgpu-pac. * Add check of amdgpu driver in the check of environment for all utilities. Add display of amdgpu driver version. * Split list functions of the original amdgpu-monitor into amdgpu-ls. * Added --clinfo option to amdgpu-ls which will list openCL platform details for each GPU. * Added --ppm option to amdgpu-ls which will display the table of available power/performance modes available for each GPU. * Error messages are now output to stderr instead stdout. * Added power cap and power/performance mode to the monitor utilities. I have also included them in the amdgpu-ls display in addtion to the power cap limits. #### New in Previous Release - v1.1.0 * Added --pstates feature to display table of p-states instead of GPU details. * Added more error checking and exit if no compatible AMD GPUs are found. #### New in Previous Release - v1.0.0 * Completed implementation of the GPU Monitor tool. amdgpu-utils-2.6.0/amdgpu-chk000077500000000000000000000164421354600334600161130ustar00rootroot00000000000000#!/usr/bin/env python3 """ amdgpu-chk - Checks OS/Python compatibility This utility verifies if the environment is compatible with amdgpu-utils. Copyright (C) 2019 RueiKe This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . """ __author__ = 'RueiKe' __copyright__ = 'Copyright (C) 2019 RueiKe' __credits__ = ['Craig Echt - Testing, Debug, Verification, and Documentation'] __license__ = 'GNU General Public License' __program_name__ = 'amdgpu-chk' __version__ = 'v2.6.0' __maintainer__ = 'RueiKe' __status__ = 'Stable Release' import argparse import re import subprocess import os import shlex import platform import sys import shutil import warnings warnings.filterwarnings('ignore') class GUT_CONST: def __init__(self): self.DEBUG = False @staticmethod def check_env(): ret_val = [0, 0, 0] # Check python version required_pversion = [3, 6] (python_major, python_minor, python_patch) = platform.python_version_tuple() print('Using python ' + python_major + '.' + python_minor + '.' + python_patch) if int(python_major) < required_pversion[0]: print(' ' + '\x1b[1;37;41m' + ' but amdgpu-utils requires python ' + str(required_pversion[0]) + '.' + str(required_pversion[1]) + ' or newer.' + '\x1b[0m') ret_val[0] = -1 elif int(python_major) == required_pversion[0] and int(python_minor) < required_pversion[1]: print(' ' + '\x1b[1;37;41m' + ' but amdgpu-utils requires python ' + str(required_pversion[0]) + '.' + str(required_pversion[1]) + ' or newer.' + '\x1b[0m') ret_val[0] = -1 else: print(' ' + '\x1b[1;37;42m' + ' Python version OK. ' + '\x1b[0m') ret_val[0] = 0 # Check Linux Kernel version required_kversion = [4, 8] linux_version = platform.release() print('Using Linux Kernel ' + str(linux_version)) if int(linux_version.split('.')[0]) < required_kversion[0]: print(' ' + '\x1b[1;37;41m' + ' but amdgpu-util requires ' + str(required_kversion[0]) + '.' + str(required_kversion[1]) + ' or newer.' + '\x1b[0m') ret_val[1] = -2 elif int(linux_version.split('.')[0]) == required_kversion[0] and \ int(linux_version.split('.')[1]) < required_kversion[1]: print(' ' + '\x1b[1;37;41m' + ' but amdgpu-util requires ' + str(required_kversion[0]) + '.' + str(required_kversion[1]) + ' or newer.' + '\x1b[0m') ret_val[1] = -2 else: print(' ' + '\x1b[1;37;42m' + ' OS kernel OK. ' + '\x1b[0m') ret_val[1] = 0 # Check for amdgpu driver required_aversion = 'driver=amdgpu' lshw_out = subprocess.check_output(shlex.split('lshw -c video'), shell=False, stderr=subprocess.DEVNULL).decode().split('\n') config_found = False driver_str = '' for lshw_line in lshw_out: searchObj = re.search('configuration:', lshw_line) if searchObj: config_found = True lineitems = lshw_line.split(sep=':') driver_str = lineitems[1].strip() searchObj = re.search(required_aversion, driver_str) break if not config_found: driver_str = 'not detected' print('AMD GPU driver not detected') print(' ' + '\x1b[1;37;41m' + ' AMD\'s \'amdgpu\' driver package is required. ' + '\x1b[0m') ret_val[2] = -3 if searchObj: print('AMD GPU driver is ' + driver_str) print(' ' + '\x1b[1;37;42m' + ' AMD driver OK. ' + '\x1b[0m') ret_val[2] = 0 else: print('AMD GPU driver is ' + driver_str) print(' ' + '\x1b[1;37;41m' + ' AMD\'s \'amdgpu\' driver package is required. ' + '\x1b[0m') ret_val[2] = -3 return ret_val gut_const = GUT_CONST() def is_venv_installed(): cmdstr = 'python3 -m venv -h > /dev/null' try: p = subprocess.Popen(shlex.split(cmdstr), shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) output, error = p.communicate() # print('subprocess output: ', output.decode(), 'subprocess error: ', error.decode()) if not re.fullmatch(r'.*No module named.*', output.decode()): print('python3 venv is installed') print(' ' + '\x1b[1;37;42m' + ' python3-venv OK. ' + '\x1b[0m') return True except: pass print('python3 venv is NOT installed') print(' ' + '\x1b[1;30;43m' + ' Python3 venv package \'python3-venv\' package is recommended. ' + '\x1b[0m') return False def does_amdgpu_utils_env_exist(): env_name = './amdgpu-utils-env/bin/activate' if os.path.isfile(env_name): print('amdgpu-utils-env available') print(' ' + '\x1b[1;37;42m' + ' amdgpu-utils-env OK. ' + '\x1b[0m') return True print('amdgpu-utils-env is NOT available') print(' ' + '\x1b[1;30;43m' + ' amdgpu-utils-env should be configured per User Guide. ' + '\x1b[0m') return False def is_in_venv(): python_path = shutil.which('python') if re.fullmatch(r'.*amdgpu-utils-env.*', python_path): print('In amdgpu-utils-env') print(' ' + '\x1b[1;37;42m' + ' amdgpu-utils-env is activated. ' + '\x1b[0m') return True print('Not in amdgpu-utils-env') print(' ' + '\x1b[1;30;43m' + ' amdgpu-utils-env should be activated per User Guide. ' + '\x1b[0m') return False def main(): parser = argparse.ArgumentParser() parser.add_argument('--about', help='README', action='store_true', default=False) parser.add_argument('-d', '--debug', help='Debug output', action='store_true', default=False) args = parser.parse_args() # About me if args.about: print(__doc__) print('Author: ', __author__) print('Copyright: ', __copyright__) print('Credits: ', __credits__) print('License: ', __license__) print('Version: ', __version__) print('Maintainer: ', __maintainer__) print('Status: ', __status__) sys.exit(0) gut_const.DEBUG = args.debug if gut_const.check_env() != [0, 0, 0]: print('Error in environment. Exiting...') sys.exit(-1) if not is_venv_installed() or not does_amdgpu_utils_env_exist(): print('Environment not configured. WARNING') if not is_in_venv(): print('Virtual Environment not activated. WARNING') if __name__ == '__main__': main() amdgpu-utils-2.6.0/amdgpu-ls000077500000000000000000000124661354600334600157660ustar00rootroot00000000000000#!/usr/bin/env python3 """ amdgpu-ls - Displays details about installed AMD GPUs This utility displays most relevant parameters for installed and compatible AMD GPUs. The default behavior is to list relevant parameters by GPU. OpenCL platform information is added when the *--clinfo* option is used. The *--no_fan* can be used to ignore fan settings. The *--pstate* option can be used to output the p-state table for each GPU instead of the list of basic parameters. The *--ppm* option is used to output the table of available power/performance modes instead of basic parameters. Copyright (C) 2019 RueiKe This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . """ __author__ = 'RueiKe' __copyright__ = 'Copyright (C) 2019 RueiKe' __credits__ = ['Craig Echt - Testing, Debug, Verification, and Documentation'] __license__ = 'GNU General Public License' __program_name__ = 'amdgpu-ls' __version__ = 'v2.6.0' __maintainer__ = 'RueiKe' __status__ = 'Stable Release' import argparse import os import sys from GPUmodules import GPUmodule as GPU from GPUmodules import env from pathlib import Path def main(): parser = argparse.ArgumentParser() parser.add_argument('--about', help='README', action='store_true', default=False) parser.add_argument('--pstates', help='Output pstate tables instead of GPU details', action='store_true', default=False) parser.add_argument('--ppm', help='Output power/performance mode tables instead of GPU details', action='store_true', default=False) parser.add_argument('--clinfo', help='Include openCL with card details', action='store_true', default=False) parser.add_argument('--no_fan', help='do not include fan setting options', action='store_true', default=False) parser.add_argument('-d', '--debug', help='Debug output', action='store_true', default=False) args = parser.parse_args() # About me if args.about: print(__doc__) print('Author: ', __author__) print('Copyright: ', __copyright__) print('Credits: ', __credits__) print('License: ', __license__) print('Version: ', __version__) print('Maintainer: ', __maintainer__) print('Status: ', __status__) sys.exit(0) env.gut_const.PATH = os.path.dirname(str(Path(__file__).resolve())) env.gut_const.DEBUG = args.debug if args.no_fan: env.gut_const.show_fans = False if env.gut_const.check_env() < 0: print('Error in environment. Exiting...') sys.exit(-1) # Check value of AMD Feature mask try: featuremask = env.gut_const.read_amdfeaturemask() except FileNotFoundError: print('Cannot read ppfeaturemask. Exiting...') sys.exit(-1) if featuremask == int(0xffff7fff) or featuremask == int(0xffffffff) or featuremask == int(0xfffd7fff): print('AMD Wattman features enabled: %s' % hex(featuremask)) else: print('AMD Wattman features not enabled: %s, See README file.' % hex(featuremask)) sys.exit(-1) env.gut_const.get_amd_driver_version() # Get list of AMD GPUs and get basic non-driver details gpu_list = GPU.GPU_LIST() gpu_list.get_gpu_list() gpu_list.read_allgpu_pci_info() # Check list of AMD GPUs num_amd_gpus = gpu_list.num_gpus() num_com_gpus = gpu_list.num_compatible_gpus() if num_amd_gpus == 0: print('No AMD GPUs detected, exiting...') sys.exit(-1) else: if num_com_gpus == 0: print('None are compatible, exiting...') sys.exit(-1) print(f'{num_amd_gpus} AMD GPUs detected, {num_com_gpus} may be compatible, checking...') # Read data static driver information for GPUs gpu_list.read_gpu_driver_info() gpu_list.read_gpu_sensor_static_data() # Read dynamic sensor and state data from GPUs gpu_list.read_gpu_sensor_data() gpu_list.read_gpu_state_data() # Check number of compatible GPUs again num_com_gpus = gpu_list.num_compatible_gpus() if num_com_gpus == 0: print('None are compatible, exiting...') sys.exit(-1) else: print(f'{num_com_gpus} are confirmed compatible.') print('') # Read report specific details if args.clinfo: if gpu_list.read_gpu_opencl_data() < 0: args.clinfo = False gpu_list.read_gpu_pstates() gpu_list.read_gpu_ppm_table() # Print out user requested details if args.pstates: gpu_list.print_pstates() if args.ppm: gpu_list.print_ppm_table() if not args.pstates and not args.ppm: gpu_list.print(args.clinfo) sys.exit(0) if __name__ == '__main__': main() amdgpu-utils-2.6.0/amdgpu-monitor000077500000000000000000000326651354600334600170420ustar00rootroot00000000000000#!/usr/bin/env python3 """ amdgpu-monitor - Displays current status of all active GPUs A utility to give the current state of all compatible AMD GPUs. The default behavior is to continuously update a text based table in the current window until Ctrl-C is pressed. With the *--gui* option, a table of relevant parameters will be updated in a Gtk window. You can specify the delay between updates with the *--sleep N* option where N is an integer > zero that specifies the number of seconds to sleep between updates. The *--no_fan* option can be used to disable the reading and display of fan information. The *--log* option is used to write all monitor data to a psv log file. When writing to a log file, the utility will indicate this in red at the top of the window with a message that includes the log file name. The *--plot* will display a plot of critical GPU parameters which updates at the specified *--sleep N* interval. If you need both the plot and monitor displays, then using the --plot option is preferred over running both tools as a single read of the GPUs is used to update both displays. The *--ltz* option results in the use of local time instead of UTC. Copyright (C) 2019 RueiKe This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . """ __author__ = 'RueiKe' __copyright__ = 'Copyright (C) 2019 RueiKe' __credits__ = ['Craig Echt - Testing, Debug, Verification, and Documentation'] __license__ = 'GNU General Public License' __program_name__ = 'amdgpu-monitor' __version__ = 'v2.6.0' __maintainer__ = 'RueiKe' __status__ = 'Stable Release' import argparse import subprocess import threading import os import sys import shlex import time from pathlib import Path try: import gi except ModuleNotFoundError as error: print('gi import error: {}'.format(error)) print('gi is required for %s', __program_name__) print(' In a venv, first install vext: pip install --no-cache-dir vext') print(' Then install vext.gi: pip install --no-cache-dir vext.gi') sys.exit(0) gi.require_version('Gtk', '3.0') from gi.repository import GLib, Gtk, Gdk from GPUmodules import GPUmodule as GPU from GPUmodules import env class MonitorWindow(Gtk.Window): def __init__(self, gpu_list, devices): self.quit = False Gtk.Window.__init__(self, title='amdgpu-monitor') self.set_border_width(1) icon_file = os.path.join(env.gut_const.PATH, 'icons', 'amdgpu-monitor.icon.png') if os.path.isfile(icon_file): self.set_icon_from_file(icon_file) grid = Gtk.Grid() grid.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(1, 1, 1, 1)) self.add(grid) col = 0 row = 0 num_amd_gpus = gpu_list.num_gpus() if env.gut_const.LOG: log_label = Gtk.Label() log_label.set_markup(' Logging to: ' + env.gut_const.log_file + '') log_label.override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0, 1.0, 1.0, 1.0)) lbox = Gtk.Box(spacing=6) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.60, .20, .20, 1.0)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(log_label, True, True, 0) grid.attach(lbox, 0, row, num_amd_gpus+1, 1) row += 1 row_start = row row = row_start row_labels = {'card_num': Gtk.Label()} row_labels['card_num'].set_markup('Card #') row_labels['card_num'].override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0, 1.0, 1.0, 1.0)) for k, v in gpu_list.table_param_labels.items(): row_labels[k] = Gtk.Label() row_labels[k].set_markup('' + str(v) + '') row_labels[k].override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0, 1.0, 1.0, 1.0)) for k, v in row_labels.items(): lbox = Gtk.Box(spacing=6) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.20, .40, .60, 1.0)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) v.set_property('margin-top', 1) v.set_property('margin-bottom', 1) v.set_property('margin-right', 4) v.set_property('margin-left', 4) lbox.pack_start(v, True, True, 0) grid.attach(lbox, col, row, 1, 1) v.set_alignment(0, 0.5) row += 1 for k, v in gpu_list.list.items(): devices[v.uuid] = {'card_num': Gtk.Label(label='card' + v.get_params_value('card_num'))} for cv in gpu_list.table_param_labels: devices[v.uuid][cv] = Gtk.Label(label=v.get_params_value(str(cv))) devices[v.uuid][cv].set_width_chars(10) for dk, dv in devices.items(): col += 1 row = row_start for lk, lv in dv.items(): lv.set_text('') lbox = Gtk.Box(spacing=6) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .06)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lv.set_property('margin-top', 1) lv.set_property('margin-bottom', 1) lv.set_property('margin-right', 3) lv.set_property('margin-left', 3) lv.set_width_chars(17) lbox.pack_start(lv, True, True, 0) grid.attach(lbox, col, row, 1, 1) row += 1 def set_quit(self, _arg2, _arg3): self.quit = True def updateData(gpu_list, devices, cmd): gpu_list.read_gpu_sensor_data() gpu_list.read_gpu_state_data() if env.gut_const.LOG: gpu_list.print_log(env.gut_const.log_file_ptr) if env.gut_const.PLOT: try: gpu_list.print_plot(cmd.stdin) except: print('amdgpu-plot has closed') env.gut_const.PLOT = False # update gui for dk, dv in devices.items(): for lk, lv in dv.items(): if lk == 'card_num': data_value = 'card'+gpu_list.list[dk].get_params_value('card_num')[:16] else: data_value = str(gpu_list.list[dk].get_params_value(lk))[:16] if data_value == '-1': data_value = '' lv.set_text(data_value) lv.set_width_chars(17) while Gtk.events_pending(): Gtk.main_iteration_do(True) def refresh(refreshtime, updateData, gpu_list, devices, cmd, gmonitor): while True: if gmonitor.quit: print('Quitting...') Gtk.main_quit() sys.exit(0) GLib.idle_add(updateData, gpu_list, devices, cmd) time.sleep(refreshtime) def main(): parser = argparse.ArgumentParser() parser.add_argument('--about', help='README', action='store_true', default=False) parser.add_argument('--gui', help='Display GTK Version of Monitor', action='store_true', default=False) parser.add_argument('--log', help='Write all monitor data to logfile', action='store_true', default=False) parser.add_argument('--plot', help='Open and write to amdgpu-plot', action='store_true', default=False) parser.add_argument('--ltz', help='Use local time zone instead of UTC', action='store_true', default=False) parser.add_argument('--sleep', help='Number of seconds to sleep between updates', type=int, default=2) parser.add_argument('--no_fan', help='do not include fan setting options', action='store_true', default=False) parser.add_argument('-d', '--debug', help='Debug output', action='store_true', default=False) parser.add_argument('--pdebug', help='Plot debug output', action='store_true', default=False) args = parser.parse_args() # About me if args.about: print(__doc__) print('Author: ', __author__) print('Copyright: ', __copyright__) print('Credits: ', __credits__) print('License: ', __license__) print('Version: ', __version__) print('Maintainer: ', __maintainer__) print('Status: ', __status__) sys.exit(0) env.gut_const.PATH = os.path.dirname(str(Path(__file__).resolve())) env.gut_const.DEBUG = args.debug env.gut_const.PDEBUG = args.pdebug if args.ltz: env.gut_const.USELTZ = True if args.no_fan: env.gut_const.show_fans = False if int(args.sleep) > 0: env.gut_const.SLEEP = int(args.sleep) else: print('Invalid value for sleep specified. Must be an integer great than zero') sys.exit(-1) if env.gut_const.check_env() < 0: print('Error in environment. Exiting...') sys.exit(-1) # Check value of AMD Feature mask try: featuremask = env.gut_const.read_amdfeaturemask() except FileNotFoundError: print('Cannot read ppfeaturemask. Exiting...') sys.exit(-1) if featuremask == int(0xffff7fff) or featuremask == int(0xffffffff) or featuremask == int(0xfffd7fff) : print('AMD Wattman features enabled: %s' % hex(featuremask)) else: print('AMD Wattman features not enabled: %s, See README file.' % hex(featuremask)) sys.exit(-1) env.gut_const.get_amd_driver_version() # Get list of AMD GPUs and get basic non-driver details gpu_list = GPU.GPU_LIST() gpu_list.get_gpu_list() gpu_list.read_allgpu_pci_info() # Check list of AMD GPUs num_amd_gpus = gpu_list.num_gpus() num_com_gpus = gpu_list.num_compatible_gpus() if num_amd_gpus == 0: print('No AMD GPUs detected, exiting...') sys.exit(-1) else: if num_com_gpus == 0: print('None are compatible, exiting...') sys.exit(-1) print(f'{num_amd_gpus} AMD GPUs detected, {num_com_gpus} may be compatible, checking...') # Read data static driver information for GPUs gpu_list.read_gpu_driver_info() gpu_list.read_gpu_sensor_static_data() # Read dynamic sensor and state data from GPUs gpu_list.read_gpu_sensor_data() gpu_list.read_gpu_state_data() # Check number of compatible GPUs again num_com_gpus = gpu_list.num_compatible_gpus() if num_com_gpus == 0: print('None are compatible, exiting...') sys.exit(-1) else: print(f'{num_com_gpus} are confirmed compatible.') print('') # Generate a new list of only compatible GPUs com_gpu_list = gpu_list.list_compatible_gpus() if args.log: env.gut_const.LOG = True env.gut_const.log_file = './log_monitor_{}.txt'.format( env.gut_const.now(ltz=env.gut_const.USELTZ).strftime('%m%d_%H%M%S')) env.gut_const.log_file_ptr = open(env.gut_const.log_file, 'w', 1) gpu_list.print_log_header(env.gut_const.log_file_ptr) if args.plot: args.gui = True if args.gui: # Display Gtk style Monitor devices = {} gmonitor = MonitorWindow(com_gpu_list, devices) #gmonitor.connect('delete-event', Gtk.main_quit) gmonitor.connect('delete-event', gmonitor.set_quit) gmonitor.show_all() cmd = None if args.plot: env.gut_const.PLOT = True plot_util = os.path.join(env.gut_const.PATH, 'amdgpu-plot') if os.path.isfile(plot_util): if env.gut_const.PDEBUG: cmd_str = plot_util + ' --debug --stdin --sleep ' + str(env.gut_const.SLEEP) else: cmd_str = plot_util + ' --stdin --sleep ' + str(env.gut_const.SLEEP) cmd = subprocess.Popen(shlex.split(cmd_str), bufsize=-1, shell=False, stdin=subprocess.PIPE) gpu_list.print_plot_header(cmd.stdin) # Start thread to update Monitor monthread = threading.Thread(target=refresh, daemon=True, args=[env.gut_const.SLEEP, updateData, gpu_list, devices, cmd, gmonitor]).start() Gtk.main() else: # Display text style Monitor try: while True: com_gpu_list.read_gpu_sensor_data() com_gpu_list.read_gpu_state_data() if not env.gut_const.DEBUG: os.system('clear') if env.gut_const.LOG: print('%sLogging to: %s%s' % ('\033[31m \033[01m', env.gut_const.log_file, '\033[0m')) com_gpu_list.print_log(env.gut_const.log_file_ptr) com_gpu_list.print_table() time.sleep(env.gut_const.SLEEP) except KeyboardInterrupt: if env.gut_const.LOG: env.gut_const.log_file_ptr.close() sys.exit(0) if __name__ == '__main__': main() amdgpu-utils-2.6.0/amdgpu-pac000077500000000000000000002612731354600334600161150ustar00rootroot00000000000000#!/usr/bin/env python3 """ amdgpu-pac - A utility program and control compatible AMD GPUs Program and Control compatible AMD GPUs with this utility. By default, the commands to be written to a GPU are written to a bash file for the user to inspect and run. If you have confidence, the *--execute_pac* option can be used to execute and then delete the saved bash file. Since the GPU device files are writable only by root, sudo is used to execute commands in the bash file, as a result, you will be prompted for credentials in the terminal where you executed *amdgpu-pac*. The *--no_fan* option can be used to eliminate fan details from the utility. The *--force_write* option can be used to force all configuration parameters to be written to the GPU. The default behavior is to only write changes. Copyright (C) 2019 RueiKe This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . """ __author__ = 'RueiKe' __copyright__ = 'Copyright (C) 2019 RueiKe' __credits__ = ['Craig Echt - Testing, Debug, Verification, and Documentation'] __license__ = 'GNU General Public License' __program_name__ = 'amdgpu-pac' __version__ = 'v2.6.0' __maintainer__ = 'RueiKe' __status__ = 'Stable Release' import argparse import re import subprocess import os import sys import time from uuid import uuid4 try: import gi except ModuleNotFoundError as error: print('gi import error: {}'.format(error)) print('gi is required for %s', __program_name__) print(' In a venv, first install vext: pip install --no-cache-dir vext') print(' Then install vext.gi: pip install --no-cache-dir vext.gi') sys.exit(0) gi.require_version('Gtk', '3.0') from gi.repository import GLib, Gtk, Gdk from GPUmodules import GPUmodule as GPU from GPUmodules import env class PACWindow(Gtk.Window): def __init__(self, gpu_list, devices): Gtk.Window.__init__(self, title='amdgpu-pac') self.set_border_width(1) icon_file = os.path.join(env.gut_const.PATH, 'icons', 'amdgpu-pac.icon.png') if os.path.isfile(icon_file): self.set_icon_from_file(icon_file) grid = Gtk.Grid() grid.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(1, 1, 1, 1)) self.add(grid) MAX_CHAR = 54 CHAR_WIDTH = 8 num_com_amd_gpus = gpu_list.num_compatible_gpus() max_rows = 0 col = 0 for k, v in gpu_list.list.items(): row = 0 # Card Number in top center of box devices[v.uuid] = {'card_num': Gtk.Label()} devices[v.uuid]['card_num'].set_markup('Card ' + v.get_params_value(str('card_num')) + ': ' + v.get_params_value('model_display') + '') devices[v.uuid]['card_num'].override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0, 1.0, 1.0, 1.0)) devices[v.uuid]['card_num'].set_property('margin-top', 1) devices[v.uuid]['card_num'].set_property('margin-bottom', 1) devices[v.uuid]['card_num'].set_property('margin-right', 4) devices[v.uuid]['card_num'].set_property('margin-left', 4) devices[v.uuid]['card_num'].set_alignment(0.5, 0.5) lbox = Gtk.Box(spacing=6) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.20, .40, .60, 1.0)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['card_num'], True, True, 0) grid.attach(lbox, col, row, 1, 1) row += 1 # Card Path devices[v.uuid]['card_path'] = Gtk.Label() devices[v.uuid]['card_path'].set_markup('Device: ' + v.get_params_value('card_path')) devices[v.uuid]['card_path'].set_property('width-request', MAX_CHAR*CHAR_WIDTH) devices[v.uuid]['card_path'].set_property('margin-top', 1) devices[v.uuid]['card_path'].set_property('margin-bottom', 1) devices[v.uuid]['card_path'].set_property('margin-right', 4) devices[v.uuid]['card_path'].set_property('margin-left', 4) devices[v.uuid]['card_path'].set_alignment(0, 0.5) lbox = Gtk.Box(spacing=6) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .12)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['card_path'], True, True, 0) grid.attach(lbox, col, row, 1, 1) row += 1 # Card Power Cap power_cap_range = v.get_params_value('power_cap_range') devices[v.uuid]['power_cap'] = Gtk.Label() devices[v.uuid]['power_cap'].set_markup('Power Cap: ' + 'Range (' + str(power_cap_range[0]) + ' - ' + str(power_cap_range[1]) + ' W)') devices[v.uuid]['power_cap'].set_property('margin-top', 1) devices[v.uuid]['power_cap'].set_property('margin-bottom', 1) devices[v.uuid]['power_cap'].set_property('margin-right', 2) devices[v.uuid]['power_cap'].set_property('margin-left', 2) devices[v.uuid]['power_cap'].set_alignment(0, 0.5) lbox = Gtk.Box(spacing=6) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .12)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['power_cap'], True, True, 0) grid.attach(lbox, col, row, 1, 1) row += 1 # Card Power Cap Value and Entry devices[v.uuid]['power_cap_cur'] = Gtk.Label() devices[v.uuid]['power_cap_cur'].set_property('margin-top', 1) devices[v.uuid]['power_cap_cur'].set_property('margin-bottom', 1) devices[v.uuid]['power_cap_cur'].set_property('margin-right', 2) devices[v.uuid]['power_cap_cur'].set_property('margin-left', 2) devices[v.uuid]['power_cap_ent'] = Gtk.Entry() devices[v.uuid]['power_cap_ent'].set_width_chars(4) devices[v.uuid]['power_cap_ent'].set_max_length(4) devices[v.uuid]['power_cap_ent'].set_alignment(xalign=1) devices[v.uuid]['power_cap_ent'].set_property('margin-top', 1) devices[v.uuid]['power_cap_ent'].set_property('margin-bottom', 1) devices[v.uuid]['power_cap_ent'].set_property('margin-right', 0) devices[v.uuid]['power_cap_ent'].set_property('margin-left', 2) devices[v.uuid]['power_cap_ent_unit'] = Gtk.Label() devices[v.uuid]['power_cap_ent_unit'].set_text('W (-1 to reset)') devices[v.uuid]['power_cap_ent_unit'].set_property('margin-top', 1) devices[v.uuid]['power_cap_ent_unit'].set_property('margin-bottom', 1) devices[v.uuid]['power_cap_ent_unit'].set_property('margin-right', 0) devices[v.uuid]['power_cap_ent_unit'].set_property('margin-left', 0) devices[v.uuid]['power_cap_ent_unit'].set_alignment(0, 0.5) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, 0, spacing=2) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .06)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['power_cap_cur'], False, False, 0) lbox.pack_start(devices[v.uuid]['power_cap_ent'], False, False, 0) lbox.pack_start(devices[v.uuid]['power_cap_ent_unit'], False, False, 0) grid.attach(lbox, col, row, 1, 1) row += 1 if env.gut_const.show_fans: # Fan PWM Value fan_pwm_range = v.get_params_value('fan_pwm_range') devices[v.uuid]['fan_pwm_range'] = Gtk.Label() devices[v.uuid]['fan_pwm_range'].set_markup('Fan PWM: ' + 'Range (' + str(fan_pwm_range[0]) + ' - ' + str(fan_pwm_range[1]) + ' %)') devices[v.uuid]['fan_pwm_range'].set_property('margin-top', 1) devices[v.uuid]['fan_pwm_range'].set_property('margin-bottom', 1) devices[v.uuid]['fan_pwm_range'].set_property('margin-right', 2) devices[v.uuid]['fan_pwm_range'].set_property('margin-left', 2) devices[v.uuid]['fan_pwm_range'].set_alignment(0, 0.5) lbox = Gtk.Box(spacing=6) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .12)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['fan_pwm_range'], True, True, 0) grid.attach(lbox, col, row, 1, 1) row += 1 # Card Fan PWM Value and Entry devices[v.uuid]['fan_pwm_cur'] = Gtk.Label() devices[v.uuid]['fan_pwm_cur'].set_property('margin-top', 1) devices[v.uuid]['fan_pwm_cur'].set_property('margin-bottom', 1) devices[v.uuid]['fan_pwm_cur'].set_property('margin-right', 2) devices[v.uuid]['fan_pwm_cur'].set_property('margin-left', 2) devices[v.uuid]['fan_pwm_ent'] = Gtk.Entry() devices[v.uuid]['fan_pwm_ent'].set_width_chars(4) devices[v.uuid]['fan_pwm_ent'].set_max_length(4) devices[v.uuid]['fan_pwm_ent'].set_alignment(xalign=1) devices[v.uuid]['fan_pwm_ent'].set_property('margin-top', 1) devices[v.uuid]['fan_pwm_ent'].set_property('margin-bottom', 1) devices[v.uuid]['fan_pwm_ent'].set_property('margin-right', 0) devices[v.uuid]['fan_pwm_ent'].set_property('margin-left', 2) devices[v.uuid]['fan_pwm_ent_unit'] = Gtk.Label() devices[v.uuid]['fan_pwm_ent_unit'].set_text('% (-1 to reset)') devices[v.uuid]['fan_pwm_ent_unit'].set_property('margin-top', 1) devices[v.uuid]['fan_pwm_ent_unit'].set_property('margin-bottom', 1) devices[v.uuid]['fan_pwm_ent_unit'].set_property('margin-right', 0) devices[v.uuid]['fan_pwm_ent_unit'].set_property('margin-left', 0) devices[v.uuid]['fan_pwm_ent_unit'].set_alignment(0, 0.5) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, 0, spacing=2) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .06)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['fan_pwm_cur'], False, False, 0) lbox.pack_start(devices[v.uuid]['fan_pwm_ent'], False, False, 0) lbox.pack_start(devices[v.uuid]['fan_pwm_ent_unit'], False, False, 0) grid.attach(lbox, col, row, 1, 1) row += 1 if v.get_params_value('gpu_type') == 1: # Sclk P-States devices[v.uuid]['sclk_range'] = Gtk.Label() devices[v.uuid]['sclk_range'].set_markup('Sclk P-States: ' + 'Ranges ' + str(v.get_params_value('sclk_f_range')[0]) + '-' + str(v.get_params_value('sclk_f_range')[1]) + ', ' + str(v.get_params_value('vddc_range')[0]) + '-' + str(v.get_params_value('vddc_range')[1]) + ' ') devices[v.uuid]['sclk_range'].set_property('margin-top', 1) devices[v.uuid]['sclk_range'].set_property('margin-bottom', 1) devices[v.uuid]['sclk_range'].set_property('margin-right', 2) devices[v.uuid]['sclk_range'].set_property('margin-left', 2) devices[v.uuid]['sclk_range'].set_alignment(0, 0.5) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, spacing=6) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .12)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['sclk_range'], False, False, 0) grid.attach(lbox, col, row, 1, 1) row += 1 # Sclk P-State Values and Entry devices[v.uuid]['sclk_pstate'] = {} for ps, psd in v.sclk_state.items(): devices[v.uuid]['sclk_pstate'][ps] = {} devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'] = Gtk.Label() devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'].set_width_chars(20) devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'].set_alignment(0, 0.5) devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-top', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-bottom', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-right', 2) devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-left', 2) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'] = Gtk.Entry() devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_width_chars(5) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_max_length(5) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_alignment(xalign=1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-top', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-bottom', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-right', 0) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-left', 0) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'] = Gtk.Label() devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_alignment(0, 0.5) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-top', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-bottom', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-right', 4) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-left', 0) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj'] = Gtk.Entry() devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj'].set_width_chars(5) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj'].set_max_length(5) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj'].set_alignment(xalign=1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj'].set_property('margin-top', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj'].set_property('margin-bottom', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj'].set_property('margin-right', 0) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj'].set_property('margin-left', 0) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj_unit'] = Gtk.Label() devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj_unit'].set_alignment(0, 0.5) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj_unit'].set_property('margin-top', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj_unit'].set_property('margin-bottom', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj_unit'].set_property('margin-right', 0) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj_unit'].set_property('margin-left', 0) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, spacing=6) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .06)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'], False, False, 0) lbox.pack_start(devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'], False, False, 0) lbox.pack_start(devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'], False, False, 0) lbox.pack_start(devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj'], False, False, 0) lbox.pack_start(devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj_unit'], False, False, 0) grid.attach(lbox, col, row, 1, 1) row += 1 # SCLK P-State Mask devices[v.uuid]['sclk_pst_mask_cur'] = Gtk.Label() devices[v.uuid]['sclk_pst_mask_cur'].set_property('margin-top', 1) devices[v.uuid]['sclk_pst_mask_cur'].set_property('margin-bottom', 1) devices[v.uuid]['sclk_pst_mask_cur'].set_property('margin-right', 2) devices[v.uuid]['sclk_pst_mask_cur'].set_property('margin-left', 2) devices[v.uuid]['sclk_pst_mask_ent'] = Gtk.Entry() devices[v.uuid]['sclk_pst_mask_ent'].set_width_chars(15) devices[v.uuid]['sclk_pst_mask_ent'].set_max_length(15) devices[v.uuid]['sclk_pst_mask_ent'].set_alignment(xalign=0) devices[v.uuid]['sclk_pst_mask_ent'].set_property('margin-top', 1) devices[v.uuid]['sclk_pst_mask_ent'].set_property('margin-bottom', 1) devices[v.uuid]['sclk_pst_mask_ent'].set_property('margin-right', 0) devices[v.uuid]['sclk_pst_mask_ent'].set_property('margin-left', 1) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, 0, spacing=2) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .06)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['sclk_pst_mask_cur'], False, False, 0) lbox.pack_start(devices[v.uuid]['sclk_pst_mask_ent'], False, False, 0) grid.attach(lbox, col, row, 1, 1) row += 1 elif v.get_params_value('gpu_type') == 2: # Sclk Curve End Points devices[v.uuid]['sclk_range'] = Gtk.Label() devices[v.uuid]['sclk_range'].set_markup('Sclk Curve End Points: ' + 'Ranges ' + str(v.get_params_value('sclk_f_range')[0]) + '-' + str(v.get_params_value('sclk_f_range')[1]) + ' ') devices[v.uuid]['sclk_range'].set_property('margin-top', 1) devices[v.uuid]['sclk_range'].set_property('margin-bottom', 1) devices[v.uuid]['sclk_range'].set_property('margin-right', 2) devices[v.uuid]['sclk_range'].set_property('margin-left', 2) devices[v.uuid]['sclk_range'].set_alignment(0, 0.5) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, spacing=6) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .12)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['sclk_range'], False, False, 0) grid.attach(lbox, col, row, 1, 1) row += 1 # Sclk Curve End Points Values and Entry devices[v.uuid]['sclk_pstate'] = {} for ps, psd in v.sclk_state.items(): devices[v.uuid]['sclk_pstate'][ps] = {} devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'] = Gtk.Label() devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'].set_width_chars(20) devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'].set_alignment(0, 0.5) devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-top', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-bottom', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-right', 2) devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-left', 2) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'] = Gtk.Entry() devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_width_chars(5) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_max_length(5) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_alignment(xalign=1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-top', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-bottom', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-right', 0) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-left', 0) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'] = Gtk.Label() devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_alignment(0, 0.5) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-top', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-bottom', 1) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-right', 4) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-left', 0) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, spacing=6) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .06)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'], False, False, 0) lbox.pack_start(devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'], False, False, 0) lbox.pack_start(devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'], False, False, 0) grid.attach(lbox, col, row, 1, 1) row += 1 if v.get_params_value('gpu_type') == 1: # Mclk P-States devices[v.uuid]['mclk_range'] = Gtk.Label() devices[v.uuid]['mclk_range'].set_markup('Mclk P-States: ' + 'Ranges ' + str(v.get_params_value('mclk_f_range')[0]) + '-' + str(v.get_params_value('mclk_f_range')[1]) + ', ' + str(v.get_params_value('vddc_range')[0]) + '-' + str(v.get_params_value('vddc_range')[1])) devices[v.uuid]['mclk_range'].set_property('margin-top', 1) devices[v.uuid]['mclk_range'].set_property('margin-bottom', 1) devices[v.uuid]['mclk_range'].set_property('margin-right', 2) devices[v.uuid]['mclk_range'].set_property('margin-left', 2) devices[v.uuid]['mclk_range'].set_alignment(0, 0.5) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, spacing=6) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .12)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['mclk_range'], True, True, 0) grid.attach(lbox, col, row, 1, 1) row += 1 # Mclk P-State Values and Entry devices[v.uuid]['mclk_pstate'] = {} for ps, psd in v.mclk_state.items(): devices[v.uuid]['mclk_pstate'][ps] = {} devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'] = Gtk.Label() devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'].set_width_chars(20) devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'].set_alignment(0, 0.5) devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-top', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-bottom', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-right', 2) devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-left', 2) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'] = Gtk.Entry() devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_width_chars(5) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_max_length(5) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_alignment(xalign=1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-top', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-bottom', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-right', 0) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-left', 0) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'] = Gtk.Label() devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_alignment(0, 0.5) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-top', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-bottom', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-right', 4) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-left', 0) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj'] = Gtk.Entry() devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj'].set_width_chars(5) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj'].set_max_length(5) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj'].set_alignment(xalign=1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj'].set_property('margin-top', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj'].set_property('margin-bottom', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj'].set_property('margin-right', 0) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj'].set_property('margin-left', 0) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj_unit'] = Gtk.Label() devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj_unit'].set_alignment(0, 0.5) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj_unit'].set_property('margin-top', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj_unit'].set_property('margin-bottom', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj_unit'].set_property('margin-right', 4) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj_unit'].set_property('margin-left', 0) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, spacing=6) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .06)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'], False, False, 0) lbox.pack_start(devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'], False, False, 0) lbox.pack_start(devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'], False, False, 0) lbox.pack_start(devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj'], False, False, 0) lbox.pack_start(devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj_unit'], False, False, 0) grid.attach(lbox, col, row, 1, 1) row += 1 # MCLK P-State Mask devices[v.uuid]['mclk_pst_mask_cur'] = Gtk.Label() devices[v.uuid]['mclk_pst_mask_cur'].set_property('margin-top', 1) devices[v.uuid]['mclk_pst_mask_cur'].set_property('margin-bottom', 1) devices[v.uuid]['mclk_pst_mask_cur'].set_property('margin-right', 2) devices[v.uuid]['mclk_pst_mask_cur'].set_property('margin-left', 2) devices[v.uuid]['mclk_pst_mask_ent'] = Gtk.Entry() devices[v.uuid]['mclk_pst_mask_ent'].set_width_chars(15) devices[v.uuid]['mclk_pst_mask_ent'].set_max_length(15) devices[v.uuid]['mclk_pst_mask_ent'].set_alignment(xalign=0) devices[v.uuid]['mclk_pst_mask_ent'].set_property('margin-top', 1) devices[v.uuid]['mclk_pst_mask_ent'].set_property('margin-bottom', 1) devices[v.uuid]['mclk_pst_mask_ent'].set_property('margin-right', 0) devices[v.uuid]['mclk_pst_mask_ent'].set_property('margin-left', 1) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, 0, spacing=2) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .06)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['mclk_pst_mask_cur'], False, False, 0) lbox.pack_start(devices[v.uuid]['mclk_pst_mask_ent'], False, False, 0) grid.attach(lbox, col, row, 1, 1) row += 1 elif v.get_params_value('gpu_type') == 2: # Mclk Curve End points devices[v.uuid]['mclk_range'] = Gtk.Label() devices[v.uuid]['mclk_range'].set_markup('Mclk Curve End Points: ' + 'Ranges ' + str(v.get_params_value('mclk_f_range')[0]) + '-' + str(v.get_params_value('mclk_f_range')[1])) devices[v.uuid]['mclk_range'].set_property('margin-top', 1) devices[v.uuid]['mclk_range'].set_property('margin-bottom', 1) devices[v.uuid]['mclk_range'].set_property('margin-right', 2) devices[v.uuid]['mclk_range'].set_property('margin-left', 2) devices[v.uuid]['mclk_range'].set_alignment(0, 0.5) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, spacing=6) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .12)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['mclk_range'], True, True, 0) grid.attach(lbox, col, row, 1, 1) row += 1 # Mclk Curve End Points Values and Entry devices[v.uuid]['mclk_pstate'] = {} for ps, psd in v.mclk_state.items(): devices[v.uuid]['mclk_pstate'][ps] = {} devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'] = Gtk.Label() devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'].set_width_chars(20) devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'].set_alignment(0, 0.5) devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-top', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-bottom', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-right', 2) devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'].set_property('margin-left', 2) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'] = Gtk.Entry() devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_width_chars(5) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_max_length(5) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_alignment(xalign=1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-top', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-bottom', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-right', 0) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_property('margin-left', 0) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'] = Gtk.Label() devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_alignment(0, 0.5) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-top', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-bottom', 1) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-right', 4) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_property('margin-left', 0) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, spacing=6) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .06)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'], False, False, 0) lbox.pack_start(devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'], False, False, 0) lbox.pack_start(devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'], False, False, 0) grid.attach(lbox, col, row, 1, 1) row += 1 if v.get_params_value('gpu_type') == 2: # VDDC Curve Points devices[v.uuid]['vddc_curve_range'] = Gtk.Label() devices[v.uuid]['vddc_curve_range'].set_markup('VDDC Curve Points: ' + 'Ranges ' + str(v.vddc_curve_range['0']['SCLK'][0]) + '-' + str(v.vddc_curve_range['0']['SCLK'][1]) + ', ' + str(v.vddc_curve_range['0']['VOLT'][0]) + '-' + str(v.vddc_curve_range['0']['VOLT'][1]) + ' ') devices[v.uuid]['vddc_curve_range'].set_property('margin-top', 1) devices[v.uuid]['vddc_curve_range'].set_property('margin-bottom', 1) devices[v.uuid]['vddc_curve_range'].set_property('margin-right', 2) devices[v.uuid]['vddc_curve_range'].set_property('margin-left', 2) devices[v.uuid]['vddc_curve_range'].set_alignment(0, 0.5) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, spacing=6) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .12)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['vddc_curve_range'], False, False, 0) grid.attach(lbox, col, row, 1, 1) row += 1 # VDDC CURVE Points Values and Entry devices[v.uuid]['vddc_curve_pt'] = {} for ps, psd in v.vddc_curve.items(): devices[v.uuid]['vddc_curve_pt'][ps] = {} devices[v.uuid]['vddc_curve_pt'][ps]['gtk_cur_obj'] = Gtk.Label() devices[v.uuid]['vddc_curve_pt'][ps]['gtk_cur_obj'].set_width_chars(20) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_cur_obj'].set_alignment(0, 0.5) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_cur_obj'].set_property('margin-top', 1) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_cur_obj'].set_property('margin-bottom', 1) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_cur_obj'].set_property('margin-right', 2) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_cur_obj'].set_property('margin-left', 2) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj'] = Gtk.Entry() devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj'].set_width_chars(5) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj'].set_max_length(5) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj'].set_alignment(xalign=1) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj'].set_property('margin-top', 1) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj'].set_property('margin-bottom', 1) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj'].set_property('margin-right', 0) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj'].set_property('margin-left', 0) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj_unit'] = Gtk.Label() devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj_unit'].set_alignment(0, 0.5) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj_unit'].set_property('margin-top', 1) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj_unit'].set_property('margin-bottom', 1) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj_unit'].set_property('margin-right', 4) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj_unit'].set_property('margin-left', 0) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj'] = Gtk.Entry() devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj'].set_width_chars(5) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj'].set_max_length(5) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj'].set_alignment(xalign=1) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj'].set_property('margin-top', 1) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj'].set_property('margin-bottom', 1) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj'].set_property('margin-right', 0) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj'].set_property('margin-left', 0) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj_unit'] = Gtk.Label() devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj_unit'].set_alignment(0, 0.5) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj_unit'].set_property('margin-top', 1) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj_unit'].set_property('margin-bottom', 1) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj_unit'].set_property('margin-right', 0) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj_unit'].set_property('margin-left', 0) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, spacing=6) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .06)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['vddc_curve_pt'][ps]['gtk_cur_obj'], False, False, 0) lbox.pack_start(devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj'], False, False, 0) lbox.pack_start(devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj_unit'], False, False, 0) lbox.pack_start(devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj'], False, False, 0) lbox.pack_start(devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj_unit'], False, False, 0) grid.attach(lbox, col, row, 1, 1) row += 1 # Power Performance Mode Selection devices[v.uuid]['ppm'] = Gtk.Label() devices[v.uuid]['ppm'].set_markup('Power Performance Modes:') devices[v.uuid]['ppm'].set_property('margin-top', 1) devices[v.uuid]['ppm'].set_property('margin-bottom', 1) devices[v.uuid]['ppm'].set_property('margin-right', 2) devices[v.uuid]['ppm'].set_property('margin-left', 2) devices[v.uuid]['ppm'].set_alignment(0, 0.5) lbox = Gtk.Box(spacing=6) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .12)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['ppm'], True, True, 0) grid.attach(lbox, col, row, 1, 1) row += 1 devices[v.uuid]['ppm_modes'] = Gtk.ListStore(int, str) devices[v.uuid]['ppm_mode_items'] = {} item_num = 0 for mode_num, mode in v.ppm_modes.items(): if mode_num == 'NUM': continue if mode[0] == 'CUSTOM': continue devices[v.uuid]['ppm_modes'].append([int(mode_num), mode[0]]) devices[v.uuid]['ppm_mode_items'][int(mode_num)] = item_num item_num += 1 lbox = Gtk.Box(spacing=6) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.06, .06, .06, .06)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) devices[v.uuid]['ppm_modes_combo'] = Gtk.ComboBox.new_with_model_and_entry(devices[v.uuid]['ppm_modes']) devices[v.uuid]['ppm_modes_combo'].connect('changed', ppm_select, devices[v.uuid]) devices[v.uuid]['ppm_modes_combo'].set_entry_text_column(1) lbox.pack_start(devices[v.uuid]['ppm_modes_combo'], False, False, 0) grid.attach(lbox, col, row, 1, 1) row += 1 # Save/Reset Card Buttons devices[v.uuid]['save_button'] = Gtk.Button('') for child in devices[v.uuid]['save_button'].get_children(): child.set_label('Save') child.set_use_markup(True) devices[v.uuid]['save_button'].connect('clicked', self.save_card, gpu_list, devices, v.uuid) devices[v.uuid]['save_button'].set_property('width-request', 90) devices[v.uuid]['reset_button'] = Gtk.Button('') for child in devices[v.uuid]['reset_button'].get_children(): child.set_label('Reset') child.set_use_markup(True) devices[v.uuid]['reset_button'].connect('clicked', self.reset_card, gpu_list, devices, v.uuid) devices[v.uuid]['reset_button'].set_property('width-request', 90) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, spacing=6) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.6, .6, .6, 1.0)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['save_button'], True, False, 0) lbox.pack_start(devices[v.uuid]['reset_button'], True, False, 0) grid.attach(lbox, col, row, 1, 1) row += 1 # Increment column before going to next Device if max_rows < row: max_rows = row col += 1 if num_com_amd_gpus > 1: # Save/Reset/Update ALL Card Buttons devices[v.uuid]['save_all_button'] = Gtk.Button('') for child in devices[v.uuid]['save_all_button'].get_children(): child.set_label('Save All') child.set_use_markup(True) devices[v.uuid]['save_all_button'].connect('clicked', self.save_all_cards, gpu_list, devices, v.uuid) devices[v.uuid]['save_all_button'].set_property('width-request', 100) devices[v.uuid]['reset_all_button'] = Gtk.Button('') for child in devices[v.uuid]['reset_all_button'].get_children(): child.set_label('Reset All') child.set_use_markup(True) devices[v.uuid]['reset_all_button'].connect('clicked', self.reset_all_cards, gpu_list, devices, v.uuid) devices[v.uuid]['reset_all_button'].set_property('width-request', 100) devices[v.uuid]['refresh_all_button'] = Gtk.Button('') for child in devices[v.uuid]['refresh_all_button'].get_children(): child.set_label('Refresh All') child.set_use_markup(True) devices[v.uuid]['refresh_all_button'].connect('clicked', self.refresh_all_cards, gpu_list, devices, v.uuid, True) devices[v.uuid]['refresh_all_button'].set_property('width-request', 100) lbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, spacing=6) lbox.set_homogeneous(False) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.6, .6, .6, 1.0)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(devices[v.uuid]['save_all_button'], True, False, 0) lbox.pack_start(devices[v.uuid]['reset_all_button'], True, False, 0) lbox.pack_start(devices[v.uuid]['refresh_all_button'], True, False, 0) grid.attach(lbox, 0, max_rows, col, 1) row += 1 max_rows += 1 # Initialize message box devices['message_label'] = Gtk.Label() devices['message_box'] = Gtk.Box(Gtk.Orientation.HORIZONTAL, spacing=6) devices['message_label'].set_alignment(0, 0.5) devices['message_label'].set_max_width_chars(num_com_amd_gpus * MAX_CHAR) devices['message_label'].set_property('width-request', num_com_amd_gpus * MAX_CHAR * CHAR_WIDTH) devices['message_label'].set_line_wrap(True) devices['message_box'].set_homogeneous(False) devices['message_label'].override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0, 1.0, 1.0, 1.0)) devices['message_box'].override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.6, .6, .6, 1.0)) devices['message_box'].set_property('margin-top', 1) devices['message_box'].set_property('margin-bottom', 1) devices['message_box'].set_property('margin-right', 1) devices['message_box'].set_property('margin-left', 1) devices['message_box'].pack_start(devices['message_label'], True, True, 1) grid.attach(devices['message_box'], 0, max_rows, col, 1) row += 1 self.update_message(devices, '', 'gray') self.refresh_PAC(gpu_list, devices) def update_message(self, devices, message, color='gray'): #set default message if no message specified if message == '': if env.gut_const.execute_pac == True: message = "Using the --execute_pac option. Changes will be written to the GPU without confirmation.\nSudo will be used, so you may be prompted for credentials in the window where amdgpu-pac was executed from." else: message = "Using amdgpu-pac without --execute_pac option.\nYou must manually run bash file with sudo to execute changes." if color == 'red': devices['message_box'].override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.60, .20, .20, 1.0)) devices['message_label'].override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0, 1.0, 1.0, 1.0)) elif color == 'yellow': devices['message_box'].override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.50, .50, .00, 1.0)) devices['message_label'].override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0, 1.0, 1.0, 1.0)) elif color == 'white': devices['message_box'].override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(1.0, 1.0, 1.0, 1.0)) devices['message_label'].override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0.0, 0.0, 0.0, 1.0)) else: devices['message_box'].override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.6,.6,.6,1.0)) devices['message_label'].override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0, 1.0, 1.0, 1.0)) devices['message_label'].set_text(message) #devices['message_label'].set_markup('' + message + '') while Gtk.events_pending(): Gtk.main_iteration_do(True) return def refresh_all_cards(self, parent, gpu_list, devices, uuid, reset_message=False): self.refresh_PAC(gpu_list, devices, reset_message) return def refresh_PAC(self, gpu_list, devices, reset_message=False): # Read dynamic sensor and state data from GPUs gpu_list.read_gpu_sensor_data() gpu_list.read_gpu_state_data() # Read pstate and ppm table data gpu_list.read_gpu_pstates() gpu_list.read_gpu_ppm_table() for k, v in gpu_list.list.items(): devices[v.uuid]['power_cap_cur'].set_text(' Current: ' + str(v.get_params_value('power_cap')) + 'W Set: ') devices[v.uuid]['power_cap_ent'].set_text(str(int(v.get_params_value('power_cap')))) if env.gut_const.show_fans: devices[v.uuid]['fan_pwm_cur'].set_text(' Current: ' + str(v.get_params_value('fan_pwm')) + '% Set: ') devices[v.uuid]['fan_pwm_ent'].set_text(str(int(v.get_params_value('fan_pwm')))) #SCLK if v.get_params_value('gpu_type') == 1: for ps, psd in v.sclk_state.items(): devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'].set_text(' ' + (str(ps)+': ' + str(psd[0]) + ', ' + str(psd[1]))) item_value = re.sub(r'[a-z,A-Z]*', '', str(psd[0])) item_unit = re.sub(r'[0-9][.]*[0-9]*', '', str(psd[0])) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_text(item_value) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_text(item_unit + ' ') item_value = re.sub(r'[a-z,A-Z]*', '', str(psd[1])) item_unit = re.sub(r'[0-9][.]*[0-9]*', '', str(psd[1])) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj'].set_text(str(item_value)) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_v_obj_unit'].set_text(item_unit) devices[v.uuid]['sclk_pst_mask_cur'].set_text(' SCLK Default: ' + v.get_pstate_list_str('SCLK') + ' Set Mask: ') devices[v.uuid]['sclk_pst_mask_ent'].set_text(v.get_pstate_list_str('SCLK')) elif v.get_params_value('gpu_type') == 2: for ps, psd in v.sclk_state.items(): devices[v.uuid]['sclk_pstate'][ps]['gtk_cur_obj'].set_text(' ' + (str(ps) + ': ' + str(psd[0]))) item_value = re.sub(r'[a-z,A-Z]*', '', str(psd[0])) item_unit = re.sub(r'[0-9][.]*[0-9]*', '', str(psd[0])) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj'].set_text(item_value) devices[v.uuid]['sclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_text(item_unit + ' ') #MCLK if v.get_params_value('gpu_type') == 1: for ps, psd in v.mclk_state.items(): devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'].set_text(' ' + (str(ps) + ': ' + str(psd[0]) + ', ' + str(psd[1]))) item_value = re.sub(r'[a-z,A-Z]*', '', str(psd[0])) item_unit = re.sub(r'[0-9][.]*[0-9]*', '', str(psd[0])) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_text(item_value) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_text(item_unit + ' ') item_value = re.sub(r'[a-z,A-Z]*', '', str(psd[1])) item_unit = re.sub(r'[0-9][.]*[0-9]*', '', str(psd[1])) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj'].set_text(str(item_value)) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_v_obj_unit'].set_text(item_unit) devices[v.uuid]['mclk_pst_mask_cur'].set_text(' MCLK Default: ' + v.get_pstate_list_str('MCLK') + ' Set Mask: ') devices[v.uuid]['mclk_pst_mask_ent'].set_text(v.get_pstate_list_str('MCLK')) elif v.get_params_value('gpu_type') == 2: for ps, psd in v.mclk_state.items(): devices[v.uuid]['mclk_pstate'][ps]['gtk_cur_obj'].set_text(' ' + (str(ps) + ': ' + str(psd[0]))) item_value = re.sub(r'[a-z,A-Z]*', '', str(psd[0])) item_unit = re.sub(r'[0-9][.]*[0-9]*', '', str(psd[0])) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj'].set_text(item_value) devices[v.uuid]['mclk_pstate'][ps]['gtk_ent_f_obj_unit'].set_text(item_unit + ' ') #VDDC CURVE if v.get_params_value('gpu_type') == 2: for ps, psd in v.vddc_curve.items(): devices[v.uuid]['vddc_curve_pt'][ps]['gtk_cur_obj'].set_text(' ' + (str(ps) + ': ' + str(psd[0]) + ', ' + str(psd[1]))) item_value = re.sub(r'[a-z,A-Z]*', '', str(psd[0])) item_unit = re.sub(r'[0-9][.]*[0-9]*', '', str(psd[0])) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj'].set_text(item_value) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_f_obj_unit'].set_text(item_unit + ' ') item_value = re.sub(r'[a-z,A-Z]*', '', str(psd[1])) item_unit = re.sub(r'[0-9][.]*[0-9]*', '', str(psd[1])) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj'].set_text(str(item_value)) devices[v.uuid]['vddc_curve_pt'][ps]['gtk_ent_v_obj_unit'].set_text(item_unit) # refresh active mode item devices[v.uuid]['ppm_modes_combo'].set_active( devices[v.uuid]['ppm_mode_items'][v.get_current_ppm_mode()[0]]) if reset_message: self.update_message(devices, '', 'gray') while Gtk.events_pending(): Gtk.main_iteration_do(True) return def save_all_cards(self, parent, gpu_list, devices, uuid): changed = 0 # Write start message if env.gut_const.execute_pac: message = 'Using the --execute_pac option. Changes will be written to the GPU without confirmation.\nSudo will be used, so you may be prompted for credentials in the window where amdgpu-pac was executed from.' else: message = 'Writing PAC command bash file.\n' self.update_message(devices, message, 'red') # save each card for gk in gpu_list.list.keys(): #for dk in devices.keys(): changed += self.save_card(parent, gpu_list, devices, gk, refresh=False) # Write finish message time.sleep(1.0) if env.gut_const.execute_pac: if changed: message = ('Write ' + str(changed) + ' PAC commands to card complete.\nConfirm changes with amdgpu-monitor.') else: message = 'No PAC commands to write to card.\nNo changes specified.' else: if changed: message = ('Writing ' + str(changed) + ' PAC commands to bash file complete.\nRun bash file with sudo to execute changes.') else: message = 'No PAC commands to write to bash file.\nNo changes specified.' self.update_message(devices, message, 'yellow') self.refresh_all_cards(parent, gpu_list, devices, uuid) return def save_card(self, parent, gpu_list, devices, uuid, refresh=True): if refresh: # Write message if env.gut_const.execute_pac: message = 'Using the --execute_pac option. Changes will be written to the GPU without confirmation.\nSudo will be used, so you may be prompted for credentials in the window where amdgpu-pac was executed from.' else: message = 'Writing PAC commands to bash file.\n' self.update_message(devices, message, 'red') # specify output batch file name out_filename = os.getcwd() + '/' + 'pac_writer_' + str(uuid4().hex) + '.sh' fileptr = open(out_filename, 'x') # output header print('#!/bin/sh', file=fileptr) print('###########################################################################', file=fileptr) print('## amdgpu-pac generated script to modify GPU configuration/settings', file=fileptr) print('###########################################################################', file=fileptr) print('', file=fileptr) print('###########################################################################', file=fileptr) print('## WARNING - Do not execute this script without completely', file=fileptr) print('## understanding appropriate value to write to your specific GPUs', file=fileptr) print('###########################################################################', file=fileptr) print('#', file=fileptr) print('# Copyright (C) 2019 RueiKe', file=fileptr) print('#', file=fileptr) print('# This program is free software: you can redistribute it and/or modify', file=fileptr) print('# it under the terms of the GNU General Public License as published by', file=fileptr) print('# the Free Software Foundation, either version 3 of the License, or', file=fileptr) print('# (at your option) any later version.', file=fileptr) print('#', file=fileptr) print('# This program is distributed in the hope that it will be useful,', file=fileptr) print('# but WITHOUT ANY WARRANTY; without even the implied warranty of', file=fileptr) print('# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the', file=fileptr) print('# GNU General Public License for more details.', file=fileptr) print('#', file=fileptr) print('# You should have received a copy of the GNU General Public License', file=fileptr) print('# along with this program. If not, see .', file=fileptr) print('###########################################################################', file=fileptr) changed = 0 v = gpu_list.list[uuid] print('# ', file=fileptr) print('# Card' + v.card_num + ' ' + v.get_params_value('model'), file=fileptr) print('# ' + v.card_path, file=fileptr) print('# ', file=fileptr) print('set -x', file=fileptr) # Power Cap power_cap_file = v.hwmon_path + 'power1_cap' old_power_cap = int(v.get_params_value('power_cap')) new_power_cap_str = devices[uuid]['power_cap_ent'].get_text() if re.fullmatch(r'^[-]*[0-9]+', new_power_cap_str): new_power_cap = int(new_power_cap_str) else: new_power_cap = old_power_cap if new_power_cap < 0: print('# Powercap Old: %s, Resetting to default' % str(old_power_cap), file=fileptr) else: power_cap_range = v.get_params_value('power_cap_range') print('# Powercap Old: ', str(old_power_cap), end='', file=fileptr) print(' New: ', str(new_power_cap), end='', file=fileptr) print(' Min: %d' % power_cap_range[0], end='', file=fileptr) print(' Max: %d' % power_cap_range[1], end='', file=fileptr) print('', file=fileptr) if new_power_cap == old_power_cap and env.gut_const.write_delta_only: print('# No changes, skipped', file=fileptr) else: if v.is_valid_power_cap(new_power_cap): changed += 1 if new_power_cap < 0: # reset print('# Resetting Power Cap to default', file=fileptr) print("sudo sh -c \"echo \'0\' > %s\"" % power_cap_file, file=fileptr) else: print("sudo sh -c \"echo \'%d\' > %s\"" % ((int(1000000 * new_power_cap)), power_cap_file), file=fileptr) else: print('# Invalid parameter values', file=fileptr) if env.gut_const.show_fans: # Fan PWM pwm_enable_file = v.hwmon_path + 'pwm1_enable' pwm_file = v.hwmon_path + 'pwm1' old_pwm = int(v.get_params_value('fan_pwm')) new_pwm_str = devices[uuid]['fan_pwm_ent'].get_text() if re.fullmatch(r'^[-]*[0-9]+', new_pwm_str): new_pwm = int(new_pwm_str) else: new_pwm = old_pwm if new_power_cap < 0: print('# Fan PWM Old: %s, Resetting to default' % str(old_pwm), file=fileptr) else: print('# Fan PWM Old: ', str(old_pwm), end='', file=fileptr) print(' New: ', str(new_pwm), end='', file=fileptr) pwm_range = v.get_params_value('fan_pwm_range') print(' Min: ', pwm_range[0], end='', file=fileptr) print(' Max: ', pwm_range[1], end='', file=fileptr) print('', file=fileptr) if new_pwm == old_pwm and env.gut_const.write_delta_only: print('# No changes, skipped', file=fileptr) else: if v.is_valid_fan_pwm(new_pwm): changed += 1 if new_pwm < 0: # reset print('# Resetting fans to Dynamic mode', file=fileptr) print("sudo sh -c \"echo \'2\' > %s\"" % (pwm_enable_file), file=fileptr) else: new_pwm_value = int(255 * new_pwm / 100) print("sudo sh -c \"echo \'1\' > %s\"" % (pwm_enable_file), file=fileptr) print("sudo sh -c \"echo \'%d\' > %s\"" % (new_pwm_value, pwm_file), file=fileptr) else: print('# Invalid parameter values', file=fileptr) device_file = v.card_path + 'pp_od_clk_voltage' commit_needed = False if v.get_params_value('gpu_type') == 1: # Sclk P-states for pk, pv in devices[uuid]['sclk_pstate'].items(): if not pv['gtk_ent_f_obj'].get_text().isnumeric(): print('# Invalid sclk pstate entry: %s' % pv['gtk_ent_f_obj'].get_text(), file=fileptr) print('# Invalid sclk pstate entry: %s' % pv['gtk_ent_f_obj'].get_text()) continue if not pv['gtk_ent_v_obj'].get_text().isnumeric(): print('# Invalid sclk pstate entry: %s' % pv['gtk_ent_v_obj'].get_text(), file=fileptr) print('# Invalid sclk pstate entry: %s' % pv['gtk_ent_v_obj'].get_text()) pstate = [pk, int(pv['gtk_ent_f_obj'].get_text()), int(pv['gtk_ent_v_obj'].get_text())] print('#sclk p-state: %s : %s MHz, %s mV' % (pstate[0], pstate[1], pstate[2]), file=fileptr) if v.is_valid_sclk_pstate(pstate): if v.is_changed_sclk_pstate(pstate) or not env.gut_const.write_delta_only: changed += 1 commit_needed = True print("sudo sh -c \"echo \'s %s %s %s\' > %s\"" % (pstate[0], pstate[1], pstate[2], device_file), file=fileptr) else: print('# Sclk pstate %d unchanged, skipping' % pk, file=fileptr) else: print('# Invalid sclk pstate values', file=fileptr) # Mclk P-states for pk, pv in devices[uuid]['mclk_pstate'].items(): if not pv['gtk_ent_f_obj'].get_text().isnumeric(): print('# Invalid mclk pstate entry: %s' % pv['gtk_ent_f_obj'].get_text(), file=fileptr) print('# Invalid mclk pstate entry: %s' % pv['gtk_ent_f_obj'].get_text()) continue if not pv['gtk_ent_v_obj'].get_text().isnumeric(): print('# Invalid mclk pstate entry: %s' % pv['gtk_ent_v_obj'].get_text(), file=fileptr) print('# Invalid mclk pstate entry: %s' % pv['gtk_ent_v_obj'].get_text()) continue pstate = [pk, int(pv['gtk_ent_f_obj'].get_text()), int(pv['gtk_ent_v_obj'].get_text())] print('#mclk p-state: %s : %s MHz, %s mV' % (pstate[0], pstate[1], pstate[2]), file=fileptr) if v.is_valid_mclk_pstate(pstate): if v.is_changed_mclk_pstate(pstate) or not env.gut_const.write_delta_only: changed += 1 commit_needed = True print("sudo sh -c \"echo \'m %s %s %s\' > %s\"" % (pstate[0], pstate[1], pstate[2], device_file), file=fileptr) else: print('# Mclk pstate %d unchanged, skipping' % pk, file=fileptr) else: print('# Invalid mclk pstate values', file=fileptr) elif v.get_params_value('gpu_type') == 2: # Sclk Curve End Points for pk, pv in devices[uuid]['sclk_pstate'].items(): if not pv['gtk_ent_f_obj'].get_text().isnumeric(): print('# Invalid sclk curve end point entry: %s' % pv['gtk_ent_f_obj'].get_text(), file=fileptr) print('# Invalid sclk curve end point entry: %s' % pv['gtk_ent_f_obj'].get_text()) continue pstate = [pk, int(pv['gtk_ent_f_obj'].get_text()), '-'] print('#sclk curve end point: %s : %s MHz' % (pstate[0], pstate[1]), file=fileptr) if v.is_valid_sclk_pstate(pstate): if v.is_changed_sclk_pstate(pstate) or not env.gut_const.write_delta_only: changed += 1 commit_needed = True print("sudo sh -c \"echo \'s %s %s\' > %s\"" % (pstate[0], pstate[1], device_file), file=fileptr) else: print('# Sclk curve point %d unchanged, skipping' % pk, file=fileptr) else: print('# Invalid sclk curve end point values', file=fileptr) # Mclk Curve End Points for pk, pv in devices[uuid]['mclk_pstate'].items(): if not pv['gtk_ent_f_obj'].get_text().isnumeric(): print('# Invalid mclk curve end point entry: %s' % pv['gtk_ent_f_obj'].get_text(), file=fileptr) print('# Invalid mclk curve end point entry: %s' % pv['gtk_ent_f_obj'].get_text()) continue pstate = [pk, int(pv['gtk_ent_f_obj'].get_text()), '-'] print('#mclk curve end point: %s : %s MHz' % (pstate[0], pstate[1]), file=fileptr) if v.is_valid_mclk_pstate(pstate): if v.is_changed_mclk_pstate(pstate) or not env.gut_const.write_delta_only: changed += 1 commit_needed = True print("sudo sh -c \"echo \'m %s %s\' > %s\"" % (pstate[0], pstate[1], device_file), file=fileptr) else: print('# Mclk curve point %d unchanged, skipping' % pk, file=fileptr) else: print('# Invalid mclk curve end point values', file=fileptr) # VDDC Curve Points for pk, pv in devices[uuid]['vddc_curve_pt'].items(): if not pv['gtk_ent_f_obj'].get_text().isnumeric(): print('# Invalid vddc curve point entry: %s' % pv['gtk_ent_f_obj'].get_text(), file=fileptr) print('# Invalid vddc curve point entry: %s' % pv['gtk_ent_f_obj'].get_text()) continue if not pv['gtk_ent_v_obj'].get_text().isnumeric(): print('# Invalid vddc curve point entry: %s' % pv['gtk_ent_v_obj'].get_text(), file=fileptr) print('# Invalid vddc curve point entry: %s' % pv['gtk_ent_v_obj'].get_text()) continue curve_pts = [pk, int(pv['gtk_ent_f_obj'].get_text()), int(pv['gtk_ent_v_obj'].get_text())] print('#vddc curve point: %s : %s MHz, %s mV' % (curve_pts[0], curve_pts[1], curve_pts[2]), file=fileptr) if v.is_valid_vddc_curve_pts(curve_pts): if v.is_changed_vddc_curve_pt(curve_pts) or not env.gut_const.write_delta_only: changed += 1 commit_needed = True print("sudo sh -c \"echo \'vc %s %s %s\' > %s\"" % (curve_pts[0], curve_pts[1], curve_pts[2], device_file), file=fileptr) else: print('# Vddc curve point %d unchanged, skipping' % pk, file=fileptr) else: print('# Invalid vddc curve point values', file=fileptr) # PPM ppm_level_file = v.card_path + 'power_dpm_force_performance_level' ppm_mode_file = v.card_path + 'pp_power_profile_mode' tree_iter = devices[uuid]['ppm_modes_combo'].get_active_iter() if tree_iter is not None: model = devices[uuid]['ppm_modes_combo'].get_model() row_id, name = model[tree_iter][:2] selected_mode = devices[uuid]['new_ppm'][0] print('# Selected: ID=%d, name=%s' % (devices[uuid]['new_ppm'][0], devices[uuid]['new_ppm'][1]), file=fileptr) if v.get_current_ppm_mode()[0] != devices[uuid]['new_ppm'][0] or not env.gut_const.write_delta_only: changed += 1 if (devices[uuid]['new_ppm'][1]).lower() == 'auto': print("sudo sh -c \"echo \'auto\' > %s\"" % ppm_level_file, file=fileptr) else: print("sudo sh -c \"echo \'manual\' > %s\"" % ppm_level_file, file=fileptr) print("sudo sh -c \"echo \'%d\' > %s\"" % (devices[uuid]['new_ppm'][0], ppm_mode_file), file=fileptr) else: print('# PPM mode %s unchanged, skipping' % devices[uuid]['new_ppm'][1], file=fileptr) # Commit changes device_file = v.card_path + 'pp_od_clk_voltage' if commit_needed: changed += 1 print("sudo sh -c \"echo \'c\' > %s\"" % (device_file), file=fileptr) else: print('# No clock changes made, commit skipped', file=fileptr) if v.get_params_value('gpu_type') == 1: # Writes of pstate Masks must come after commit of pstate changes # Sclk Mask sclk_mask_file = v.card_path + 'pp_dpm_sclk' old_sclk_mask = v.get_pstate_list_str('SCLK').replace(',', ' ') new_sclk_mask = devices[uuid]['sclk_pst_mask_ent'].get_text().replace(',', ' ').strip() print('# Sclk P-State Mask Default: ', old_sclk_mask, end='', file=fileptr) print(' New: ', new_sclk_mask, file=fileptr) if new_sclk_mask == old_sclk_mask and env.gut_const.write_delta_only: print('# No changes, skipped', file=fileptr) else: if v.is_valid_pstate_list_str(new_sclk_mask, 'SCLK'): changed += 1 if new_sclk_mask == '': # reset print('# Resetting SCLK Mask to default', file=fileptr) print("sudo sh -c \"echo \'%s\' > %s\"" % (old_sclk_mask, sclk_mask_file), file=fileptr) else: print("sudo sh -c \"echo \'%s\' > %s\"" % (new_sclk_mask, sclk_mask_file), file=fileptr) else: print('# Invalid parameter values', file=fileptr) # Mclk Mask mclk_mask_file = v.card_path + 'pp_dpm_mclk' old_mclk_mask = v.get_pstate_list_str('MCLK').replace(',', ' ') new_mclk_mask = devices[uuid]['mclk_pst_mask_ent'].get_text().replace(',', ' ').strip() print('# Mclk P-State Mask Default: ', old_mclk_mask, end='', file=fileptr) print(' New: ', new_mclk_mask, file=fileptr) if new_mclk_mask == old_mclk_mask and env.gut_const.write_delta_only: print('# No changes, skipped', file=fileptr) else: if v.is_valid_pstate_list_str(new_mclk_mask, 'MCLK'): changed += 1 if new_mclk_mask == '': # reset print('# Resetting MCLK Mask to default', file=fileptr) print("sudo sh -c \"echo \'%s\' > %s\"" % (old_mclk_mask, mclk_mask_file), file=fileptr) else: print("sudo sh -c \"echo \'%s\' > %s\"" % (new_mclk_mask, mclk_mask_file), file=fileptr) else: print('# Invalid parameter values', file=fileptr) # Close file and Set permissions and Execute it --execute_pac fileptr.close() os.chmod(out_filename, 0o744) print('Batch file completed: %s' % out_filename) if env.gut_const.execute_pac: # Execute bash file print('Writing %d changes to GPU %s' % (changed, v.card_path)) cmd = subprocess.Popen(out_filename, shell=True) cmd.wait() print('PAC execution complete.') if refresh: # dismiss execute_pac message time.sleep(0.5) if changed: message = ('Write of ' + str(changed) + ' PAC commands to card complete.\nConfirm changes with amdgpu-monitor.') else: message = 'No PAC commands to write to card.\nNo changes specified.' self.update_message(devices, message, 'yellow') if refresh: self.refresh_PAC(gpu_list, devices) os.remove(out_filename) else: if refresh: # dismiss execute_pac message if changed: message = ('Write of ' + str(changed) + ' PAC commands to bash file complete.\nManually run bash file with sudo to execute changes.') else: message = 'No PAC commands to write bash file.\nNo changes specified.' self.update_message(devices, message, 'yellow') print('Execute to write changes to GPU %s' % v.card_path) print('') return changed def reset_all_cards(self, parent, gpu_list, devices, uuid): # Write start message if env.gut_const.execute_pac: message = 'Using the --execute_pac option Reset commands will be written to the GPU without confirmation.\nSudo will be used, so you may be prompted for credentials in the window where amdgpu-pac was executed from.' else: message = 'Writing reset commands to bash file.\n' self.update_message(devices, message, 'red') # reset each card for gk in gpu_list.list.keys(): self.reset_card(parent, gpu_list, devices, gk, refresh=False) # Write finish message if env.gut_const.execute_pac: message = 'Write reset commands to card complete.\nConfirm changes with amdgpu-monitor.' else: message = 'Write reset commands to bash file complete.\nRun bash file with sudo to execute changes.' self.update_message(devices, message, 'yellow') self.refresh_all_cards(parent, gpu_list, devices, uuid) return def reset_card(self, parent, gpu_list, devices, uuid, refresh=True): if refresh: # Write message if env.gut_const.execute_pac: message = 'Using the --execute_pac option Reset commands will be written to the GPU without confirmation.\nSudo will be used, so you may be prompted for credentials in the window where amdgpu-pac was executed from.' else: message = 'Writing reset commands to bash file.\n' self.update_message(devices, message, 'red') # specify output batch file name out_filename = os.getcwd() + '/' + 'pac_resetter_' + str(uuid4().hex) + '.sh' fileptr = open(out_filename, 'x') # output header print('#!/bin/sh', file=fileptr) print('###########################################################################', file=fileptr) print('## amdgpu-pac generated script to modify GPU configuration/settings', file=fileptr) print('###########################################################################', file=fileptr) print('', file=fileptr) print('###########################################################################', file=fileptr) print('## WARNING - Do not execute this script without completely', file=fileptr) print('## understanding appropriate value to write to your specific GPUs', file=fileptr) print('###########################################################################', file=fileptr) print('#', file=fileptr) print('# Copyright (C) 2019 RueiKe', file=fileptr) print('#', file=fileptr) print('# This program is free software: you can redistribute it and/or modify', file=fileptr) print('# it under the terms of the GNU General Public License as published by', file=fileptr) print('# the Free Software Foundation, either version 3 of the License, or', file=fileptr) print('# (at your option) any later version.', file=fileptr) print('#', file=fileptr) print('# This program is distributed in the hope that it will be useful,', file=fileptr) print('# but WITHOUT ANY WARRANTY; without even the implied warranty of', file=fileptr) print('# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the', file=fileptr) print('# GNU General Public License for more details.', file=fileptr) print('#', file=fileptr) print('# You should have received a copy of the GNU General Public License', file=fileptr) print('# along with this program. If not, see .', file=fileptr) print('###########################################################################', file=fileptr) v = gpu_list.list[uuid] print('# ', file=fileptr) print('# Card' + v.card_num + ' ' + v.get_params_value('model'), file=fileptr) print('# ' + v.card_path, file=fileptr) print('# ', file=fileptr) print('set -x', file=fileptr) # Commit changes power_cap_file = v.hwmon_path + 'power1_cap' pwm_enable_file = v.hwmon_path + 'pwm1_enable' device_file = v.card_path + 'pp_od_clk_voltage' ppm_level_file = v.card_path + 'power_dpm_force_performance_level' print("sudo sh -c \"echo \'0\' > %s\"" % power_cap_file, file=fileptr) if env.gut_const.show_fans == True: print("sudo sh -c \"echo \'2\' > %s\"" % (pwm_enable_file), file=fileptr) print("sudo sh -c \"echo \'auto\' > %s\"" % ppm_level_file, file=fileptr) print("sudo sh -c \"echo \'r\' > %s\"" % (device_file), file=fileptr) print("sudo sh -c \"echo \'c\' > %s\"" % (device_file), file=fileptr) # No need to reset clk pstate masks as commit to pp_od_clk_voltage will reset # Close file and Set permissions and Execute it --execute_pac fileptr.close() os.chmod(out_filename, 0o744) print('Batch file completed: %s' % out_filename) if env.gut_const.execute_pac: print('Writing changes to GPU %s' % v.card_path) cmd = subprocess.Popen(out_filename, shell=True) cmd.wait() print('') if refresh: # dismiss execute_pac message message = 'Write reset commands to card complete.\nConfirm changes with amdgpu-monitor.' self.update_message(devices, message, 'yellow') self.refresh_PAC(gpu_list, devices) os.remove(out_filename) else: print('Execute to write changes to GPU %s' % v.card_path) print('') if refresh: # dismiss execute_pac message message = 'Write reset commands to bash file complete.\nRun bash file with sudo to execute changes.' self.update_message(devices, message, 'yellow') return def ppm_select(self, device): tree_iter = device['ppm_modes_combo'].get_active_iter() if tree_iter is not None: model = device['ppm_modes_combo'].get_model() row_id, name = model[tree_iter][:2] device['new_ppm'] = [row_id, name] return def main(): parser = argparse.ArgumentParser() parser.add_argument('--about', help='README', action='store_true', default=False) parser.add_argument('--execute_pac', help='execute pac bash script without review', action='store_true', default=False) parser.add_argument('--no_fan', help='do not include fan setting options', action='store_true', default=False) parser.add_argument('--force_write', help='write all parameters, even if unchanged', action='store_true', default=False) parser.add_argument('-d', '--debug', help='Debug output', action='store_true', default=False) args = parser.parse_args() # About me if args.about: print(__doc__) print('Author: ', __author__) print('Copyright: ', __copyright__) print('Credits: ', __credits__) print('License: ', __license__) print('Version: ', __version__) print('Maintainer: ', __maintainer__) print('Status: ', __status__) sys.exit(0) env.gut_const.DEBUG = args.debug if args.no_fan: env.gut_const.show_fans = False if args.force_write: env.gut_const.write_delta_only = False else: env.gut_const.write_delta_only = True env.gut_const.execute_pac = args.execute_pac if env.gut_const.check_env() < 0: print('Error in environment. Exiting...') sys.exit(-1) # Check value of AMD Feature mask try: featuremask = env.gut_const.read_amdfeaturemask() except FileNotFoundError: print('Cannot read ppfeaturemask. Exiting...') sys.exit(-1) if featuremask == int(0xffff7fff) or featuremask == int(0xffffffff) or featuremask == int(0xfffd7fff): print('AMD Wattman features enabled: %s' % hex(featuremask)) else: print('AMD Wattman features not enabled: %s, See README file.' % hex(featuremask)) sys.exit(-1) env.gut_const.get_amd_driver_version() # Get list of AMD GPUs and get basic non-driver details gpu_list = GPU.GPU_LIST() gpu_list.get_gpu_list() gpu_list.read_allgpu_pci_info() # Check list of AMD GPUs num_amd_gpus = gpu_list.num_gpus() num_com_gpus = gpu_list.num_compatible_gpus() if num_amd_gpus == 0: print('No AMD GPUs detected, exiting...') sys.exit(-1) else: if num_com_gpus == 0: print('None are compatible, exiting...') sys.exit(-1) print(f'{num_amd_gpus} AMD GPUs detected, {num_com_gpus} may be compatible, checking...') # Read data static driver information for GPUs gpu_list.read_gpu_driver_info() gpu_list.read_gpu_sensor_static_data() # Read dynamic sensor and state data from GPUs gpu_list.read_gpu_sensor_data() gpu_list.read_gpu_state_data() # Read pstate and ppm table data gpu_list.read_gpu_pstates() gpu_list.read_gpu_ppm_table() # Check number of compatible GPUs again num_com_gpus = gpu_list.num_compatible_gpus() if num_com_gpus == 0: print('None are compatible, exiting...') sys.exit(-1) else: print(f'{num_com_gpus} are confirmed compatible.') print('') # Generate a new list of only compatible GPUs com_gpu_list = gpu_list.list_compatible_gpus() # Display Gtk style Monitor devices = {} global gmonitor gmonitor = PACWindow(com_gpu_list, devices) gmonitor.connect('delete-event', Gtk.main_quit) gmonitor.show_all() Gtk.main() if __name__ == '__main__': main() amdgpu-utils-2.6.0/amdgpu-pciid000077500000000000000000000106471354600334600164370ustar00rootroot00000000000000#!/usr/bin/env python3 """ amdgpu-pciid - Manages the local pci id lookup table This utility will display the version of the current pci.ids data extract in use. With the *--download* option, the latest pci.ids file from https://pci-ids.ucw.cz/ will be downloaded. With the *--install* option, the latest pci.ids will be downloaded and filtered for AMD specific data and written to the file used by amdgpu-utils to decode device names from the driver provided device id. The *--force* option can be used to update this file even if there is no change in version. If your GPU model is missing from the pci.ids file, you can use the device id of your card found with *amdgpu-ls* and make a request for the addition on the pci.ids website. Copyright (C) 2019 RueiKe This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . """ __author__ = 'RueiKe' __copyright__ = 'Copyright (C) 2019 RueiKe' __credits__ = [''] __license__ = 'GNU General Public License' __program_name__ = 'amdgpu-pciid' __version__ = 'v2.6.0' __maintainer__ = 'RueiKe' __status__ = 'Stable Release' import argparse import os import sys from GPUmodules import PCImodule as PCI from GPUmodules import env from pathlib import Path def main(): parser = argparse.ArgumentParser() parser.add_argument('--about', help='README', action='store_true', default=False) parser.add_argument('--download', help='download pci decode table from https://pci-ids.ucw.cz/v2.2/pci.ids', action='store_true', default=False) parser.add_argument('--install', help='download, parse amd entries, and install a new decode file', action='store_true', default=False) parser.add_argument('--force', help='force install of new pci.ids data even if revision is unchanged', action='store_true', default=False) parser.add_argument('-d', '--debug', help='Debug output', action='store_true', default=False) args = parser.parse_args() # About me if args.about: print(__doc__) print('Author: ', __author__) print('Copyright: ', __copyright__) print('Credits: ', __credits__) print('License: ', __license__) print('Version: ', __version__) print('Maintainer: ', __maintainer__) print('Status: ', __status__) sys.exit(0) env.gut_const.PATH = os.path.dirname(str(Path(__file__).resolve())) env.gut_const.DEBUG = args.debug if env.gut_const.check_env() < 0: print('Error in environment. Exiting...') sys.exit(-1) pciid = PCI.PCI_ID() # display info about pci.ids if not args.download and not args.install: original_amd_file = os.path.join(env.gut_const.PATH, 'GPUmodules', pciid.amdgpu_utils_file) original_file_version = pciid.get_pciid_version() print('Current pci.ids version %s : %s' % (original_file_version, original_amd_file)) sys.exit(0) if args.download or args.install: pciid_filename_new = pciid.download_pciid() print('Download complete: %s' % pciid_filename_new) new_file_version = pciid.get_pciid_version(pciid_filename_new) print(' Download %s : %s' % (new_file_version, pciid_filename_new)) if args.install: original_amd_file = os.path.join(env.gut_const.PATH, 'GPUmodules', pciid.amdgpu_utils_file) original_file_version = pciid.get_pciid_version() print(' Original %s : %s' % (original_file_version, original_amd_file)) if original_file_version == new_file_version and not args.force: print('No updates, skipping install') else: pciid.update_pci_id(pciid_filename_new) print('Completed update to %s' % new_file_version) # remove downloaded file os.remove(pciid_filename_new) sys.exit(0) if __name__ == '__main__': main() amdgpu-utils-2.6.0/amdgpu-plot000077500000000000000000001052711354600334600163230ustar00rootroot00000000000000#!/usr/bin/env python3 """ amdgpu-plot - Plot GPU parameter curves A utility to continuously plot the trend of critical GPU parameters for all compatible AMD GPUs. The *--sleep N* can be used to specify the update interval. The *amdgpu-plot* utility has 2 modes of operation. The default mode is to read the GPU driver details directly, which is useful as a standalone utility. The *--stdin* option causes *amdgpu-plot* to read GPU data from stdin. This is how *amdgpu-monitor* produces the plot and can also be used to pipe your own data into the process. The *--simlog* option can be used with the *--stdin* when a monitor log file is piped as stdin. This is useful for troubleshooting and can be used to display saved log results. The *--ltz* option results in the use of local time instead of UTC. If you plan to run both *amdgpu-plot* and *amdgpu-monitor*, then the *--plot* option of the *amdgpu-monitor* utility should be used instead of both utilities in order reduce data reads by a factor of 2. Copyright (C) 2019 RueiKe This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . """ __author__ = 'RueiKe' __copyright__ = 'Copyright (C) 2019 RueiKe' __credits__ = ['Craig Echt - Testing, Debug, Verification, and Documentation'] __license__ = 'GNU General Public License' __program_name__ = 'amdgpu-plot' __version__ = 'v2.6.0' __maintainer__ = 'RueiKe' __status__ = 'Stable Release' import sys import gc as garbcollect import argparse import re import threading import os import time from pathlib import Path import numpy as np try: from matplotlib.ticker import AutoLocator from matplotlib.backends.backend_gtk3cairo import FigureCanvasGTK3Cairo as FigureCanvas from matplotlib.figure import Figure import matplotlib.pyplot as plt #import matplotlib.dates as mdates except ModuleNotFoundError as error: print('matplotlib import error: {}'.format(error)) print('matplotlib is required for %s', __program_name__) print('Use \'sudo apt-get install python3-matplotlib\' to install') sys.exit(0) try: import pandas as pd except ModuleNotFoundError as error: print('Pandas import error: {}'.format(error)) print('Pandas is required for %s', __program_name__) print('Install pip3 if needed: \'sudo apt install python3-pip\'') print('Then pip install pandas: \'pip3 install pandas\'') sys.exit(0) from pandas.plotting import register_matplotlib_converters register_matplotlib_converters() try: import gi except ModuleNotFoundError as error: print('gi import error: {}'.format(error)) print('gi is required for %s', __program_name__) print(' In a venv, first install vext: pip install --no-cache-dir vext') print(' Then install vext.gi: pip install --no-cache-dir vext.gi') sys.exit(0) gi.require_version('Gtk', '3.0') from gi.repository import GLib, Gtk, Gdk from GPUmodules import GPUmodule as GPU from GPUmodules import env # SEMAPHORE ############ pd_sem = threading.Semaphore() ######################## def hex_to_rgba(value): # Code copied from Stack Overflow value = value.lstrip('#') if len(value) == 3: value = ''.join([v*2 for v in list(value)]) (r1, g1, b1, a1) = tuple(int(value[i:i+2], 16) for i in range(0, 6, 2))+(1,) (r1, g1, b1, a1) = (r1/255.00000, g1/255.00000, b1/255.00000, a1) return r1, g1, b1, a1 def get_stack_size(): """Get stack size for caller's frame. Code copied from Stack Overflow """ size = 2 # current frame and caller's frame always exist while True: try: sys._getframe(size) size += 1 except ValueError: return size - 1 # subtract current frame class PlotData: def __init__(self): self.df = pd.DataFrame() self.gui_comp = None self.gui_ready = False self.length = 200 self.quit = False self.writer = False self.reader = False self.consec_writer = 0 self.consec_reader = 0 self.gpu_list = '' self.num_gpus = 1 self.com_gpu_list = GPU.GPU_LIST() def set_gpus(self): self.num_gpus = self.df['Card#'].nunique() self.gpu_list = self.df['Card#'].unique() def get_plot_data(self): # get deep copy of plot data df # This may have contention issues # SEMAPHORE ############ pd_sem.acquire() ######################## ndf = self.df.copy() # SEMAPHORE ############ pd_sem.release() ######################## return ndf def kill_thread(self): self.reader = False self.quit = True print('Stopping reader thread') time.sleep(0.2) class GuiComponents: def __init__(self, plot_data): plot_data.gui_comp = self self.ready = False self.gpu_list = plot_data.gpu_list self.num_gpus = plot_data.num_gpus self.gui_components = {} self.gpu_color = {} self.colors = {'plotface': '#404040', 'figface': '#909090', 'sclk_f': '#BED661', 'mclk_f': '#89E894', 'loading': '#1E90FF', 'power': '#E12B06', 'power_cap': '#800000', 'vddgfx': '#778899', 'temp': '#E0E0E0'} self.font_colors = {'plotface': '#000000', 'figface': '#000000', 'sclk_f': '#000000', 'mclk_f': '#000000', 'loading': '#FFFFFF', 'power': '#FFFFFF', 'power_cap': '#FFFFFF', 'vddgfx': '#000000', 'temp': '#000000'} gpu_color_list = ['#B52735', '#EBB035', '#06A2CB', '#218559', '#D0C6B1', '#E18A07', '#336688', '#7C821E'] plot_item_list = ['loading', 'power', 'power_cap', 'temp', 'vddgfx', 'sclk_f', 'mclk_f'] self.plot_items = {'loading': True, 'power': True, 'power_cap': True, 'temp': True, 'vddgfx': True,'sclk_f': True, 'mclk_f': True} self.gui_components['info_bar'] = {} self.gui_components['legend'] = {} self.gui_components['legend']['buttons'] = {} self.gui_components['legend']['plot_items'] = {} for plotitem in plot_item_list: self.gui_components['legend']['plot_items'][plotitem] = True self.gui_components['sclk_pstate_status'] = {} self.gui_components['sclk_pstate_status']['df_name'] = 'sclk_ps' self.gui_components['mclk_pstate_status'] = {} self.gui_components['mclk_pstate_status']['df_name'] = 'mclk_ps' self.gui_components['temp_status'] = {} self.gui_components['temp_status']['df_name'] = 'temp' self.gui_components['card_plots'] = {} for i, gpu in enumerate(self.gpu_list): self.gui_components['card_plots'][gpu] = {} self.gui_components['card_plots'][gpu]['color'] = gpu_color_list[i] self.gpu_color[gpu] = gpu_color_list[i] return def set_ready(self, mode): self.ready = mode def is_ready(self): return self.ready class GPUPlotWindow(Gtk.Window): def __init__(self, gc, plot_data): box_spacing_val = 5 num_bar_plots = 3 if gc.num_gpus > 4: def_gp_y_size = 150 def_bp_y_size = 200 elif gc.num_gpus == 4: def_gp_y_size = 200 def_bp_y_size = 200 else: def_gp_y_size = 250 def_bp_y_size = 250 def_gp_x_size = 600 def_bp_x_size = 250 def_lab_y_size = 28 if gc.num_gpus > num_bar_plots: tot_y_size = gc.num_gpus * (def_gp_y_size + def_lab_y_size) gp_y_size = def_gp_y_size bp_y_size = (tot_y_size - (num_bar_plots * def_lab_y_size))/num_bar_plots elif gc.num_gpus < num_bar_plots: tot_y_size = num_bar_plots * (def_bp_y_size + def_lab_y_size) bp_y_size = def_bp_y_size gp_y_size = (tot_y_size - (gc.num_gpus * def_lab_y_size))/gc.num_gpus else: gp_y_size = def_gp_y_size bp_y_size = def_bp_y_size Gtk.Window.__init__(self, title='amdgpu-plot') self.set_border_width(1) icon_file = os.path.join(env.gut_const.PATH, 'icons', 'amdgpu-plot.icon.png') if os.path.isfile(icon_file): self.set_icon_from_file(icon_file) grid = Gtk.Grid() grid.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(0.7, 0.7, 0.7, 1)) self.add(grid) # Get deep copy of current df ldf = plot_data.get_plot_data() row = 0 # Top Bar - info gc.gui_components['info_bar']['gtk_obj'] = Gtk.Label() gc.gui_components['info_bar']['gtk_obj'].set_markup('' + 'amdgpu-util Plot' + '' + '') gc.gui_components['info_bar']['gtk_obj'].override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0, 1.0, 1.0, 1.0)) gc.gui_components['info_bar']['gtk_obj'].set_property('margin-top', 1) gc.gui_components['info_bar']['gtk_obj'].set_property('margin-bottom', 1) gc.gui_components['info_bar']['gtk_obj'].set_property('margin-right', 4) gc.gui_components['info_bar']['gtk_obj'].set_property('margin-left', 4) gc.gui_components['info_bar']['gtk_obj'].set_alignment(0.5, 0.5) lbox = Gtk.Box(spacing=box_spacing_val) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.20, .40, .60, 1.0)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(gc.gui_components['info_bar']['gtk_obj'], True, True, 0) grid.attach(lbox, 1, row, 4, 1) row += 1 # Legend gc.gui_components['legend']['gtk_obj'] = Gtk.Label() gc.gui_components['legend']['gtk_obj'].set_markup('' + 'Plot Items' + '' + '') gc.gui_components['legend']['gtk_obj'].override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0, 1.0, 1.0, 1.0)) gc.gui_components['legend']['gtk_obj'].set_property('margin-top', 1) gc.gui_components['legend']['gtk_obj'].set_property('margin-bottom', 1) gc.gui_components['legend']['gtk_obj'].set_property('margin-right', 4) gc.gui_components['legend']['gtk_obj'].set_property('margin-left', 4) gc.gui_components['legend']['gtk_obj'].set_alignment(0.5, 0.5) lbox = Gtk.Box(spacing=box_spacing_val) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.40, .40, .40, 1.0)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(gc.gui_components['legend']['gtk_obj'], True, True, 0) for k, v in gc.gui_components['legend']['plot_items'].items(): but_color = hex_to_rgba(gc.colors[k]) but_font_color = hex_to_rgba(gc.font_colors[k]) gc.gui_components['legend']['buttons'][k] = Gtk.Button('') for child in gc.gui_components['legend']['buttons'][k].get_children(): child.set_label('' + k + '') child.set_use_markup(True) child.override_color( Gtk.StateFlags.NORMAL, Gdk.RGBA(but_font_color[0], but_font_color[1], but_font_color[2], but_font_color[3])) child.override_background_color( Gtk.StateFlags.NORMAL, Gdk.RGBA(but_color[0], but_color[1], but_color[2], but_color[3])) gc.gui_components['legend']['buttons'][k].override_color( Gtk.StateFlags.NORMAL, Gdk.RGBA(but_font_color[0], but_font_color[1], but_font_color[2], but_font_color[3])) gc.gui_components['legend']['buttons'][k].override_background_color( Gtk.StateFlags.NORMAL, Gdk.RGBA(but_color[0], but_color[1], but_color[2], but_color[3])) gc.gui_components['legend']['buttons'][k].connect('clicked', self.toggle_plot_item, gc, k) gc.gui_components['legend']['buttons'][k].set_property('width-request', 90) gc.gui_components['legend']['buttons'][k].set_property('margin-top', 1) gc.gui_components['legend']['buttons'][k].set_property('margin-bottom', 1) gc.gui_components['legend']['buttons'][k].set_property('margin-right', 1) gc.gui_components['legend']['buttons'][k].set_property('margin-left', 1) lbox.pack_start(gc.gui_components['legend']['buttons'][k], True, True, 0) grid.attach(lbox, 1, row, 4, 1) row += 1 main_last_row = row # Set up bar plots grid_bar = Gtk.Grid() grid_bar.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(0.7, 0.7, 0.7, 1)) grid.attach(grid_bar, 1, main_last_row, 1, 1) brow = 0 fig_num = 0 # plot_top_row = row for v in [gc.gui_components['sclk_pstate_status'], gc.gui_components['mclk_pstate_status'], gc.gui_components['temp_status']]: # Add Bar Plots Titles v['title_obj'] = Gtk.Label() v['title_obj'].set_markup('Card ' + v['df_name'] + '' + '') v['title_obj'].override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0, 1.0, 1.0, 1.0)) v['title_obj'].set_property('margin-top', 1) v['title_obj'].set_property('margin-bottom', 1) v['title_obj'].set_property('margin-right', 4) v['title_obj'].set_property('margin-left', 4) v['title_obj'].set_alignment(0.5, 0.5) lbox = Gtk.Box(spacing=box_spacing_val) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(.20, .40, .60, 1.0)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(v['title_obj'], True, True, 0) grid_bar.attach(lbox, 1, brow, 1, 1) brow += 1 # Add Bar Plots # Set up plot figure and canvas v['figure_num'] = 100 + fig_num fig_num += 1 v['figure'], v['ax1'] = plt.subplots(num=v['figure_num']) v['figure'].set_facecolor(gc.colors['figface']) plt.figure(v['figure_num']) plt.subplots_adjust(left=0.13, right=0.97, top=0.97, bottom=0.1) v['ax1'].set_facecolor(gc.colors['plotface']) if v['df_name'] == 'temp': plt.yticks(np.arange(20, 91, 10)) else: plt.yticks(np.arange(0, 9, 1)) v['canvas'] = FigureCanvas(v['figure']) # a Gtk.DrawingArea v['canvas'].set_size_request(def_bp_x_size, bp_y_size) lbox = Gtk.Box(spacing=box_spacing_val) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(0.5, 0.5, 0.5, 1.0)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(v['canvas'], True, True, 0) grid_bar.attach(lbox, 1, brow, 1, 1) brow += 1 # Set up gpu plots grid_plot = Gtk.Grid() grid_plot.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(0.7, 0.7, 0.7, 1)) grid.attach(grid_plot, 2, main_last_row, 3, 1) prow = 0 # row = plot_top_row for k, v in gc.gui_components['card_plots'].items(): data_val = ldf[ldf['Card#'].isin([k])]['energy'].iloc[-1] model_val = ldf[ldf['Card#'].isin([k])]['model_display'].iloc[-1] # Add GPU Plots Titles v['title_obj'] = Gtk.Label() v['title_obj'].set_markup('Card ' + str(k) + ' ' + str(model_val) + ' Energy: ' + str(data_val) + '' + '') v['title_obj'].override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0, 1.0, 1.0, 1.0)) v['title_obj'].set_property('margin-top', 1) v['title_obj'].set_property('margin-bottom', 1) v['title_obj'].set_property('margin-right', 4) v['title_obj'].set_property('margin-left', 4) v['title_obj'].set_alignment(0.5, 0.5) lbox = Gtk.Box(spacing=box_spacing_val) rgba_col = hex_to_rgba(v['color']) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(rgba_col[0], rgba_col[1], rgba_col[2], rgba_col[3])) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(v['title_obj'], True, True, 0) grid_plot.attach(lbox, 1, prow, 1, 1) prow += 1 # Add GPU Plots # Set up plot figure and canvas v['figure_num'] = 500 + k v['figure'], v['ax1'] = plt.subplots(num=v['figure_num']) v['figure'].set_facecolor(gc.colors['figface']) plt.figure(v['figure_num']) plt.subplots_adjust(left=0.1, right=0.9, top=0.97, bottom=0.03) v['ax1'].set_facecolor(gc.colors['plotface']) v['ax1'].set_xticks([]) v['ax1'].set_xticklabels([]) v['ax1'].set_yticks(np.arange(0, 250, 20)) v['ax1'].tick_params(axis='y', which='major', labelsize=8) v['ax2'] = v['ax1'].twinx() v['ax2'].set_xticks([]) v['ax2'].set_xticklabels([]) v['ax2'].set_yticks(np.arange(500, 1500, 100)) v['ax2'].tick_params(axis='y', which='major', labelsize=8) v['canvas'] = FigureCanvas(v['figure']) # a Gtk.DrawingArea v['canvas'].set_size_request(def_gp_x_size, gp_y_size) lbox = Gtk.Box(spacing=box_spacing_val) lbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(1, 1, 1, 1.0)) lbox.set_property('margin-top', 1) lbox.set_property('margin-bottom', 1) lbox.set_property('margin-right', 1) lbox.set_property('margin-left', 1) lbox.pack_start(v['canvas'], True, True, 0) grid_plot.attach(lbox, 1, prow, 1, 1) prow += 1 def toggle_plot_item(self, parent, gc, k): if gc.plot_items[k]: gc.plot_items[k] = False else: gc.plot_items[k] = True def updateData(gc, plot_data): # SEMAPHORE ########### pd_sem.acquire() ####################### ldf = plot_data.df try: time_val = ldf[ldf['Card#'].isin([plot_data.gpu_list[0]])]['Time'].iloc[-1] gc.gui_components['info_bar']['gtk_obj'].set_markup('Time ' + str(time_val) + '') # Update Bar Plots for v in [gc.gui_components['sclk_pstate_status'], gc.gui_components['mclk_pstate_status'], gc.gui_components['temp_status']]: data_val = [] label_val = [] bar_col = [] # Set Plot Parameters for k in plot_data.gpu_list: l, d = ldf[ldf['Card#'].isin([k])][['Card#', v['df_name']]].iloc[-1] label_val.append(int(l)) data_val.append(float(d)) bar_col.append(gc.gpu_color[l]) ind = np.arange(gc.num_gpus) # the x locations for the groups width = 0.65 # the width of the bars # Do bar plot plt.figure(v['figure_num']) v['ax1'].clear() rects1 = v['ax1'].bar(ind, data_val, width, color=bar_col, tick_label=label_val) if v['df_name'] == 'temp': for a, b in zip(ind, data_val): v['ax1'].text(x=float(a)-(float(width)/1.8), y=0.90*b, s=' '+str(b), fontsize=8) plt.ylim((20, 91)) #v['ax1'].set_ylabel('Temp (C)', color='k') else: data_val = list(map(int, data_val)) for a, b in zip(ind, data_val): if b == 0: y_val = b + width else: y_val = b - width v['ax1'].text(x=a-width/4.0, y=y_val, s=str(b), fontsize=10) plt.ylim((0, 8)) v['canvas'].draw() v['canvas'].flush_events() # Update GPU Plots y1lim_max_val = 10*(ldf.loc[:, ['loading', 'power_cap', 'power', 'temp']].max().max() // 10) + 5 y1lim_min_val = 10*(ldf.loc[:, ['loading', 'power_cap', 'power', 'temp']].min().min() // 10) - 5 y2lim_max_val = 100*(ldf.loc[:, ['vddgfx', 'sclk_f', 'mclk_f']].max().max() // 100) + 300 y2lim_min_val = 100*(ldf.loc[:, ['vddgfx', 'sclk_f', 'mclk_f']].min().min() // 100) - 100 for k, v in gc.gui_components['card_plots'].items(): data_val = ldf[ldf['Card#'].isin([k])]['energy'].iloc[-1] model_val = ldf[ldf['Card#'].isin([k])]['model_display'].iloc[-1] v['title_obj'].set_markup('Card ' + str(k) + ' ' + str(model_val) + ' Energy: ' + str(data_val) + '' + '') # Plot GPUs plt.figure(v['figure_num']) v['ax1'].set_xticklabels([]) v['ax1'].clear() v['ax1'].set_ylabel('Loading/Power/Temp', color='k', fontsize=10) for plot_item in ['loading', 'power_cap', 'power', 'temp']: if gc.plot_items[plot_item]: v['ax1'].plot(ldf[ldf['Card#'].isin([k])]['datetime'], ldf[ldf['Card#'].isin([k])][plot_item], color=gc.colors[plot_item], linewidth=0.5) v['ax1'].text(x=ldf[ldf['Card#'].isin([k])]['datetime'].iloc[-1], y=ldf[ldf['Card#'].isin([k])][plot_item].iloc[-1], s=str(int(ldf[ldf['Card#'].isin([k])][plot_item].iloc[-1])), bbox=dict(boxstyle='round,pad=0.2', facecolor=gc.colors[plot_item]), fontsize=6) v['ax2'].clear() v['ax2'].set_xticklabels([]) v['ax2'].set_ylabel('MHz/mV', color='k', fontsize=10) for plot_item in ['vddgfx', 'sclk_f', 'mclk_f']: if gc.plot_items[plot_item]: v['ax2'].plot(ldf[ldf['Card#'].isin([k])]['datetime'], ldf[ldf['Card#'].isin([k])][plot_item], color=gc.colors[plot_item], linewidth=0.5) v['ax2'].text(x=ldf[ldf['Card#'].isin([k])]['datetime'].iloc[-1], y=ldf[ldf['Card#'].isin([k])][plot_item].iloc[-1], s=str(int(ldf[ldf['Card#'].isin([k])][plot_item].iloc[-1])), bbox=dict(boxstyle='round,pad=0.2', facecolor=gc.colors[plot_item]), fontsize=6) v['ax1'].set_yticks(np.arange(y1lim_min_val, y1lim_max_val, 10)) v['ax2'].set_yticks(np.arange(y2lim_min_val, y2lim_max_val, 100)) v['canvas'].draw() v['canvas'].flush_events() except: print('matplotlib error, stack size is %d' % get_stack_size()) plot_data.kill_thread() # SEMAPHORE ########### pd_sem.release() ####################### def read_from_stdin(refreshtime, plot_data): # this should continuously from from stdin and populate df and call plot/gui update first_update = True header = True sync_add = 0 while not plot_data.quit: if env.gut_const.SIMLOG: time.sleep(refreshtime/4.0) ndf = pd.DataFrame() # Process a set of GPUs at a time skip_update = False read_time = 0.0 for gpu_index in range(0, plot_data.num_gpus + sync_add): tb = env.gut_const.now(env.gut_const.USELTZ) line = sys.stdin.readline() tmp_read_time = (env.gut_const.now(env.gut_const.USELTZ) - tb).total_seconds() if tmp_read_time > read_time: read_time = tmp_read_time if line == '': if env.gut_const.DEBUG: print('Error: Null input line') plot_data.kill_thread() break if header: header_item = list(line.strip().split('|')) header = False continue line = line.strip() line_item = list(line.strip().split('|')) new_line_item = [] for l in line_item: ll = l.strip() if ll.isnumeric(): new_line_item.append(int(ll)) elif re.fullmatch(r'[0-9]+.[0-9]*', ll) or re.fullmatch(r'[0-9]*.[0-9]+', ll): new_line_item.append(float(ll)) elif ll == '' or ll == '-1' or ll == 'NA' or ll is None: new_line_item.append(np.nan) else: new_line_item.append(ll) line_item = tuple(new_line_item) rdf = pd.DataFrame.from_records([line_item], columns=header_item) rdf['datetime'] = pd.to_datetime(rdf['Time']) ndf = pd.concat([ndf, rdf], ignore_index=True) del rdf if ndf['Time'].tail(plot_data.num_gpus).nunique() > 1: sync_add = 1 else: sync_add = 0 if env.gut_const.DEBUG: print(env.gut_const.now(env.gut_const.USELTZ).strftime('%c')) print(ndf) if not env.gut_const.SIMLOG: if read_time < 0.003: skip_update = True if env.gut_const.DEBUG: print('skipping update') # SEMAPHORE ############ pd_sem.acquire() ######################## # Concatenate new data on plot_data dataframe and truncate plot_data.df = pd.concat([plot_data.df, ndf], ignore_index=True) plot_data.df.reset_index(drop=True, inplace=True) # Truncate df in place plot_length = int(len(plot_data.df.index) / plot_data.num_gpus) #print('df length: {}, plot_data.length: {}'.format(plot_length, plot_data.length)) if plot_length > plot_data.length: trun_index = plot_length - plot_data.length plot_data.df.drop(np.arange(0, trun_index), inplace=True) plot_data.df.reset_index(drop=True, inplace=True) # SEMAPHORE ############ pd_sem.release() ######################## del ndf ######################### # Update plots ######################### if skip_update: continue if plot_data.gui_comp is None: continue if plot_data.gui_comp.is_ready(): if first_update: time.sleep(refreshtime) first_update = False GLib.idle_add(updateData, plot_data.gui_comp, plot_data) while Gtk.events_pending(): Gtk.main_iteration_do(True) # SEMAPHORE ############ time.sleep(0.01) pd_sem.acquire() pd_sem.release() ######################## garbcollect.collect() if env.gut_const.DEBUG: print('update stack size: ', get_stack_size()) # Quit print('exit stack size: ', get_stack_size()) sys.exit(0) def read_from_gpus(refreshtime, plot_data): # This should continuously from from gpus and populate df and call plot/gui update first_update = True while not plot_data.quit: ndf = pd.DataFrame() plot_data.com_gpu_list.read_gpu_sensor_data() plot_data.com_gpu_list.read_gpu_state_data() # Process a set of GPUs at a time skip_update = False for k, v in plot_data.com_gpu_list.list.items(): gpu_plot_data = v.get_plot_data(plot_data.com_gpu_list) if env.gut_const.DEBUG: print('gpu_plot_data: ', gpu_plot_data) rdf = pd.DataFrame.from_records([tuple(gpu_plot_data.values())], columns=tuple(gpu_plot_data.keys())) rdf['datetime'] = pd.to_datetime(rdf['Time']) ndf = pd.concat([ndf, rdf], ignore_index=True) del rdf # SEMAPHORE ############ pd_sem.acquire() ######################## # Concatenate new data on plot_data dataframe and truncate plot_data.df = pd.concat([plot_data.df, ndf], ignore_index=True) plot_data.df.reset_index(drop=True, inplace=True) # Truncate df in place plot_length = int(len(plot_data.df.index) / plot_data.num_gpus) #print('df length: {}, plot_data.length: {}'.format(plot_length, plot_data.length)) if plot_length > plot_data.length: trun_index = plot_length - plot_data.length plot_data.df.drop(np.arange(0, trun_index), inplace=True) plot_data.df.reset_index(drop=True, inplace=True) # SEMAPHORE ############ pd_sem.release() ######################## del ndf ######################### # Update plots ######################### if skip_update: continue if plot_data.gui_comp is None: time.sleep(refreshtime) continue if plot_data.gui_comp.is_ready(): if first_update: time.sleep(refreshtime) first_update = False GLib.idle_add(updateData, plot_data.gui_comp, plot_data) while Gtk.events_pending(): Gtk.main_iteration_do(True) # SEMAPHORE ############ time.sleep(0.01) pd_sem.acquire() pd_sem.release() ######################## garbcollect.collect() if env.gut_const.DEBUG: print('update stack size: ', get_stack_size()) time.sleep(refreshtime) # Quit print('exit stack size: ', get_stack_size()) sys.exit(0) def main(): parser = argparse.ArgumentParser() parser.add_argument('--about', help='README', action='store_true', default=False) parser.add_argument('--stdin', help='Read from stdin', action='store_true', default=False) parser.add_argument('--simlog', help='Simulate with piped log file', action='store_true', default=False) parser.add_argument('--ltz', help='Use local time zone instead of UTC', action='store_true', default=False) parser.add_argument('--sleep', help='Number of seconds to sleep between updates', type=int, default=3) parser.add_argument('-d', '--debug', help='Debug output', action='store_true', default=False) args = parser.parse_args() # About me if args.about: print(__doc__) print('Author: ', __author__) print('Copyright: ', __copyright__) print('Credits: ', __credits__) print('License: ', __license__) print('Version: ', __version__) print('Maintainer: ', __maintainer__) print('Status: ', __status__) import matplotlib print('matplotlib version: ', matplotlib.__version__) print('pandas version: ', pd.__version__) print('numpy version: ', np.__version__) sys.exit(0) env.gut_const.PATH = os.path.dirname(str(Path(__file__).resolve())) env.gut_const.DEBUG = args.debug env.gut_const.SIMLOG = args.simlog if args.ltz: env.gut_const.USELTZ = True if env.gut_const.check_env() < 0: print('Error in environment. Exiting...') sys.exit(-1) # Define graph gui and data components plot_data = PlotData() if not args.stdin: # Check value of AMD Feature mask try: featuremask = env.gut_const.read_amdfeaturemask() except FileNotFoundError: print('Cannot read ppfeaturemask. Exiting...') sys.exit(-1) if featuremask == int(0xffff7fff) or featuremask == int(0xffffffff) or featuremask == int(0xfffd7fff): print('AMD Wattman features enabled: %s' % hex(featuremask)) else: print('AMD Wattman features not enabled: %s, See README file.' % hex(featuremask)) sys.exit(-1) env.gut_const.get_amd_driver_version() # Get list of AMD GPUs and get basic non-driver details gpu_list = GPU.GPU_LIST() gpu_list.get_gpu_list() gpu_list.read_allgpu_pci_info() # Check list of AMD GPUs num_amd_gpus = gpu_list.num_gpus() num_com_gpus = gpu_list.num_compatible_gpus() if num_amd_gpus == 0: print('No AMD GPUs detected, exiting...') sys.exit(-1) else: if num_com_gpus == 0: print('None are compatible, exiting...') sys.exit(-1) print(f'{num_amd_gpus} AMD GPUs detected, {num_com_gpus} may be compatible, checking...') # Read data static driver information for GPUs gpu_list.read_gpu_driver_info() gpu_list.read_gpu_sensor_static_data() # Read dynamic sensor and state data from GPUs gpu_list.read_gpu_sensor_data() gpu_list.read_gpu_state_data() # Check number of compatible GPUs again num_com_gpus = gpu_list.num_compatible_gpus() if num_com_gpus == 0: print('None are compatible, exiting...') sys.exit(-1) else: print(f'{num_com_gpus} are confirmed compatible.') print('') # Generate a new list of only compatible GPUs plot_data.com_gpu_list = gpu_list.list_compatible_gpus() plot_data.num_gpus = num_com_gpus # end of if args.stdin == False if args.stdin or args.simlog: readthread = threading.Thread(target=read_from_stdin, daemon=True, args=[args.sleep, plot_data]).start() else: readthread = threading.Thread(target=read_from_gpus, daemon=True, args=[args.sleep, plot_data]).start() print('%s waiting for initial data' % __program_name__, end='', flush=True) while len(plot_data.df.index) < 9: print('.', end='', flush=True) time.sleep(args.sleep/4.0) print('') # After reading initial data, set gpus plot_data.set_gpus() gc = GuiComponents(plot_data) gplot = GPUPlotWindow(gc, plot_data) gplot.connect('delete-event', Gtk.main_quit) gplot.show_all() gc.set_ready(True) Gtk.main() plot_data.kill_thread() if __name__ == '__main__': main() amdgpu-utils-2.6.0/docs/000077500000000000000000000000001354600334600150665ustar00rootroot00000000000000amdgpu-utils-2.6.0/docs/Type1vsType2.png000066400000000000000000000460641354600334600201050ustar00rootroot00000000000000PNG  IHDR eeIysRGBgAMA a pHYsodKIDATx^ŕg ,fB!~B!Xh!fB!Ah!fB!Ah!fB!Ah!fB!Ah!fB!Aja/_n-[:.G &KFpRj!B6 HH]nj+>mݲEfBjѳ!>L2 X5yO!ԕ1 0l{Jb||.#!oY"((S E1{ Ȋ?qY,M0ڻPYxgg!:jysUw8A 1O_-̂&y7x5 SؾYDjPAZY=y(=XW BWC,PB 5LB1O_O E&ywtHo^)`L{څfjA`hh!|zg!vhA&jf!§f@hA&jf!§f@hA&jf!§f@hA&jf!§f@hA&jf!§f@hA&jf!§f@hA&jf!§f@hA&jf!§f@hA&jf!§f@hA&jf!§f@hA&jf!§f@hA&jf!§f@hA&jf!§f@hA&jf!§f@Z5 ӌ*$jsO_O˗e˖%Σ`c]PY,U$)P{:ql>n.[7j.OfY3Y|hh>lݺ.Wt= hPY;,U$)PYQXv|eN;l\j,Y=ZaY+fS= jB (xwvY?IR!f(h?%kBŧvf=le+k*$jb6 ]d4ٕU 4 qVZ[Jfr#~k*h,v$sFg3>}1 D2v`BQ1|AAC= <`.ǑEFᢕ;Oyhb̭.>}0 Y_I:*k*$jb6 >aQ䚝OO'kBŧB(~1sͶޱx^?GU0I hf>3w.T@ B,f?= mLUBnY("-E؍7hSHȺ SnbO#u5 x]G닪`A!IЫP54 V>Y;GbF2sMŷq4 A B N56fe|rᤤzhϭ>}4 1 NxMjr5P}vq b! JRmc .e^HJBէf@ec.GgZ$tBO,S VzOܞ ]U$)PЍ$u'Žou=Q,ğ[}h fg^oAE(䌄N܈?{w; Mn}4 mPvhFd{ eZ{,4\8cߺך4 4 yY(štBuQL5e')w|²v'%YYȃOB,d{ធ:IR$SB-,,f@h⏪`A(#Ia{B|h f! &Ip/[wFP4 4 yY(*$jLRw yo%M@>Y?IR$7iMB@2 ˗/ -\NJl,>:f! &I}=ճ;4 GU0I hzfϧ6&fǿ|Y;ff!>}4 u0uLz^יqT@ s/0+}SpfPUB@>Y8^3y3񿙉 j&6~Ln+s˙獧~ڞYz{\^tr-DP4YQLBǩ=zVI,()<,HQk&E1yErwE./2`t~X澆khD趾~OJjU<50 0 ȸ-hhGP 2 FlOBY]زe"c42wy<{ktz_d~԰IsM/5N9\}fK}Bէf@4 G^+EOEznbOHkԨ~}Q$' 20 0 Ͻ*W90Q 4 V>),LU;5q{7B LxN5/-f\BnY(Y?qӅY@X[f"Hj4'Ysk0 f5% 6?4n&g5D-,ğ[}h kfa>pՃ5 O[ M@FN't Xҡ=xճF#=龟 yEU9IB5$`f/K!Cwdhϭ>}4 M@±W4Sb5ѣ32=wФ&}5j\H](IW8<|%LBէf@mMЈrw7,m4\iApEU)IvB]4\y LD-,ğ[}h f@2w UGU%IvJkxQ{& ]@/C+0Q 4 V>YX:AO%_WUI(zUރSf坯5L²ve&jf!GP 4 ើ@inDUj,^Ӏ$`#3A@nY(*z-IE/h@o2 @n)|r4P`_-s BQ$[peF͒5#m擩n($(LBŧ'MCCC%Tnݺ XBe@TE?'jnhQDI_Ya.^5b3.bEwXIPrk>}=ճ _ *k*5Q(FA1/uN=t2p1/LBŧfPe+k*5Q醆ן~yQ\5lZY3,lpFV2cYW,]WAaa,s;>B7ΨAj n\rXf_8!|jo01=.A5ځfjЀ<> cU;̗SFkv?=lU-LB>}7 1_ Q4A B5:3k&^}v̴࢚'`|YYfYrQQLB>}=aH74ɇ-sPY,PB BpY#&O7__}~\oM덉̫b8LB1O_O,5( tW- >;A zЫvބ1&jf!§f@hA A| _3,gc q`hh!|h fjj)oNfLSsq`hh!|h fjBt ¦,Uq`hh!|h fj0/}b$ WAp80Q 4 q>}4 B@ 5ЀhejZ*1&jf!§f@hAw @/6/^PAp.8c>Y5I1,0: n]51@G{ GP 4 Ԡ􋆃0[0o>;b7.f>;yԜxlt/̉c'C>Y|g]4 Y(jP 5ycɚ~X͂0/4 Y(jPzU RF\b@Bºh8c>Y4`e HtA]eYh㏮1dQ82l%kuBs|h f^01=c_l̃0pϘyfϧAhfN_mf2e&s3;q(Y3hSfafٲeɫ 244(NJ۶ 5(Ҁ֍%kFM~ ka`(AY4Luk&ofj= E@0 HH]nݺ  X` hm,P 0 K׎:*U#fQfh f)z e ,i g9`n~nRR4 멞5 .H0JzYhm,P QpE+G_͛} ÀAU̦ ,S9kЃSeC7 x]G0Jm[fnh| 6pv¤v+ۃ@ @̉)s|*0oN=swRZ>4 髽YH^=PYqc0K.Uи0U5i ^ g\3>}}gӠ enCQ 7ܿ|ybp%kU ۃc;Vżg9>}={m۶&hƍ'|夜eSwjZݶ4 ԠTW]|Fkv[Fwܬ=`O;DZm++Bs| 7 0+mboHne]р׮)~xAR٠׬5̒kGlB`{,|vzLnp]#$zz IZE$w]O#u9{mjPЀ[?oMk0gppa]1hG0{-3uO gG~hWY1@O%ap5(ekIz'ܷ!kօ~3 3{c&o`8cR, 5 uf25`+o~kOY=+,h>z pڡ_Y, 8`>XB ,|v򨙾ۍ w,)9B1O_)fxƁf24`2[h(!BACinOt9 8cR̂s/Ɓf24Q ͡ç~XB l0pCY=+,q{D/B@ J0W< ޛNa]1hY8@G{ WY0 I{h?B4Oˮm{x*w ! 3 s2>a>N>#4 q>}S+V=r,PR[Z BAĈx7(l9IIshh!|J1 128yfjPҀS0 }Nędi>XB b܁Go9+II>hh!|J1 08PIA@ JQ2IL* ! u0 2@F4 q>}~1.4 Ԡ݇Qxss.4Yp2߶A,CU:'ܨ4 ԠtsIg|,m օ5 ~{gR4 q>}.KQ7@@ JtN߱/Y: ! h܁}Shh!|J7 eu;MA@ J'pS'úbkfa@CV8c͂vUufN4 3f{n{`=XB z, 3w㤤shh!|J7 ODQfAOgq{/NPym[f0u׭QXvԖuBAC큌>hh!|J7 U5[@8wm@2.؏ѓʛm*4 Ԡ3SU;A8#6.LúbYHd|Xhh!|J7 ೢj\JzPym[f<У(0_u?Kjօ‚7\`f=B1O_ec0(hס9^c ,^Pym[f<._?(h,]+Y}XB b5 2~FRR4 q>}7.J fǍK.UXrH6 FQ5Gn5 oܼGnp#)$`NMbh ѰȴQh3zμX}g!§tޒ:nCYwbٶB@ J L,p5;\ ºbY8sN&錌BG{ W٘(,4!TlVY%9f.JzzN;N= EbCzw|{bZtQ,CnF#u9 7۶hAi~ `xPXXB 1(Ln[KB1O_f+]l,PLÆ{ߴFa坯ٹϒºb$5~{ۖ+ B1O_fcpgPYZ,PҠ| vBY.4t+I|cO{33=t8ch~ހh Yŧ6,}Mz9eVpY(`Zg pօ"n>vϕ(#II 4 4 y+,` Y(0 ֠7+$* ! &;lL݌ *4 4 y+, lDNI` hwBYki>t;=1hh;In>$C@JB J rL [ɩр֍Km?Z }u/`{bN©=B| 7 ڃ'  ,,Zf?4(`í/~̺H$5ہff!>}$jz(-P>l;щ.Ѐ(qM/uX5$h&o5 Sw~偌>hhWY@EЫ!`"t^cy= 5 䂞vT,ˌYq5;: IKȸmwvYYȃO_ctYF= YcEP 7/](^.ɺA%[J(؁rB|J7 c5{=o}`"\sAwOS B5LLϘ߱Ϛz߷5K첁w^օ@ BV1AQ0eB@͂O"9#Q5Y=0:@P_ W:(P?8dúAH'1}[@F4 4 y+, A)huf0oWW˽ߺ04u!P&SS'hgi<nziKz6&Qy`] I͜2Ƿ-)<nRf{Dy:"ha6& O>u!P{Կ(`¥GYYȃO_c0mے%^@XY} 3MƏ'$a]`̹C̑.F1s7YYȃO_fAOKրAW5 OjӬ 532-{snA@N7i4gfxYiU C{\p=XBj5'}O?>sLwoYN@NCs/ ӀS :wGu!io>o/dhN+,, 1YSݠY- Db07&a]a%(ō[K3Q 4 q|'Bb0S@3hzCznބ{^&Y$ 4؉n,fhN+,F w;4 k F p XB_h]0҉MD-,WY:`h04GW=ݏʛbu!]c^z,)Y@w"O_c``8,ĩs'l~hqLXB5`̛`'%%ahNd#Pɘ8bs+>s}4 1>0s§8!|*3 ᮻ< %QVQ {N5l)HXB5O-xl\1Q 4 q|'BnNE 0 Q,uanhGIVZ;E BOpouzIIs8!|J1 128{Dm^ -(KwVYV.wܼ}\n\:7o|1>yhwN跺Q sG?4Sw~M|#(&jf!DR̂^:A̽P½) nVYNҵ+ūFC^W}]=T!FơU8!|J1 0e$y`9]Pc% BuУ7.Z< qA?E^pzt{c|NATD;0Q 4 q|'BU: ܞfX z[f: 4 WHT!zUL/ j&jf!D7 n7Ftmvbɵ#0yݿ5i5 GnyG2c0ڍ髅YpqOCgzҰ)~bV觺k Y;§vf&E֘ ЬUh0qsъfFkvǒG?E^Ѱ|卋 LB߉>}2 ګ=zpdKY,] t|9͠o;fMzf=@w"O_ϛ$|){4p@ BHvebahNinBPY(GC+F8 5PLB߉>}4 BPVqhj?rm0Q 4 q|'B,BpeCF8 5s&}ޜoIIu0Q 4 q|'B,BqpK+o~et:{hO;ܺ~?)&jf!e>Y(FkxԹ$u9fxöIa0Q 4 q|/C,B` \*u8EЯ0EvMⶤ{0Q 4 q|/C,Bgp:1 ׏CQv(oDq8!|h f} EǡHIs5rp{]b8LB1O_m8" { \PBap ^7\#FaW2a0=]"?Eg`rČO_m,t= {'W:\*Y1nK0oh\1سG{ f +g;p3lpG,,ԀI0¦q=an֜ޘ7^Ia1p8cZ0n/sAW뻧)Zf(`FL\1nst .1&jf!§65|]S t͂h#qH Jb9&V 0'oˆy"D-,Cfc ,o.0 tpAXan֜o2H{ϛS|vۑ!D-,C,Hom~%%CۥA5O9Lm3黶lb8LB1OBY97g{(TDR־rffIi5p8c>W1 z4OIJC m5*6L~nT41@G{ GP j(_Kvn?k@ԭK ~+)ꂉZY=Y(~4 h F/8t}4 f=ZGnA(RC,LnBbX@G{ GP u7 E@ozPPLLpdօD-,C,H6Ct11j:0uюQpunf'%[,u!0Q 4 q>}4 RW+pC] i8m9{pLoQ ZY=Y(:̝FaCr+1jZp7Gמ7 >g/hF.&jf!§f@f>egeQ,yn5C!Y3 &SI z 8cZ[e˖5bxx8)1fhhhA[ԉfqsٺQs|M(F.bh7 4`ko&N>qY;u!0Q 4 q>}=o` $˗ZB@VUtʪ^K , 8@nԜn>;WBY@G{ f55H2yhV*jУ(0_ 5&`fo 9yNY.&jf!§!`s${e0.X7oyY|"tͮd|nAx{翛ٞ^P@.&jf!§6aܞn^k*h,v$sF1_K"%/n3o{)s;Q]ČO_m,YǦ4&\r㢕;OǒCG gyc۳K"ۃ{h!|z,d%|eIpEUz,|25czFkv?=Mh8+v$}630^Ol@G{ W ^~FBiV*j {zZ5 vSg >ptsꙻ`]1h`hh!|j3I_=iV l"5x k,Gy ! LB1O_m85(hl椽W-j\XB 8c>YU kNoRl .40Q 4 q>}4 B@ J3 z/Y`W ;/٢uXB 8c>Y%KC`rӅim(օ&jf!§f@hA`O'`]1h`hh!|h f5 Hw]x-_~N*! LB1OB,.{Ɯ|G m{0}7y,lB 8c>Y|Ky1Hbί){~{=1h`hh!|h f>xw^|o5&oW-Y`X5LB1OB,cןB`"X8=~?2օ@ @G{ GP 4 g̩).\d &bd|.j8c>YOC.c0Xrv\ &jf!§f@hAܐ@`}lW4^ 5LB1OB,T2AT!A`hh!|h f d>|V*1@B EPD-,CY4˖-[f|||[&[ CCC ʱM,tan^e 0W ǠCAP&jf!§v= 0 ˗/, ua$tvYȯsةGCɌ̀ԭKm+}pf7ZP& ĠZY=髝Yh43 X=.X&h5Xc+G5Sw|- Pf2_ѶqjbD-,C,́v5 zpjh5n`{ 0-WbN/WT8`ZY=髕Y@/Aei2[7ۣO?_̇\k?Yl~gmu.Yd0G, t A{,*aodJ䬻,hyn6C5vA,C, #JVO}cQ'`o4>bol/W̸cq 8 mbh PD-,C,d@`&\s!΃ؖ+7Rھʜ3 5 ĠZY=髅Y!p{ ǬwNYvɛœ@pR"$zOS 8m6FJ! @ 5LB1O_,tn$7~Lnapę}OL~Bc00}7ͩg^vVarAZY=Y(n`X'_77eQarAZY=Y(nM &O]{ f̜X9H P@ @G{ GP Qܚ._drAZY=Y(n㏮ɼzsfKU P@ @G{ GP 2 8q5v&NJ֪&j8c>Y0 M;y= U P@ @G{ GP 4 ?5 ĠZY=Y(jPAZY=Y(jPAZY=Y(jPAZY=Y(jPAZY=Y(jPAZY=Y(jPAZY=Y(jPAZY=y088h-[(mЂvҬhA&jf!§v= 0 ˗/o}2 !p{ \㠠@VYj8cZ=UW^y`0bll,qf!} j@!27 HH.hVN!7 Y=U_ A!26 0 HYL#MrB!_}!B:fB!Ah!fB!Ah!fB!Ah!fB!Ah!fMtJtpcF4Uei%=ۥ{>viVBMl؇҄4@}Beitz\íV;k=|vw?iB*§AQ-"5{륏% e{ô=siʲqq eHSz՘PY,H 菅Ҭҟm/4! ؏(C7m^c_`FwPY,(KJֆլڌ q]> BA!*F٬Ƭ.kYy^g4= hV>:9KPЀr#߬}PY#]OYZ?O+\pڧ JGZ}b|Paާ9Be>4v8Z#>2OhOW h ]aY m[?hxwYsw$kX !N}924>o%k5T"6>k9Be!46]^m>O:Ce> R=Q| #T#&>*Ӡ"ր㳺.7nʪf?*Y _xm[ E< (kf坠 :kxOkV>:9KPЀrE}z >ٲ#T"ۤРAdSu|d%⮓O2$+K2Ycϣ9R7ж#TV4 K߬[xjs?[i iehp{N6u_8|ndm涝P}4YڔgsSGR!4gZcCeeC!h@/FzfyAq6^hKEho,O? چK%]gd%0$]*sIdޤ 4dSNА3w}w,Wt*+B!Y BHB!Y BHB!Y BHB!Y BHB!Y BHB!Y BHB!Y 4eϞ=.w7n|'|,wu&!d!4 }[6g?_7Co bŊd["y'zapWe0,.Xf~[1:;4 YG4Sm6>}ot{~=B f>BkooGfAMxp9t=E_wbt}BY $ Siu$q==, 6Ydk!p]E(:dTia#!94 0Hz]$ސY}"t_it_. RMj`t hfԄBC@H$ $`C,뇌qeؗ$`LC:z >4?!$ !}&R$MtLJ}fAwb-Czv.|F,4 HAP41 ?tk:J$f(G2Mx_].Sn녌iBZf>Bj:P`ff}uxguCfA zQ!Y @z@gM0 ZjD!'f}^#\k]Y dC@)MޱWtB,BJG{ BBxBC@=uJx ֡Y BHB!Y BHB!Y BHB!Y BHB!Y BHB!Y BHB!Y BHB!Y BHom7b0 ܟ,B!B!Y BHB!Y BHc/<-IENDB`amdgpu-utils-2.6.0/docs/USER_GUIDE.md000066400000000000000000000732751354600334600171210ustar00rootroot00000000000000# amdgpu-utils - User Guide A set of utilities for monitoring AMD GPU performance and modifying control settings. ## Current amdgpu-utils Version: 2.6.x - [Getting Started](#getting-started) - [Using amdgpu-ls](#using-amdgpu-ls) - [GPU Type Dependent Behavior](#gpu-type-dependent-behavior) - [Using amdgpu-monitor](#using-amdgpu-monitor) - [Using amdgpu-plot](#using-amdgpu-plot) - [Using amdgpu-pac](#using-amdgpu-pac) - [Using amdgpu-pciid](#using-amdgpu-pciid) - [Optimizing Compute Performance-Power](#optimizing-compute-performance-power) - [Setting GPU Automatically at Startup](#setting-gpu-automatically-at-startup) ## Getting Started First, this set of utilities is written and tested with Python3.6. If you are using and older version, you will likely see syntax errors. Unfortunately, I don't know how to catch a syntax error, so if you have issues, just execute: ``` ./amdgpu-chk ``` and it should display a message indicating any Python or Kernel incompatibilities. You will also notice that there is a minimum version of the Kernel that supports these features, but be warned, I have tested it with only 4.15. There have been amdgpu features implemented over time that span many releases of the kernel, so your experience in using these utilities with older kernels might not be ideal. To use any of these utilities, you must have the *amdgpu* open source driver package installed, either the All-Open stack or Pro stack. You can check with the following command: ``` dpkg -l 'amdgpu*' ``` You also must set your Linux machine to boot with the feature mask set to support the functionality that these tools depend on. Do do this, you must set amdgpu.ppfeaturemask=0xffff7fff. This can be accomplished by adding amdgpu.ppfeaturemask=0xffff7fff to the GRUB_CMDLINE_LINUX_DEFAULT value in /etc/default/grub and executing *sudo update-grub* as in the following example, using *vi* or your favorite command line editor: ``` cd /etc/default sudo vi grub ``` Modify to include the featuremask as follows: ``` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amdgpu.ppfeaturemask=0xffff7fff" ``` After saving, update grub: ``` sudo update-grub ``` and then reboot. It is suggested run amdgpu-util in a virtual environment to avoid dependency issues. If you don't have venv installed with python3, then execute the following (Ubuntu example) ``` sudo apt install -y python3-venv ``` Initialize your amdgpu-utils-env if it is your first time to use it. From the project directory, execute: ``` python3 -m venv amdgpu-utils-env source amdgpu-utils-env/bin/activate pip install --no-cache-dir -r requirements-venv.txt ``` Use the deactivate command to leave the venv. The amdgpu-util package can by run without a venv by pip installing the requirements.txt file: ``` sudo -H pip3 install --no-cache-dir -r requirements.txt ``` ## Using amdgpu-ls After getting your system setup to support amdgpu-utils, it is best to verify functionality by listing your GPU details with the *amdgpu-ls* command. It first attempts to detect the version of amdgpu drivers you have installed and then check compatibility of installed AMD GPUs. Its default behavior is to list basic GPU details for all compatible cards: ```AMD Wattman features enabled: 0xffff7fff amdgpu version: 18.50-725072 2 AMD GPUs detected, 2 may be compatible, checking... 2 are confirmed compatible. UUID: 309abc9c97ea451396334b11199d0680 amdgpu-utils Compatibility: Yes Device ID: {'vendor': '0x1002', 'device': '0x687f', 'subsystem_vendor': '0x1002', 'subsystem_device': '0x0b36'} GPU Frequency/Voltage Control Type: 1 Decoded Device ID: RX Vega64 Card Model: Vega 10 XT [Radeon RX Vega 64] (rev c1) Short Card Model: RX Vega 64 Display Card Model: RX Vega64 Card Number: 1 Card Path: /sys/class/drm/card1/device/ PCIe ID: 44:00.0 Driver: amdgpu vBIOS Version: 113-D0500100-105 HWmon: /sys/class/drm/card1/device/hwmon/hwmon6/ Current Power (W): 118.0 Power Cap (W): 140.0 Power Cap Range (W): [0, 220] Fan Enable: 1 Fan PWM Mode: [1, 'Manual'] Current Fan PWM (%): 0 Current Fan Speed (rpm): 0 Fan Target Speed (rpm): 0 Fan Speed Range (rpm): [400, 4900] Fan PWM Range (%): [0, 100] Current Temp (C): 35.0 Critical Temp (C): 91.0 Current VddGFX (mV): 1037 Vddc Range: ['800mV', '1200mV'] Current Loading (%): 99 Link Speed: 8 GT/s Link Width: 16 Current SCLK P-State: 6 Current SCLK: 1536Mhz SCLK Range: ['852MHz', '2400MHz'] Current MCLK P-State: 3 Current MCLK: 945Mhz MCLK Range: ['167MHz', '1500MHz'] Power Performance Mode: 4-COMPUTE Power Force Performance Level: manual ``` If everything is working fine, you should see no warning or errors. The listing utility also has other command line options: ```usage: amdgpu-ls [-h] [--about] [--pstates] [--ppm] [--clinfo] [--no_fan] [-d] optional arguments: -h, --help show this help message and exit --about README --pstates Output pstate tables instead of GPU details --ppm Output power/performance mode tables instead of GPU details --clinfo Include openCL with card details --no_fan don't include fan setting options -d, --debug Debug output ``` The *--clinfo* option will make a call to clinfo, if it is installed, and list these parameters along with the basic parameters. The benefit of running this in *amdgpu-ls* is that the tool uses the PCIe slot id to associate clinfo results with the appropriate GPU in the listing. The *--pstates* and *--ppm* options will display the P-State definition table and the power performance mode table. ``` ./amdgpu-ls --pstate --ppm AMD Wattman features enabled: 0xffff7fff amdgpu version: 18.50-725072 2 AMD GPUs detected, 2 may be compatible, checking... 2 are confirmed compatible. Card: /sys/class/drm/card1/device/ SCLK: MCLK: 0: 852Mhz 800mV 0: 167Mhz 800mV 1: 991Mhz 900mV 1: 500Mhz 800mV 2: 1084Mhz 950mV 2: 800Mhz 950mV 3: 1138Mhz 1000mV 3: 945Mhz 1100mV 4: 1200Mhz 1050mV 5: 1401Mhz 1100mV 6: 1536Mhz 1150mV 7: 1630Mhz 1200mV Card: /sys/class/drm/card1/device/ Power Performance Mode: manual 0: 3D_FULL_SCREEN 70 60 1 3 1: POWER_SAVING 90 60 0 0 2: VIDEO 70 60 0 0 3: VR 70 90 0 0 4: COMPUTE 30 60 0 6 5: CUSTOM 0 0 0 0 -1: AUTO Auto ``` The amdgpu driver package version: 19.30 has an additional Power mode, as seen with *--ppm* option (showing one of two GPU on a system with the amdgpu All-0pen driver stack installed instead of the amdgpu-pro stack): ``` AMD Wattman features enabled: 0xffff7fff amdgpu version: 19.30-838629 2 AMD GPUs detected, 2 may be compatible, checking... 2 are confirmed compatible. Card: /sys/class/drm/card1/device/ Power Performance Mode: manual 0: BOOTUP_DEFAULT - - - - - - 1: 3D_FULL_SCREEN 0 100 30 0 100 10 2: POWER_SAVING 10 0 30 - - - 3: VIDEO - - - 10 16 31 4: VR 0 11 50 0 100 10 5: COMPUTE 0 5 30 0 100 10 6: CUSTOM - - - - - - -1: AUTO Auto ``` ## GPU Type Dependent Behavior AMD GPU's compatible with the amdgpu open source drivers are of three different types in terms of how frequency/voltage is managed. GPUs of Vega10 and earlier architecture rely on the definition of specific power states to determine the clock frequency and voltage. The GPU will operate only at the specific Frequency/Voltage states that are defined, and move between states based on power, temperature, and loading. These GPU's are of type 1, if the p-state table is readable and type 0 if it is not. For GPUs of Vega20 architecture or newer, it appears that Voltage/Frequency curves are defined with three points on a Voltage vs. Frequency curve. These GPU's are classified as type 2. With the *amdgpu-ls* tool, you can determine if your card is of type 1 or 2. Here are the relevant lines from the output for and RX Vega64 GPU and the Radeon VII: ``` Decoded Device ID: R9 290X DirectCU II GPU Frequency/Voltage Control Type: 0 Decoded Device ID: RX Vega64 GPU Frequency/Voltage Control Type: 1 Decoded Device ID: Radeon VII GPU Frequency/Voltage Control Type: 2 ``` Monitor and Control utilities will differ between the three types. * For type 0, you can monitor the p-state details with monitor utilities, but you can NOT define p-states or set p-state masks. * For type 1, you can monitor the p-state details with monitor utilities, and you can define p-states and set p-state masks. * For Type 2, you can monitor current Clocks frequency and p-states, with latest amdgpu drivers. The SCLK and MCLK curve end points can be controlled, which has the equivalent effect as p-state masking for Type 1 cards. You are also able to modify the three points that define the Vddc-SCLK curve. I have not attempted to OC the card yet, but I assume redefining the 3rd point would be the best approach. For underclocking, lowering the SCLK end point is effective. I don't see a curve defined for memory clock on the Radeon VII, so setting memory clock vs. voltage doesn't seem possible at this time. There also appears to be an inconsistency in the defined voltage ranges for curve points and actual default settings. Below is a plot of what I extracted for the Frequency vs Voltage curves of the RX Vega64 and the Radeon VII. ![](Type1vsType2.png) ## Using amdgpu-monitor By default, *amdgpu-monitor* will display a text based table in the current terminal window that updates every sleep duration, in seconds, as defined by *--sleep N* or 2 seconds by default. If you are using water cooling, you can use the *--no_fans* to remove fan functionality. ``` ┌─────────────┬────────────────┬────────────────┐ │Card # │card1 │card0 │ ├─────────────┼────────────────┼────────────────┤ │Model │RX Vega64 │Vega 20 Radeon │ │Load % │99 │93 │ │Power (W) │60.0 │138.0 │ │Power Cap (W)│140.0 │140.0 │ │Energy (kWh) │1e-06 │3e-06 │ │T (C) │30.0 │47.0 │ │VddGFX (mV) │1037 │1062 │ │Fan Spd (%) │0 │93 │ │Sclk (MHz) │1536Mhz │ │ │Sclk Pstate │6 │-1 │ │Mclk (MHz) │945Mhz │ │ │Mclk Pstate │3 │-1 │ │Perf Mode │4-COMPUTE │4-COMPUTE │ └─────────────┴────────────────┴────────────────┘ ``` The fields are the same as the GUI version of the display, available with the *--gui* option. ![](amdgpu-monitor_scrshot.png) The first row gives the card number for each GPU. This number is the integer used by the driver for each GPU. Most fields are self describing. The Power Cap field is especially useful in managing compute power efficiency, and lowering the cap can result in more level loading and overall lower power usage for little compromise in performance. The Energy field is a derived metric that accumulates GPU energy usage, in kWh, consumed since the monitor started. Note that total card power usage may be more than reported GPU power usage. Energy is calculated as the product of the latest power reading and the elapsed time since the last power reading. You will notice no clock frequencies or valid p-states for the Vega 20 card. This is because of a limitation in the first drivers that supported Vega 20 which have a change in the way frequency vs voltage is managed. In later version of the drivers, actual clock frequency and p-states are readable. The p-state table for Vega 20 is a definition of frequency vs. voltage curves, so setting p-states to control the GPU is no longer relevant, but these concepts are used in reading current states. The Perf Mode field gives the current power performance mode, which may be modified in with *amdgpu-pac*. These modes affect the how frequency and voltage are managed versus loading. This is a very important parameter when managing compute performance. Executing *amdgpu-monitor* with the *--plot* option will display a continuously updating plot of the critical GPU parameters. ![](amdgpu-plot_scrshot.png) Having an *amdgpu-monitor* Gtx window open at startup may be useful if you run GPU compute projects that autostart and you need to quickly confirm that *amdgpu-pac* bash scripts ran as expected at startup (see [Using amdgpu-pac](#using-amdgpu-pac)). You can have *amdgpu-monitor --gui* automatically launch at startup or upon reboot by using the startup utility for your system. In Ubuntu, for example, open *Startup Applications Preferences* app, then in the Preferences window select *Add* and use something like this in the command field: ``` /usr/bin/python3 /home//Desktop/amdgpu-utils/amdgpu-monitor --gui ``` where `/amdgpu-utils` may be a soft link to your current distribution directory. At the moment, this startup approach does not work for the default Terminal text execution of *amdgpu-monitor*. ## Using amdgpu-plot In addition to being called from *amdgpu-monitor* with the *--plot* option, *amdgpu-plot* may be ran as a standalone utility. Just execute *amdgpu-plot --sleep N* and the plot will update at the defined interval. It is not recommended to run both the monitor with an independently executed plot, as it will result in twice as many reads from the driver files. Once the plots are displayed, individual items on the plot can be toggled by selecting the named button on the plot display. The *--stdin* option is used by *amdgpu-monitor --plot* in its execution of *amdgpu-plot*. This option along with *--simlog* option can be used to simulate a plot output using a log file generated by *amdgpu-monitor --log*. I use this feature when troubleshooting problems from other users, but it may also be useful in benchmarking performance. An example of the command line for this is as follows: ``` cat log_monitor_0421_081038.txt | ./amdgpu-plot --stdin --simlog ``` ## Using amdgpu-pac By default, *amdgpu-pac* will open a Gtk based GUI to allow the user to modify GPU performance parameters. I strongly suggest that you completely understand the implications of changing any of the performance settings before you use this utility. As per the terms of the GNU General Public License that covers this project, there is no warranty on the usability of these tools. Any use of this tool is at your own risk. To help you manage the risk in using this tool, two modes are provided to modify GPU parameters. By default, a bash file is created that you can review and execute to implement the desired changes. Here is an example of that file: ``` #!/bin/sh ########################################################################### ## amdgpu-pac generated script to modify GPU configuration/settings ########################################################################### ########################################################################### ## WARNING - Do not execute this script without completely ## understanding appropriate value to write to your specific GPUs ########################################################################### # # Copyright (C) 2019 RueiKe # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ########################################################################### # # Card1 Vega 10 XT [Radeon RX Vega 64] (rev c1) # /sys/class/drm/card1/device/ # set -x # Powercap Old: 140 New: 140 Min: 0 Max: 220 sudo sh -c "echo '140000000' > /sys/class/drm/card1/device/hwmon/hwmon6/power1_cap" #sck p-state: 0 : 852 MHz, 800 mV sudo sh -c "echo 's 0 852 800' > /sys/class/drm/card1/device/pp_od_clk_voltage" #sck p-state: 1 : 991 MHz, 900 mV sudo sh -c "echo 's 1 991 900' > /sys/class/drm/card1/device/pp_od_clk_voltage" #sck p-state: 2 : 1084 MHz, 950 mV sudo sh -c "echo 's 2 1084 950' > /sys/class/drm/card1/device/pp_od_clk_voltage" #sck p-state: 3 : 1138 MHz, 1000 mV sudo sh -c "echo 's 3 1138 1000' > /sys/class/drm/card1/device/pp_od_clk_voltage" #sck p-state: 4 : 1200 MHz, 1050 mV sudo sh -c "echo 's 4 1200 1050' > /sys/class/drm/card1/device/pp_od_clk_voltage" #sck p-state: 5 : 1401 MHz, 1100 mV sudo sh -c "echo 's 5 1401 1100' > /sys/class/drm/card1/device/pp_od_clk_voltage" #sck p-state: 6 : 1530 MHz, 1150 mV sudo sh -c "echo 's 6 1530 1150' > /sys/class/drm/card1/device/pp_od_clk_voltage" #sck p-state: 7 : 1630 MHz, 1200 mV sudo sh -c "echo 's 7 1630 1200' > /sys/class/drm/card1/device/pp_od_clk_voltage" #mck p-state: 0 : 167 MHz, 800 mV sudo sh -c "echo 'm 0 167 800' > /sys/class/drm/card1/device/pp_od_clk_voltage" #mck p-state: 1 : 500 MHz, 800 mV sudo sh -c "echo 'm 1 500 800' > /sys/class/drm/card1/device/pp_od_clk_voltage" #mck p-state: 2 : 800 MHz, 950 mV sudo sh -c "echo 'm 2 800 950' > /sys/class/drm/card1/device/pp_od_clk_voltage" #mck p-state: 3 : 945 MHz, 1100 mV sudo sh -c "echo 'm 3 945 1100' > /sys/class/drm/card1/device/pp_od_clk_voltage" # Selected: ID=4, name=COMPUTE sudo sh -c "echo 'manual' > /sys/class/drm/card1/device/power_dpm_force_performance_level" sudo sh -c "echo '4' > /sys/class/drm/card1/device/pp_power_profile_mode" sudo sh -c "echo 'c' > /sys/class/drm/card1/device/pp_od_clk_voltage" # Sclk P-State Mask Default: 0 1 2 3 4 5 6 7 New: 4 5 6 sudo sh -c "echo '4 5 6' > /sys/class/drm/card1/device/pp_dpm_sclk" # Mclk P-State Mask Default: 0 1 2 3 New: 3 sudo sh -c "echo '3' > /sys/class/drm/card1/device/pp_dpm_mclk" ``` When you execute *amdgpu-pac*, you will notice a message bar at the bottom of the interface. By default, it informs you of the mode you are running in. By default, the operation mode is to create a bash file, but with the *--execute_pac* (or *--execute*) command line option, the bash file will be automatically executed and then deleted. The message bar will indicate this status. Because the driver files are writable only by root, the commands to write configuration settings are executed with sudo. The message bar will display in red when credentials are pending. Once executed, a yellow message will remind you to check the state of the gpu with *amdgpu-monitor*. I suggest to using the monitor routine when executing pac to see the changes in real-time. The command line option *--force_write* will result in all configuration parameters to be written to the bash file. The default behavior since v2.4.0 is to write only changes. The *--force_write* is useful for creating a bash file that can be execute to set your cards to a known state. As an example, you could use such a file to configure your GPUs on boot up (see [Setting GPU Automatically at Startup](#setting-gpu-automatically-at-startup)). ### The amdgpu-pac interface for Type 1 cards ![](amdgpu-pac_type1.png) ### The amdgpu-pac interface for Type 2 cards ![](amdgpu-pac_type2.png) In the interface, you will notice entry fields for indicating new values for specific parameters. In most cases, the values in these fields will be the current values, but in the case of P-state masks, it will show the default value instead of the current value. If you know how to obtain the current value, please let me know! Note that when a PAC bash file is executed either manually or automatically, the resulting fan PWM (% speed) may be slightly different from what you see in the Fan PWM entry field. Such changes to fan PWM can occur even though you did not specifically change Fan PWM or if Fan PWM was previously set to dynamic (automatic, default) mode. The direction and magnitude of differences between expected and realized fan speeds can depend on card model. You will need to experiment with different settings to determine how it works with your card. I recommend running these experimental settings when the GPU is not under load. If you know the cause of the differences between entered and final fan PWM values, let me know. Changes made with *amdgpu-pac* do not persist through a system reboot. To reestablish desired GPU settings after a reboot, either re-enter them using *amdgpu-pac* or *amdgpu-pac --execute*, or execute a previously saved bash file. *Amdgpu-pac* bash files must retain their originally assigned file name to run properly. See [Setting GPU Automatically at Startup](#setting-gpu-automatically-at-startup) for how to run PAC bash scripts automatically at system startup. For Type 1 cards, while changes to power caps and fan speeds can be made while the GPU is under load, for *amdgpu-pac* to work properly, other changes may require that the GPU not be under load, *i.e.*, that sclk p-state and mclk p-state are 0. Possible consequences with making changes under load is that the GPU become stuck in a 0 p-state or that the entire system becomes slow to respond, where a reboot will be needed to restore full GPU functions. Note that when you change a p-state mask, default mask values will reappear in the field after Save, but will have been implemented on the card and show up in *amdgpu-monitor*. Some changes may not persist when a card has a connected display. Some basic error checking done before writing, but I suggest you be very certain of all entries before you save changes to the GPU. ## Using amdgpu-pciid In determining the GPU display name, *amdgpu-utils* will examine 2 sources. The output of *lscpi -k -s nn:nn.n* is used to generate a complete name and an algorithm is used to generate a shortened version. From the driver files, a set of files (vendor, device, subsystem_vendor, subsystem_device) contain a 4 parts of the Device ID are read and used to extract a GPU model name from a file retrieved from [https://pci-ids.ucw.cz/]( https://pci-ids.ucw.cz/) where a comprehensive list is maintained. An AMD only extract from that source is included in this distribution. The *amdgpu-pciid* tool can be used to manage the local extract. Execute *amdgpu-pciid* to check if a newer version is available and use *amdgpu-pciid --install* to replace the existing extract used by the utilities with an updated version. If your GPU is not listed in the extract, the pci.id website has an interface to allow the user to request an addition to the master list. ``` usage: amdgpu-pciid [-h] [--about] [--download] [--install] [--force] [-d] optional arguments: -h, --help show this help message and exit --about README --download download pci decode table from https://pci- ids.ucw.cz/v2.2/pci.ids --install download, parse amd entries, and install a new decode file --force force install of new pci.ids data even if revision is unchanged -d, --debug Debug output ``` ## Optimizing Compute Performance-Power The *amdgpu-utils* tools can be used to optimize performance vs. power for compute workloads by leveraging its ability to measure power and control relevant GPU settings. This flexibility allows one to execute a DOE to measure the effect of GPU settings on the performance in executing specific workloads. In SETI@Home performance, the Energy feature has also been built into [benchMT](https://github.com/Ricks-Lab/benchMT) to benchmark power and execution times for various work units. This, combined with the log file produced with *amdgpu-monitor --gui --log*, may be useful in optimizing performance. ![](https://i.imgur.com/YPuDez2l.png) ## Setting GPU Automatically at Startup If you set your system to run *amdgpu-pac* bash scripts automatically, as described in this section, note that changes in your hardware or graphic drivers may cause potentially serious problems with GPU settings unless new PAC bash files are generated following the changes. Review the [Using amdgpu-pac](#using-amdgpu-pac) section before proceeding. One approach to automatically execute a saved PAC bash file at startup or reboot is to run it as a cron job. To do this, first create a PAC bash file of your optimized GPU settings using the *amdgpu-pac --force-write* option. The executable file will be named *pac_writer_[string-of-characters].sh* and will be created in your current amdgpu-utils directory. A separate file is needed for each GPU card. Copy the file(s) to a convenient directory, without renaming or changing attributes. (If you leave it in the amdgpu-utils directory, then it may be lost with the next distribution update.) In the example here, two bash files were copied to a new directory, `/etc/cron.custom`. Now open crontab, the table that drives cron, using the command `~$ sudo crontab -e`. This will open crontab in your default terminal text editor. (You may be prompted to choose an editor like *nano* or *vi*.) Add a line like this, including an explicit path for each card's bash file: ``` @reboot /etc/cron.custom/pac_writer_[string for 1st card].sh @reboot /etc/cron.custom/pac_writer_[string for 2nd card].sh ``` then save and exit. The next time you reboot, or the system restarts after a power outage, your GPU card(s) will be ready to run with optimized settings. Because some PAC parameters can't be changed when a card is under load, you will want to make sure that the PAC bash script executes before the card begins computing. For example, if you have a *boinc-client* that automatically runs on startup, then consider delaying it for 30 seconds using the cc_config.xml option *30*. Another approach, perhaps a more reliable one, is to execute PAC bash scripts as a systemd startup service. As with setting up files for crontab, from *amdgpu-pac --force_write* set your optimal configurations for each GPU, then Save All. Change ownership to root of each card's bash file: `sudo chown root pac_writer*.sh` For each bash file, create a symlink (soft link) that corresponds to the card number referenced in each linked bash file, using simple descriptive names, *e.g.*, pac_writer_card1, pac_writer_card2, *etc.*. These links are optional, but can make management of new startup bash files easier. Links are used in the startup service example, below. Don't forget to reform the link(s) each time a new PAC bash file is written for a card. Next, create a .service file named something like, amdgpu-pac-startup.service and give it the following content: ``` [Unit] Description=run at boot amdgpu-utils PAC bash scripts [Service] Type=oneshot ExecStart=/home//pac_writer_card0 ExecStart=/home//pac_writer_card1 ExecStart=/home//pac_writer_card2 [Install] WantedBy=multi-user.target ``` The Type=oneshot service allows use of more than one ExecStart. In this example, three bash files are used for two cards, where two alternative files are used for one card that the system may recognize as either card0 or card1; see further below for an explanation. Once your .service file is set up, execute the following commands: ``` ~$ sudo chown root:root amdgpu-pac-startup.service ~$ sudo mv amdgpu-pac-startup.service /etc/systemd/system/ ~$ sudo chmod 664 /etc/systemd/system/amdgpu-pac-startup.service ~$ sudo systemctl daemon-reload ~$ sudo systemctl enable amdgpu-pac-startup.service ``` The last command should produce a terminal stdout like this: `Created symlink /etc/systemd/system/multi-user.target.wants/amdgpu-pac-startup.service → /etc/systemd/system/amdgpu-pac-startup.service.` On the next reboot or restart, the GPU(s) will be set with the PAC run parameters. If you want to test the bash script(s) before rebooting, run: `~$ sudo systemctl start amdgpu-pac-startup.service`. One or more of your cards' numbers that are assigned by amdgpu drivers may change following a system update and restart. With subsequent updates or restarts, a card can switch back to its original number. When a switch occurs, the bash file written for a previous card number will still be read at startup, but will have no effect, causing the renumbered card to run at its default settings. To deal with this possibility, whether using crontab or systemd, you can create an alternative PAC bash file after a renumbering event and add these alternative files in your crontab or systemd service. You will probably just need two alternative bash files for a card that is subject to amdgpu reindexing. A card's number is shown by *amdgpu-ls* and also appears in *amdgpu-monitor* and *amdgpu-plot*. Card reindexing does not affect a card's PCI ID number, which corresponds to its PCIe slot number on the motherboard. PCI IDs are listed by *amdgpu-ls*. If you know what causes GPU card index switching, let me know. amdgpu-utils-2.6.0/docs/amdgpu-monitor_scrshot.png000066400000000000000000001262741354600334600223170ustar00rootroot00000000000000PNG  IHDRFæsBIT|dtEXtSoftwaregnome-screenshot> IDATxwtUU{PB A@QA":(caqt:cTDEFz^߽)Hup~ky}=w٧lSthVq7vh5f@pY+lY8tm Ƹ+6,,NE/hf@px~v[jә#G Me|>?^ #2Z(X4m&>M,PUa0@+h42ۓiN`9_ Re84h4PmWC  +;k5EQpp=} L^d@]EAZ**U4-z4:?A#~ȲdppI@Wbmruo%,k]ݣC7Ppd)K`+SUPQ&\w*bpD&&owW6/cáx(-ak TWAiJ:7;;vSTTU(U=yYh4Ȳ=ٟP+:]FSCjy2F[IzgԠoAJӾ};"p8Є|>c"i׶-G%4˛Εa:T3fxpg%jFӲ*T\v~|V5ȌY'>*J*$FӅ˫`XgU`w?*[BEtƳU$4:&I[W\,ljZpSP S< WyMUdc`ztpJ_QQT5ZZdYE#h\> X0m38lT|x|~$4:#fáx^$I&99 쎷'm2Gi5|FQ`_ Q@Vf&UE4Eew7!te<AF4rNyҡq oGTVo)utM=ݫ>9Bha\q ݆p]%'e4TTŇT[ohW#஠$G}{ C3.QP}.meXTJ+xptzǘ賬,Qi=^Bꗹg^&gx/ FYxMK C58mAvS Z0Te ds)*6L:Bۙ:[$n~=n| LgjqHv #&Ibc&a8&!!׏;ǻ%A4*kW7,[W\(w}OHYm`qnImS{^UeaiV^ =%877>S8aZb$t0OZBԚ;lNl!TrKh+M_,9#}qW/ (n6-fdJqT?$֩F|jzlO j"uwlO8E[+쬺q{C<nşĢÏӑQӓI '[6r˝FcR9>Ԃ?3/GװB`/,b5癭>7scw`;)U@F^fz uNR7UU ֐Fu 4wTrjN}kVx&#Y}zxt U [djX1䞿Hte,nsscwtx~B箭>?tH|?8xwfZ;EȄ+#ШŬyoA„ڼժZȊg17@)xUG4*JRdC{ 9"Z†7aOvF3wt!e}.;Δ{$;ҫw9?yiFo ,ʕL:g.,fh̄]sG߯i%EQuSwj4Q_ Ãvzh}f}E:{Q:̉d3(H` @-b~?JLq l?qx U[J+~B2 +sh\k:YZ{\rP.y 2VJw{P[NBar#H-mjMh5m(AC`p RjhAuW9gC,jAsDs歍ѧO;%U=[Ш&!yϋzO3jy)~ IQUdלa$$!~1.h.ۉVfp&2Ѥd5:/2H>_J -FVj+U'ՖsJH~>~YUQ>Zt_ҫnr5a*u I.3/ɷT]^u|6Z)dYpbjICiV}҉\p7$7hH^GjOR,ϛx86:>Y?M^ b"\l>FGbw'X\NF0I2d?y^Y[xھ r񫴵vaHe&<(k4h*aIւ#d2 Hڵ ĝi;=;{nx{` ^G8@. ȜlDGVBuIq`#1^O2:#!=S#ARRRhmKJJuF%hڶ>yH=Ԥ5$oWΡ*ԑuYz(UeV|.:ޒĎrV/SG@ٱLJd:OzsDB#V3~4l?h )v:+ZH?dH_{AuDUP_+XBsrvl^ʰt޽ށ|*@+Quf?y/c&\=\qsӋd@˗CѝՀ7] %di\qt,gf-ƭ9g q>Z DQ߆l/d4jkeF)S R\O芿$eRwPo R`m):a4]G:n*6;gyG2*}g&0apDc9)ľl\Z <ǯbh,rc{ DڕQ#CqA90gxQhq`k5 wZtF*>y]I ?֕_0U@pm;'145 (.ӁpF2YY94F:>l$ 4O^~e5*BֳHaj+<'&_^Z6ZipjtXȫAUUQ#gO j\%YFb (/uReAf,Zr/Lf2>g%Io ,PW+xjT1L'ФERB*jlu 竧xtId*w Y=dtXLZ45VEt(UI52:zqq|IAolԮ ;].g˩n\@k:)8?EAl\,AM.e2'ssM~*+qryjX0N^yU21.8$OUb R*H@ߠ1 7Pݑj gJUpw7e6' 1iuuuo10kOSلZ|Kjϔ[Ab b7L!I&\Nᡵzݿ ())l6"IYe[3 Nx`R`%n\hX`3„lW^m=%h(+>B=P>;9{w/YUY⌻^@eL&#v21 h{}8N+*$ Km\r&#+]~tdpE"zm_nn#YŬoTHÇ)A GTcj FCAlp?6nU`1bnů) jpI2:*j} pAPwQ)T-#i$]z 箕-Q'f"4@l> @ 4a4@ljFsw3 F0C B h A nv To_ȼ~![;l6[W .G:B?K@ h6hٴ(!Cӣ=S!3Z vM9"h/(Oū3Pa41J!;/cso@K-M*C1+z!ˆ /ylپwgx)Oᡤ"YJ;ufv~)A^R@b̸;h7.a@a:ؾ'hҢt沧DKR(tN糫k^e~zOII|e"Tv(SKYd߷|-zMH;vP5{h_:3I35NCu,>12QWWHH]K F_ ،Ժ7CΤ?q M%lhh"CHJT4sWرS-h5`LϏOd ikksVޅw2 +6>ϧ͊iW 쿏{Tވ fFSq9^Fa3.n;ve>cc9fJJτ'2ϬER})3iޫo%$O|"*s3vtVK / ;[V`BUrK(KF4jH !ԩt~-ƀoѡ$i@& $D 6N(!A$[F8wǟ{PzFSl[gK6sdSAۨL%/_]˕ /65h4"'ӫrmQqX|h?aLҕz.>@iz W5ir_~,~9᠓J2^{c%[q[8dJ6\\ }bfW\y(X[^_M)bQ#xx@4V=fV\-=aV,2ì؜qOK|9EdA$2uQeȰQR^¦=.R=bN"GN$^[|8zcAtJ'u,M$ٷ7J_q>2$_c;Eme}ed\'Yl,X$C_ N=mLMR|~K u2+sҚYü*m y-t -g'+Qѕؑ{qЯy10%wD_bVWfB(RhLsOיah]9GrEמ#Z~̍!ԛtfTѨgȝg)7^ՙ#hVPRX®}y>hy`X"cƏk.6|Jpgx: {(̷q[VaQrJjƃObЃ&0>S;c8K>KP ɑ&dI(Z>?կ*QtB+tI /}.hw' m".z}BIv[h G_䈣!FR(.@ !f#@ M휆@ !4@pN..n)AcS_J@ 0@ h6=+7E6Ы}$IF;ty$#z&+@O;X](B Q^Z[ c-wnix`Q>?YZ:, ]ZЧջf M$Sn;FC Asēz`0ac2 Ęhhp'/FU,#ןN9IO\ɋ CpY^r-ΞcSn?]a蓯kb8{,Ϯ>|yT 8n0of3xش"k/h,'麙<8*"}+oyu|FF!+ֳ,d~ 0&Hhz]P rU@6sxf\HP-E~ oXJ&N-iDdJh9#lȾse+:KMs1jHXڶm[KJJ~i?@:Z_};[FY#VWv;vF[k2Mlx:v9{{[K3z_şՆd*Xz2[T}2jO|9Dť0֙n-5^b^4X:iRm< C:5t.ʁߢp%ZJbm^8DҙDAV:F'6-:.G^]cҦyG7rt]D$'sSew|>~'vn r3:WK,ޙEAIni՝1ΨOfnwFFZBz$TJ((& B;u82d` 8&GGĩ3&e$3ãWgT(wFȈmPT^(Ō]D=ż7y{'n!|]C' žm#46[E ^`Z]:AݑҖ3y0?JL DD*TY`T];iđue&rs"hwb*v -. lAƲեtriORJ}m˷;Y2k5#]ە0%tg$% Ipq4#j;CnBS`ܴ\~^?1L"q׶rmyk?cI\; T[v ;&$P^z!Vl%$_EN4~ ݃NinSeVnU'ILك{2jʥ;JNc(SoF};9{w5i=% 6C,֕~Zq?uxga*H5M$U Jy6_dn`49Zf5$ (v^[IHRu:ISBW-wۿW!iJʝLW݉1o6[ ;#r2.~$bP,^8v~v#w,wܥʜN;Pz/ْ>YGgFTд22=;?xm K>>F- ]!g͛03glB]ɿظn6_%/_څ5PzFk!/w#߇6#*(&IFCh@P釃ߝ+ځɪLRIx,*F% zL2Lu̬лkL}NEpwX̔L3,zw)]Ob}t9C;ul.KϽ?4 R0[׭%2` RMzd/7V"!lNZ48*JNʱȞ\v?=(>?gso}vOϖ9z6>־ 51n~j)cŎ^QZ!a 6{rcd~% PitXT$kQQ껹+H9%tR{NLJ @20} [݂ }SHӂ*&=_SDdK"ZOMw#~4FJ[-_"ʹOQA *DǗpZ%Ҫy,J95~[@1U2_K|b[Y{HF/AVo(=Wcщd)D[/PG\VXoQv 0NIķnCVyT{Y6 QXL噧駟f28RK1dN-cCT\r=ׁy\(u9#RHrrh j)Gܐkͦ+Ǵ&Q_̾9 i3,5=<,Eؚ7M4^I~\^ l,/^ntX JYXW0j~6>1+>:Gg;> u2+_W7V r|7MWne+w sOJu*6+RçMbVז[-/o$'rh!+sbGOۇEtccl _w v]98Mf,Cv:\58K^_gtq Y{1o _kwqn/Hf1 DYx{L:544p>@P01SY# 1Nͅ,׺Ŭ_Cf# N8\<=#Fz'wཏ“:IҞMW2q~/^_ؿ 'L@7Yf枌Cׯw;HO8F~& { z¯qW[xp.?a6͟˃H`GI~XWVV]ld t3Po'@ 6u၂^9 pAB|$6xcmLDOkneIo3jHbk뺎c2ts|&a@Պz(RW|._0qc<)_9` %ύ?̝Y묮F%д=2wǼ5` !9\-_&v}$ dֻMĥ]#?A]@ʯ䉏3c^Eg!4=jVv6QfIc4fN%|cף68F~(_'~sSʥ=I<eޝm?DDC#Gr H}_.dڊs r!=JGyz~uMdV'?+^_~jOgݎl5!9SG\}gSˋ&y>ϒ(܇q7ĐFj^D'hk}0{x(2`ڋu ypoGck/87I+KH\^4j?zZ5s6nvlRe/sO&zÌ+(5o :\;Gsy(snfini)qKZ$Q:7YZq"Fjg7x+F2$1Nץ%3 xLvck<}\Egҗq'ؽ6&3kIM>ƿmP:~kq6="=*֨8&Nǜ1(+B2ܩ3NG w"8BC&6HTl6'^DKN"fp?&Hy2/X_ġ1OUVDd7.hR0"$r"Pz(%F Qy 98CЫ|S=8ɟfaGGhPرS=[_;^7h#cH #SɀX8g>˘Ni乶;{T? Č<[Kr  4rl;l^.U^_ˋ&Af7>wgȻ3_89s*iZ=M$U Jy6_dn`49Zf #£Cb NM$@J[kQvW> [Gus&0gϗ;8c$kE\$wx%dW{o!zH@tE,9IO!il'ݝ2]?"`ܚQqX|h?aLҕuLV4sˈ!hY./]/I>Ѕ7td;9"~ ~]$Bns&b/.ãYO,&%AnFq}PL~iCB粰g|Y@3-ULzJXü0+6gss)"% }V ]i/WrNjT2&,1y#鱆Gˏ<`8R ZMLt+bh՞F'EE[QM3:2םEu~;}h0~tF:|Xu2(V"ЗoCSO:|s'^heȭYyքh4epZ/NSvp#ѭS/+!Ky^88YPH-g bɝ{6.hB";, H4TrdlupUPOfy$IBSb,!6-2cP"e'a^_][atH%? Or.6|Jpgx: {(̷q[c]%+/ ^oO$JNT .A|4o 2-]'<CR 67]pyф>;03WPʈnf|k1Qw F48]K'@ h6h!fS;!Ac9 @ ꩋzJbRCb!f#@ eb44$uKG/x]A}g ˘hwG;<H&N` Qh@P #[xXM $H/*~?êX^uTKG2abjo8v-l҄zrw} .3su|=뎑ߵ}ŐmY]?}W*|i>k_aAgT:)ϼ=6Rv/OV%m".m46V1hHTj{}zO]ϓ̩(~~fl?pЫyWS_/2֗Fnj!X/x=Tx%V:uұSk.⑟+r%u-kAH1Bz%HAy/!I RdP]aKâvܛčbFd/b21 y0w?^}cOsIgrSpk?]+oǣÄK")}PN\Rk=|B> "`xn/UJ\;z"â ׭pyK3TH+(CⶻpO{#W MզD}qe"BT-cv&YCoyJd7{/ɻW3 *L)0|^=lȾse+:KMs1y}o&u$%„E$gŽxtޚxYb_+yJ"5氂]"=-zD3 *H҂+bo2]1tފ{鹿 >fPFovNUw*z V#xLN#.gLi#N8m4Jbִ'tBXcHTe/bw ~@ 8&GGĩ3&b˾BDdp"$$E,U${?g)mPT^̠Amg)uJ=ticAV(y첫 hhFFKZ i%AqDIcw9J\NM̍LUտøN!]J|Y,} #.BP 38b3ҮSkjJw&E.$HiZr;OY 3jgk)KX҃<,?T]_m4$YKhl+&G (0}pz}ʰ2,8*Yd("5@KQ$IM$\V)?/!mkp:_>o<3 AIT; 㪇?`K{y{y/U\w܄\i1O3*0~(>\Ҭ}&LfӄSJ%?L~\Rg |@ vNJJc8eVbC^/:D-1_JӃLZP4-sq$Eq_s_(U[ ɥWϧQ;keB=0"5EU%㇭ 8wxd΃Ν=8AI/%ߧ8QK7ٷ?4x- )]{=?_:;(sBԪO`ٰ#юW_LQx~;ê5YtȁԵ97;wYٿ=J8[aչ+6pgzIBb>:@#_UPT):CGǰXni$=$m?;127,hՇ!Rk#{s W(=ν==O}HAXcQ.oBc"M`-ȿ`-TT U p UvZsK&¿i+vYnq74-b8٣Ѯ_[PKyw!NЮ"I8w%񷥫H@>ZWB @K[TrL a:U.*0M c¹C?We\lVb5 Z >y8Pf+or9:,#RHro RG0092S^jK|ʚCGp l2"eex% Wn]sT]<ʚYQؐ]y% 6mͪM$owW瞔s\E1%TR)ǽ5˅N8ApjwULVphd, u&mMa[/&FBg &[y<߽t15;ٿc} MW\(lnCz^9s7m݇Q2hZ3hh }?|Ł arrO5a/3%>XQxnՅ6)E,T-ߓA{O v. zqR ) iLž] N%k2=}W&y;K^n;AI+J0o,:Q;9.XQ葆q~|p&Үۇyw/T7\ :KiSxxh52t+4n& zЗ*j0]Gkݬ;ϖO?$I6wB $@))YW8+ꉜ;APA@P! BzmݝФ|32rZ}AlxN ! {cʯ)]h.\,''$ V#_7q{jHB$ )Xw5 W O]#e"Bfu[APB%?CAk h67a{/<^3A&i B{n9 AinWO )=bpːi & ADqiFo狸6F3 pefܛy <2f g? Ws?!Xdf.CU\srIa=Ǐ=6dwHIF&MJʎTw=ȯPЛI}ew;} m<-žǐ= $^ 6x|9Cڈ j4qo/܅qߙ;ƫi+?gi!  Ōic0(/_;7Z\]pP͍Ԙl38\w1WLqQ'Ϩ^v1t!Ebɶd`VAvw#Lߴԍ[}\sAm$%ʔdVf+H!{ӍPjH\1o}e ۢRup |yM`]!!FᙱnCuvj#˕ӱ|kV1 dGD IDAT/r[A@ax@zj-)dOI|sU})JCަ5L^VًzB&0?xoCb;0~#AD8KTD>YJ Nؗ"= 0࠱P{W>KS:V&hQM%\QbM7Vts$/pD|WY@veLqYAPǦ(6 LDl0Jt@"N*tӸWfMCx }lǛA.Ev#D CVP*X>DᝐLu]8-&+?Y ւ|fb?̩lڔט1+: \K71{ WQ^NݴZ`SqhlCcpz{`mT1z1,펍j"p1fU3 B.ȓp-hһ*UV'eĮD;){3ehghJ ԅ>~%1#CGV-_#۞lj UKIcMJVzG<*kbX"5HL/?"= ZL7xCxK-dOtdUHjuRT*dH0J犗ւ \G @/.dn"5vFK6>YA݈'/a8z{$E&~_ڈr%uѐd-ALPk(v .ب5l_1/U6Uދz”l{VKT7/$ ]VN& KWfvAg)䣷0K;>Z r "o,aԋq{dhh<]Jִ]a7_1ozgI !ƹ,(/,a%4bCȞi:&j"T9K NQ qN($VVR);^ВZ\I$#~.)N4+?|zFȘ pتx8RU^uV9UH+S2=&M!qoQZ~JЯݵTݾ,@Vb: V;Q2 (#ǃ^XlQs&&Ha+L<$yԟVg:-CQgiU5V=7OC|mUZmի $oI%y;}݉t"IFԵ0s so?샼&3u7nHN"O-%C:3``#d7|__o_ 2h ߠDy:VQVjje惬.9T ʀAȨBv;V LHpoŊ+<wHU  $/\KDy:6j3~8•HNǷ1ZPKI)lzű}ދ𛺂ZΧԛz3D?/ZK9nJO۲|Zlq6WSԉRf õs8/66MZ4xx\yqQ'nbtV#2>Ԁj  u!5 Q)Ź$)DsK5W85]@4ИCRMwv5z7, ~vxoʹÆr <92 =N>W:ztCϺG=:p-R|JE:EmȽ ߊNC V״%y[Z͎: $Φ7fG7'Qu8-|BL,n+NhFhQwS,Ϸ]hWYyib*c'ޣ')ux>R%Wz>Q t;36x|9CɈ7gZN 0-j}Ka9+R3J0 oԍ[}͑\sAm$%|/gIIfe½7] +9/`BB&sʮʓ8fe4]<}BrK.>^Bm џo "Y6&RT@vbľIü$4_\ˏ8He8{2y&9ޓ2bWJ2m434udg B? jFJU;nO 'J(ːp'jɅU ׮ʀd & YrPg‬*I-8;dG#k1^dG@)*@ nh^$ Q~%psKkA[W`RތvfG6_#<2Uzu! bJq:+nl-0g<<֋ܮju5Ɗ2j64j Uli:v]uEP,x'y/XIz dG> 5ģW4M9Qv(?Ɋpe3ejA]2s :K!\b`W U|` ^K&%7Ѫ5&ںǣRr(CVx0KB{/HRmw䈿3t Cm.hxlnΒg)a 3*2a!%; }X ƒJ*e N{T7sԂ*%ƳZ+ɱu\QjeU8llUlqqT*:;:֋ܮf!=3WpD [`UFwN$η]謫XNpXa0vO2=1jẇwPAۜ$]mPO\_OQEu1 r( g'=@I$Ov< ^#8EAAW-(59ptv(e't܂*2(ڈk16`9ֶ@%-z̺3e{n&m֕ŘU{X*{w\cpQAj#S1'o:3 0\/ū~q}?O?9w\=|=٧n牧p8 )/j} 2з{!Q >0;Kixa[Z2^O:4ql4`I2H@5OY:R[@agkn6Ml5 et/FR$`VAj#*v6fFofcJ\?"|6B7O.eK2`P,>2]im6m^#d-Z@`WArrHUls5F'Ϸ"~^ÙqO:$|ezb➜3s?opjѠRWS]l늻W֠ nҍv^Ļ*}Β_q+H=e$:O`ڂR2 ;0/'?NlUц8 {*nZ+Tu;XYdP^}8.U8"4( 2Yƈ`!sIv5z#GN;2&AXٕ\~ªz57]yzeźC9v]ucǩ?]%R[߽$IHf^s:Ӑ7ѭTVv.wW+<ّMlj&jTNz 7{QRFhemej5`uTzWz`av圖H5wMveMI)C5L1" `cS7Um ś9E:ګÇ}g|u7\   jn]Dzysjv"+$Z`% ӪD%Z(6AndeZ"pYw6B\mE fma|P+Wmd>i؆bRMBE m;hۺ>E{=+JU@!@â-{N{2)R; \r`X_P8v t,] b&2{P<%N} + Tg)s"4^2 `FjkˁÏlޮȧ?Z>ȸtO/ZUKivlʥ^ɇS3y9leW}>GW#rU@ĽOMZN_ͽQ% E*>Ȭ7wqnƍG_,?+IKNVMp?ω!!yol`хjwu/ v7Y(jD2㮗Kc#rTϦ59tqDk)_< nd/vmQ^ȱHR6% A+*o4t4qo'{GX6qUq4 ה]ס^C]C$:-ވ vm(9m~EjsO #)b5O4 ОJ\A踖9 1u/pݸ,mpo—з# $c{33wTpl1tmėU22ir4]VRvԃsޕz2z ).(&i!mb۶ {F\C$P{i>pP+Iݸ[_jk;xށۀR=ob_<{Sr (h03%(2/Ze(N!Dcxz'hs#(] Eyiq'S8dYVUQ0+Mv ]H$wiQ3X 0&h[9;Q<>ߐEMJ2+y"0{o2姳3t 7*F-a#3ˆYSm_&qsaj)VƧV߽Ors[Z P1DzP1I}q&7ʄ)N];vŗ| {󏇣8{pDh4? ><`>h'ԅLDl0JtCD-vա2J:FީdIY@cNH&Oa$Q括\ Bs?Թew'V쬤/qWT6mykH=]DkZ_KJ`x0A36E3=;W1 (,2NHDwq@VPH&U W߶qDUu5RXҜ[(-L^Dud.D(&Ȏ }±;sZ86 ߯sROxvݢI?^qP5CF#XQFM0[ * ^޸Q`Dy9ݥ X(;&ZOVQ*t!P(:Z+t:"Au>~xgqVVP#VL6θ8W]f!={bFpߴ r;P VepF!.m!iHVcY3v: 6RW b7FS~[X_Z ̟pfv>_XE<|?'o$wBމ/ϓ0&Pfxu h;ՏSJ*WٙpPbT 6M2Ay^$n$U9fX[93Fj5WP^#atK+^ÙqO?lW[(/$9Lm;wY {P氣r_˹wT##=rE4RV\Ɓʀءp@&! ؔKYa2g0[n P\js]4}>glo03Ӈy6^*sX9xs/N0gsd#@iۥܧqW'2Jv/oڠe[9*ۛ1nr-+5[<̅޾tsCR'452I<pv56Z+&~߷)k M}ߎ4C22ir4]VRv#&]eP3'N Ĕp[dQ+?gi!  Ōic0JVq#-Mw{|y)3MGߧ>ٛl \#.Gyom7_~ͦ*&'XVs'ѥwPJ3Xz +c՗`/|6f3ߪ~Bɯ̏X=LÛ`CqG!gv>Jit!E`ɶ2::yjdVfD`ddOUu#QjH-+A&Vr_uIs.`Wy^:̍ZFLg 5?rŧ>LBz 3väv鯮D\^벖p_F4Vwaщa}YUTn =$[@2x0x0/]Z8<>C-jm!KW(hS%i5ptJfPqVE+ eS0&;\%%)}eUm _V9@veҴg;5 3O:_$nQvAw23Ї aZQ(޶Cd-Sٴ)a1cDWt@.o !c0t15nQwtx7_dHz3-SbJzyke./; ܿ\AA&O"O5/.A`Cb fɞ[|+TzO?p!L#vȫ`"I;P;}sbE#VℬVzi"ɞ.Ȫ‘dGbbcg5Qic-sٝBmS﨣 <2Uzu9PI2^o>.g%VR9^'G0͉E&~ޤROa0'3JeUun7prhv]T@v¨P !_dh8\3z!+,_9_2ӂvd @`V= "2=&M׏eǏ,ӜKdNW"IȒJ_HùˎI*:c?e3MlRAsRF KJ8mukŕXA:"H9+p*q6*6θ8T6W}f>(/Ҟ2]VAЍZ\.wyi7vTVgXQe{nƇѽFvF ZoWB4T95[N0>HR5L8>}8l5olW*ww$\ no^SҢ3uWJH.PA0鐔:f֠ `rёۇh H: 67zqfixa[z**R > KV)ر5Qu>7?t12X6ȁ33=)9Yl 2ݮKu̹7!2XsH1y$\t> t7C@4s;6RVbCX̙< VK P\׮s-IDht@ƣNdyjke}&Ґͼ76"rB{Dhtb999$Lgc:F"2Ǟ96Bʦ$]D!pA3TjO;DRgcOuZǺq %7"pFLj#{ 2WA.9 AAhA:exJSB{)b5!A:L4 B0lBݸ$+xil : i4l1!O`eugXF\[Czz&$.2LMW)k[y6?t˼#6̫=ld9kBUض-žǐ= $^SΠsp,M8DA<8m,F@Jaq_'Aԍ+Xuiըo{xn0>3QMéW;ƛgɛ|vԡGtB";LZŒmehgaȀgFRL-92jRY 9pMqeY~ 2I{l+xfEA)`z}z iϔ:̍ZFLٗgʶ|ʿdrQK3rv#ɋ\vAk1u_.uy]<}BrK.>^Bm?bmPyHJ9A FBkN*2i&8 [(cO{XXr\nOt dKh2*5^#ZEDD`b2}BJ)~{֟E`BfwB2yº2̩lڔט1+: \K71{l72%o?qrkw  *XoQ括\ B;"nXxj-TR# YDjّ^iT6/g"N7P MAZ_ŁCE)ʎ#ӀDyg@0>44=c˷Wзa%{8 GR CdG'ᑾT**M )>;Yu=JQZ*hᶯ8z{\E&~Z_K <+&Ȏ }±z5@!c~Qv(?1.(+ S]C">8?VYa<^\ƻTٞA1lXsͥaGѷ?Y?;ZfPB#6ČI?=øR%l?(숿< ;d*3tFya[Rhml-$ ?1~TሳUqQ겆~o8B~ݘHIrT V;gC;k( nqy[PBL>Mάl_|l.UkC5(8;55gfC57kO(veT/b;!m<ܝ>DKp%DJe.ӚGo/`cì:ۍ!v~c4%{X'HI-"4c~ Yܸ랞Ķ=r (Itq?'Ǐk&>4Wb A_9+T$dU4N`VAŮgP>K6 ?Q  \sSv &Eݑl~2e-Z@`2J1REe}Ss5F(Ap?.LUi:k kJT2F@H73{Fv7jiHyqï9l Rvo@4R- 4%[O;[Fd|zRKn VHV)W ;~Urdܤtkٸr?jTғ|RA户 _ S#PzlŚRn ,YA& FwOlC7#־!IjzW_K.0JaV '+]Ȫ~p !2 Rp(+-7Lyv*Cvآ;A17ȐS8րνtNz`av6Ǭ6Ԧ$&,ehգ 7Y/c.(# ] SD.n ՟ p)ds/4vB)A$bSHq'E>x~Jnq6N64;ClZOₓ05&1-7Vj*9OF݅Sc*槤\wu'b={ϺljZߴ us y&v,]exx?n8[)."hm+$Ȣdpw{6s6LOMmZB[?܉1DYf*?J;$S̾^A> t7Cy )~[<s+SZ_Kivlʥ^ɇS3yblEKk&467* ƍG_,?+IKN 914d3 BEht="4pDXKj1Uq#{wF$D)uWARD3TjO;DR?ZǺq %?"p 6)=bxJXS-  Gi 2!mbxJh.Vs= AD! tk4$=="~go6?/gP O۟^}DWCH0z;휍AQSj5_D(uAh嫁5@Nw܏йZ67f eK{%6 yd"A"juI ̨ >ܧugXF\[Czz&$. }LMW)kMP :K/[s:DU+rEN!D$u VoGZ~5{Zb+U;v=I;1#0[^zQg&촒/i{##EQ܍7O2 q0ҳk).$ô,V 7{d $ 3>uk$o pw@G%K _p ޛlIdkRE҆oY~ 2glW1I}q&7r(seCMϬ\)/NH5HTyIɖȁq<>4O;j7oeywga6b4nL@W :qQlb0Όn̓ocBfwBrS[ ۟~_rO:ɕ` gl DFTc:/ri$=Иj0 xY*+ nppc9hWC5UէP업RXF?8 Xgpzdٝ׿s6j}Հ'7ٙdUqPi/7c<УPod〣ڀL$ski|5i;GeΌ _^~|o2:_IN."M;Bq+2~\B5U=ȗ%Al );ACQ8˜( bޞ#Q+l_}@Q_S\&4 >s>I#x偕-@+]Ik$GCA#xd'olԾt2]ޚeYxMPÛ14ܬr>WV X~4VGӾ]\^y;V֔N %>R&27MAAU`p:\$O"E_.;L4 StJ18>zPtyo 8 fQ R!IJyQ#E5c߯b O4+ R0iy^uf\=1ѯpoUyl^9sH0d#hf~W[ -ZIGV\7y8(z,F:Q"Hi^_mrFvbl Ml"^!VȔ\~@1bťt68h[o,PG"$}I02) %xU;sD&#IvnsBpV%Ă.;úlXd(46XX嬨qC⤼dC=i JHsn)q6u}YF,^B!Ԓ*( >h>#1Q[Y ( ||lXBOJ4U|*Cʠ 5WߟƮog~i}3[ Zjd q_CfzLz@e+ЅӺ?ƦadK'J $!%}o/ǹa ^:]"AyMpl6&ZG fLϏ @$pUk CtBw3t=.]Wjj(;7À/ǝb2bU!w}APm dXKE PL8 g~-jdS&Ֆ&5uiPԏ<#vp YYfO/@ 0uWC:=lpyFPT#ׁVtQTES}YpܾJuF 7.&@Švef z2 IDATPLMq4a7ߕu.#tqLCЊJ!QiQѩ9VgrsjĒas0_C41oh&bʮcFRH'5#O;̤sߑuЍ8͢1?h$D`eM_8Y"]lPx/Ƥ&T4l]e̛?Q$D -9-?RQ11Vױ,QtQs15MaT`͐t+ ٧Kg|B4ogsXW`E^0 Ncȶ:;ƤdҡU0z]eE$؍#.PD'v_)dyz%E0܈ASTxMC8ΌҀfl ;5Z)-)m,.L1M{۷rW+50?X⭊22ypWxހEPpD۫#O k: &F.15/'%sw0bh2G TQu[v"GQUTSѤ+w=t+C{zd>=и/wN~Jp[{~3^wyE=htM62" HuU{8O!{)/fo$\]\]T'3]˃',N*=5hXke70$IZמ-)۹fVx% ?[BhOB3%I\3AcMlʧ,=IH$]%4$I$6Θ$Ip{7={J 9{J=%]ϐliH$Iu&$ITg)BrD:50s-(X# L[#{$Iג_{irU7]G1W"-mWn`&>>X?{9$IoSkKC72u l:NaּL ԶuPkJQAhA a٪QFm)!IWp_޺m)HفX>ȉS#NvJ%9hc5VE N 0=ňFWInkurcR-y-*EAK KVJ|.}.Y> {"cGI,j FMWOEъy;m9zZhݣM$]y .Gg#Mm76?O8fBF jh w3{[Xާ6lÝ܁GsC~~^{֞˗lN·gq3;Y@5~K9Xh*r8*c뎲36osPc*.@+3=|52: |9F|d1w dVz-MuiRI(qY|!w ׸Q,) Y,x{:/}SW1=4c錯xYCl~ʃkJ.+_:O!3]Ň)?ƒEӗp @Y|]mǽ`6cnrVY1'򠏒sky;07I_8PS<:E$9Kyu!*X*>QL'®ĠwO&bkaIk Uʮ=yplf<A0CÅ duUt? o9fYE*w=t;C_D.SI64T4td&I$Ƞ!I$ՙ $IRӐ$I1 I$颜zOCΞSRm)R|dKC$I34$I:rACܩ5w@誷s+{p-]soHlߌW9ҀhIgW|c-)Iש+W1yps۫JX]G1W"-mWw`=}yѮt@_лGڄ<.m"Q®S&͒:H7sgY5M$sD}eVՖ$}=v U&qD>^F|lvokZk _rc'z[k/#v3 L/}ANlxǏ tQnOwc38P>/& }}wB"$门%h(DGZQP ь@h@TTFƪ(DGj/\/3Cbk~Lp2}Mx-鲵Q+Ks&2gyCW_ˉ3pAٶ]g@ۍGḭGƔ)S2e />0U]ʋK а(YrJeg$$aRrT s\>/dTN(¬D(pT=:qoDRQl_2r6x M WiژxUܹ\~0eٽ8{ĆqMmDA:vt=k4f-{yʿ`J}L\m]Ka4 9@D yK?JU8gYSV^$(][u=Rr lBpGVŠɯ2tb'nDAPTB0w F܆ *J\•m8i%-΂k*Γ2j2,'`MlBcמc~֝/!'B7 pTP&GoC5r  \‚z55lD8ʡ)X׸Ǹ,1/pT|%E8gGg̉0X4o9Gv+J70w#hcRVveKcԤy쯷o~vFS:u*SW06JZ#٦O543ϫtӓIX&D2\v#i`3joƤXpL^][1`Ѱr::8З;߱J|MnAU6_pTq:}|0&`!p<>ͪWX $CiP O65Gߜ%d7JOqA1^r$X&mW'G)wʹ~ʝ6m,1 Zy:-M`Y9SSkbG4AgsӁ Z9w>=%-hZXt9TK0 yY,Ԏn72Hh @l"T$As0b~*| T+ <,ojzdekBDr^9ONp 2;=ƿ',>\~l Ĩs^N;y0PZu|EX:;A{O>7 ]>6toUhJE1jȋ.| #э{Wt_E/9SeU-R~P#[m͈S\b\c".4G8zse'Jl{',A ܻext(]j5b(@@ډlfAxB;w}APm dXuE PL8 g~-jdS&Ֆ&53'szqwΨ?G_gE5N}`չISأ֏T-n^ze*/U͊UOO!pD&prlBԸ^ jWkQ@ZńWAL|1+][2bH׹[Hڳp(c;]E4ř @5`3+h9| /0~,=xpF,k^>5D&f+:}<9m$tR:TL(:w]+gA7ZZ7ư0_p1I-MhZu,7I,*sQ\WPȡ=Xq7Иd!Ub)9(Z>~cb c;Y>{ƣdL(v:CIޱU5$&…GpׁL_VD݈*=RKD}"eq:Ts0|W-.ߕɃ z 7`5͊Ohagwi@36oVY6 RRvn?oS&I禍A[s9ޫQt~ɹ֙#^5eW~jH_Y06u9{DInEDm] /G~bI 1~/^/̧ΉwT 7Z5oBC7J?˃.A 0]SK" HuU[78O!{)/fvc1.4T4t®$L|my@Atמ45J2Yx$IҕR׎ߜynf; I+Ԙ$I$Ӑ$ISS)rT9{JT'!Ґ$IL I$ή)BrD:50s-(X# L[#{$IeW{ir7]G1W"-mWn`&>>XV$ZWkKÞ>b|WmC=M0?T;}B 3*-Y#,[;ʨ]?%$Jn X[7tR,9W% /IE-- H+!qX(W |DD7*Gj'm+?y擢KV }z >&PC5/Th$:PKKC!r*fd8? "?=J0+ buN7zfTw9W恌M8c&im½oy=o62JPCc!B>ha<2,}߳dcI?{Fc@A<5P#}ϬYxZҥn ! ½74eBya>˗lN_BjgF>=FXIZz"FE%.4} {`m@ąKj !\ܦ͍Cv[2,|^F{n^)f x-3 VDPV“xbbz[8=\㮶P|rU5 AK(J+p*&{Riж:#hq؏%&1w N!2ە߾uBh۱9rsI|52: |9F|d1w dVz-MuiRv(qY|!w ׸Q,) Y,x{:/}S:>V4YPe7CҭFV$]5ΞRFV2yvŀ 7+>ϣ flMSê2k:dQQRvn?oS@! tC<1g)n D >_ŧ;)DTYl- Ѱ>i-Jٵ'.mL\!h4fRpc995N}goC@b5tYJ$FɥѥȥѥK&0I$IG I$dА$IԘ$I$FiH$I{rԵMΞj#gOI3$[$IRɠ!I$ՙ ըViZ0{nIsԚ#Wg g]s, m L{w)3~VxDCCErAI3{U IDAT4QV`ʌe1^p N(+X4Jϓ|ɞ>b|Wm*C=M0Brbzc^ᙡ15%'7U[* ёVTC4'9W}8S*#cU :ʆ4/R)f3!54;½-,tӌF~! ½74eBya>˗lNƀݺ͢CfQ@13w2ЊvpS߳R_!Ru";|^(@ɨ ت;C @ c4&А=Y7Pvޅh"HLymrЅ?2kApV%‚. úE9)=,rV_i7aZ?=TFND+ 0+:tn_I>/u[^TtkZ?@ƷY. :@Oty.<pVG(wذzҽ9/Wes)HEt u떠|ze۔I,}ԛbrϪA :&h}ޚ%֢7$sV눉F`6̘ng;vuP$pU(F-XQDMk|^9ƚyYHh7G}e~Kg̈́snw}$,ɚ"*CC _#vp YYmyq"?y2;М4[<7ؘ~fAO;_#P~$Rl ue9pEZ`KWf?eӠf9̄ׯpЭǪI ;WɔL.~.7gH| X;{TFc\`4P5-54{7-&&,4mz/A;wLmW1Lef%iY|!w ׸Q,) Y,x{:/h$D dQvh3wB jfV6 gݷ ~^5.ɼN?a.< n5_뻖!ąTAЋM`G0;ȩI.8(pRMAҭɣ'? 9ѱ[WezIfW Xy,Ncȶ:;&dҡUX3z@w_U_;bt%dhމЋ!Gٳ{`Mbb'?/6"<> :qWZE |.X@B5SFVR+wUf@q,¤ i*cL^QXR IDATxw|U9wޛC  mkujVڡ:h*2dM@B6͸ȸA>ǃǃ{gs?3 &kF1#  %xklygd$3i¨U!!i:FAARQQ}`]B 0̺f4Yx(z*  WYjeEru_;eYb.  5UUz4ArJ4C jq|  pkkh4ZL ᭫jc?CYW}^z2X<-AVCU$0cIz\<^ ΀$;pU5-3K[u5u*UUUpSSm[Ѡ7[h[EBg1mWbGK`DZpTWPZ  7<>i4U_OuGIb%_N gsHLRRovvIdiMoÆ5}3pcof.7Y2*bf]c*ُI 0qRe,cC!?b`]TdgjƎep? 9c^[1HFqQUܑ)<*jdf~&):ʊ937Qwô>QD[1. Y!< sR%ᖿ 6>#<mT+NJ̵u[ŀ]5؝v{x<] vlWĩS-}]{UWW0V#ކ:Ph)~n~VӉⲝIfU"y} @o&ç,VLyw282ɭnzZƚnQ??O_ԟo e Ƭ!f$o k{1M|7ҸD`Iah xuc[}e}a10|<3/%w9zm UUT<#L;M:jeL'1`c;Ÿe#=f? Ux<.*gn^zgf*Bp8'k<=~Oo H<=~,ZL’L^31XA蔂FKY)36.4GF:EfF јfd%*Z}4[*+xjKg!'~ #cPr+sh')ҫ[DѺt+>T7_⾷:K[!LÀF՗> v51bTTUTq͔ >pݨ/vQF4)IMK]ZyOpMsxܨZ[IQU՜@J95/.0AJk?H=Yw"Em/˲ 9K -#fΠyJӓJ[;Ɯ*!y=xeTE1th.|i+Hnm$BTEmɇjuA|# v,e+SNXz;rӀ+ux{x_NyvNbLR^3q B' ,'g}ۛtW" zƒbMc=U$(*ЫSF.'VCo JCiCI҂j?MA9n *ӯg^z'Je0F#wvFB-#;d`]?SSNA>oA tZ-LƖAseeOj4PQYVmpfb ϵZ*Joy#PYz(.$$*hz F$ TQ$z3|v$~Ě?.$ ~5| M c}[l8uhq\Ҡ3ydLz8/\˗cSxWٵiSIџxsa5̠_U[.['i{dFBSg؄`9l˜xiF 鵜>]Jdd8Uj())d<3n'0Un_ o}c_UհA CMU7`]t 'wuq{m)'S萺CU/\"MDbX ;UE)`4xԵLM¢ب5%3q4]T֢ n]۟dc0!z+sG&<ӅEdAmcWňa-YĂH&ߦ`b1 2DGGu\4 $h1o[3ôjj;LNiA8+ omU>-IFUzTUEf$Uż BT'oVe4-~Cm*c 0cѪ8luԺAg&$Sՠ 鍄-಻hp6+IȲVER$2꼠j#5@gyrY17{_)eb2:M}] ^UE$dhjh#j}HUew Ih-n% EQk :&Npe峧.Ezu dg-NPW &Umj34q B$#Ub bi[0XZL倦rrk?qo'5v0G[$ca֞L F6~;i&3G_I"v-Rg[]RRJee5f I.Ez&?#WC ncl^hĚ:?fc5& tK hTMh`0ZCl ^9OEK[Ȳ [M XVLF4ƙCCں:$I2nL|аADAz!M5Vx5r4 뱘*2AnIQP#FǨmK}*cv`]ʴAūx( j޶,etZ-k(HӦuAAAfĚuAAAĚuAAA>  M   tS-u_%  wGTiuAAA膴V]AAAZrq9" -~ b W~P IAA)qhAAKIߠAT.lN$a3`lV\zՙb. 2~$a*cWHmNY@;2\\I}0r8u%GC4Z¯WIUchF%{.ҳ?~ /! lboM,c-fNⱾ'x+|V6H 3.w.1XD fT &%ŒV;]2icy|ofMqd$T<.U;ɧ2]8sk̀@xbUy+lƟ9诟mZ&y7ɻ˗ו$pbۿwn bpߏQ)FZ4K􅔮c$5GmC'gVn !;?=¡:5s&Ǖ+υ'*\=^<9).hU ťabPƆ2\7fv ̘;O$XB `gh$2*S3uL"/ռS|$μ|I[[ՔDq(Qox?NŮ ͤadG3u,M1IϚszqh>+UqMCxz~˫rH_JMԒ6?,/j{P?L秽3XDŽS7OR H~LkØ:f,p9Xk\\y"A HVΣ5$S mvrдI@2.ǚRz\ ]׍c/TEHgb0> Kq|v֛po*sȸl.2qQvoe/cyeemX SÒ cKIy(RuJ?ًp8su=kEa8i@}O.!)LnUVQayt /Z7zޙ7gN{gs}+C;O.#1X| 3`HfJHTo7l5ڔ&NT 8u$ӛ &^ɬ>Z5LK|Z*7ahBz|^{+VApT~2/X=u:VPEyLAԛ_xձu Q)?|5kRet>6oׯ摼`S̵,yk=GLϔ]i]* iCb VmW2 ØBCq)>|v4dHn~7 ֢ht%{𷍧SAJ?Ĉ(+Azڊrm[WܲlEO1vؿqNT21I\gc)ʂsR22'=|~jNPv+'hpkeO)1+ٙY=J¤aj]GyF%kga "PvOA'm Y8(H|GKčCOYVuQgv^FC˅'W+Ϻ9M(3@u杏xꦵns0{a֢e f+ wNC22vnCr?Vg <\^Ŕ4: 6`]%oQ'T$" b^ % IHұ_ذ /nǣc̔ΫS]lߝGdeгMk#:t6k%%A:v#3=[sPln:#6 q\74K = 5lr'kى֦B"rx [{\tui1<1dg9 ЃKML)cEL㍃#Iʀ(Mnߏ@f( V" )Q1Ƅڈ+>KOǧqft{%L>`>zb6?@L>Ҡ1 *'d;-a7_ɛS""h:{ ]|RV8K 秿mVʎ׎-ga8¶DՑ? f›'dpՖi6^X\c ߔsjrГK}P=U9&TkpLDJ_v~[ ΁NoKgCmS:f3zp^)U"͍ylW:I׏`_^ʟ4͐K~m"H|Ĝ\-}3X~Y,q_ >̊?-)),&'W71X:%;:]8!y fe¬Ȝ|Ժ26ljJ~Kj\Rx'?͢JmYFu>XEÑoֳp)\y>@< ZF%<ͫK29}Nۨ_rf=s'fF( D(|T:[ *WơJXF\DΌVַ%?Y"̈́HP"Y $x&|iZc4nZF$J8OI7`^J : nJB#KxKx-mPQTάo祾'W;T蜧mǝktQuK Is^#0J/d>d?d6ORe k@/.Y*!j.,W=Im~/HF,$s-_ IDAT 5|~ҽA~k*}:Sb2~HvyJ4 CxdJqz$nOS/K|ԁFXh=%|s܅-}g\$]B @׶bOi qi<2DJաlo6e7`N5X7NcZ˖u)} }&dν]ޓ-m_)azи-]h_7KX&cSEΓX#ĝ_?D aLvkiIؐ7es{1`z&h:^QAw6E"$2uױQL۷ܺ(g!/muB/1{&|v`$c"U杭E\b|UpŜ KD`{ 1X+Y# b :G]YYyv~ ЏI&]?q@ε|}qipH\4{X# t;b We0bFAAAZfAAA>̺   tc-_r BX@&A^YAAnJ AAuT곿aƣT^Z}Kҷh[wxӄNʦpe;bkI9.Iߦnݥݾ tB&&bS{wv6Dl4Xwd'yW/rpg|O&y:ȉ %.yvX67~i?l7o6$,MtDl<"6]RT)e`**HZ ~JdILDDX~%y&Gv}'t +WWuur4sn\Dﴼ".磻 KĦWWuurTs|kNS}fthj\*ΈIl {fl~u$/"G禛0~wJ͡4 Gɗ;RRP ٿq6)ӯW}啣tLv6ΉԳRR/E_ [p Kf ^{/HH *bӕz39O5e|^JOY01?gŖ(6s!FH;^ v?a?ZN \Fy8-Kd3)e(7$j@'w*V|uzOg'(?IŞWDe,,TOоl ! }k[Bk cs#7SxôBtܰeSP`cfv¹U(&ʠ΍I m@s]㋝Y9A=sҨ6/PT^G@-?GT|.kҋ(Åоc%k^T6E0`-># sו6J;iv7:P|~$)wF?Kx+I_ջ2)Vĥ1{ɭ3-V,߸v^=Dl c#`ϸmr9+wo|ּ̏/@Ħnʇ!{xrJ!g^"}5W6ZSW^V28 ]Qj33(P <^LI%Ԫyiu.Ndt&3zw :B9PY5Uٗc"uF?Rw?N'pyt@ jm $4$E'@#']lzn6k?/p+Qa37OMж~Õ&M`30d+Ò^㮡&vQ:(jgFFϽ4TΚV'ZGtp-I) HV$4Y',ǡ?ן-qL'Oscm褍:jP7d¦=³%$O:󙸠ve`ft?sl|BIۓIVuDIȉ7Eg8\zDlZbRéZ#Iq-S5AHn"6u[]7ґ7r2*}i$jQ~&B9CTkvrCN g=1 1 Uo4 Y o:Zʃ1rMSA?R&;VĶژ<9|ܹ̓=?]vk//Xksnjȳ=2{ SG7G؞sehoթv?Ħ_ny`+WRϔ_i|D$TuQJH_r>ubAmi|juN~vSak5)>$ J>N€A#4Ί:AzBdRE}:g`6I&-וZuXQOJjjQ BsuPUa Io~ynUfٳkr* K8~R& .xNrʥ"Y1y\z 9C~!i̿+s`_.A|.h'rMYrGL`Ҥ %aɟԍ_ LoEq=G+}|ؖC,r?%5~h^DwʦrĐFS& (YKƳNOg^6MsvPrPby%1@QǎF$bGY>*6 =M"6uMόMjg5su;GNVA '(æL}ɟ#a dsqhI107/@);Ⱦ<3A6);z{~=_}ΊG'I1Oڑ>AU0I wp\{yZڄ4&~xSVA_sMPQFӔhh$TUiiQmҞT n7d1!I#R߇8R7t\3_, =M"6u]OM+jZvvۨnk~]Ħ k 9M>Q"i= hzPxFpy̛73a| A5min`M 7oyrdSuGضiNv هìϛ66( fX9d ,e7>YݴlOc̃3/s8qm%DVY7P )ʣHMbҜ$GGع-"^*gwmSM!J[KaBhd$- 4ɀ9u Yڹ]^IF:j3 =M"6]J+6ɡI:8 rN@̺B?*m\{:Y<̂IrRo3?ql)Lex<#'2ĿXŌa_*[jq?Y~2[>g(J‡s/QJٿkZ JafDTUf ~͇2al QL~rgǵdIcڸcz{W  3Tfhi8)фw0"\MCT64fN}Ä>h')u^[N\@v&(u\׽;M F笢!1J?[xi4?sW'mAzDl c&DzsG|6e|d772>N崈MW:!X*wzpZ":j2:dam` V8J~y=8nTMoɓI'&L&?C3 [ΗSPY]@Ei~FmG~vcY-,)ǣ#$n071^-Ih5a*7~hh;:N)j;/0w<`[?n4.Ϡ^n:?ʒo3-5|姼Ɏ1` >'\Pt$\b˧EΏ lm~tF#;n}_^_6oQcVm)a :τ ٲ $fs(|A3Dlcr|MvLD'*R,bӕHTV/wYC 37ҧg$u*f{GGˋ%]]᫞V޶\ ud;"6]UO+o[:\5  , ?5 ݅X#ծ3  M   tSb.El>%s7UϨ,Г$\`];w /Kbȹ;𔦳e.QIĦ{+elyȨޥ` $2?&drj(P ڋطq[''#I:ٳR xo ƀ%8ީc9kߚADdTne},]0=Tgɯ­&~40x󾖣mGKOS<Ό 㟬<7[ADlcj?~3Gɑ/ZߵΥ"e?^ ]PRN`KShgm(#S [kl+'#/ž8;In'4/\ "KV˗嵹xؖs:~ 6٣zaT+xMTF"AyK1~̞Cb-oڪ h, $Pj.kҋ(k57”M la*H¢wӏ+5KX+jK\3oMǷP(O?D*775#`ϸmr"Z QWyw|c 7/~hVN6eJ 1=^mL/}6Z;3(Oxd@STP3hMg <-/q0!I5MKH&.cl{v)Xz9 IOgқjM56A撿9Q@I4d/|<)qh$rĈ;#T|:(qxHKH|r0dRAdj $@ͧj#̊Pͫr c@edlM)P;SBv~džCY}6bM&>^` V*ŻX>c-19xe1;FP#KyUqt P50\psho\Fʍ0oƟXg;W;a "B FؙO읏A wrGX4 =׊UtqM IDATx\~Drő$*i"pOaΛ/1]u?/#}xwQvHm4:*6{;"7:GE܆adxOQLQz8f7:5q3'8i.龜j6 bl0 牊VĜʁMK{|Q27|dz8In Ko&"aA24<2$=E3cNhZ2J(Bk `eD*tqR*2d8,1y6$i(uTBѡ709zK׾ {@oQ u|[) t^SQaKku1 wjў>x*9`ZNٞy|އHy%I.Iu5md}p=\/x7{L, K-y.io'0u݌l9t'X*[ٵY0`06J$DjSHmTe=1}ox 3$i\`:%{v-(P`ӮbpvV>ߊ;;|'6on3m)n L;_tA趒l+ލ7`'Zt"G\ I 7p#gB4{ЭYYj q9sx^C<6ٻ4;_<Ԝ,^<9 S{@N8{廕<5 5# - QfC_^[#%9-B_,uσR\pW(+02I(?v7thGH.|Y|>} Oso-ΰ zvĸ,ĉ*Q9=a&m\)xV.g]n% 6CjЦ Qs-(M9 n`P$9Ͷ_aOeX1|K:VօtJ~={b$0cO.s׍ 꾖7e7x'E9ťFzS }SlvQw2na_k:Ls Xx+%2u5 ': y/`H.X-0 }2!6Ϛ_W@*K)v8{aC,^#ɛhk#^Θsrч7 1ء.yu$ڽ)[ώu=2y,>]S3KׅÀ@8kêE_[0wt`G]O\mE`N`tvݡ#~7'mz@G@d `<|oo@ )){k>ҟ/İz·4q^ Ss!]=ֳRM 1xJݜtI|G"iHmXNa~֬^JV 7 ytح+4My+Wۖևu/L^;m R~s1O]ݏUeǯaXN-0|c{N+qɕ$88@jSmHm$ 88‚|*;Wa~$o#~\Mg':5 wz=Y|:Zun䪹luch?YP$䲐w˞d'rع*isI~{˷&MI UL{<>i'L!!]f\DhPu+ǿ%.A8=ݼkᆸic?l¾#T@i9lΣPfL+N2>b=WfpePԦ fm뛥^W s.g ə50߼CwgBkT֥6]1MͲT+97giO:Y8yE4.%;9UWU{~o`1̊6N,”ťtbO^ں ΒB)*ؖ‚`xptd܎0;` _3}>5 38p:.kZ)n{u`T) :!nB7c:=u+Xvl 8f(zlENpĸ%iH^>ԍFPsٷp:3W"@m8xe5킭$-GGy yuJМ8>بk&ԦHmjڤ|śx7Kn-WN.?b+:a˂yG=73៳YxdbRZ6]~eݼ5py?71[k$߻xdB,b?Wvswɋ;=xb?&h*ġ1fL2'Q_C=Q{6l(~"]|^%t>/p_5NYI˷'&>g@cyh絠뻞~ؒOzloIaǛH8mG5TqlB_鋏.}vX=iahJ\M{/4&]BztoiDK$zbݓ.{-v$@ L%KwyԒ~96_&9QFjX?}_ x=C>v#᥎hxUsD4<(:c%mMʵIGШnm@pAϺ5oCxoW yy$tX|ĮVpPfԦ֧M2Qs2,QRm!pJS\ĹJZqh;KVaٽ6>=e$v.=#G{,])6:FW7[##PTƪqׯYv{(R;Q3n.5uF7ܝ52r P TZ-\T/]/hm5SJpݲ $ L{w7 qA:_^ '7 #A \6͚ί3޴h~:x[DŐ ;`:b}ߧpS.*!*U⠡#PC[0,bu_͕]L *(՗ . |g%L}yFMfpt4 f0 r 5&6@*l^jئ뾾1:j71clon\]šZ*4lzgdQ]~ނzӢZ誗~4<ԆTq:"xo{{c1C3(ZAÊf+l֜hRi۹ sֳ=e41QY/~=<1 džp İgí/Hg뢥L?SUwx ^hlN['6lHRԦˍkNi3 Y:%.@ĘWgWRGz'nMtXg6UкIi.׽Dr6w>P$)~k\ YV_?̢i~؂hgY΋v뎓:>A{}Wi0W׊ Kmvz=K,8;;_msDaa!+V`Ȑ!RZ h+R$m hf5>hV3]Cޚ IoyLl[<ҖZM}[tY0 q5Mfa46TukжM!hVKjD`f9@j( `MD"Ԃdj6Tjb2]#RԭM.iS**MYwz4j=9p4WɭA%j!H)F#F|+QUR.E$G%m ]@L42Ō9;~MH$I @vvvH4YYTUOq(-K9V"4rWsh_N1B ¦"Ӧz\$DpTUߟk^9jد Jjj*Rr͠*'WQlXzgwЁNӃrSm6+*lh ka.SN` m/ reH$EUUgݺux{{ニ :EQB(J-i9B IDATil6 8s YYY% n) I;Q KehR+K BQM({ o0{',KHZrFI[J"''r[Zzk6899ၷ7vvvRU[7ʺMRCq%z)K^ 9(4 YYE6Iʺ#iHg#H$ֆ&IKP]YŐH$ I"\`$D"H$VJuzzzմC"H$jMʞuD"H$"+D"H$I+EV֯[̤[%\9m+_'+H$mMɅu%u)NfYXcpTDD"iHmH.} & O.:%LxܻYG,8CYE vt3 n|[>o0/}!jfimfByqh e?obՇ1Wfq35|=?6n[ ΄? 72`P/"[a{HcµtX{ǁ3gK{F'ʩi:o_㉛]4 E8eu#1?(GX;l3AGpݭ/[I[Bj&M:@1aoo_7k3,Rd;s?}~'(< 2*[ZF>,Ͼ0Y-ҲSd@8ꃂJ\T 4K*ǹƫF%vʆF~vFn5|?,<>1ɇSlnjNS'n% ?c#cL]EȐ<|x-ӯs }$~y~4-wfN%yβTm>s>0VbONn@JZ" 65 M-I҆B!dd{A?'),æw7 N#'lH9Mna1g⮛12V/>fFp}2HT1JG)*c=-nNi`ƒ*FlNiyjGWkğDNDDD`#Σw6'%™߾E.s#hy-KeWD9&܂:pۨ^ٻjKZNo0nn VþsXy*N! 5C9?U!%QoMb4\o~F" yլOІUn}35Oۡfep!!pS:﷘Ch,^p_ㅙM'1ٝ>wDҒHm$Ir}ф=,yV#NnkdX_.%9$9LZVehR):s?~C ~)nZ~ޑD(G)Jʾk'@$YV K75u뒱eV!C"M]/(#/i7Gr`#&̘ތ8>4o"c7]ZD+!hؓ<]$*=u,..H<xH90s엏bC9q#晧立!f}6eZf&-%%8JfpЎ֛ؐ]T;•lR7bыwua{qN[P IrKωUԏ7zP*^a:䑚ژH$M %MR$m:zm*ϫac`GʻQVޟá$iV}Zx/swXk:?e>VZ(<}N`w!DY[ɔt̽w%(CJ.ا)FFZE }òؼ)Z-űo(V΀Oc3G8Yqt ,؁o)jJ!&>6br-Kk2,VO-y wvBcr8bv$&>FyUqt ( ךs .9B4ܫj.VJt/~VGԐ稍CxbD}|Xm ?.$_-!f+TtٹxйD"i96Im$7  * +X{r\ PWNNX;) /B' Bqsx+&1aw<5c6(|'>_j #*P\0#ݺ=}io&DOLlp$Xv3}]e4.$:UdY¼e;I>E܆adxOQLQz8f7:53'8i.龜j6 Nʂ٬a0s\%XM>TŔ 7΍XUsf 쉼i=2Ո HӉ

TZJI{;K9q3G:큷vhZ\3Gc,Oe?q.;f/ z{BpgXW+& *.aWn8ۊ@chX̖.8SHAJ(Ky%\~{g9J{||%-93_W%[O4 f3 Ɔ^DҪ6Տ&Ik]deQ.vyQR- *zRO(~=`N$w6>@ }T{bpRR `hRO*~>lFx@D'و@pml&ϯ7wlkJ 0(p>w+#yj@jFZ$ QafCË凷XGJrZEY _Y*^NTw\,P s.tcHyqck "kG5؎ ef&t}7 REwOw=Dr RHmj{Hmn'CqQvx.!}2%-cŏCg :vtPٺ:B:&VYzyl€wGBҗ(rU;ظp>4v.N &mO9 d/H?ٲt NHiڰcؼj;'+MNɛS˿%w(nad.~P?㜬ڮXEqxj~KM4XߙB1(nGr|`c8GUyJZau8XDƐT?R.&I+џ0 QfCzrcMh`4h7 gj5g%sPs4%7p@Y *&a~b`-Lç]"!H{SЁgLJ:w l)Eՙpt%aK pc5aբ/ĈO;:#'xi.6bRw':wSśٓ6p=#CL2_lP7^͚=vhX(_$A:~LgkKpCc*,dI w$k M AjSHmnDA~JzzնESKyM<2w5vOV-Bqcbg.Z|o|Lr>>5L&>>>]hH$UDj!+&!fU;NSUM+H$Gj-"+&c0 m!0 X,mD"H"R$m YY4 !b2W̷柢(L&l6v夬Ŋcș51ixH$W ] EjW\>+ZYGwD މL;'K/3rv.~3{KI$-C[.-.]WV]ͶVſ8~߈xn:iUE–̢):-~˞q>N;iJ;X8kIqaq-o11lFIj~mI(q "榻0#ErS߻6K4 ^u,u"H}^:^"" ^ Æ#,ei+\/SBϺwr w^=z& '(Թuc'IeeNf907AFhyg9|1ᇇY޹0}OGs$hyhaÓuhE,u 3|=z0&F{cg'MaRyNY|u|C2QS.[XE*3 veQ@+WLcgO@Gc$+8\%ũXI,C/G:~+o:[wWI٩mtS3~cgzKDZ֥sd'6o f5bFf&>z_JzrlKb7?&xD FR~c/c0;}`וv'?O,S^z۞5oaj7 0Qxd~>v QԖ+v2v5#%2Ɍ>ӵg?;yoEZR^a=y[r"ލv;–ͮ_~dކ窸weqr+39Ec=3Cƍg`TU+nx3ԗ ^cv5_r+Rp%&2x*/N>x(7)`.NgCxNl'rؓOM"ݩϻxi{V,{Y0(w3#1t&s6 aRlÄX=RrfNub\d=>:ü8ힺj.Ng]\Cmvq_˯[H]=.Jrt~t,]ш_׮YˎcF*OVMjdMGF cW s I}eMĪbl1xI,om?ƠD:_[Īt}OХNє)ɩECw}u}iWY! s{xV@ΝG&h+FsEh'k?N9~)cӌ(foxgbN:L~(} Civ.){:ijV4$5+cćQ}bR6t,Ϣ0đӎxI]:MNGnye߆]dGtrTOqz̃s k,;&v%NrE]gK[9)I'PrR;Eo@Xwya֒v96_&9QFjX?}_ Z=yC>v#᥎hxUMD4<(5%AҶNI+-D\Lը޷ )t/rb>דvi㈳˹9tTbqpָu]]YWs2,QRm!pJS\Ĺa ZvʥÄ33͞x;V\gО舣{^+]7ȇ7jGθp|F7ܝ52r |na蕇=Rz?܎_}cHdo|$~ s>כx_%ZQr Oၗ Cŧ -nj.YgU\b=!mRʭU`Dw |).L;xVd< Qw-ɐǻS2`,Ps$}Qa& :;@dEųAi&4E"헱efL艿B\5+7|SLsWeeNjW \]'lg&;32͆rUQegyo@jWe8׉v54 [~-z*R>_TfU0վX[QX^ƓxG@ȿj& El%p{TW*ɼ݄7{>mXfLGԈ'xrx,vM랖J7͌cw3r'C _^-534]6Ѯ;svp֝xʔҫwoc[%g?nߗna.poN0,󧤙>I8vcÃ˩Ч`Es ʫCNΒ9T=>|R|3L{ DvU:\rq(Now |@ޙʍ.-CyqnKD;_"u)gk|.IjW]\u;㸩 y&_θ:kdg9h( 픊O@??<J€%yGQm;5F:CD}PQ{A{ J !$MvH!]H /|vv{Ͻ9Ι 28b,؛^Q=,qu~w'X*Kr\,#֌M#SYvz7Tf${ }Xvma=fIW.&{'6L> JU%FwrH"9;ss)RCل`'S7x&O-ZAsOn-7m:O@#xwKJ vBgn.g뺷]?\I:_{A5~37qgڴ g朩|e{de`(G;n9~PRp n8)$RusXח5|t N,%ү_VIAw4&8nzGWU*9k~c<<8ìu8֢=?AWݒy|n IDAThlk8Di˕Իka8l,}|3%'?-NfJ]Htlʲw!ڪ]v ›?;t WXqm,lc>H_ (7$'cfٗĘZQl*d"c&.ZǙa<=yJlA U 2wxV6RU>̱8k%sf,dĽPxsكi  [=i4;].s؉mW,fH>xUge_YcAչK4D6ȴY_@Alsx]= z<0}|<.Dtpvz_Fg]G̝CUZh~BIh٪0^o2Am6}5["!Cu#gy 5̐gɰ[sgi&1aӸݖ(sw]9e Dſ iA15j) b<ʙo$ͻ={cKخK#^՜%S Ve)L&/fРAMxW,K{incy籎2UG>~z=7 `UIPv5]^^^}\9z,?*v6L$?ǖߙqe4plVػ2y]@ ]v| fǭ0f`0\2CyNHٯi ٷ9C6lV  v9Fخ%uQFl>\Fb"1}$-@ 4cquu%;;,%fgg3@ KκPӫ&0 _;W F)6qƬߌ[)"Hv(InC YԞK:s{Y<{!#lGCXlKz2Nk#Ū?aNj*Z G6mJz:Iɯn id22&ڜ[l?9$w[tnx4Yg9z|mt0"j*>yWRmϑKCmݽ9 ױ'%z_ZaDΒ%ۿo/2:xA }s5 'O_wH ]e"hŽ,SΖ-x yg (s*3VrȅcT?wpaCU龶uNMpF׌Z؄UC1idҲ3(WWT7eIi02.9̷?`QJgyyh',h0\ӘɗpSbY޹,Es E+ss3j9{3|p:#(Wڜ[ر P1gxjXO9.o.]S?cj;NQQVӥkEuml;cCC OpKG۫ǜe8tƌj#׽<6RmXm_[xADL Ta}s{&Nwȅm3hէz+9&+v;A1m7|(Bn99!yс4qbDLLLi3| yl8<2gV}×R6q&0Fn lc v$;L[Qv)-ɬ8cE2z҄w2sؽ`:7d{dk~;=\T+NcmxUI-$Pz6C"6Vh%CXlc#'F[v3"ͱ]|{0YJa)/9;Sƭ"ڙl{\(2c2+\s׶}yW/ǿq:cj~ ܃aW(,+c<{Ơbtye>֍aG0ڡ2tNGW\3Ÿ߅>ܰs)q YQ/7 \:} ;61zp4ѿҘZ8 q`lI9Fh{aH&ab/n~}nE:^ɖcxX6ՄQO_ax񼮜a9wX:*[ ~UKb- jr1Wfkl7@j4H\+>*vj箱o K.dEAv y4W9:S>&+sʮ81h:sC7WEMh5/cpYY_AAAˮE%צɽk̏lFk1Rt:?}/[Q5o=S[f4>!h)̵3™}9o%7m]+nn(@#;3ώgL_N.;,̃iǞ`܃i-a>3>sﮣxyxDs89 P̡Y͚" {GwTj:{d.eݸtqcͣ~pjl G9ML`iU 2%y\ @- dGw$X`*@ ÈFv.\EfY[XL˛o{&K*?6yhbK/K/ +T>m/,'`;a%U9W>QȊlc\SlڀڡuxƎczz)Sgac};I# tjiWj-0оct5yן~^ kk"X90c>l+Nt*|g 3I4MD#);Fb9zJɱD:%*GS"483f8y"EvӉ݋Z'iq-Oq.5]H%=+b+nbrgl(DkP9vTŊ7~V3R*QD] xz{"ralu2֜T0zya@1cVՉvSs03M#"bl}AyXm=w\%/"UgzC&ȀKQ-G!U+V+oXvzt4uUJ0NJDZy2e}ooQh2c/NjVrU"՟nbSص1 ד pn>y/;Vo#]Omܑ;s5mM&̸Htr )wЗxݴUؿJТ,n+ps9^dJH6f\N6άc zMYÆ7I}n>zN^^<&AɌkE?)9瞜tڦ"( (&}$q3kP͆w)9d.%ɾZ6c# |{Q!I @ڦ/9t(%.q]:j5Zhy'aQKW.$^k^6H.a62u)lx{pvW^җ,bWϿ:9arN!;G(VA;̡,^GH&6'Fܼ].Oq0"FfS:/YML[#bJ['ڥ5Iy'Ѥ%GVo+c$u`GΗW$RϱkQHJDS!v jdVQH`yVzm6)P@5mdd=r )xQInX7|~Uןo ^8h"x֬8e!?m[ώ桮(qXEroIϮ!%@2bC\mɍ#{31;GgƸDiӧ-浍ֲh .ֽ-_1Ur3{SW'H=)Xo3pDEU3'U|.C"p OckMWzMP$ ډ69OɎyav;3m>Gm9 0(QM˦!)gsٟ'埪(v ]c$ng'޾;))Hp ˹ӜUBi׵~;9P|S?րb!+mNį>rs >7>@"$kt| J]~tKpgUB-YwdҢT \cHB8+[BZ RiR..}ZPqd8|d@ǰ&d_,[rxNnOG]6a(oo(B1,|rnwpxHgX=;vp=I * *2-E{10e^HZwz=*S7b~zg1n8}e3~ހW zuʜyU;$مF=ovBeƙ5ɴlZy;ZVnZXh4 'w ,c4wvi:H{/$1bRy@Ttt,(9nHXo=_VRAF.+WCt3jAN5faiٵuBV] ɬ#@[q_;ˎo,w\" ,z:=&6b?"%d* wĪ,p EC`r.k0=SXr<}B d9oī}(r.gλ`G2)06ٻpB@roM tѷ|/DX_tE8YO1wJhz9f;TKH gf"rhG ]3EARضh+H$grVl*P5"/v0}M8n*WAxIEA/u$w !ŭV]ˌ^RXHӹmǗǪsD_~&'tCPL7Jnye@"l+S+57Q;"eS;2{~7iVe;ԽֻvuMF1`L*q/#E Btq y> rL6! m#JLS/[@َ=CytHoBdvNJ),{*]W^dHH1EŠ7w?t=uwU1=j+T{+͉">?H p;3ґ5{S16b0쎿qڡ wK[!K-#Њ-+;4y5s]v)k3VJСH$ JDd:6+\Ins(%l@ QנS m+8\Ep Öq>7Q8@ \.YTjm,ٜ9Mh|73^7\G/*N F8h1iZ oAY#Y @p%TY@  S~%^&)@ `S@ **]IАPZ$5xσbϺ@ &{jjRTTT'@ 񵾆nG$dYFe$I???0 iTA8FdbϞ=Lk'dFSo/// ãŬw.5!I[nѣwS WӫwZ_GUK`fQUUU),,ߏѢ/ *κ!I[lѣ5hí*`QdgggҥK~#!t)pLZZVV[j$IG7^^^(Jݍm,$Ixy&22˗燧@8Fd"--7 ]GPl6h" O1K#$Iȑ#ၫk}$ 77V%!><==,AD8FEᎏo4RFؗOFF7TDVR L5k& 8UɓhZv+OhκёIͯ m0 d-J t)p,l뢏? g]Pp I׍$ (HtCEc. 2vNw]Acrg]twA9Y4:'-I:^8B$E`047.7WyD zM&/=1PpnY1 yw.rS'h\|5Im@kKC 5,| |kbˣ.Π( Z#ƏzM:*uA)uYWαst7\ K= M%S'3w vdݣ P]iY:WIc v͡Glۛ}W_b\K(}FgdL Jsbguyyh]ooHt-G ʨgy:O| W\T3[|Ӛ2Whi?|K  V 9>e΋` `MeĘ!pbӧM#9w*s٬~IÈT*>w=;DBI%ŬQQ#Ӻk2[7H*,!mf=@dkjbݧdokݳXG|I'WPX8FOCZ p'SZzl)~W5T;.Ղգ:ti߿[HyEωo۷,9:~9p|^KT{%-wd \sH߻|KSճ0t ~hqt>]/gSPΡ~Lgh{d%ճnj*EJ89y ǎ9/%~#F[⯩y~1^ :8T?%@_o\:%%Vƃ0?z䪦nTʵ+K^ŋEG$N Xz'#1񕉤} tv63x$[ M#m#NI֠Z (|LhBԅ%m6>I;iB޹\ 7s㱎eє/NL*_򳜵jjà{g@+;Kɫuٟ>ަ58K^spp<:M?ͬ1S I=UٓCkn N]ז]i㾁Sݬ% d|;v*]7q2C0 D=q+ٝaSl,"8 wmϸ+^Cd7=TsִƂ#]b̃O khW1 ::xmYg{= W/+/3[)wqҿ'M >k:'@¹9Fv/xV鿰=0KyU)+͛к]bl<l}ݝV`CFt4֭jҲ' aNGVT:S|:uUX:j&7߆!(_ @ŜoFݡ tNJԼ ^f=>u"9EUґ75Ûl+?LȻci/5;-_~rm:F9QڍڼI!S96A[pEƏS;yyf0.$j؜|Ya={nIr=+N]ϖ ztGwW- ",Xbm(ZlFmi*-SZlzҢ]"Zf1RsP\j>N@.کz\mcL{?D׋Q,\zp[wt o<>֛HF~n>R<9:5g9˧?{dZ$@*f|׸`l+ߩ8~?/u*Kpmp6 ]WÞB%|uA5YWroJ^sG_H_xev:&(fH.ȸOFXrF7tO`lZ#3D3厔n.duM7b& vdlkK˻/w a\8oBlIQ-cާj*ɇpӾbEn"_DS*5A+ej5'<) a݁Z RϠ$"#!+!KnW!]+{m1QAp<^@ [2\E/.rW濊;M:q1~xϏ`<|ԓ+y< 6ҞC.yWG{±rk>HmFG:FFLt8[XPqhӗv [z;h1go3 ;~gk<C{֔.]:KU9‹/NG]+RG!0*Lp:J&P RQW&^.ƻ~|NSydTyW1'}ۓǹ9lR 1 n "a wp O ..Ph.vAKfLOiXWrI:c4q^NxzD~qGzRQWMdzXضz;&Ԃj-un͐*YV53!ZzU pL7ݟ_gLzw qS8R>u"n/ѵ 6a S8ZpQA5c2+%6obL1+`ίex;vM u{y-x1R7]||]z UuKμ8a}z85%/Nxݻ;8RYuY$|L%3Kxx:}7n׉cz яݧ7&GdmWiƕf3*ob[)ۓhKRhh6///_<٦S]|ŠRX`vrd 2*JT>~v1֎㸿S.>RsjyEej$l(Jڪʩ nW1vb'<ů-^y5_cy|'|߽3Ui=o3džWW]Dó_Kxǁs['NkK Û\rr嗜#;|||\smWZm|%5ejTؕv撑sM@ ;dPJeb;z:"BАCAaM,vP7_x^׏#K9 KPMEz <W AyϏ{Y^Ŗ" b]./sL%6^@^.瓴~9kSrB HғY}>%0ZXS+.m0rjMH~MX={&A,⤻A5mv*ؔ$ߙ7bJC˧MHi6HAh$ Oa 4A Գs#DZ K:CX`З=I#9f]ಉUA)(Ī-۱8[wy.ۄWY mUU[c".3){(Mv/Lr5#DYYu9B=% 22Ǐ[ 8-00J7 °׸6~С.u _?8\Bqcܒe||^FgǛ|xLMf /_E%X'M#ȓg3z’7n4рk,Nm܃M?G$\dph1y}Geꛌ / ӛI[Yxv!FwlXyazUi>~ߝoĤ߉|;۹]Ws]?~r6n _}- Q>r)TxN*|uR~^E^^^}r]''><|CǾVׯ5ŋ4hUr&B@QL­ފkgVeDEE]K$hZ.]FNh”Wu(I?q}ˎou`f]͆p7Bg0 (JC?4N6())A^-7Ƃp֯"+ (7l4VREQ0 TE \5&T-j5"(JvvuuPUv/ХvJd] W|)ePE*{nhqe Ν;b6rfNVn8gDR 6 wwwΞ=K```A͔T0+; ^$x OHH+W$ @<==h4Ȳ$IȲ\w}=,(Jv|Μ9CVV!!!pBgP@vA\\\\ԥ}>#T1vK%99Y82.htl65kj%++ fsUw}o*M•K&M07s't)p(ʕ+ $ _TUEۤVd۹\N>Cff&!!!,@Y4Zʍsc4Еb˄Хb!I:Jvv6gϞm7ucǎ o,o8 !887774M uȳ.hARPR\\V%44p\׼-bB*(@  a X"n@@ @@=@ h(GԿzbj.p h#s4־"@ N*`48ɦw%N b**zbg==a/gE=PS,xx (5!`'$I6ٝ)MȆW\3|'g\.QKzʓQ*b(Iii)m$/cQu8\..2Xjf$&&HXXXSWI[ :m۶jҪU+bcclG7T՛Y\디wBYYrAbr,J.(sNhӦ G\sT95+(( // IKK;#@uQcYOv?)BDHڶmˢE#77ɯ@ pp8dذab20*B=؎=2f.>>:t:Y`m۶n7e5$w`h{INIu(L&̶!V IDAT$77i+@$}#bQuPE!++$°lM]%NpFV+DNN-[Qycbbعsg%H,XĢ$"۷nݺU'Hj֭[*MBRHOOObqs,J.(,;8Պi(rFH[@i*F?MSEbqs,J.ffnwSWIH[@:n7$?kƃ@cXl<( aZb2 X_$Җ"PT} d4*V g ꟽHbs,J^֟'#|0cRLgͭ7j)@!*U=ּn~a=jCciݩKh:XTO,)C3ZEđء+}~m5ellžAw >~F/`y,y7um dˋT)F>Y"7jqZEvdj~:v JM$ܔJ95EœlyȖ4e"~ɂqg]7B:{Gwv&yn|U| O623"qǢ}g6Fbq4X^8Y6~eϣ/'l{_qi|"Bc,λ;.aJʫ /<:?勣Oz=8)~})-UMݹ) m+tXzFֱYk |="QWLqt|>=[Xqe XU!gXWKPg+o&>ssC~^k'ɺVUbk_f)md??sJҸ[hf2oƧ=+7K:x<|>]X`9\S HvS})L/y}gBzG WlkV|Xk\ H||>@{O_5G_ gF{)W@sɒ31{]R|R1?@-Y_4 @tMP&VKt9b'Af>~>!ȶuwnš/72Wɓ%o::f+ fyc<, 3ɼ1EY3=@rr>#r2q9N&T[][k,Uuog|SrCj6g'1Ƚm憧hp.|\"ﮌ'!9웚M om9.~~K^10,94y6m^ʓOr}jRz Y7tʨyjTٕHϘ9e&'#ra8*gMi}`cմLvө[;{%ww2w^+aa*O`1ktµYu\ln o+i|R-߲HŒhzi1ń~dңC =rVWgW+( (TԵa`'~}R$c,Շƅlޒ\{9k:^f(!g3|@k:ZOq]pF M]ؑEpۃфYٳ+m7EkX2#bq6IltyVzcQwdžtϦGZ1g~ȯ=`6vZۙA/X2q zWxT)`f\ P$ckQ~%&setl]duz6ù9vEܕkKD7Oޫ`hىs頕satnro7 ShG^D򁟘,dž 8NX9Ў!/]S1!؋6.KEFaoՊV)O_ vU${X#2FX" ):\ꥼA-:ѭKgŸ1[w9ړc/'50[|Ncweن-X ֺ0F^~蠕/v^/qx'~ ) ȚQ4pP/>^cǹgTL :, 1/;J{(Ho> *rQ!7M(m\OGGݳ5PLtL=hEG/Y˒ |Ā7u(7q 퍠ociXZe,VRk{n{E".s{kL*,yJCtʰTz^%4n))BJV(gF,j0JH_}${:: ؂pat3x-J/Y c3:7$0A^5vr6CMfM Vq(#Sy- M^}*ёrPTNE"-%jl3gu8'd=K׸te_#QrW/sӥ/A!k4x-o4~k[e>^?wݘ@OzvV,^O '  'sI=+,߲܂ eP=jeb蛖[6>uDf%Gܑ1(i Åhzp,7aY, =w]E]b ,q?xv>ݣ1QmSE]ӎs~~BTʵ<>JPn|?ylN$[P^BI)VOOYk:ҢP($تSR\z6S F nfֿJ F1XH)*v*Gc@q{4(x*Ǣ)T ΜKXߏ>R%->%jDY`>ep\?>̭ЭC2kT)>W[MՖ") ܇+(QOЦzlĨ&j(aHӑ.Ndպ\. ݧda#( F儼i$ZGh(:7":k` >FjX e yt tpvaԸg5^O󏖳l<"w">z~w=i{:~WR,9+"Q^~2z)%%` 9Kr0YV*9ys4[4:ljI`Ydlݫ#f5L5gEb\9A^ q~1ſƹ~s30PD&3;έ$r_ 'i+CPWDfvbJ7I3K Ɩ%gө^ɺNKhʤ]#=`y?ezMXUJGagڝϱb;U:Q0L2KٽxsWIǏ_gJDDf(OFP73lZ:z%Z?;tiC|͹uK+V}Q,[F ի@3mRSG{ل <%7 ;R[wy ݆0Cܟ/hɂG~wx0]SѴP]7^릳CμOq/v{W:vu\$6%ps<uR'XP,E V f]rϱxzY:+my߹.DZ e5Z#s!LXEJEy^ @X[]nW/W[Ϥσm 4<=pގH),-r9NBREvCe1 Z:aA;tͯE)ęZ~`iokK3yɮ7/ ]르4(u(?4>O՜@]Yk)Ux)cڰR9;|97y_WZ^C8/nj.$%Fo*FVeǪCeX#]dƤxLF֙gxL~躆=k/w)η_fН-^la?OGNrVĠ9,F̊iY?}:qC4!JQaAaaW:Ӌ{fzܚ"}_b23g\r 6[e6%%%|\vex<LH[DDD{/{)B֭n ɈT¡TLOz+#zؼy 5($.cQnGQf3.\q: TVǠ濡DGGGPPPuFR?-G\nZlIBB<o&F#T+=@Z%V]ˇ 8{l6s!+$/PcQnKu1L$&&Һuk|'\ m)(aXؽ{7GUU\.eeed* rQTTp|SX@EIEJD}ԛ_oMvQIDH,@a0B!B(*`B!W`dBQ5T!tҳ.B! "`9222p8\4QjJ#""HLL$11fB!NLupE!==;w@6mA1uHB:NڵΤyxH[>E_f#1e8K||yVbJek]0GDЊ]X`9\S FiטSƍBk5y3>YyA(R1\NA cU}s#%^SYmcIjQ&sjrSӗ(Tq*4ǟ,=e jESj*8jw~>֐}OCh˷H]%  ,Q2)(bUnO!d=7>FSerεZwZfn#'Ʉ*`џޡ+X| v큥z_Y:t4wWqY_o'WoL7@7K7MwF1Lwi-9 h;qܵ9*+l\^ze=){i`/(g'1Ƚm憧hp%НNJ<'1 xSt5c|0&B!;}%{UE9e+]ֺbHd3(zy?k^ZL1!fD+ʩ\^QH@y~Nu ږBqa3:=]JJ9zcmN2L@/,0"kTITN"4C .Z~ʓK6:Rl*{▋ڞta ȋH>6Ey "ڑJҾR5ehTkVh*o k']Erp7tCN|?`KS{pW޻nL>{x'}6u;W? jщn]:ӵ( m؊ϡGמ {9ٺ`ts-6TnEƲt0mgZA>DYEZq=3{*n}W_}g0;87CיU?# 6b/2Uܕop"B6m2˹Yy: { !&Y/V{A &PrXFTsK8:Ql s 7J60AF;s0P,>b'[NY; 3җnITtu7NCS~fFdXE /6.<|7璣\Wk"#堨GDG@iIi d`R.]Cx=K׸*3f]!h`ԹM:WO zBdޗgPrW27]:GsSs٩]⛹_71 &O/Y\B!NG鄇?Ë3s;anYT.H)HA2;£QJlRƾD0>>>X^xvyTΝ)) J|i8kMq_Z [uJKO )#t襛Rb¹Qu}cRbVb}en4Ճ\?TnC'J(>}&v'o )an8nYFcͬe{X0S=@B>>I][f'{51nlDב"JؔWG̀kkjΊ. =zAmi<yNBʎ$1n>?yI#:bwQR + `ψs$ne% 'CGsYNϦޫ&*cweAzx#5v$u SXj7a;~m>eWDfvbJ7I3K fFJ#KwIY lFe1:9۩_pzgPD&3; ;jZK,?!kxbr8J+r LDDu5/ ڎs>ࣄI:♿Se<1;%k~Obv<եvF&Gc\5E-#Ԩ`qQZV5s.'}.hQ9^ȈjD+.uBg<>]OK[݅ -G'sL)a\rbтe*ΟvU߭e;BJg+p `\5 9=v~O}?jK.؅fIǏ_gJDDf(OF )'yP ve,)iU=0i]sU%%c]S|OvOֆ%|Em}z66m/K>gN W(Y7Ly͜cI4O!q{rر:Qs t3yɮ7/ ]르4(ԋ?q'L{+ f̓c뺎h񜸊;>7ݍӖ5yXxzyw+ҽ躎X,gfH[ !kEX/SzZxqzy<V6CҖB!Dg %S?%Mk#iigloBQ;IEl5yyyl6/n-BI.ivW5"Px<ͪ.-Bd̺(ngɒ%Oxx8F( hi߫JQQ$77Nll,nIzI[ !ҍ"(lrK~~>N:oS}x*Bhh(n6iKq2tBT,(ɺXU=Z_5{ieȄ8$BQ0$9j>-BN֥C!B"!B᧪{e̺B! !DYB!OS8\..2Xğh<ILL$,,-Bd]EQHOOgΝ$$$ЦM"##ZCuR͇\7<222HLL$--\[R!$"82336lL&LPNT%n5Op:,XmbۛMBR!$"(BVVIIIaٚJ^(4XVE!))ZlyFJ[ !SpG|||u_VxNgS&!m)BNuPEAU.U%y5iK!;IEQU,"EQ0͸JB!j'cBw̘xys(iXVX! VUU},~ҖB!wv,zcYJvzTMknUKǧB]{B89e>I.f5he9Mv-d3)uסzi6|>o#JY- FWä39osscgxbq|q'8>E_f#1e8oCwlL>G_O1Q)?INTTJ1L>IJFya6o3-'#=,nqǭhgcMȁ ;bܝ1}@Eg2&x qZRcSxoҶyXzF()?F]۲^N%g݌Dao3>6[Ҋwb<Ǭ?fW{zNx>I~Vk@qǒsL̚rAX;)IwHf('%^SZmǎub5y}9ڡ;ed޷YvHz[:n& ^Ձ^@S,QZɘG_>02<1U'wxms<=k?]}ۇ9/O-{N%4g]^ÕPN[t2Ͼoo'K>ah}~Da}ʽ#X揍N:˰q('ql˟Zɶ*)pD'oߤeRjhe?; e53Zߧχ82ٶ76ԍភQXXF<*7t6rR{+ fyc<, 3ɼ1EY3u.N &kb˯ms2:Pl=;toڮ=PŽNOSŷ4wWqOU?%ҵ2lMt˜sZЉ]Kؘ/vK[7ۉU 3͒MgݶQLSmK=__B!|ͷcֵRlXoY6zTh@Gx;-oʽCBž 98v$)8(G2~p0ĞKp,vZFQQQSxI5)3c<‹⋼= oe&ԶN{Ǫf0NaYPrw:rQr]/fzZnjn&=x7Y8]@7(}9j-I/L m@R|{cU>aS^K/e_l y=) 1 +٫*(Ρ-[ J֦O|Vco3 ltg!ո[X~'2unBS\y~apǛm#r1u.\xӵl}S|t46-e]Hq8]B>"yG0EyOIv9|ҾR:`#䥬R% {(?g/\U$^˱FdxITE ,*"E'u逑NDXź;z$lz-%tOY6EƲtG0  䚗~T7a0 KV\zlxb*n]5,+aqnHC*g/ji+ "ĆîCxX_{BS>B<<،xv?^?MN^}i8M׍䩀^mcct?F^/:HQhg&8J']]@Q\5nXt,ޝ[@ʄW7Uo UCk2 .EU?$:JKJυ@v(eu8tЋ׳t"hfyC5/s?%2Ίss8Qb7\Y:?QSŧ;B+ZL!z\#+N0IzI:M_JsECx0./׹@/+]G\HXi:ҢP"تSR\zdH11U@/̬/ĕz΍W|c$" jL$tpة' ɈVu` t6 6,aeJ_kjȤģ*6VrCh:%wԝp,_x9w}駷`E jKcT _y0yESt<BF鏩A4Oznv^}c jLRz)%%` YIJ%;hy[ +JN ֯>d;Ɵͩx"QʶMT ښAGdz"16ԫqoe/e&lJ(TYn;aj}d=ŔEyŧ0J6^٤%cO:s/!85|̺{lzVktmdk :z)u^ qatK, :\ݟ6Ay6KLFQZV.s.'}.hQƈjD+.uBg<>]OK[݅ -G'sLس~ aNfv,%\MZ.JHpOSOgڒ'vY-RQ> slE9|2zi- R?i0푯(p[nכ1ONN>IuF#I>Os|o5-t)&`&34vixҠ{K[6H^_B!RTXGPXXgx㞙:HX]L&~JXXhp8,\QF5R矤-Em""" BE3f]xsUX,G7]QǓiK!v>[g]ԏ덼Q>Ů7ՊxZ_ I[ !&dLX,4Mi+m)BNupl6yyyfD^^6$-BI.iv뜦*lv{a iK!;.ibYd qqqh`0( :iZRTTnfDR!NnGQf3.\q: TzxEUkSQBCC&.. nw׵)H[bFIEq^K+C&-$YBd]%Q!m)BXu.B!BY F!B?Uݳ.cօB W!*HϺB!~J&p8prp\DŪ%FQGDDHbb"aaaM]&'m)B$"(Bzz:;w$!!6my5Ӕj><呑Abb"iiigҖB!D$Ypɰa d2a2UrG7urW*q`x:tdmޔlҖB!D$YEQHJJ",, UD hj( IIIвe3GVR!N&o>@Zt:6 iK!v( V'w*4YO}H[ !I.f)lv7uUBQ;?}OF`Ƥ;@Q4Mj ! e0ZcB!w` شx˲Tӣj^s덭Z Ч<>-B|ܳrht/E -y|SUM6t_I[ P@"ZdEqA"c IDAT|U^quܑdtTDAY"ȾSvVJӤm$t!@iӏ%}zrҙt =CK|l9MQ@$WtD sɧhg'XfS2[iRu2}\یhx ^2o/7$巅cѭKxy5vƼsUΪO39;/Byʵ k%IOG:T~c4k%+ƾ4!n~v|L>{OQCrڝkf@j[jJ:xrp,%|QNy}f7<Gfԏ;AL۟Ɗ;Ꟶb5V;qZ23<'TKK!卑d}|)S 塑O`Wm=S_ʾyv\rqjLA94SywP%IHjԃ=Խ#z'g',dɁ j⥼X@D,^T6ۢ9lmd!FsL'I<4Fšuaiiƽ<{ߺdK[8^GAV4;joone1gaNd)"6ݹ]•7[ Rܾ+ְ~.ǿz}6]qlчLYW`;pƳܙǦN-{0צbܻ7vf։m0{/S?1#[x)OnP^b nǮТ]-JZBQjgκ0?E~G>/:[a7ֶw,Kt;9.LP@;@ZMt) - ط?r{ Ȇ~⨻䣬k~.set·'Ÿj@^~g,cǎeO'iti+n oǪ-j('S<ڍm~hrl!Ӿ܎뽌S O3}fq-ݮ wjvx4OѮlƒv}~Ԟꯇp{̘:E(MZg\%mPЏdgv/٦UHQsW6r.R/|֮X(`k4Pyn]*jŲ_B!|G-\]1 ǟoivC G7=PѨzJ%縻8l4?u!HݚC.x:grq{)pb;0[H> ;7,d[؍b!VF;qMj[RRo`ОXr%!6|9 uɁ8 ۱ji ȼ/=#biwиm۴&s?jQMsir%3.Agؽd~+&Vm/كU7Hmّ$NZN69vD9k~H%X[4P!N`ȟ_'ݕ~M\BZUd]?>$\ 8CN?IGGsKdTPcσ@s juܚf`͂docђM_ oϻX;KNΙLC갇W[Պ5Ӄ{ .q]@XD8lFD(ڴZifl:y[XQd4u ɜN:u/y?O|?o6A_3f̗p{o#_B!*ױmY6,xaF1}_N@>e2v :zaRN%4rzw9s8cW ARn/DJߛۻZuܒB&&CAŀV^Ie8î 8|cX5ҋhNhU{n* Z)F*> \ߣl[l7TzEq{&N]0ᑄCv~v{r!<2?/jN4YUuKo:'`: +XuT4Bv~ !5Lo[o[o{fAmkumHǮLwz9~N -"=;2@p`;Wz)W?,{e.'>7o)&Lȿx2t^',u1|HG*byky㹔\u_9 Wsn|m:5T"y_wy<-~B|o[v6m!M$jDꟾ[;ܲd[%jjK̑Xj0^Y]:g[C%(~6#?^Y1c>,+EmУ rB0KFB{N$l*&C ]C "=u%z#V8"M1,Kz#Z vusגHl#4{ ;kkDtkrGmhPT'YODVOȓzx) ),Sl~=6ҳJqyV>@pڲCNo·e{ӨII,BdF(SNn/K<[+JG_=OEQ """hp:^ #K7 !DҍtF]sVLH,Ņ$YBd]KˇR!(_Y.B!BY F!BU6.sօB W!ȺB!>Jn0 f###͆pPXXS7*.9O||<]z'B!'ɺhpEaÆ T>y>>?K!bfo>zMPPF+{>R}bbbhѢvŋӬY3,K}V^H,BI.EQ8pIIIc6J^pdBQ8|0qqqYB`*cǎS 5DLL v^H,BI.EQpe]CWivYOUH,B$Y HEYUK!b2g&tOFHt|.EQ4 +Ԕ`d2vkX|J,B|ݰ9XUȭdFM{hlRR!Vuݺ#2tٟa}w8'dE 7Lymhg:k9s"ND͝e58yޚL]w18=euDtJk|ƱE2em4_y}|rrǻB0l)-pn{=?a=TjթO_-^ʽŲXWBQj'YbW dc 'stIGܸ~+l OAqm6qfGk|Q~k &R:܎_ٷ?Es(MdHB>'vt_j j*ٹx6҅;oN!l;c7Iy>\X2_,3ѥGڢromVٵkA1o?i_&{u tf'chVY͎!I5hj6Xcv}~Ԟƪ$3VP\k(7:q0;Tx+EA?9fuJƿ]Չ5us,R]uˊ5/ZW8Jg ]ΰ{ɒhuCW,Mږ_6`or=7 E.%mdCamAT9S~V]>?}E otU&5pٞ_B!jU$끝d܄Swx|?ռ<|5/! A95:nM3fJhIR&/@ȷ]ACT,Q[^\`L!uTUomQ2E/ em6FlZzVlt' d!=+_@¦]gq/!UWj&6#cul:џ&qqѱmY6l}ah_zo#\Pp8s8cW WO~&RD+6㩴pt . ):ZzNf'GvmxSЊBRn }F (F*!{cδ;Na+9-֏&7%z줸^e7X.e랺oJ6.`o" #;ϐ ᨞#e?/S{^q,|Nu/!Nka.VaIv3@- cG&ΫZ8vgWy 0XyLZ~\r8/ o?a3LJt$]Q -+l KRN^9 WYz[v`i:5TB!ƿ~v/bMx>7yM ~@ p[ۦ˨ C\JT_jBy`ܵ%H!x?^3N:L H,+͸ RBL^1MZ N6CѼ_ d/ ;ao#;nl\22b2hy8t:/ҳi~[WG9bP#t_òg8K[(^kVkrGmhHTФ BhB{ďgbHzFa(JER X*4K!Df>ܘPI^;S'T0M3JŽ11âF$ o'pщ.^躎\<.}Zkv_X^P-UubY#u{~ !=J5G j-oUsQWLxb:AT,Ȃ ի f#==~Q$"]!w\k#Ι#-Evn@b)BT̗COyqQ[*3L\Z>Q\.&!BQ1YGd4CӴ?hR!$1dee]6S'07 I,BI.MӰX,dffs_4SrbF+Cb)Bx'sEiQQQX,/_Ntt4111*EQ0 e']4 M~wrIN:b!** Yu$B!wthpESn%P(Att48zk}XxFIEU: U9J+S&$B !Dq.`D%Cb)B,YQ !B!|#B!*Y9B!||+dd]!B%7ffpp8(,,KSUCCC'>>fX !d]48a111hŋi֬>Y/$B!D$Y (8p$1]%K8UUd2( III>|?ԈR!Nn0 αcLj)Kd"&&^Z/$B!D$Y (䮡+M4M,*$B!wvwY$D BQ1^?'#_>(hdBj`0`2pݵ,>?%B!wvnXv,]ȪvVKm4t)ZSb)BxW#nrE+ظ #3XP:ޛNyg(qݺw/=eVng;`e&tM{= gѺ>{mF R}i J3lf,B3}qvVM|əyqU=_[+Izg. ? IDAT{.F϶k:N3 g4/\Ma+zpד*yJWuMżq-CrG}k֓ҙmk/(]:4o,5iVqa tErݑВAo%mNQAqI0Lȧ-dh3mؕZKe :M&Q&I!-1?/U!j+_ꟾ[,kk6~mfYӏl#=2>BԶgz.k-!e=ŗ9nk` t4͍bo~ f>*lUE9 (VYyL@RO{ɝ [?Nwn]Ktz?A_M%;Ϧ3Yp)qsg0}t,F>i /7K&e44Y[iH$WAOȮXbDyYL2w˨MX7}ǧ30;iCЖnDrjv iOjɔ]`I]XjhJ]1nŵq¹ج ega"b,7a :?9|}LvZxaiL/UwYc;ٙc]dKNܕ c.gCK!y{ hL&6 = {SxnG޿rRʟ&P4dnjZ#S{3\yv+oxa^.x^fw` ͷlnȫ8d!n.6̅64ܝШy'Im $`l>6X"~5s]$V-jV5\ HL.ZIh܊mZҊ<7=H]ghq ]UIldڀI_oC#^ڮP!N`x~~Ĝ=WݕF,cK.6m/$so֞@ۿȤ8mn4 럾IEr!0$8t:jҫ/K!D^CN7ru4mގ^Dʍٵ E`7>]$6^7êWz><4F^ǭi,XIV6-9IJ$!*(Ŏ-O+m! vdʼR=LKsQVUI EFnQKaDBA~AY[MѭEVlƦIFZw||*k~dMz>H{q{sYk[Q ФWpdH1J6 v2?8 gصUJkE9mB.\8s8cW )SF #FtcX-gm_J*="kk1;+LB7o)&Lȿx2t.4HuVE-menّIusG\BI,y=?/فt jةDYU~ؔuoI^In=ȁ3Fk`˼ XRh{ΓmᶐҦ>BQYW֣%Orf+4:6z>j0^h'X7w-yq6R?OLpg霽hBxNޱI!ZCTt`2pN76.ITL&-/\Ez6oJ(G qDcX G^YVj2z%b|{7i'X:W Gs] cymT? j wXi+BoϖQ4 P_dкfUi0o6|7u*1>cKM5 ޥ?@-j{ďgbHzFa(JESS BQe#O~Ɨs3n E>}Wt^z!֣qN]rE rO18G.1Zh~&g!` 8dĞ Y <+ kdm!cy۲i$U|hH Vp.LdEԁ<9'1 5KQIه6>f>ܘPI^)&;\ìY{ xZ_cGEsnt>ub{hh(\լwK!|GQ6liӦCus< !++ IKKC-B!*&ɺhpl6wa41#;+Uy>'&&-Z`Yx1͚5bg5R!$AQDpp0fUy L&E!))ÇX ! 9v111e RC1L`YR!$AQ]5tIiTR!Nun.HQp:]z!B!*&skBd`@PM0L>BHM L&nR!׮ Î YuJvi޴wƖ.X|J,Bj<`?~l O\_}:31{reMUhwtDƼbe&tM{= UΰOd; ħe:}Ȩqݳo3]yrs7xeʠLK\NNm^7̖DrEǛ|M0+:VUY5i&gvqCH>W|o$HFqg4k%+ƾ4!n un1d &cM3ln&=87 ⑇zh*yź&Ѽ-5yt=\Z~Eh4zM|D53dB=Ea` iw÷TzxUŲJ.%8Y7D\Wq]ܜ\1^AU۽wu eւM/4rEZ<>C=lLpi{c? 7jԄ7l#&2q~],O2s=VtlgrpX"z@'99o?EMcs c?FGWOyИqXWJWuMżq-CrG}k֓ҙmk/(]:4o,5iVqa tE- ?u^<6nahG q&l{~iLf3 ᡗx80~_ b4.ʕ;ꟵbcO'ǢZ§|5ODXU,/!sH"JGݶNe_Ѽ~;.~98so)( Uk{^3n{vn#c=f:w~^bD$V~섅,9НA-z&"b87bTak# 6rmf:ٿNe90֬OK3w`E%S^"=dmPnpBkGScm⥼uĜ͇9m@tFvlf W<oM&HstZջҞS{Y>.]i]/YƱE2em4_y}|(1o}rw~? t,wj~aos?KmԀm3|,&њO_%<6ujC653ߵNp{U:}_B!j[`_Dtt4͍bo~ f>`߹SX_ jJA*) Z'/f3"Nc5Vm) HnGKï۟"{ɝ [?Nwn]Ktz?A_M%;Ϧ3Yp)qsg0}t,F>i /7K&e44v:n''ׅ)1cuxi|ڍ FLĘ_|ʹ/qۄuw|:s 14mvM+׬fǐL )ڵ X]x`MU4V%qZ8@c4VᗯscJrCvM} 1+ 1ӮS2%ktU'Rtvʆ1_ʎN]uK×mdq@AA?Rq:BQWe/]iVK*W*U/qT~cǞB"Z^ǭ#Fqs^zo ?>@?<8}P.kqaEÉNo!O,^ma7ҿFkC;[i55mIIAC{bnS8b(=?$3x]$V^Q[0_6sǟx?V׶(иm۴&s?jQMsir%3.Agؽd~+&Vm/كU7Hmlݦ7z%`KcYpl?-~[.ޱ(MaDymQ!ptG*럾 ɑ$N=V:eBQj1Yw2~ JV^CN7ru4mގ^Dʍe];<__{gF&*#ޜk jcσ@s juܚf`͂docђM_ oϻX;KNΙLC갇W".OoJ EFnQKaDBA~AY[MѭEVlƦIFYwHtĮV\Ѫw<>kITٱu}>[O q<_Ȯ@dd{g'^*KS8BŻ3YWѲUFTtgSQA`Fs$MCx5:Jh!bspƮA')}o"n"b.kqKZ8 t . ):ZzNf'G 6qq|ه~gX}{;V[[iQEAC+=0ňQ]؇!{mYƺJZ_0*:y zvAh}]o{o9 H!;G?3dBxd8EU럕WW,qst<;w^;OtPR-V~ur%wZʶڧ6NLq$Dڳܣ6,@EA]]`nّI3玦a(z`B 2UwS⛷&p_<:~RgÇt:"^tϻf2߹xC9XUomQZ)^ݓ΁Yz~^=ԀR4oNJ^ҭ9pH\,PRh{ڶ`v-ARo^!y]O;bU,28BTY-}c߿ ͹ٹj0^tђ_'fnMwS8t^LW4!<@'vgo!^Y1c>,+EmУ n`2ЅpN76.ȫL*Z^>7t-l֕(QX#4ǰ,&jOt$IH+2K֊QmGcUd:GkrGmhPTۿ Mʄ9A jbvot F)/2h݂hF |*Hy sǀ$~l<G3&DQ(W{%@|$IO#sJ֊Q OhJK:eM4K!DRqhᝉ5W }' ?9c7" zn3W2(:P -;wDcJ­3f|3fS䰞(^Ha!_bOR\O\a}5lӁ۱m^4jO]4R?XD^tc^k[TBT{͢߾7&nR*hld] !mBu!B!|`*w6 l6Aaatz)]RUs~ %>>x뻚Bs$YBEQذa$66MvZH 烤Y72m<~[(t.Gװp6]J&ڍƏ0.ؖ 5l'Pm kћO__^C,7OqLUbԴ|> %)}{Xn'\ko>x7>E>*7Vћc)z^ؖ6hm+t^1s`*c22h9 WW|{4 ]{TXUUZmىāߦ0ca jџ_Dr:tq&io|۵/fɶ$F~pb<Kf3o^NƧ:~0/<ErX?>i+̷+yk7.Cn*#mf =MLj0EcꟌ}vE_ݻKxcE.}$IBՊd]J'j~~r'w٩.pQvNfϾb 7t0sSzl 83b%j|QFxsP$:8}%LN1o1K$ΜMµ<$RU•USD'0:[/i|fgJ˔XEkp=[nY:y;l܃}/÷7_<I˺-5K1vKv|< SI?;_9EL5ȒjQv_Nw;)|4:xyV]0jb8Yh_i+4yQy*T̖$/XG:(j^ZuՇT+o+esꙿg87%Ÿ"f=\ɒi<8 oj x^̜YƟY4@9GK~/s3+>u5ˌӘQr@uR2ɒk2zl.,&QGO:oO_4k<1ka6wݍPAɺifvHz_6mA-U <6-߹6i95^ޑ=3/*ay݈؞?bO Kg ,I]Kw">E1 K-CN2|5xQ/nn јޗ`c p)f Fĵ|*%y<=JqfNILȻܳls C]oֲ9C 2+^is(׭>u\:w1縡DX4l|i"oN NdT-Lyύj7)J)LɕZ59g2u~?W9s?{%nbў4"|N^>[c()&WHKIW/\6PW4m.-㸝^ jkjq[2g.FMb;bɟy>mNOx#+Ɍ3E<׃QcV2_`#Ȁ ǰN ~'v*'W1w ̘fGKPqn熌*bR%1 i6ԊQԔws!5ĭH=dyozHH̨Hwi IM7cky TL܈X[ UzfgEdFɐz K٭jHǨIMƨs^WFEtJ㙟j>!]{-%K9mcŔ{^ٲbO%ŘnD Pߵ|bW_j>o1hS/Irz6y{ٱ^YÌ9Gq껠'\rewl1тJZF֕ӜN%I8v PWggzi8?(cdw@rk_߅I-*[51Ƀjl 'L~_)hُ/=Esϒb GhGkc zMOYF'gV3mGXLZ{usp۶뷖R˼7TT̈N}Y3e!/3 ѣ)64FYFZ*<+s>!Z&^i|9&M=FO=H=Ě3dG7+@2j7@;i _4y,8%:>|]sTS*2;ҬN~8yx'!s q;rѹ53_ Ę66h"j9߮E07mI݁Qp2,;v5aqyVҵMk8JUnmɌ7z4}RaMܪOi %}~@_0KSjW쎓 ?q۶k[bMv:|cwC=Df$s$SuO5țhp<9w'ң_;YY3.]> 6"k݇ >Z8>a7V `nFexi~_M"㥷xQ ˠ\ȥL/_/dUəVϿElX;#2[瑩G8ODO,}ߓRKN8NZSTR.hMN3׷NeҼDy*גnfȸxS5b8khN1[P/^~^hRzhlەc8:Gn&Ȝ[IEJ1l\q4cw,qwfQ(WnUI +v{wGh0 iXdf}(7vut{KɆk9q[}ɛ-/ޜWw~5J>1[4ΤٞBR:)k0̕UƏixUчKص!]zyl{yip 2aao> nSzkoԏW?;v꓄qa)'^Nj@Jn%ۮMNCLA(oj_ڸ-\DҺ#w`k0|*i3]l>cw_ymFVp|m ޶7sE O<[ _Z#^sC$T VNɣ*㧒23LJ${$Sq6:{mCLi7s`̄{PIjRl8 i;#~=^cL 2wCe˹ \ħi.=!Ss"ɑz Z~}^Ğ1 t{UL۞Hg{_k+Kˍ]Ȯ lKytV &"uLw.cE'֥K&'E}ӉCн=KPTx˴5}J_zYb<&|݁qE)#m VY}~j%bSys MZoAxTz67f?M{pIm!A_AZli0Zڞffm8zGi}bp::Nq9{ǒ ƨl|Y5\Ӝ:q=bڇsF ЄG:x;~XNs.<_hy>xٲl.w2I)IQL8uS,!`tz?'Pej긾g9oD1dѼ[4YE+ kl9r:~:K,51?XQ[\NsKr\qqq]FjN s/eZv9ܼ8 a-i!+/ۺ|͡- 2g5K.^M ufm<ɥu)gZѹ]E &T4+%& K5 S6XYGiw];񎷿WŔIZ~*7qa\DSvb5y>ǴԲ~ѷ_I˾f}ٽS7p5`9O# xM6^ƭz…bbbp[%9_qa;Ȏ3hۉVR'/'ŗ7WyqkL>n+9ah/{!wLYvWq̹ v(TϜ&0 < *ZŢu.k&1= & }q:/-`.-_ɶ'ل7rQǞ3yBhڶx̟wX0hr&Yk_dC'b|o˔%&q%4kC jj)Y92Q;iW,Z6 :;gC#$N~=8miL!a4<3ۃXl? y}\ ^Yp ;mk؟q;w7ޜ@cE])o¥22q4~S]^5ep+n6^%٤bCOր.xˀQIzqhFgEh>;/%ee_Q%ϼ$ lRpuxUa*r^{}1"5lSY] U.RLLC9kI̻i#1Cm;MV}I&.Սާk^+FAU2Yć| ?Lvh5O^郯,Kn rS] O)R˙ xe_`شrwyL$Ȇ`HDrd4˩OAoשHy5Ը},Z4kfN~nF $X[5 |cW{.Z:ȥBBvٔM$ UUhw T)=-Uupt"-^:;5cߌK_\}SiZ5kеkWa ͖/ +W7ңG*м 9CzzQvr.pŵ%V,兪ľ9X.toTDTTUb׋sR01_bdQ^'iZvIÆ qww@,f_%W|URU$=J۶mȺ bd޽&O(J).U&|(YA(B$ T[[[kȺmUWEZkw P%ELJǏV0*jf8ׯ_- mD.BPwww|||ؾ};xzzFAe$IB傟((?[,ӹy&NnnnUWWɺ Ul6Sn]HLL$>>X*p~a$aoo+5jZ$ Ed]**999hZ#c TuuA Pn'k  ܭ Ywrrz  PXQAA  * T bd]AA)  B5s1]3Ѳ;3@NxoQe^@ L'WIc-ކEa1ُ|rqزu'Ǔҍ7Gqk#?ZLt4zKk'/S,5!uSHX?I+5{<$P/F7êPC3ycL;BکwNYٻ;oۗ PR9zKvf ޑx|pWjխԬ+Y.51Q::_*{LȬV8"17 yC+w||܊Ȋu{8Bޕyl@;l*ؖjVA*!YWHǖuѴ{>yCkq݂DZR2f#UŐ1GEYcS6$q)zqqa؛<ҕb~#Q% Yx,{jʨ*r#yed@ K7gayk۳Ɍ}/!́z ̫ټUs3[V\6פܺ- 텛2Z(YE!i=L@-bHMì$g:ꁯΞմp\ŋt n7jN5+l91h_y3,\37eѸH;`5oTl IDAT7էi'LeAlGFm Vg4 Ni]6c}$;"Eb{(/%V!3%١Oy|γ~~L0+^'34?J ߣd=-5TI?==CUvl:R1ܾ^Ŋ-GpӈjFpǧӭ0_g۴tV!rJ+,M^jȆ\:pywl[.M3CW^Zv`J$wXK,5p9|J! t}/-|P8q +v >M#QaBW׊=M0`ݘ/ 浕Le+>yԨ@-{7Y.u]3؋27wďΐdEcM6+gPS9pkj$+e`:}RӉټeOp99 ~:`I&zb?ǵTD H $5+`s:xPFt+6b~k_,9Bgpe֟ig΅^CޤG09SΗ|v`:CP0.7x{F6+۲^xd1e<~'?ɮt!)]~;1eb\ ߦŰ}eڍcH@mW I?b3vKnH2<… 嵩1j$ZѹqJ*6^<'b'MfԳ?ı17L e@,>ƣ%O?H44sPRIWH53w(wuN W[4]$e"լŚ+C`)LݔEk3l{ wx#e/k`Dr5<}KY(8ExWkg9H8߈8٨_+fCF6AR3I8CoF<.;hb&u.qL`GH>Ēp)Y3M姃D=>^6q(u73gA4ν33&wCjEzj\65XS VhÇ8;jn!7>RvMy8iM:HREqch"Z,%*y^miy/Eڍ^Dz 6u_,k&':JaD!SZη8D[ƭ xFhՐf@޻feT<1'9j ހ[ꄅI*!gĹ 9iNT[epq,6w^WI{pB;_1fdsN.YÖ͜rl˫8 Fl $;xw !nդk Prȶj֠ѣ)9W&şM`bOdIjHLj=NG9l7 (lW~(I'h*=EgGiʕʶY HX{R;,\mQG @́p! 72:jj玝-ixgR s9hѾN1ˀ 2\ɾZk=`.w(> {*Ƈص{uvd/Ǟ|Z{}1UR9| %9[ா&ʘir^dcYVhD>Dznp"ST' 5;r1^$_Gx#\-l rHn%)7p5'[saۿUQ,,~}L\Ӷo߆jJ#-[Ʒ~݆܋pD*;_ٻKx~w5 vFvMצ똹=B\ز3pLw҆~uz92_sW :9҈|{k3Ǵ=y1ksGѨn$Ę^3#xj9`۫ʣbJ-ŗ&#qK:ιk{6MplqrqB6`%/g8u_KZmb4لn<$?yQl O*~)QLdTlNVx]˅@QxFUdRAUWx)dL.á#hR@B5hu:\ Ieϩ79B[vΙ‚iذ} QQѬK !۞P+ls1 "i9B#E45lXϖ=\ܷGs Z}70}vk?j止\?oEj8A9pIUUQP5eh6%>2NHZ{:3ضi}-+݃J]ɧ:ih$ *Vy@0d+:k.ܕj,BBOxxe9iNHce&SgkK߽ JB?߷Y5q Q/0%/Nd,lG KO8q8` Pfr9%TP6t%sw"CZ;!ў-1hӞlsݦh@5*Oh-*wiكmkf^6}$M]*y| -JWxޝiaReVATB6h"Go% hKy6ɵ#VQ{_.OP5[Ìɤ`e@ %% ;%=9ݲXy} >e2A}&z7b#G|E~lCkb>o"m"KIgVd%dzۂDL*hZH8Y84?Yjŀ٥)b-x 6ڎ%OӪUV3rT"Xbmy[m*2CHq+xr &626e Ղp; Tkw;PŠ>TqNmd`j8dq\<戼kqe '4l*臲)׸fם;!VXo"VRJb$Კ}gm" R:Y1˙:#1oTmmAIR$KI^H.4֙SRM;PSG'J6Y 6k-t Cs>B{95!x{jb392:wO׈\r 11+}su+%ѻJNZuEBedEEd\#"<Ԋ'=/ґcՂ`r,g/iIB_ޒͷ1c--7o.F&äŘOy*B:&lwsINP@ݎ;fvuM2 kAKX|aQgj|Gg/_<5qjꋃʭ`CC7YŌ5XhՃFIч@-@o@~*?BPWt)\tUI'y^9 `gZhѦ[-cv[ְpv;4et}G%R,5At (Mj69`畕iأ23C+%3l lb -=k.޸c$rdaL^Id<51 rMw`ߚ?XчNZ|ܰ A*g*/鰺wG-jeemUvh7k i+ʬj]<ƹܴx5V喭UٿzihjC-^8*y|S[AV<'"o@¦N^,`#i$0gaR@rq<ﱜr%وILI!zkw,ZNaN*nh[-O>8?/ǭ&v^VdGAcxRͫ~fG.h%kj=2//a՞\eQsrtf'f`XOuB4sd|ipє'_@DABx&SC<.搝z;.]LoGM6W^ ɧe>YUwq}j5CInYKтރȾا>2߮1*g>KVľ|"{1zP[ܥ l~hb&7Wޱt5ȋױ䇭:}jt+]6(JC@mϥ:hS ܖk\Cfb&,{هGޜ@TUAoRzZD|||UEx)g{5n""1a1v~İH1^+, բAGǽPH8'ζș ߰ P1K\siS"QAd]8ĭ#l:@1 ߰6փ{YE dNA% Վ#Pd(  Ջx_AA  prr* T bd]AA)2 P<~űA=u%Kfhgװ;ÞEmg]ȴ5ouvXHu;9|\{J\GoAt4{i:c[901OiS+>E.=A5űm}}3U~;_ %HT[Eظxue^)jtq&io|۵X%{<`d38m.7=]$Ihr?q, 9ۢmg ~yzԴ?ϒ8f:U=A-˃t<+g{=ֈA[j SVh8_g|=͖O̽ Je]̢5G-SX.oWKS١}폧7n2Ȯm51k; *T̖$/XG:ٳV] G!ՠػ?0ó 3v^4Y_)|>6s${n=7Bsw$Ǧ>8"f=\ɒix{ŏ\XMN }u8ޞxi$4]y 0y;M%ֹbFmR5wT['kLyς/L__&?7Ѯ+fϏz-,b*o{},OA*=g]IB "jp{:%K9ŀn 1݈C;ph&OQ|FiMzz]i΀ѯa4gޔyMXl&Mb'cC؊At솗ǸaPHxdyiSKy}fpY7=J@ZfϏƶy}<#ZYt˟aA˩B9Ci^jFd6x$ m' Vs] Oү'ӡ0ﷹ3ݼxU}c["~Y$$I֙$:%"@pөD6 GMIdr;= Tzd]MK% ]θ8\KIGuh 6jP"eZ :e}t?}nw^ʽ" `BkB#= ߶@G浜p{}8.P$#a܄ C78NZ_ -5!nS[ˈ!w&sN1ڂWvZs%Z{"NjzGWѴS3i08kΞZ[i {NdҰ-=0tmHkEg8G(?Z_ 0m$lf~JOBq[ʹ}>ӪQ>,d͉1}tT8'~MXbI7+pV*Բ+xTA* wՔJj4L`p$]?FC$']c+[ӵÝ3[zٷfI'X&u{DQCg d3J]=Cv]2bPn鿘*Gշ"MSrI?-;6S Rv<wDTly}z/}. YsnW'0e ڪ <*}fiӽt!mR)E,Hq *0\QGquqQEDY+kٱIIх)iy?Ӈܜ{soN= Hrnz:XwlS \5(hhWUj0ryi'Y:vzm? &FE^|bà^Ul9>Qmh;fK5z2^`֋C0rF" cs%"ZE`Q񔦓S!Déw.myaNvlɦ}F;XHٻc7ΊĶnU#l vD;))s0خb`"V,M\g),*9us<?%4Fc3ֶЪ hBb<;6U.ŁYt-KoګK*P%-[޼⊧=d5Cլ=AKf}T?ͅG mء9|%3"Jؼ~gqܔΝZ(?%ǧB?mJ!==?׳eB/uH*}-o>8lUQOMT~Ǿ}Do>2om% 1)(?_eo~4N]R"Q|6n*}⫽q Yd#{,^+;w}~\;m^5 t[C\*1ݬXqY;aYI[wF1]Cɛ7i_b/sy(KRTUBsNd* wi,/:F%FbOo;(x~Me@DR'.V,i9p-bbO^Ji)X2jl)y%8Z룑a{.OϫJyRnАG3qfb D=#!< M}y[%:-| ì*k6%v7gJ_ :+򻯗Т >PW5EAuTU9nJvkv7z,.ds~NLdbw<9[;Q[bf= F}7gP)ǧB!ag^6LTj(FotBBjOG ΢E4hP#%xIb)jUB&g/*l? ٻً+:Kf3^aoDt]b6Db)BԮ&Ԋ; {QWgXx>srmnBQ;IEcٵk'88шXޕJ[Đ￧]vlfX !d]4+Err2!!!X֦O5%bXPdrrr;Fd%B!orhvּwq_cL>ቹ*_;7yН,d6_A^z2xN ,ozUi}0zgG<2gwu׋FMyd+ZkBGX4ޜ+t(w;naQ~EQ0>< IJd7 f䓥9\@W2;Zq5M,Oo')5ȺVUs_ɧ?`]teLmǻo8L]O>Qm`K|1^[ΐ^/?L =15Φ6P;>B4Y]!7D2>JuZf=9]ӷuӉ,DmDڝ{;eqOt4௯,`qU o< @d,ˌt wyl [j^=e:]FugЭwV!m竧Qo67;H<ݢQhO,V>&s_7>$U\sm?$3;FkF)+`7݃Wv6FtsUd|"{|w%J I]tB{_}V׿̃C`s=i._$)Zi NVg8/ 5 i7vKY/UcRϗS!D5Ⱥk啧bpN>}hoF|u{@YA>orw0]1U<ҕ\v.\GQ@is # W݇kp)EE}֓=oq#f )L2)πilY Vؿi=G$ǪW}۶Sz(9k[NyL@4leVQKUud^H@Y~+]{`x.tVu[>r175Z,X[+dgWAQt~߶ticlXǧB0sӕKK@u?~?okAħgC^X@!VK$D8ZGÅ18\K/Xy c/4x¯扞62=Ev4*(I@Ja6NZ,/:E`KmL0ɛI q6lO>5sZAˮヨ5uGtJB#װx.s dTo?%TBVE mry0ZGe aA[yk1*ZA>*zG {/\#/u\qlzb:XU]5~]Q'Wxw5U,).j5W^ͷf#7xh>:\_ID-z biV}3y%X'H` 8Oz!*(Łr^sf/ u8rq$OKթA)aOk}=քGNQYSDYj+"ɺo`$zJ^>w>×!S&M/Y^m4~ kzP/lF+fp)cy9>B/^91{b޻u5pB)s:B#BQ}JX<q;G_xצE@EydG1*^;2?pͨ^uJ >?L`̵0z"u|U}I* Ze#Ft6 \ާ+lZ|/kb#Iku+4ƜSg !&y%Y_GhE8^>J^D\=ZMg*/}GL~##xY/ktAK;>B4L+T_݁œؒMzFpT`݊Xl7q_X\l]="j} ZBNRH tgG֭5P/ngҵ,]k>\|nU `L6YMlܩ3nI?ͅG m-#ء9|byBsQΫhYj R(9_x@M!==?q%HWAQu,\~UBa rZT, <{Ѣ|_ߛ+Pe>6bn5!|:E~O?%鏽iPi㚔HSd>K<vU<,ynl'ΩE&,Gm;P+_~#ec,8$>ʴ?P:RTP|),_kO q|w"el:6n(e}ǧB=Y/R 绅8` <lKħQ}QPRZ KG2jlJ(y%8Z+a{.OϫJyRO!'gC0/-5߉{FrCbyP}صQI;N a:0rP+EA*EaF0tSLrŒ'Db( u)?(躎x(D&vgȓ㹵&ǧB!a~3g^6LTj(FotBBjOG ΢E4hP#%xIb)jUB&g/*9͙;{7"{qEgIl6-ݛx^sH,Bڝi0syy/J, Oe-R!7"U2Fa64 MXBQ;IEcZk1S'ZM]&!B!j'ɺhV4Mf}|g&I yÞ ll6[a BY͊iDEEaXl E`0T=nJiU=zqrsslDEEv}oX !ҍQɄ"77|GUUߦ^Q9Z=T`"##& um Kq*tB/(ɺh*G\atU)Kq2Iօּwq_cL>ቹ*_;7yЋ~>jI=?s^pꅋo/j Lz~:iUi}0zgG<2gwu8nc45Kv`L>YåĜ%モA05LLKrV}@QFϟoC8+,'odު, (:^vH,k V?ڎYJvB!^G]zrJ:b}3ny>7َ^͡ $O?~>b˾Әaσ!&k.S/!WKho>YH/Xɜ)!{_;ОO{-Q;g?{9^w:q) ~Y&OɓyīuӤsaTfۺٵj-ysYImU|1^[ΐ^/?L =15NEg<= G>mǻo8L]k͏okX|ӑ1ϾΫO7yȫ\ n3gd̙Lj(ƌ6P;>B4\=jT;uk)^ˬ'g{ytffIѿ[4 ʧV㐗Ԅ,ZEx?tYW1$(ʩȺ߆XԝDH9kR2 dS"<+gsBpЏEV{nCOPB.WkU0'{z:?OZA/,CUNDN">5.tZR.Kl z ";&(]z%o틭h볼(l $$P%K R1fRk?a:r^aV.29J]qnv [wsػԹl"ZwK| Ǩ&pqKs7.6GپHMt76:Vl*؂8\Hkqt˞;c{% ]  i^# Q~T6j.t`~$Dyt//e aA[y\7<.gb]Fr| !Lؿ >B6;FǙ<-^Wc4:t IDAT?m&j~$rG1ZQ[]4M,\|΃h $0Jŧ\=K^\yqnGzt1w x(n5~dBxHyH{^y7ߚKLjsO'2.;EeOgվm$'떯Ǯ^忺ʓsf kzP/lF+fpݍW-ͅrw=2^` I01OgJdEn||wR=7=ڄUc`nt *"t(aUmܔΝZ(?\(cmr-9;J^!5lU +gLO!85woGSnV.,^1:Һc9N_OIcoǹuڸ&%Izz"$-0KfBYiR{ׅ,sIV 3A[W|PXT\:>/]Gi}o @!02V=|$~L~ic:%y9O( *zۻnXaؒr阗xT+. W1w(`^w0eʹ76b,ſO! O)*,CB(,,l꺴(zϼrl2PF#~-鄄Ԟ6vE1hРFJR&,, M^TK7J%Qohf۰to"z1~"B!jWi0Fη^TY,<O#N8< [ BQ;YoDdl6i%4X !d]4;V3u"//UiK!vfE4l6]x7i/Ux>fX !5d]4;={m۶u47ϩnxAAyyydffOZZ96R!$ٱڵhh,o]ĭ}bbbHJJpӮ];l6[SVIH,BI.EQ"99VkSWɧNUUX,(Brr2999ŝS#K!7T4;$&&*AjGS7kX !d]4+z24EX !I.׋dj (L&nwSWIH,Bɜv }3FEQ4 +ԗ`bz~_J,B_,Y,rhV.ؠJ,B꟬l_6/=| !7Z㯯m*WtW .C?0}+:b X^^Ӿ_!'7}`@j8.5i;g\dz<̌)ZU^48?<B=O+])WZۻ2`_ˬ'g{ytXO=Vds.&/gp0s:1WVm%iwҒG 2ȃeF:{WplĖ):nU'Lw~w oםAb@+os?s@!mז,i."phN)wogѢ,=Θɘ,κm|/d͇o2o}Htb#~ZIfv>nn׌σSVzAobm|檺d|"{|3͞{v</xέ|~>|i}`Cm%tjQ }~v=:GOܽI_!]0]94w bl3l#=_?!uְs5'7}YV.ѱ"14/^ bJ@-mZ?@ys.%f!'R"|?PQ@is #ج^/8>t(]K)**=[Onᅰƍ̞6M.P0e<{?Lۦѳf5{ͣ] Qïk]H.Tt!] (bmNaw<foa2:93bG]H2VZm[IFa,i'S}5Zٺb 5U=gMJ&lrʗS{{yqQ>zl )2([]}۰<^* 7exhLB[Z`k]؃AnGQΙƲB!Ξ;+<nreQ(r w/~QuC\G 9^@/Q @V18o&d $ G)W0D8Wu[0s~ƑwNI GNQp"Yj \duЋ7WWyBRBG@T ?3B 7-b'5'sr:|ʤI+O!ĩ5:늵mڷMry`w hUפQ!"uvEPf l<>/mkV~DZEoܽ^DZvJlt ikXw:ڴ. B>(ux0-B-:%S&;AŀVݹ9Y=qZ)R " *'ɸ 8PEQnmF (F*zCC,ʼ:RzlVgek LQNW#Cq}w|Њ.I*E˖p/k*ޡy=oaoG/;!$t„;jrVI5L1ԉOSCIJr Lk+W#ZNw%"ZE`Q9gBq4MEA=xkXf̈́F9o,"t2`Xz, `t~!P|`3}Y.IRqq JNe;F^DY:c;p^-ٸ/ pmd7 GQԐ׍B%}i,Ydž-X{M*(cmx.9;J^!~\slr2KP`!3"JuNܗv87ekc`V>~sCǟB*OݻY2o'S|p3DhNI^䒳} _& Rk+lWx*BEhYj R(9_x@w,\1%7cgWbh%t|^ٻDg_!B`d,{IvkoEY>ޏ#iY2:O{Xfq\7-k ÿ!6--@ۘ|EXbhS}09"6Q,Gm;P+_~#ec,sv nwLeZXFc(Ku)*(>ʛB?B9,y~:0.GnGkCe^!?udXo!m27u^J|pL: $Aܥ%RSb_F<'RjmX^ SxctS~kɫԟJ]>lKħQ}QP^^ľv_0nҢ*74 O ԕKǼ3צ}̷+t٫;Cy0s~;2fk(躎x<9J?w8<4M$\0I,t6gﻁ8R^XKB!>@ E? g*wWC1|R{:\v-ZĠA)OKQB49{Qa.w/WtDf^oҽ躎l>7R!]\`*v^xދ*R78łiĩ0gb~a $B!j'#HLQf4K!vfjbNaZ}X !d]4+a>i寒!;;֢FBb)B&sEiQQQl6-[Ftt4111*EQ0 UhiU^/EEE9r\l6QQQ&&B!|E( & Enn.8M=rz( DFFM@@n$TdF!(_QulUè>J+S&$d !Dy.`D%Q!B!jV(B!EVB!OU˜u!B~Br2.B! Lhv;v\..R\BRUO||u >CkO\{1ٔ8GQϾ\ʆ=⼋ağdz!ۿ˼yЎnmM1I0}m%|wuHpT{C+7cic4kOԵ<|07~g0.tSsSC X3RnbܸI ecduGzHZ)hd]!HuG xXB; Z`%sLQ` P/ʜׇ[ѣ I&][pp^r G[=Q(/.rua]1ye_˸j#=my'HF˾ӘgD!~gLnى})ԊfvJ tmm|={9% b Q}W y]992.3ҡ(5}ᙛڝvEywJnGtwJM̙gS}=yȚ4Oqr3.2of?fƔh]SƲsHvM^Of.‘v3E߻}Ij>/ݘ<^g;_<Čj!h Y(fֶ>6rxye >x;nJ903OY*1ghνN,eo3 09uf" @2n: Mަ/y3<<Cb9wr( Qh,lƒ׭Sl,ctcaw}%P;Еlm9:c敷qoӀt"Ïo,x9grǻ1'YdQH88dlɃޱǔFO% Y?E#=T?Z{@h*cv[0nL#mIϺB YwS\R=8gMw1gT {6ƃ#Y= cy9PfУkkˉOԫqd~!̞̒Oڵp\)+^U%!e M{A]vΰN$&IZ opY]X@!tٟ_EhqB7lwwp GQixG*17rmSM׿Njo?L4~qUW*JV7~쪻Ӻߞ TǞ"u%ZGX{84[4^zTȉwKXyNTx6It(d)"֧mdW)\ 4vDqߗRO8B!:Ou%-?^)Q|=0}/>n (tOTDmbyۘD7G6U?dW굚7-LYD^9ZA-l)z~Sط%90Co#g'6ތ_ÏEGo qy<6Bv~~FqтԱL~?0?{$N_:?K7F/\Kp?p!?s>I|N(kcktB4eU -~2IQøKI{I^ Jo70Ġ])35pFp/Ӻ`k:nkl{Ӯƫ{kP èz`M 並pB)ȂT]@~"4"Gtz8ð*/ZF=p߰aLjY-(g)c2f*Sf?_ 4yЂw$22pj6>%\|/NNhyEH[7{/&$=0[DW'""5֋^^c7a>ȸF{wG8z@ZA.'|\+ɒa0Bv. ~(E,_ΧOP~AEYu靈/cRl& щ7>l,~.!|-ف9mx$NItqu"sg:Dd˝_4~HփcCTa!hlU]r鄲r,/wňIgX96gnb&v1$l ̉TlgՃ=J)`z|P֛(r8ca4u켩&='d_Ùv!ԁ3a~ɳ/.9ѹ/}"ظv{m)߰f<}{OC˔_bv/(|FB6WP^ ~~^P)ۃJzZ͓8mٰJ˨P JFeۏ=S'2k$~=GWMqcwЄTŽ) cЕws}_x{|Hq]-8=E ~(n PΜ/+ Ge{KcIrLt߰DJ 'xM೙%AN6kr3V`'-gm$\B0^; T&Oƒ୸Kq3K&v)w>.ӹNg|T!YWN {' >ߎ_D"562! n_JRt'6̉.op̔vTHhNGuoA{l[0?C'}B1U`on;K3{ (l04ο o4vI{p sSm`no˾ߏ>̷o~Αs(' IDُYޕw6߻1E٫nhI!A^Ie%em\_w!U~n@"Fr#|1r#=4ōU=kg<u`zU07ѿ_4j|!ǿ݅[>)BEoI>&nkyk%/pݳ Pь,ּ vE #.-/3 {2P=濁RpV_YTeЅy$Fxp CCA=fyO6;(-cn yK/K9sW 'yU;t:5UcC*\췿"ȅFC=0)FS zz s,f՗sq-C gv</CWȪ}JfCk<z\(T<ÿ_m5it6Xn.EXd sl^IqKܾnqKs}S^J|ZG&omi$$YZkl6\BUTXCB(,lμH.;f|fPӏmvfϞɓ iu.t?~k//N^qq1s嬳I%aa^>BGwNFb|_^^Yu#s /ڞә:ػD'Gki8BS%=il ߲,YAݢ@LYWmh95]qIϺBHzDt:,o:^s^^˲g]!~$Yg&00 ?/5=끁m]!-t! ˲gʃq:5Cff& 8-B!ڎ$BXEtt4,Zbcc faJ) èZcYe4M8|0999 !8$Ygзo_***!;;dO*V3~ݓ0DFFҭ[7%QB0IօZrt҅DA`\.B ɺ?S5ɚB!~juV!BEnB!Ynr!ۺB.HϺB!$B!BS,]zkpvdp!B ԍ-:Ȫ/>b;9\bݗs;ϩ2__p.F*S !gda+1sK. p:%fHL ,.v|oZpK9 DW DlKYYI0~0 jq*YҠݙ,z#@&Eanl" !BS 1H:3%]o_{ۊ*J' 6 f-^Of 8iD1^zw6zt_u[|3]7 #|%/&LC\V![~.3.d`fg3Y}EBLwO#=izZ;SVAk<;H4λrOXk?"d0^IƾbOE\>5P/^+c/:`c>fCRVDuc䋸hLb>R2}kyEӮ{hǢfj~ӘyUy (zty&?y2w1R%\Ř`": ao/g!ySᦩt!B1F ؂3,36@PdUgyȭp(ma{Ⅿ`zI¦, (Ԛ=oiYs_&n MDPϞWFh?"4uKd|*U !F^q}=e'(28bCqD4Nعn 9El]Y|2~6\٬:-*vT eF 6oq<(.-څؼ-S`QEV/AnA@ɑ꓂MW~{ú%"≏SV3ֲؖogB!Z7Zne{1#"• ka!ef2}ˆ b`~t1vo7۶]9vRt*f/:i?xK_Yd C'^S&̈́[bzT>nկG0W0 皨MqQ|UVǸe%/2Jٶ9 spHQbe%Tᝧ>aKvhV-1[=>ؒφu{O*U̚E%!]v'SWPC,iۻK(.h '7ywlA)R1vz_6~ܒJ-+T{*^ŢMh#[~e}X|sCmM -!ץQ^LfGhD w>g䭠 n#ce$B!^#ɺɞώpOAhTH_FĎNO2X_ŞCѯL2aWv%ر+?i)d5Z:%1sɳ8<-vkd}yN֩ҽEʊJ0"HJ@e*A [V*ўn[%u@m9HiQI:vǥQiLS'xzqL~]FiIP( m.ǓŎρR,-hM MepJ=6{kzӆ?vfޣr&1PQ9 \!B6HP Á_P$2td ^LZe0r MB؂/غq.~\7T嵅(GC&'NLݽFa}klϗlتamUkS]WBi`O^}0n8:밪w:&Yoɱr5>Na<ѹw%s~G߰`FvŮ9{8d*BLNL;n`NNWJlfBEg`Y5J콩7[pm+Y%+sHsܖjCf)%*s3O0k>oajH.sf8Λқ0G!mE]*|8S-`Cl|ρNÒlIC;Zq}9=qlڌzW;Ӈ#{`T%NF8Wmgklϫz9apsD$%j`?~$6e\K&YkY#l(?WבvUPijP@E0b$6LM J;q(T\G1uw,u<ƽ_t]S3k|z1ф;`'*:}_eΊX 6e/DC= /kYAv ]p} ;7\64I 'R#BqjFvvv[E! 11 mP.B!D{%ɺB!$B!BSy@!B!YB!Y/,,lrQU֓ԉl=!D k"!Dټy3EEETTTPQQAeeO(!r0Ma`J)",, ???IڅBѮK֕RٳXMt f[ְ}VN;mIG65eeec֭н{wiB!h%%%%رɓ'nnZD)UHr#ZSXX3k jaN'a$%%pB 6-Bv6YWJ{n !00-%:8du*GhhϷ%B ɺfW UkP(ߏn4V۞B!DK&ax$QBGմyIօB^KMpH.^+רI֥ !7fݲ,dѦRSзp8pݧd[B!-q<ҳ.ڃSбa(LIJ$YB!DT[no4QY,>] q;":_ F, W@1f` =q155vA咿rc+1ؙgL2߻ߴ7N t=0=$z%Wǀ(XY̸F>I~~7Ι7no7/ezw;f_.cױhSS5FþBNS󳡄]?<{{c{/o<277G^C|| /zEa+ٟ]KpS>=(7y9{>~}d!o|J+"7">W #w߼*ogx=PJ%F$0v9$BBr1jYO@8lrUa050!BW iX%zs͓^tn*XS|r?7.Q! ~v}F P#yӅؽβi)=:vwX@B 'R*,~0p8{x3 ;8N@4lK=q Hz_O $Z=˖-g.Nzc^>٪)B!h{+0{'ƥ ϞQ&귃 IDATe uY|tۧ|}1S(*(Bu>/$sܕt[Ȼ_1[ {TTPS^]S\. u[zwǾжĩ*'N~$WB!OWC,K N2{N{*N7{bᢰ{h4C/f2d!.Hh0RoDrQYϾLcdZWΙ4I&O<>ߌhѣG?ϤI|zz:?Q B!D0tYbKy4!(&[P.;}8+ z9+X%E%Zw.]o^ {d;=C)-)R}cu:#.ÉJcTÉ.񯫠NLI1mcSFşqX>Cru!BC@7I92]>rZ G{\}ސQL()#,/` ]@?@e%e:UHzMjrW&*ITn eu^wb՚#ػv$hgԨQ?2nX>s4Wa0B!h[q^N_t.Rb08c#:_ qxq4ƦFafW1;ߥpr* ߯Fp_u=B{vBuߎURBccȅ-珠wxšу 3YvmF@ɓ'Mڵk_)aE3b0 Z !N.B£=Zk0M]GvU_Qjm !Bqɺ9P!Ns]vM$Bv6Y7M???,KzEkd])T_<rb*Bv6ICpp0>!NU핣N'JB!hj{-"66u֑Y5Y mg 3:I74 A0 IօB>K֣ܹ3-"66BCClQg Cxj'7;2іcXf:tODDe!B[S7pPQQAnn.Gu|5?ehMYYY'cO,kN8ÉSNa$Y☩7媚ήs$$$H"#DIIYӖkƬ!Bwɺb߿ BkQ!BvgW^irj^'QCb;S'v 7u]8)7~?@857l6.ebf7jJyy9999vj>)!ɺ֚]GBBQ֛=D~A4^2rst:$33Sj)!ɺ֚HR?^O_/N[?QUgJ)œӵkWϟOLL 999\t S'ObJ!DC:dUߤ0I"Z6R Njj*;v ''m &N9)ߐBQW p&/?'}TTI?}T4ILIL !f -S򠡎KbuHL !Dau2loem] $ZĔBtl2YZv{{A q8r3\"1z$cɺR 4ٌ%00Mh$ZĔBtl2Y}HݻZushwٶr Gp42jٜ9"[Gv^mq>L~WPn%eX6?bң/&ə#lf ,ڒŁt)(ĔBth2YQSZC Wg]YxF.–ےvl) ?&lfe|{31ضe7w0f+}HL !D֡uz]lFU18pg? s⣘GVz&#<̊3q9 5;G&}J, !h;YǸ5*Z}esDk,Lzh |>^ɞ9z0H;s/qI(]ʒ'o_+?˟ƧQF#o{U%.fffsWmPΩz)MN&53cYL6"H: ۞]I.&c.̑y^7^gw| { \8B"Of5rvOGm \>ZFp%@ELC]%Czk!x4`yO.uu#V{qռPr+٭;#Hd2 l۸r ʯ7C+o9/<{j9nf[K^|/]]pb'Jnիuh:-"1%'@ QAC2.5cm˧~Ǽ9} gMA[piDw$bO`^\E?`eF66X8=PFHBZfŇ=g޹ 3g0{K1E`J7QW1UwZ=`KɱeKB<6 h/}f_SF:7_:O>;+INvuE--i 7]9P@9f$Bu]'qƮo||&濻337wqXlJ˥ڡ8S,+39I$H)Mu "u:@9H1HѥkX*w-\8?ڥ-w`k붔qƸ@nߤcUL6wWn \xZlղe^vɞAJJަ}tTp D9'߳.1%:zk:G׶8F_gF\ 3o6*ŷ/>G\#Šr >+߲2,lU0=fu٢6:mٌ:fߴl#âPZcgxǖCA~!U&ѐcYL5YExtnb҂4Z}wc8 ;= =/#ӌuSDmYsSBѡud]$t)hiBz0dN/?“ bUbK5(aYGu/]Ѥ/^=X(F3,*i9ڟplJn'Ϩws*~*|Su>kt"0t. %؜6aÝ?ïp9y6:1$BW5# gp"iI8RkJ)߼UT0#ny'D`7U멽13ش "Z>eTD'b,'~qjіj@g1v̫:dxBO=exF˓qҼvoBЙ${(gULTtVbSm$CɺF^ne_[/$*%f}QN;G zl#65)CyLa؄!\< B??#YC)%?ƃI918wx+:6TImXV0#q)׾2s9'ݛۙb*{N !Q=ޯKED*<}Ea~獥w)!:t~u3{%+VP`?" y Y1!߳_\mOe+'16f9s[A_P\u5vª#Z ;F[J,JV^5e|SNݨBG㊳a{Tng'?~pw>V,ǎoNshcIZhV, g篱ދƌ&)%wgm]SF)EXXݺwǴVIU`,v,W%T5_Q v|$0xP<< ˨p[`#(< 1 aDYǂMh{0u!+#SDaQ e.?؄ Ā>fؽg(%su)u_dW;4RChEhhr/'B:C*ڽE1QRRF{QI?\?59`pJˡP:͠!I A15tж.B9We%@+uyN5L8]5Ǭ+ 021MhaQ: ̪qls`(,L+z U;ж}J  ʪ1Nڹ騞jV>(TuY/w1 ;6[Mksl1S7pC[A!\qQa0 ,}iZ7zxfӅjc}Ewى5bJ{*lvM</ҖjbB!u0x<(Zi6Gn6Mb$Bt6 ˍ$'CU )@+<wT/!)!:lxsRwI0G)UI^1?KS'ObJ!D]񐓛[uWM/)V]Wu"'0.m%ڄĔ/HL !C+ˣĄvJU^5UuԦ_ a-XաS 1%!6Y/,,$::sйsgb  0Pl(~J P5LJiV͡1M 8tp/cl;BєCUrd޽111H` >u$ũ$~H$^ #W/lQ牌~*n'55;vӶ?;ۧĶ8U$#ɺhL먨(Ӷe?KmDb[2vJbE$YB6MCaDkn[ۢHlo#ɺ,faX?CmKb[Mby$YoS}Dz(=[ͨ3{n܈"|Fb%|ۢ5t68?#~$FH}H7$MPJa&6Q5/kz/#,x~^0ӈ5z i-qKlv)\3f5/u<4ֈ|)ZwmQ=G*(fKn6[V盱7m\}3{M}c6+&%Ekj8[+M9k40=SqXt8E{j $GhYkͨJԕ='0lq~GQvF,gβ:_f_ HDcg?'ZNċYU86 r\n/}wF QA!6#$VmUbY \y9I>5 廠}d[Տm|:?aqύ P0)=^x%{PP"(νb%t)K(G? Sq/^F%Wcof1w6ʈr&n:Z2l .cӦk Eueqjt ).oKu/y_@gQjXiiPG/JY}/ŕx,Wavg, mX g'UŶ[(נ: XyxxsVv9>cmr[Y,ZVغu%ExY~=5Ih}vıE`t Aտ\.7V^Šcɋ>RtSVpmY(UeoAJ5mۢ8.X>akV Y3}Z݇(wRƧUY@ΑRܦYۨlhf SAC2.5cm˧~Ǽ9} gMApiDw$bO`^\E?`eF66X8=PFHBZfŇ=g޹ 3g0{K1E`Jtm߱( e(S+>6^/5~lj"%)SśY)`?^J(]i@{A~MEp|`BŲ2C9Db̈d;2m\ Rca CT]E+qr˅ӊ]r vnKg ln2,ʙʸQ1hb̘D>{,ʸz_G:j|ۋy!Z7]y+x [.<-j2/cp{9wPLGn/eSمX$@rRhVl_rys<{#k.^{-m7'fKNQ9J]h[iYN37{g*;V̱ʔ:θ[!c~Ld]#cd7׳oqq~΍;#pɦ#1-Ty2&gL5 l;$?DABLuRS'0;%דj`2MໞtfWu>dy@mڞ˞k\__Į˜͍.N}0k __?⣓7f9ÓyYE ;ֻж`) %r$ Dl1 )Y6(ǹ cC$ZQw|ɺ8qI&v4aj2`*7*H?@oo,eZ#oN{G)Si;RF.7('̖8Wo3=uQӐ4A׃w`C?K&mORʩ-(!_WN>g?ZOiP!M/Om4}+i-!n 3PɊx@Bۂ$HlӒu5g9V(&%V`,ڏ kDE=YWz87V**%e;nU)|,OQQ),P[Rr%{kR+q;;Jb_?fe)e7mq};3 <ױ*\؎$K$&HHbn`mjc]"4-XJi{扭Pdv6w;~zNg95x̿gF IRH5L$y9qH.GYT 1{(z,%DZ=>+Y"*JCs+0džHֵjd=Hc{_uܚDfM"q:Rqɿ/N3M_2rzXdw"~ S;r87,AuVqMoiy\tn8̞"foSw w3VϮd#*6.'ذ5)ޏ8m%Cg]RUTUA5ǯǝ=9I{dIW = ^ݙyOÿ7ص#:IFgL&x;{OONZ?rR$ Ig$)#ukilz~9KUQu9x`- $Zq~Owu: -~{>9{.AQ]zj2}-c(*dclIh\M*5PN Xdj{ϾH!҃?>|׮A].[7^ Idп3g6=C|?:L4: 1*ʋwmNӿhZ>[̱"KShq7 ر yy~~_pe0H:,#I϶EUҡȲf}Mns&5L~>,椩(9wYI m h^-#!KO5<Bk}9xu:2h,(JggO U@@W1+\5@@y߃gͳsv$TUAu@Xc4 ~ѨgUh8+^i m h^-|3k+Bۉ/,X ;"Y׀,~$Iiͺ`ᨀC]UmBۂDhEh?vD4z}q$DHK}~O\&, B+ж`~ڟ7"Y׈hc!A$ok׼L@ Bˇж`9~q_F~91b+X<&c:kIlJm!"!Pz$Ijp8(,(@!I;UV bl,~o)0EA1C$n7\R m V EhqyS@ @0t@ /*ϖ?~|%!@ &yqu@ E$EJ${光O&ܭuTK1@ $roH63nk1} :cVDRe\d=o v&߆F ibO֥t*ǻ{ f,UC{g'yJUv.Jn_9)_|J8F pVfIi]%GEAE@ |Yd@vU%;ـvxmcGY98"%aE&ţϸ+7<0)n-&;ـis3O3H j H1Pv^\*̖$#z|oqRJ){ _rܠhrz(spIn Mys8!~҄Ety7?׭.T ~aisᗷH{cZ S#~ @_`$jnZ?-fal?֝d*ڐ)QbIիxIXhg\NoR6~O=e\||6əlcElcM Rg5E@ X&,YLUyN#%76N%zsQLJ_ӓ]}#ezo] vYϪd Rz@\^2j:mY9{LͶ:v0uPTͮ}T }A/t+6MT%Qh1bZG)o5'ehBK'0Ke:n~͍7xO  ߰l#X&@NeQ&)' ] ?:ra&>-Kηdo^?$STcF9¡<6 jFW4hYxГ[wWJhzKcF *wzF?k\m?ݕt|քgnzx=G;ޫ b/H-W &zkՎvf/xY@ X.YO ^;ϰϬ:$^}#(3Ja(̒Q̈́SݱgR)Uׇ.KG2J)'cٺUcqFz`6"77iЎmn:{Mdn*"gh:zgz{,pl/-N> ~2##mXo̅{uށ>F%?N?9yd] b"?7[[?jM q6 6wx*Sn-l[:};*?qbZζusqUyz5mN nlBoW.2=t\cyiOLV' 6G~'iH*LF2q3j[8iwX ( M\󐆵qe?{,N 0t NɓX)tZ<̨$mwQGR,c6>ŗ_)Hf^&zV8Iψfs>,Eٛ> @ĞtWkwDa~"?72Bmiǡl#''i8R)tlL o$/Ogw`o'u:5La,u|JNN"~%3iqDrz*:sNj䵪6](q)FL UGOԕ'aovvb\s9tR80[l/`p+VwwtXKQq|MH^Vo68F@LF!q\snh-6p(j#|b3ԯhcE ~ {%K>u@  a^kۜ>饶f+{6c˘[i -+>ՈN0jꅖ03pu4V`1cx EUQgM)f_JdWE!|x& ;y?M'9宣fkc:mYywuI{0-~֯^@ :+ӘXɁA1XS6.]n u@ |$q䬥Dr|.l9{rDj.xQHk@3ͣ/N2@o2@0Od#B@xVĮI@ Vo2@h(օl@\h|̚)-"gxrR6eO:ץ.N/\,ٿX^Gya "+@ XtD>)9EX_0VYCna2YEBJ$k㗦nR"[J)2j+?.~q*]fo#^*[X9Ծ.oO^ Wco1R).-em|- Ǖl@ ,:1&F}Y8嵭K5Lٔ `шqͺ[I,:XϚm6#HjΡinm.)Fo>u @ Xyb`=Zf,cӣS<UVPG默jnZ?L|vs̖ʼn H)|2~ɥiRkQYd"5Ɉ oc 3yܽA<ב]kN6t5|ԉLNzgoV'$Ҷ¡R:׹t: RgE˕jI\~nP^ͼ'ªk: SM"%RXu9dģy3>IgW $Dou6{?mMW >%4Z<1Dicy{s2%B]e?2󧅼v9/!/'STYOՆ|LN^udz: ^1s'MX@Wwz~B7?~y7f?(D_mſqҢS]jwR!4簅fQ5x07xk9 a~Ȣןqmr:eIE>9qUCJSDk{Ork$'r#p_X %Wڭd'P}8mįhF2rI4r1m ua뜻#]ї%HR*u<'zǑ҉`i96IebZpy%h>/zsQLJ_5lʏ%&RxVyFH..&WFT*QlD/ĭ:_skL"c}%5FSo^?$ST#B]TF=**q'!zrJWpiHA.vZG_9 ߰l#X&@NeQ&)' ] ?:ra&>Hc+|_⟖8'#K[9r6QJg<SDik\m?ݕt|քgnzx=GmC=Շ9\*qkn%պ,*M~oE>=G8R%@J.aǞJُ9@ 1[7uk`1rRe'bʶc1_߷ (++l;RPx 0+mE6:tЫCH@wa0uq܁XVuZ{_I{wT n'6RdݸI^>v7)vr/<1B-9vI%E#KbqWCyN_E a_ö I 7I^27,k9Q`kWX{l?/SNϥsڎ,|[s>S_0G5"KeL8?K 5_@ Ϻ+81KxlrIZz]~. HYPU]`'^xu j =o-'hm}H5]Xt|9i2 1'jIDATdhxLRvJdcmceC##ea2H~g] YO40cD/JWg봐pe%K Ovp"<[41:jNxXhj]_[75?ݍvM!XbK_X$gev4?Nj= <M_ N4@U@3O (葦 $;Otl`[i{)NѳyI2q3j[8b * K}W3p0z5Ivzƴ#6_T&g AxN8O:ŝkT|FmnSY8 W9m|/Sxb-L*y%Ntro1fƃ.Mm`$3/ QVP>o1<I*j:wl8~ 1şDnri&ᷚq(:["9=bWprǜfM_,tlL 7bpV'vjkO=yl\OqQ:.%nS]&yx->pmDLRqXLp؟9pygQف5kwtcŴf3f31kW)JL@O vd[97,ݽTm8,X=DEӎCI&''9d2kS ,`f= .y/xbӆZ*3lܽ\W:RU,:[x'mmCsh+O96EEVSGd5s%GS6t| 7y08F@CZ-> X;JPs=Ϲk^ڣ釣юwwra%Udyaovs-YR-1$둵M 7䔻 2"<9y'e<Ӑ-r@&<]sp%>o{u|E'U} \?lͫ5zk}tY\QG&h"7]Os_Oi8PTU{DsZ8%j$îq񕮋E@K[z#W[1CRz,x_KdkC4\ B0&UUEQu*)ptρ%?vQEQa A0`@ZZdKZZ;w4 &{G7oڌ N&!H# :DQu~dJojcxķ?(,&(6f'naIX*A&r %D$x'‰XL8 ++  C{eDcXCS yAqT q3?^61݂ @KW z=NbAuq,짅$ oЮEQ@0Ŕ\CnsIݻ=-K 0q߿A/D"''W^t޽k( h<i`<TۛaҪSu8sLK((ꔃFX^8/#' ]"gȾdKX1\2K 5S&ôሜ?yFwMW}VOopHm?Q7S_)O>pqÊ[Q!iϼJH}]mz Gjǥ6⯶%`z뮜9[ndLJw?vJY(CH=0bkPv{n&Z[[R 5MEرcxCoޔ5*?2E*}\vِng#׊g_r+q ˈHKwsĈ(A-q8S ָee=νwt-l 6nAFqswlޏnn떼 +2hW(@exS$^!4 Q@OZYj<|ƠGHWDŽSEQf0K**wԁ3E1c-k?g?C+^yM)yL%-S1+"ax`#0k<,ȹe:1XS4s<2Qe0n(~?x"5--#rC[2y2fhhln Nz pgf{3e è N Ѹ6[8lDĢY ;Kx<~[$`@SEQ ZBb7nedEX, Ĉji~"=/,.:%;ENCfbZrwq>dɱeoc\U%y!" '9Ma} ӑUc٩](~? $ZJBu{ܢC"%7텃K]8Q M]DO&J"Nh*RL[{ג`ϙrBW)(4E0a$q jk),ӟ6bZi9l)"}) ;*eZQY4_UA`Aت'2Ch1FH!h I<{D: (ӕI=U.nı%;[oF5#ClEo(8;c-{ۚvXWF* $Iba;AQEQ+ d |~v87$ɷ `ݩvD8ˢ6EQEǍf?vv@8;*\_${AQEQoLx(j l]}}"o EQEQEQEtW_y2 E4 E@L&8L{y2EQ+0U3,E,iG~g;&C((((?X& Xj离LQ''mְ9}zD[KQ'κTD[=$n߾scm~=i.RImK䞹L( Uo FDѷtx}X-0Ѝ[S0MH%unIx_K(n%ò6# B&@2nD1g'W&Ԧ`g!}%OmvGD7h F Dx2̘&&rxu~0&<'tCa ڏ1N$nb9sQ0!qIvRB UmM`[rpӌ|(p,k'f9VuThSM۹(Ew,/k? Cw$mj* $14soewuA( %NĒN9a3T$, ѿ?}FHD} k&q]5dg8Eh57KcDnXě1$Yc!eA Һ2.ˬDr뗩 Ft Z?("`cD,h0z HTk`qhS FuU#=5-1yGa&*x|;{SpS@Wl/"JR^2^ܫϼQONfߚ4~:m D?IJL\U. xuӑƄ.i#4,h #SAw,-od)ك|leeC+i{M&- 5̴LN)VuطͰB;tv4k!4u-̢ܼtYD V6Df'4tCݩt֣U"dAMkׂ\'g--*q?kűeq.߈>gD7G QKCAa 쫍A IYlY&d풪LqOD ߥC9x +)Ohljm3jΚϗ}cN.9!2'{c"x RtBAG?4jKc>vYxu]%11g]ol=<$&√كx(#~F?3ËO(qa^㽗?xeNYhM1&]jB:>`bX"!$?KB,̰Ę-aqwXui*3朖t]5 L8C849X1@q8ydٿHK7=ZYڗXat\gKEGpIY=saxG>Hax̛Ǽޕ?7@)߭tLeA[I7鳽uMtMt;E`5؝sPtpi4'y3lϕpn=r9ّܿX^Ip\*Уqh+N>4M㤙=SH]HeB$ mwe6,-xQHq;RݢS@ ri.k_Zq%QcWWZ?̙=rz6 OA μ?o<~}ֺYs_`jA.R8|^‹Ϭ^Uo88$H|f޶;wX{g39֑}b:lgjbd7# Cy,$Aӽ.'c=OF\r ,5PݦaD[LطAZOB~JUu GTQ\NDڬw\=R}e[՚3⌎="۾ˆ=];A0l1>D^8aӬuV5d88Sv!,~qem֠i-hЫVly~P?,,|tw}qEk'ųã{9==zPtI'lMK߹˪Mq.+L/>8f]%C;oW'08hed- IDAT=@BV~Tږ wu̥zrSDXų+Yϼi=D:N'aAwgɁ7/[BA CF h!Wn?A%Y5ٰW?`jﯮ3^#5.?xou vƭ.R%] L{׬,Q//]A :fwlشcѲC r-W\YXc>rzso- ϑMY(qrDR%e=wl&ۯ|1N,Z;k=c3b_m@ v3 @}sX=C fPšSb*pXm9iEryr+ qQ@[ V}Ÿ3d~޽:u&u[.oP>(1xŪX=o hpò[쨌`18*ڣe`,ӡygLt P+nznSO^+[d%x5O7YFSu;ՓiՒoڽN+DYcb?=fm)KpݱcW`ՖWLs{mmi< @UJwwPp_?QR:yȱ2ԯ藕d*4n}ӻX1qC޺.?wFeE*|ok[pyG|; ,1[":|xq3 EO?hT Y]|+pH,&4u1L1@ڑLUk(*dYP`ۘ>, ] =yeNF$5#Kv41N+ĊR.h;tu*p$"beQ_SPc̙zEcrGbf>œj.p vyó/{Wex#q`HK3 PMSδjgMqD/dx\ ֪Y,F*/Xr9SoW54dYN`Mkv^XuMSrOHSϟxhWw }ç㮜n8kK_-xg5! ky's 5wdD]0wθeTii}[}$')tM۞V[zbbmX̂ DVwD5:Gѥ{\W8ԄaF=68ӊ(i+NL;e X<.=Rwx/oZtr!6i|-8\vAvp'AtrGTV*dĠ\6Э[awg΂&&w<ѭ'3!Ma3^G-W<- <}=ThNCZP-GKc& i^wի`s?橀1T OHBa`͢eƌôO??/GNӰX+KnxeKGN;K:!;2z~Xspk9uUr [Ξc}־*< }1"ji^n}EXcFMݵ4 1t|MiSzfj=&rt6AAs Bi<|S 3seLs%p8٭ s|ꋗKK-qᇕ|Dp"MtXN0H3ȅj'\2 Țvl^]5s~:dծᠶ6j$CkƤh]Of{g^\yr@Ӛ@` /VeY7V֬ڐɬW?9$ oJg(H9ʗn7WꎟXw=T{"JR22{=MU0ЮsFw4ޱD 7n-7னs&-淏Dk`c+X9bjJ,ꎙ<a m*v}P)4p\7yNU:lini J栁< ҥ+V g\|}c3zڀa5xۚ-#qʅ:A-<2䓅óTX }/x]OG= {+nXbhtf?{ ܾ7~zc"cwU5 m>N'qzIl1&wڲy}Ӏ}J|ՎzgNc3Uy4=4 ޲ O6@5Uu,t n"C=r~]cYy5E {DwHRxmbQÓxumOW4&?s4^83Ko-+C_:srcgЉ2nz};[j'6[N]{U1K:2G:=DmhYkkrcmbxVIrkIPu6mP{M6Xlii7a9ɝ‡\2r)Ilr_io}FV'2Kn%{V|ܞ>IոZv ZO : ?ȦfW=!aHFÑ9AsK[L /u#[yvu*VtG3xI 9i9rîh嫺5a\"@ra9swoՍTw9ba>q W7>m(J`֊zznS w|YqD. 8VDv1$|ˉ*(S!1 #9`t)ۭ5(#K26ƪ"Vӝv~׉`Hφׄ}ɓi?&P]HQ^}2I, |Y齱hJshH4x%~9C6#E>ygX6<+?t0Ply_Ssg:DQr\s$a,X8 k!!#zB ]9l98OlU3\l7ukO^?-u;3YxeCxS33F}6OfIvTa?!HAAL 1tp_3˵B7яgӴb1Uӽ#5ea=Wuƺs&=:So\7۾҄/BEI9SQ z;~f4Ӎp9/:8i`үc4 %'{p>cek R㵇74{xC'"뎟Р[EHFw&Da#f$D̙_@~.uk"g=3L*yfzѸNr]C}EnQm0iNayP)041`URrLtAL/1 e!F-.8 |;JT!|ϐه-ݾ0v7@ښx;ĥ8#21y{tF4Aj>Pjb'tF3zlHӻc~;o8ȵ5{rǫ, IY6*[,W {e!DWuο}P}\YS2|qV=׿P~kR.7G[rOݽjձ𴆟 t@~* 5G S%ToyDfyn>mOb!3g:ApBH)uۉnL"fkY[}&dfgEF9-#br->02z}yg~yCCȲTΜʅg973qX!ZSqI=:r$ono`]DZ\eV˞/x[*iph?zg75w;ɩ)NlP4$XB{INn;ݛ7wAݻuT~4l: N P4:fOvii+H?L?  "BL9w3wbl11׭L|W3ߩ?mM[]+C}VOx/\ta_اd0{בg:080a۾u;0jkOnnaxٛԡ24u!4^0|-Oo\{j,qY]TIz;#.vЮU;N4t@N R;U|QM4vʠgt U{=Hg~R%;\tK52*7}ܢ񙠮lC_^ugq K{(JikZS1ncESY82uɓo ^wkT-ڞH'Ϟq# '&3 !caIv )=ԪiY@]Kߺʙn`)Q9d'0ND/{=lEESYkp,dOuJ]YD <ҭ#lq1'*޸}18PdGBceZV\-gx$/*ˀRWYjcnඖ!ԑ˦8ciB<`}iuk]3eӡHǎg A]߿l=ݽsץ/eSo్ 'J~kG;iN v1_|S=|/[6}rca{[8Ilﱆ &_tA vnb .9#O6.mt70ktc?6!g/zX=Rm. +w'T{׳36#P GjQ `y5ܸܻDևՈY8ryvt[,gDmѨ*!q8ּpUiryd*:j1ga];1ؚ='P!?2otvXg &,dyH푻--0ځކp`;F|}kmp,\($X2Z8ʞ?rv=wF,Q)gLUcWZ7D1 vvtaS<^;=[* ./kU4D.{dٴ;^ޑX___EZO:58Ah,=hٽ:tCM xfgYg?yV[$1$A{\d!Fr҂qvp'7ab;-4Rij?q?7Z5}`.)PLfYZmF{r"-®nwъkVոe_2ƃMooPfpo'j]rǭӷ"jR:>8툈IP;tBQq9tzӥ@$%nt7\ȑN&g{OO{$;mK)P)f}pZU!`ށsO8S8FSa*%%SZGҐ='4 }ArxHkΉ9^RDMin~i?6NĂ;cw#2 y/30d$8TR韊J+$$~xh!O߄ĒnPHidykxa6F=[NxY\;M@h8toSV#m`8`^LBU2hOXʤOo@D8>DY-EI@S@8%d&s" @DD m 7O$.-l׍"0I#[yT@%"!a697p+BJ"yYg5(j QU ATDDJ8Slqk$Qս3hXBOœF9 e21stE\֐!cLRZ$-3G}@7ͧєy HsBE2TML#U CXޝOC3 Zъ 7yt KՀC %!9I#*H@詤ocଯ`,A=暙oh~E)9I,iTHs$D}H4K,eŐg3xs_:4MYY= jHaf݀\v7zj<}t 9;#)CIAI1NĹ@12E9_l8XWĴ??|q >'EPh0Yvd XfKsV(n g㞫BT\ͺ ܬ%嫑U aF6ۚ˲;2nMS/}iۊ FXb4Ƣm[ UڇˏU@"JS_3&k2-{I]"Lt!_k8slxg`DqAV8>~U"NPTA0*-&jJnEcb3e2[[4a˗=yZ뒢Xymqc#PDw~`!d0-WU}__`YUEXju@&k} ?1 /nȚ_-h(A~*!1S |u5p) xANoY嚂%uB4b*)d9~ɮ|EԀi]VEg^52FFc4C0K/6Wc\!q M3ωfcIMAМKٗu=Jx+n˱v3EĤ XI;[0QKQu '1q+/w@83t@ \(NH|%3 V/ ز|t(Kײf`+FCRUQŰ; V/ 2X3υS+ V/ TY)- R$ò+ V`+X V`l@4~}\C= =1U>Wǥ=@^"d+ky&^6:~ȲlXrss^ 6h—/xJ/\K^W b&^eEth(RɲxP9={"/ZB~̼5mZ JdIII0Fڸ 'XW`J+׫/ȿEzj I IRaaX.aPR\"KU4E #EQIR%ټ5CC,y##~>NF/i6Qf4<+Ad(T8Iyo1Ӝ2@V^+ff!DQ7p_8К愗q}2bSQka)2~dC_nȠ(,/2|.UQW~Uә&Y_NB ڋuB )2|o}@3x4MH&Q!_pR"~!A(+ɊRVN_zt(Y def72_`ERX/v,3 Sx%kRoAH1 \ZP+꿒Mٯ͛EZ.Ii'/I㿆ah4MCq&2 ^?_VZ JNj٬Vb228 ^EoYҊ?J2J=oT.:"I> qBmi2.@@1oRhc/QoI7CCqhXmVBbE!&Nᱩ N#_(*>Ų BzƥWWπLxQ1YlV]-K]C95Fxa/y=2dv75VӉb~pEeHP~1Wq.2鹑'1Mlb8vw?sDgPLKy{ڻ h F,A ўᩥ& 8k.ys: /40Qz{df\k MM6[&/b]pاL& NR-KĿaaH@>1&$h"$(%ȐkRA<+G7?iI+ QXOx)d X Gn^p⅋o<O(8CnA1îp4qe7_f=l//iN;Rў'A3E1\#2?| Ab H1@f=si=X扞eTDZi!O@MWOqSѱO;eFI~c=d²C{V|j-{iHF._'/?%2 AawY!w9$C׃>aS:,'n^mNB}6=Ԟِ0{aW߄{v.\M K[$ ˟Y|fXJX_gDTe$2 ;Y2syTDAYQNLcZfNZ2Vє\)X5C*vO'tXƳ?L. h4cˤۥJyFǧyD_G=N9K5=&i9Y_-tIjvH 'G&"Q, :x$.6D8$pizbt&eK"f;/K.١懣"$2KӕyO&E]}}23.YKyI]Ŀƶ,ԧ+Nd`v aۗJ-ײzb0O ybr9s>-g ,W%|#=5LuI좷!vٚˤ#s1` 'znDHdhyAh4bMQGBp\NShSjuߓd2{YLiM 2:JvCeP/^p!IZLAeU,gL$kH1st]S35FSc)\Faw h4 :&mDɉADL3q\-@q9z'ER)b$I!492!.ה\dK\QW\ݓsBFXZ*`Y32&M΄8)R~'ZNcJ7)̬IO@3,*EPpGo=RS]h| Gbs@ Ð {I[.(*6yRRt2)(c0N9Y)PSd\7Ɩ޴5i"R)Y$E<+PMx>Kp0M&\񢵇 - #) MF9b$5(/"R`RH0)4YBDcX\4CRX*%jepDjhCQD$0``tkˑ Uj*idvw !Kr2 @tNd2*ʪ>܄3ZԸ'ߌbiȴ%HPj5ᨬ{b"$f jB,Oz2RG!c~_ &:ri.[4 GagΩ(E`.F yɵH $IŒ7\2U߮6UNHXJi04h .P&%^HZ <`ŠXb/%YT0OlF@J' h#MJ&t(B7Gx6ms1DE RR@uVJ'fC,JSteݍe p<-%Q0D3zɐdH :8"9jw4INF ^1XsQDVքT,Q`*i ga('C50$k|hrrZ<$%# <Im*$RF#kJ *k UYL%@N{&yGca8䣑@hP5xd-VH &R J ,r:'䔄1 w>|1^2()* hngA0mk,x& P`)'q hIRcH7&ZHӺ C4DHH-|LpX$+f4/ԉp0)cIF!;S*ϯzpz}y+a7@EZ}護w7櫒~6,&K\:O1*|2.)؄T#|*% N$Lq12dEDQCx09隘֗2J< DgB\e)-kHm 3lpٓd:j sH1 Hxڤ$*8 ɧM8`$aXp8,DaRU p+' N"&T1K$e@Ym&"eiL$}]dɪR]ӈ?*qhJT1()ٚP̫(I, < ;/$?8ǂ!MMLūKiM!O%9^I"qPS`\#D$)U7Ϡ1%I)\,KbIDLq@hj~oQhJ2 ;n^{0Z*IZj3+XLdZ2$1hH dk741D*Fb.~#R*'(\;ʽ41M,rả<'Cx()PMდ 8%%2YX'ED'iNj!1YRQOY&u$(Ih(']zuAQEDq)-a$QkK&c Wd"plaT4VpL4bŮ!hkb)LLibTI# DRPQV e.3rI8o_.*zrj ujTai*23"p0)":Sk'Gcsr̀Ox̵%ś: IP1GPSHFW)P0%VDABH]M[W*JyjgB׽?]* <+w ?8 Ã7> ۏ9}YKΏwO|kz߷7>Y&Xtin =}w/߼7RUz-6,;e]A}H`εVwǬO_;o{#6!z벿`[AXZEnj "&ylg]̹߼1TMENޝHɔwnדXJ$r?Tmǻ[ۇ܂^{ĝSb (bcn~]{D3?%蛊´[ѫ] YT |/Z{ľBDΙ4"h2 IDATʌI۞$DPfɃO9nMk] \W0c6"\伺Xx]58LZWe;b0k1VRa$ }n;n$X&+wNeZ_sdh06wי<ϓ/]j*)|wJ;78J9tړOs]7~so5뙉{>;cw.\E z*C`h7ً-B|ֹ Ti4֖ۏ"nXMwgv{vM;yWغn?-*6=T v٢bîwΧI`ӆ{)$2r5"o7Z]wRz='-DVġ\|M'Nm]ޮ3!e 7*ۖ[V;F9s̥Kawэ;]QB( +p yAk=)T3olu޿`7ltr^،of"bgٸbȯ͚ޝVGdapb3$]^kh? "tZKҗw[ xfzZt%{yl[j1`٣+?nc hI߻qmp2Go_9r6=vvt'x[ƷdtVQ'Id= vq7}q.l8q@wPᩫoj")[_W0vG`ݮ+&GoqH^ 2W~gزǎ*Y{뱣[|Cu&EVM&TFs&STH !;}[V9u4 Z}''3mn=%Q&g;PkC:#Cܚ z9;?=7au.T2FK _h0aF %1r7!zCk۪N|0rxUeOm=f͏u޾Tlӡ6'Zo 24zHGHeReVZRW2թ! bAYrw?67eowG=\u 쮴Ԅ3OO:9RRj󷇣 /x), kSm>tܾ~7^rwA3⒔ (h([b㹎Սaޏn6GӨA?w/`9oc1JTP);PKDǽc?:.UTD`'Y8o}:~7M|?={.%uܹzk`68A$!qGX?xBף'@SopwZ?"&/܊k )lj2F&n];Rz['ֱ}W r ޮZ ?/8Ul?#> !^ozU&^B͇RK?kQw ǜP UR+092tAr7q71ue$wۿ<۩W_kWU!6>:gy¢HU41'rch67 >wkton^p%_S\HRSd9]~t,5Yڄ:p]}$dBTA3TRsfړl)BeqEE4Uf}lb峻εk]N? I"~{@PepˑbVX7nξ#^ `h:Iv xbhjPwý-tp8x󮎪4lh1!#Wo;ѷ]B hz䃽FukmݍkjL3$;_4{ -5yRۼ,˼F5> ]G;ӳѼu,З7g[/_ldj-ۮ}NoFKz=5'ӰJw λm?*h6 l_oN|q8zo"ʿ#˧e( Ӫ/}X2'꺣9F_ yK -#~q᝚ * p40{t='3Ʋt)9cd\θI#BC 8rp~ΐ)$k6GM|`-y2TWh?k$ʊg*X_IWȆC[ k<=}?+4Dp0\0W,7 x9xk@x=jo]S<=Bzdo'۞THh=!kw"{?>[DSne`>j8](y?:'ʝ#_G^9d1t8f e R0B!s^wݸHFI<9y롽U?n.D=g&;z" {orv}zUP tϕ[bݷ~x0gwK5O|pJ֊bZ"HA9u;\Cc[c\mm>aI_ֲ;רa¡!iR'7GM;"|Wf641|ZzpIQׯfoaD 8DQ5 N85K5GkQ*cˑfWX37otbN}S Y_$Yɩn,ӛkϖLvdY[bI~Sn|Wbi\HKv_X[4ߞc7K~ @9wx[EC>>L{ ^я}L􋎾7۠uا-5Lת7bIRw{nuL^ 9gu_ 6|z,ƻ#K* yZ^a^[$}/T[F/t_mp]/>UA&7lo}½|cv+L TM.vG"뭎m/#$@Ks7ov}حp@D3}_e2qaYe 'XFT $N;Qr#F]Ӈ6>IO8S.J2hlj`kw?(Ar~(%ꛒ܎#7 PL峡~rr>.\gDd[5m+Zi}1 58XѸ079pٴ2DӋ篭0aW;v`G1P& raO_h\B<`”6 ܾvnqzuFi}  MFтZ'޿К"sEP1[rrfA;(r¬WSSET I3ɢu 071ݿkmIsсqH<߲kiᵮ9tqqZ5}"J{=:=5 0pn[ǦKF&ffqQtR¢aWcE_t,47 +[@#y''^DxS)DԻиu}}cfJ LWA !;gul=䄘tœƝgmQj*fDd=Tnam}8M׮nq|_jyzsӶR@:8XP+突1V}:*K-kLҜc`DZCSf[*@hݠVI;h.WB#֜ص!"Ċ (`ZsIF F[NICMŔdg:c1O}ym9N%PS(J:0 W4VD B`rmvL'Mgv簡R+Wt%i/@P02a}u uMG6JrƼxJtޞEIU}& r)zS})2E E_bX %ғQ$PL[ZJʕo TU$b1L[@7hJ!DO<ڞUV>?qg+1(O~S1Ѿ۞4V%Kzs}A#0 .A ]/Ԧk!jQOYo Ɛ,:ۮ+̲mnζi} E}m?D1+Ql-jx,iScrquN n[˦JƜ30r>7kx1WXИ˯ػȊh%'IA7?iUƞސrkJ8,IE\8N߾EI$Uh=ƽOտ1Y%$)"8|)f&d)0=^xs~BO%-Z 0%&&BoXUU =iL2҂ۉnbP.8kǪH 71=LhPMbއ鰑)d^5{dմcccm(!8s"HU}oS%%y5ćdߐC@X lU+Y{ Am߿M 7B!v[4UR!o|lW֙ *i8mXsr8Wiih0YkSFX(x/(q;ضgk=GA>8rR7q<4lͶrx"[_[Y$ˆȊ(*У8">\q!O ۧ;7撱\ `BpG5)+`9ŬnopKCKhIĤVִGT?Eyq'N1IIƴ˙Tc c9 :;t͑yshlVU3me[qƢ`FpǝO6o4UQ3Q۠ɤSUcʊ-c݆#KD c>_2MF9Koي{;o~6=[ˌ]n%l9&Ktu5sN9Zt/%;+qUCX+ido˶[;\)ݴa-:QB[j=^ajL-k2mc<4prlIMQ^Ci*ikn{F})6.⌭4rUb%Qаrxu6T„K]Fzh ?_8 Yx4 ֔Za7}QwsUaMq9 +So﫝}ay+2]s3s&dhFw#%i{(%*·9/so;~jow51~1ɽl *EI@,,Zbz3E%YR)nGodK"//wzLD5嚜y,K >ŀ}m̰GNF'K֝Af7R#)[SȒw]՗Kx) 6l9y+c0Xi.-xq\\xkא%2"n)YߴpƔG<| br&@d͹9؈C4l&# !XS~eQEM(Rj3CNȰ>1Af.4BKxTE/.GHSs)wP &S~dw%8p}]͟;V8{lK]]GO&X5 o~+wO]Gξ<37JDɄM∳f<9pW~@/"&yXG;::֙-g󓳇>5)ʫj(uY܀fxU7Rf 2&KQu]BxAC7J e>vSE]t݊&[NYuyZ2*ȴŪ67ˍWGe=>:ᆺNA ·U8v>{l6)Y[$q%EE2؍u{H:GYv7>kw +t9yu1ʭa"H)fj_qPuT yô x1&q0K=nxH Gֿ d #]PU*T\H*4i9&"Z񑬞2]STд\ĝXBDa9؏$b|n(ӷe$4\HK`;cڔ'cn-<]Κk, k){X˩-Ih*+uxH(QTpK%S1`B!67wtW]lj'Nw(EdԄĖcmw̆SxլvٜgASUYQ]U5{EVTȴ}JWYA\&k{x,%/hAyeEyN]#,`ܱDoUfzfvaqTl3)R^e /z IDATk0yȟ $֊R dQQ."֚5ȃklͪ "QTSDŽk AjY37L,pmuE ĉd7 +~z,۴gS%c()4#XRbL&U 'v} E>Zuܾr>?=x]z]ݼD^me>/Y2>!$N0*=瘊5e"(?TD[8'?+ *ɤD1WZNͦ{+oZS`,+)[Mu |/^RTXɤgQ>S\5Jdx9q$`fDP@g-ۍHH[޾wi7zf=f77 @Ѐ Axo&}f܋,1L_5 *2*"!rK<"Xp6N4lسF^eS7ҺR Lΐ{vBã rH?RӳSiji:)߾|yh>J$Ҋ(? LRn-g(ֻtg^IJ}[D,I)**ˬS.I%3Qv|f){{AE5hR{o$N$Ӫi$7=;$,!ŋǯQE ~^U5{YM9~/C OFނB3 KJTQMm'-Y|i9B&ۣ_ -bR)]_o;vOa=%;J,kli=ֵ,(M7NPGU{M³w\N7="gRwuu.5d- g\X(O Ϥ W 4h=}c \yeUK [{:鲊"=q?(S۴sW8;Y]ICGŮNo;F;)ݲ`sSMϵ36l={xv/ SmќG]p{@ްicsB/-rBA μ$t^wҺI/7bx sp'Pt"چLY1m+Jb뷅]{Me9&24*X}Wl7Ri/cHmvΝ oۿ1kd'LI1^?CPUHj;bZO(ߴ{JAg+jw| D4ϱHv\[t=;ko6Υz$X[Jf8)._419zlmϭ]x(im}y\[e߼qE UIgӒ*Jtmv->3kjΚ%;;~ YoZx,`YYT݋w4E,- zו.SZ ׺E ٢WQsCaT*JZ9uF˗ ք[_{];7XisҸ[Vڒ3.]˷a#m9Y@ԥK?@S|PI`Hx953 M !|$,Z/ћj_mg/,!y¹ p߻O; ̭ GFMak .wo#I zَ? x[|<]~~6n_ŵΨ ,(gHY$j(ћ7)l=+/5pܵO?YU]啅NCͮ4km'{Ib׋ׯXD)XSgZO@uC%kl1~IU[)+eIۧ(M/o9|3|ą'\"i WXPrHڱvjwɲKE>NsZ< {fۉBQuT '?❣lrxen vn;ysJqy֏[4HcivEm1!I-۱3}=4BaxW _7:pg- Z?c幤0c1*_'^0r'd+}oG&icו$8֟$[A )lQˁ=ɳ?xB֝[]PPP-,sRGKvq\oa\w>fׁ'~: -͑X^@YQ/?P/ w^;i5_۰ҕL[= ]~*,v,4!)jni74bYvpM}~A8lQ=D$ͰL");YNoHW(N'7W|xSk{)'s '± 8 Y4HZ5&Xfu1d űdU2&`ܾόϿߩ /!t]w\^wvvVUU)۱7/ҥĵ޹ԫKXYV1K)H,@̶6HN'kĢ4P3v;HMT&y廴w^Oo>⩟cRg' gЇ_pi:{]wK34 |(2 tڡ!F"qlp`|g uv09b\;tLcM(4  H|kThVTf2wE1s PF)–\ BCZRBQ1لɗ:lfL:vR Pn7>l_9gP#uGZm9y6j@0 ]RLui|ajpcs${ e$J)2 ('X(#Yò֏x8pdq|q,dt)%%^ASw$);n}F:um'{&䣛|&٬uS.T# eـ+'2R ܏wz7gX(k1 &W--dJ $`Y4{ᄽ ʮ}8qbpBqbzf [C,VWehΪ4IzHȱ~LZXh{%IXwXԀP헮RM*)Y! !3Z`ocn=m80pN<)ѱ+Sve־;3RvbidxF3ʖTLպ)dȒ GD8QA|[4pgSF&zFxU0pA;nPڞ/N, }OLDBƝ#>^2CARFlp4c)3Ff(rlֱ@֝eoND`iu`MPe`\;I3tFR] %;IR,O?nTe xj(:d8bx¿$5tLB]%E- {MmiD| 6 Ś ;}cֶ&In+ A{.Bϐx9 YȤ5xXi- ,X@ܹ;.{"Ӑml1\YM@ Ykv[_/g'TǗ v2ɃLZLf2 ˆaæ$a "KPNo.vx=Q_k9C6ƿ|$h_3/jy+FQg(!|6kcHt>rxy73X`R3Ѕx\+pzp}`UՄ&mȽλ12 Z)%ďavS$,Zce*:$yImjpY]D>)+yĤVdYq: (_kwAu>0g>â%B9MyxO} !4R{x`b,`t:=O0|CH#+og4W[S፞'(RH ̆۟cϾ_2$E`P=\2$$h ,;v j,y%@υEW裍_osaA,1DLB秆CҚ&IGl[l#&%_+%!@p0n~eO" ~Ns>7+|9C"dvh"BuDLR Djq%E$Q6 J}Rl."ԯS3 ?Aa8%lt:~G W.hx&QGDQ _~:5pZ SaAA;=}rkعn1M&fh,uSU (JnYn P;sLNK]P5)N5~.iȴBd)b{R{1I%Y2W[oDe]'_q+sy]3('LC%UG`(N JIUDxuFfxWWPy`hx1LX1͑3Cw wyCbS(:..#ahbtb6m.Us##sqs8y0LCJggS*"+ջ{ڣEenӀ05|}b=9+O}7ܛ7xƈnX\, u LΧ!) XNΌt ΄f8&dt~h 9n;Ɣ̤n*{-+}cWgֽâޱi#fk%Y|)35pqo\:/ͷ7Oo -v T祶!qmݞ:'ՃSȈ9Qr'Eύv}8k˽z*<>66JAљɀɸ<9>6X MF$q 6lN'v6Tt~dBDr?91l6L͆$u}u> w˱lp^4h|HGI& lj:Őɋok7-R`2Jq2{퇧'1q0&}CSqIXH0'mF^5BNvw2Qѓq+]Tbęi8p_u/*jEK;=Vy+s9vu\>/ח@2~PTϘss`KxP\Zw J*ͣ./WeH4n.$/ ? cᠤpgP3?}+tQ Dr-ԒZc?\c͈HkOg7N{:a/}GY:kK}7Uʷ n=oq)%G `_V+rCZw ,\˓'aBo rggf {2-31S{?Kҏ߿7f}epʂy`I(jʔ֗p&QXo$T2A,~׀cӿo?~odx RbμFB&[÷wuߺo-y;_[4~÷N )z=k+bwϾ3XB=:%'TRk;}'w;WRd>9=vuɟ<`ilŞW_ܢvW /-Z# j6Oyo⦥MEB𷯝 hxZlٹbϳ[s?:>M®ڍ"=>:=".J s:p(i3zFW۹Fj$ä''2X@;6o٩wtעcM(]Ӡlۡj\K$`mC$LĶV||Խ9Hh0yb~jzҒDdNҙ_GMˋr!EwKDU_W+7s`lSݏ:>4wxBo~լRǘ).v\g@lr=8?$÷=|$é˷Vf粼g>#4m}ŽOܜdmTqHR!$gC&gQ;x6v烙K)Y4EAFuCNyk5SΆƆuɅ꾯صcg^[]5kK WHՂpmEt]ޢF;wrI lgS\)or{/=C* oyk\$7STjy~mo|o?u0[Ͼ8cf,v]d;1/"*)]g.^ʋ:H1IAL:N~?E!YT33vlL5!b/Xi?/w6ոTy+ЖSiB86C}Ѱlo\u&Ǯ98NSGVѫ6x=l$񵧖|Jv>A&ѠRRtwFůٻNvX$4B @ q:X oPP&[v - Mլ{i16ƅ#Np敕t"4?oʅ-M1E|tC.xO<LG')rpSs~8~R5E>5 FDLVSI5|sN?~qm˧? Ҍ8mWw5Ѳ+QԔė۴/鱳BM啗޻5Db.Ԛ5˩j^jiC+Hpj|A筁yK%?{הvNL'TEFV=?7yT*0ppݖ_~qo}zD)e)M3;tAj*2;=11H(iNljcX\l4-CE--T$Q\"3Ih @![^HD$MpEKj}JhsT ./e$qdW$Ʀ1f{_}cE*֮-2\TPhfbVɯ\VWIL;vnrgKSI͐sasš?_W9 cĦyWxI"V~k_sݼkMg_ѳcƖM } [Pl~< ԃt*e\7ϬLvb}mʗ~"TDK#J}Z3sҝF"U bIpܦGS )d(0195140^*Zt%V,ON-)|T:Lk$sPМF&'k` NFBßsylr2b/?WPHѱpRhv&aa|MKx`>Nzbvz>V//8}V7ܺdߕ. LBő?ᄎ-6UQH ƧS֕8Ixzq^K.7 k^2p~e/08$ 5|yw(WTdcɢ͇>|hJbx!4m_}wՒn=&^YOoYD$dh[_xĵ 7:iIJfqZ*T!C#%5?39>>NH53Gn \iiX]jbƵU(v"93B7;nD"dxvlUY3>4MpTq)kcX4|fblfjr|z^BۡwCeW_&uNwsKז̍ŵt,MN'Y{m26'G#Ρ&S&ф W˧Ul@£һhe Uxxgʋ7Cw&eEkſ5ȩNKWhsP,S#ޞe~;p GI$tg͡WϾ/543su|;//+19q!}ٮ<|{̄' qRb*\z]Z,R'Қ3#iAtsTz:G[M`~N"9K$볓j,.AhjJcSu h9e8=^B%SjF5+,~ld8a·=[. ֮XSڍ}hSCidhn16Td*t\;qH\)%sچ&TL^9VI9mݷۺ&,O$ȭ]Xoufp:Ҳ5(*)@@Π2RE93ݡ\N5,}Dd*@E!k%Νu#FmP}k]Ȯe޽ۺX,oň?4vrvnz$5ͫ\"޾90:C ϥU AȐ/d˳U4ǛoU@ݰ` 9%\vRztpÆZѱ>%Hwr]PPw^:9 eNѐb=E͍yhTƇkW2#!Ѝ+aq@Si)|ٺn~xgLھon4TYH@/ z%twuQ*UĆ'f8 =jhv>6-+p@#J`(%J2z}Ð~[$qF -R;NzzK!0U H'Rk=_0 ۨOvzʁTIo䣟H(0I6h 7oj:)4Qb3PftF:mfղ&4r[WV~;'pN^LJej(6;1lU59!!ygImc%d-aYR+8i3sFiD0UfE u냓槾,K?E&'ΌM:eu72 VoWF} rݤ B _:>5!7tQnw57I'nf:J:$EJ㎛7[<u hdyj'Uƕ'. ڰ4t֙g7[T\x,nnyK˟gWo_?J5Dd"dꄜLʈq8X`+ YJDE'(֖mI9]3N* ?"=_ů2tʛ|nq]]3Fn iɫ{zzw\7,*pA@Uu[76 QTac%ɩD¦[:Р4_4uޒKlJ"Ts1eԕ鎾01E&INKh#0? E>}d[MGg^-oNGX"Fr9Z[L*a"XWX )-$DHWMHQH@.p,!3)*:<1NbQQ/8 Uраpz ޒFONlx+*d"sTbVMV S x(mIRar9WW\[]q:҈ҵEj) )ɳU0Ut\8- ]n|4iT<"袊r -PqdoEN4oXU$Ѡ\ SR): |Eys1INW|RS{Kߌ/!AIҚrg2,b H4I!m;b(|DiӛɴFZ NZ Kc9MBXpq#L]Fz׳%I,Kedxh;ybjz]y )&Μ;]N:55(G"W)-=H3Dڊy/~jpzT4sB#Yj @9˖WxWNj{.d$ hTc5W.tߙYe8un[O+A5_c[!E͞RR;IDS%2C7lBho*p$Kۧ޷6~칋$41T!k`j~t2 :D]Im.H\(Z`~ݟ&4p[cN-.b"-HfϳsH\|$RIM .7' wH$AyHhQt  YYy'o2-3izeKO+tHEe{c{@qiuohs$ R"HJ")Vlk<3};{޾۝s><ό,+SsAL`@[M [;>QU]}`2ܬaȦp3[1EQhRPAuAm) Ǒ骪h( $DZ@A(Į)"A )-"$}-*IȊ O5|\RIEU GrC@YFmq)8MvZ [% XPĨ (O<%-Y_M3ze{G}{!˾UGUUMEQp,d2L; ɯqDWUU$MXRRh$1!pcqKemϨu~n^K鬔4naEEE8aH3Vp),*fdgXWDA1q_F]:m҇$+<MIgXj(uIʪnw4K`;W-ǟsJIIiL>tIV4C`A(%⚂jr,m]1ɂO8m]>*^WNؕΒrw/aMylkh RGl"n4[MQ,fGTPM44Uծ }XR,M=ウ/7-MīiEh4J11"dIQ4X)(LK QAES:-XHMHR%II"I&*vq<Hoi3?z.NLR"ʪ1C13 e4@)vM%I,ɺ h%0CE̡"l>}caE@fbN3"rw亦5E,n+4˒6gIh7 lGJh X(gY L%Hcwl=*(IHӸgggx4M0tMInDIZm%!>u!N爥(vMMW+ AY&3E3a$c)i1]Ch0W)bRhK\87Cw.Z;Hhw1H"cX$&q,-է60E+7\TYPe{3ԄY|G?{$i|`F+RR=Z %i6 a&K7_+βr\-ע": 7hLWRt ]Po!L-" T! <ڑhˢ欼:P,֓ wev!02`gTĭ [P[WR)QwI!O61)l׈m9c5o~Prg9aHzj,bhXԔ%Equ[bXdBݲ )ḥ;|f0jY&*{M$DuֈC%˒]ѩVH+<>1h$=snaJv8b"&iљ]lM5 X\J:  5hj";+Rb}#EiY0LI&-J)TI#c"L3v9^Com`C0z咉!9"șq#nm[eO,Y1VaIkZ^Wq1q+t/6`˲df,05U A"lo"Z8̠';EC JKZ\$tiqa' i ~vi:EҚ.,ٺ fEJS,%q\ŁAh2MS3 T.,VTT0 o u7M_p###eWb2 zEEEXoR> 8 S/WQ8NDIIn-`Ɵ>RLAW GGGkq\Mَm{GX7`)Dww7 äH㏉Tz__uuǑ$am)94-Lt655 zi!0''ah[ mp_ECp_?Iyyyi[iAd]m&xvm!իW/^ !L+L7_%MPyyYqI>#,üN2oǺAhdf*`spJ#4$D CilFGZ1 'O8FL8>99YQYFCbӕe9 mi1!E1T1-tȿH z9/˱.] BiE+\nUUgd!;f"/09h'|{`_S .Lk^5q!,ߩ^$IjqVRiO(n+UaK]Eƿ f~}Y i@Q0].Wϗ>4MHbYNQ/^Ҋ'k!ǁe_W jl[Rvu$;4 #m@|nP{X >@!fchi'5O+q"goMD" qn'!kZ16yBjAi̟?M|n__>?! |R2aYNGSܪ[M!Aj!E<I5;:Y.: Z(qH#q $-;?Z}m!5-0#IX(/-F> IDAT.Q,Ѥ!}EW:'M$˴ p2dӂ$r,pTAtpG흍Ŧ>vkY;h & Z,)<֛hMS.!H_Oh,S=wuUEDA}Ĕr:XCN&e@y@TWDAR<gq$"Sdґ`z24ggHR?lŕyҖCC_tNnY ^}_ʓ $ИHbE3TJD UVT0ahG(HvZX!D\9h4!p@I ,o[zoC)i@.eJqQM-g`F_ۏ,:XrzK{M0qpLk ڗLק"iKH$U$2Y$xL[ogCef:+]Y0R/J!US ~ƥǰ$T%I5 @,EFn82Iz]?HIH)떅1N7e*ɤh›7@9 !%cu{pt"7&))B+')jqSHbbɓb0`Ŷbo鈺ۦgbbs8HS A7. 4hSA1@Ĕ3N%S,|B=k:?*$ogLE=%OQgܔX%Q2 N,VC%0HR ڹ,_ߦttQ7{_progMûLN9ҹ'+v7\X{;d/e tmw 1 =/$Ǻ NLѥLu!I@1,ghv0z@%jġQ:IQfgܹURj"IOqH1 k9rܥny\ aA d.ԩq$ B}(~~1 XĭpdќB-S ݦ1mA-d0C|ƠÛaNz=NvlVa9tmi#Sa <. y9fB*ő )hi8^XqXYYD`ihnAa2synqb fNYAhBbGN\efX3Cf&KKC>Z.Ґ}0uĩSgT^"K:$;~9(cPx]Y<ّ"nstԧ:ش_9qJȧ)8u_łY8ziLwg5DűT߅cG>ehJdܙ RjTg],e+aX~_4ku?#+ qK7[Rz y9'?ujsf@ 21xm~.(!M IBntQY:t_G2N,~&$ >xَ$@hDz[UzhC-̮KH$ 󯝝M-m[a8qWF+'?虃w(9%k)]n&lfN~>ut‘M0KBK3G#Ƶ\o)9cW|txbBCss:+S0M o;6[UŚ"|CbvC uN@JсK.dk/_>|̩-bHR>ogm)4NQ*( y9ھW1,?=<%b"1SEEG LXh&eh7bA p MYN|Dx{lbb*4,KDMf8eGx^=riT!d;ONw>>Ǭ[?NT72VԱ$`scM3# =/f3!"}-o?j866Mp965*&1xЄ/0V ߓOr}f` H"9z_OMSL~7縬s^u݈-' g @T{N9p~ܢ8a]<}WK?ԯ6?~q[ yqq_`2(jE$)ן+*#%¾ 8!c8yW _P6p$I4A)IEЌ^ Oyk֭0^d2 4em~]mQ} c(&KKD|@Y$&}@(Y8|:IYdj"X'iWF>_L-CEH0wt ?땷Lupk[N*3s ]=Hrm @3,:y4a ;5Uw.pWzWo d15H4%dT4Ϻ>$M"MR$ )?]&,%@)˗:}c1l5Ɏq8Ǒ8\9ׯo *&wGt iHKN>wA3!IHDH2R"1 RCY+/N&q2 iz|˯Id W{I7oۼ܋suSZTi=6y?.Oٽ)1<Dǁ6nFF}I"(/!R05xܕ d0& Hmz$4 C}^*N[?oAO|'Gګ;Sb<.?0$9Npw0%?T_f[7Hs ~kn6hHZ̡^%N@R8wymR"3 Jboo(!Ă>_ &t$-5Gz b(]|I cX֒.tNLDi\i+Dm ЪOfǠ*tw*7mǦd[ѵn>kѺgRUp_8˞I8oϽnϞ^H嬟i[Uq']og?zG.oNv-(IbAԃ?zvm/[p]# ɮ{9bd*-)ϣtUY@A},?_nf%1"ٷ[Tt`Smpzvt9U]ϯ3w|D[)G'@6ݓȮ\2_eSG|}V iMyOy<}ghۇicrSg8:4Ya9TNtOƑ{u.do+G{5.]!ccCIeihIe,znomi WU/JKxʵ\H<6pUz]r:v3Ks::VE>ӺcThi 2UU@N]\ӟ&ǒ"84PUXp8]K?xtƻKgbc=ObE"cCesTQ3_~s5b̥#/eF_?~zw# 80;DkJ*">'#黸weYK2b)UT[ō[Gt;{WfH  ɬƦnmɇW =GT,/o-,feI ;'p>sW9 1Uʖߴ~]FS)b;UQ8<^Z26<Ԝ#ۆXi n9^ؐM$Zc7κoRǁ jLNCo".lҫXxG'keQ5آ?>K{;%SDxٷޑ[~{!Mwv~ﺟl>zaղ9PҬw,K+Pϔ.yYlQGҪBSo) P}~w]%!#}o;#݌ռ=x^m;L fVpK5,c<:!Kt#kۺ_ {#Qu;`l]]Xa{uR4n#V:\R˻EKyn]CC9^\C)$@Vѝѓ++qC%͓C.y;TۖkݲOx醇o|zT$9wm|N*w+;7>f]'.i-+o=~oL敲* F5L\p  DܦZ@-LV._7םQlrzuxi}% iI-m7Nq?\^aea|cΖy K.-̂ƭ^b^(Lx&^?|āh\nʗڑEěl~5t#y7J7;4%Q؁3JG$n~v a Ks;__m@۲ "קe0,*?bsCjnŲJ&aR h5iLm!$I767˚ ڲn8{(^*Y'<[ +7޳a\Nm;|aDD]O<}G].vp ,96<<xbcβO=^ƥsrg,~{Djzt 9qW U[& ! =Sx?Xу }>=w-!n߲_},i}{Ni__ʕ2Kɓ_kWfʆB ,F@-r=xRw(K?m!%-&ºdUESC=KDłV`WhzQok"Xܜ+No껖5:>ڶkнw-Lxy,3^h%߇Y,C1vo/_T8Nݲei&.ܯ ʆrwl2y𦭩'?7lB`:wOaMDt4g[- +25) M'!LMY>3 \T~C}prro\Ś^Չ;޽5#ǫ +:lX*{|X[nԱ B#ĔFxǮ]' fKc6f>wSER,'`^7]logm,C$eLWua\KJ{4;`wgzs2 M2{2LLD;8e%LKd3d->Ľ(e.fUU=ۉB9R:Vigq#%[ya p3RbLq E!K3E#?9Z<%ޢ\ЄcYK2[[N7oyxg]+'qi7NɓD$'c1&0DR,Ya{ MI^0-S  ;٭MHP:Q7TU27υW} .^Spwaj Q&'&SCZ^‡ۡ+5CP ~Qn}u,%:t(  @>?08#"\u ]?ڵr ^ &7~{*9AN4f$aYMMiJE7MQ4q8QM{;hZ&0; }Hq,Oİ0-z.,9rl0Ьso~AM:4Ǻܙ`s;,ұYL gɰ }\cC㈇Ɔ&TOC$*S7!N_?e)q>߈54w]˥psvmD{S3mg/r[MCnah(š9BI6BRJW8dG-SY.F-ɺ3EC"-VC 8r]H(c>ܞ1rR`kNL%3OtyޣEoXb%~CKq<>;xl{k8T셄`ٮL a70=*{q}tp#r 3DH$AG=3jk{n֫ݚ}x$rd DA#A@3psܽu`%+ v}qˊ5ս9#ܶGccsdwGTeHH"`xej# M jL*& d91To]R2EA/TVpNMQ#XNDlT5q^D\m٭6ֻzm`x$ɮٱb4*nG>&],N&K 3,p:9 >H5S $A,e23j'>XSIGN#+d!Rxv={}Ƙ$+oLhљJ'"QOĕ%&Շ~G>a8"vul:XltC3sS񨪲Й_VUa>}8:!r@V p_[&ZBQq+a@>)/y;1]gX1-1h[w[żOnlzÿƕR<6+lC7 ko6>۱~U&% OЉ& MEq(:NӜ'dEL:QI )UÏ-s^t#K5\ƄH;t/cr$,ie8lk? X2|ULR5w8bљ|٤"': !DOz-Ms@phpkO^f\v}/7C ]TwՓ?ZC?~x+8ÒMIFYc}%Ψ*N UT% T Y$fYA1Pq]ܜL5N+뾅_n̶tޝ%Pn(&rVt8A,^][&~*TIcY;zouڱjo{ J"bz{azV6t~{75?2Jν/磪+gYf 9:EP&i  7 3͉@ }"Hd x9qOԫ՞V;8: `PE$&S<%cf*cQnw~cq6jV\Lfzvv|@t mekw5y_;X"pŶm:2s[7qmWlО=/QQ[U鈙P=Ἕ$0C&U@VQ653RDxWGQ#wU _$HB%M6[v˴7˦K.ss(^0hV`NuLG-uJdAޱ쎬Uq֭K7 q[e/DZ-PSHL@ S4D;0~fdͱ V )ԄSt@Z)'1YSP[TYIT5gݼͮČO8P9&ɫii#̖_ljlghxRij-)0aYSt EϬ)yX3ssxLvim=1w?;qgd,eKpPB6|)k_H:u?֯?hdi&\%dny0*Z;[𐧪hkI(ِ|jqPryKVoErYL{\{>YʲP 0Wj&xʬ_zƞv]=%v&EI[/ \5`AQ)g !5_ 9#v egtA%n k ..3ZB=P/!s U\E۷䊂fdQ-zLTt4cHWnOņz>?\՜!&@Jba$=ۢSV.+G6\voq٪9k nȳ.c/( K7S^Ǎb0[h1=_o0B El/{L0wCv'zL?nbb ѐB8/ Tӥ[CBwE1Vwy*VV'ҲB JY]HUE4"žW r- CBfsѱyXP\h֊|& ohi [m/^`^-֞)l$-&>9K35:8,e,6aTۺiUUo5U]ACm+Xȭ)໯\hʫ(I'`dVqS|VDFK$f]=%-5+ϓa%!i蛟GK"px:y`(lYW=棑ّη-H, 4SlWhOq]d3|N+ +Ds*8aP|L7OP G *r!ĕd`whUl6{nQWt+6~dUneɳ=~re>~jgl _EòK+O+1|T tn06NLLM͆s+gU.LQY/XMioyqVb? 9.lP" 6kkQ HgqZjhh|v rYXrk]`4>31|\Q騿9n;cYZ&B $Z*eXkv'B,fFvUGZ昜\dP9> p$ 0LÐu[h4h(msloWېϴlFCc)} &)lVY3<ڟYN CvS *V DqC݆ xOh ZիsɆKqS2tJ1>'=7\PSA`UE>2Yٲ@m7Zf,`|aY)œ,QrVM M#uᓆyjYG{#VBf[ &gH[Ǥpgu}+W3,qqgIiFK0:rk[reH, U>QrӶM5%Фw3uu-v%8<04>;3K+= &kgCLMeĔojhB\AYdi'X.xg ۽907v9<)A@\'H$3!lR7M$Ʒ9;HB';\ϭjۗEK\Vh5L!EI$\ QgbG.5lz{hC$hj4z{m5ogeڪYeY[1k7zf 0>{{\as`co5³9l+^vONq{: ]&BBoD-ʦ9qD= L6[\ɣo%{5v=mY:ӛV>XFȍQ(ML[.|95ɮ [8{o?o͚[߳e^K%ͫvjn˩-kft'XN?*ajD\\+%q \hq)jͭݵđ_uxw"}@?΄(bD4ˢd*C1 BȹzkBI~|5pϿuZ|fO;;UJw}o7{*<_g9,BMRIˬBW5"kO?Z hsx@eImٹ~ռהk3GZO,2Ie(7]L9w\H`;?8?_ýeOJ:^_߼`}U͊~q O|[%g;I~kMfӁ~{zꃓ'hﶽvV< iKV݁y#eGsܜo8 $q& mR,kB(sU*nXI5 -]ͮ于:RAsc0mHā Һm1MAHu T$!H:\6Ji@VZEIV0%AѸ/ETm芬0M a(jjeKB".v5YhHǣ)ǔ? b㚪Tvo @MM Ifp~!DI6IS5QHœ G+lX{VJgXli$IbCQ/:I'p]ddȇpj~cc~w Q^\3l~0%ꩮ@ NY:eu@AW|lkjSKVR44۝eb}"ja(4@Ln/~7C?2ko(t]geX,J0?)N )BhB7TǠn~j" 8  TjOe/)A.lat!E5@ K,O$ ԫBCі~NYfws"$IQ$teP"CBd>N(HC$"S&J*$=8IA`Va("onBgs:@5!u1 *`x PEhB,N$E Ì dmm(ehABjQhB(qہ,(PFhf6nL7JYjov{<^WQFUdgP9Rn8)ŖUJAeg,)hy@LJ(-c6KEuvtdefz}O ,0$qCxB1[Γ @0saqESx$Mq( Hp Fuep˯~s$nNSROQ;BbXx (!?N"ͣV|Cզ]6z"M*;^ef*!IYh"(H("Z\p.aMiK 8j 9ΰ!ǃC~j2iZSvYG^д\HE,@PDfsL(:k,g7Ls&dZq vBa cPpYBDEUqSRE /?̖-ބHlEHZh+ʂ|`u]La潠#-vN4̑A900aɐ@PGڝLT]%D |Y7I!U_,rFGG 8_VSvWSG{ is*ZTT$I=a dRi1#"~NI6 0@?CO9i|(jvv6U1qDxXSIUˀfIU["U)%ug kZI=33S[/a -).Cg oh(IQ)_=F%CdxB|9i|-Pv_9 {lG&'D gSnDYҴɟ+M҂k 0ј#ÉsR50sw)$ bx|=b&!abpW"ad-hl–42ueYEQxEBͿXE9G %I~X#5$lJ(ʙJC N(mM#$IFѼ|\U6⏅%q@T43>ǵ(]^%(BU,*aL4J0 iUU/38ꏅNQ$ɉD"++/q ME3F ʨtm9_&>6Axqi߈ZHph"E<_WByH]iv\C)Nf's:8f^wx.<55!t8jFu"PSֿd"h$VUeaL$hIO/)Wz)ݑ~@ZzKĒ5p9H7aPaX:"m+@4/=_Zާ7)``1!I#/HL4#mHk D (#(@ -i5C$##cvvVtFki|͠iZvv6a)NM#t](Bh4vHkUUnH!_Og<$EMU/n0p"!+i64>4MKUi&Ya"1>j8υ%4g0 $/Y*W_q?Ҏ0 Sܡ$#s- $υs0@Kx1]£wDժ$Ͳ 4 uMDQg1EH$%O%Cp@NDa- i$ Y3R2:..-qpx *]S%QR/a3}!Wd )IAc*%%C, qEEQ ,QQ0GdA h! Q0u̪B,imƣc)EK2KS@>!1UIuN!TIʢ(Bb2!e\Hh(%cNZ-#ŲpJ{ Ų n躪Ȓ|Q1 \ tO sx *?\-(:hIEG歊 +Hw$ C"N(b`8ñ@D`ߌ&ߦ r'ρٿ4pъML$O3XdY&Ka,o09jo`Xxʐc x %S HR. 3$nʢ -I8&1!J 9 CI~ʵ X”(P4P!V#)+p$LIq4!iy7Bӆ^ψ$q 4]I%EθitԺёV~ H1R,&a. +yAҎzChH\7ޛGH'LD8Z,/,70b1)p96+ DN^먜]MvI_ˊcڃb8=08k: 2)\/ґiD;/_soy\wP3쵐" Gmg  v <7+*M$d!pOhɭ($Ps~1×ecH-:zu|RzI<>76J(q4|;i葙hqffpdeX'hTҍ`0aHo{?z|\MI@uP[9!!Ggf" x_nAS;@pN\Za{NqaMeMOBZI]'BҊb )A艥#V ?NQnfɡaʠq|,gVJ\Mi|~ ݐfǢupf#0ENJXD -;GfiOAI"$f$ [ӢJ`V%e5$CT]GtS\ᙉ` ٜY.?^mj2T%lNrr+sy>BS14 rz!aȱ`2×W$ABIS .-Y&nom9eEY$&yhGdyJVB8EL0SRi#%ŠIlu,lG(I1AƄq).ͱS.'Ǣ7˓P2{y_L44] i_榛6uŊ7-tZI$i1MՐY2A@CPldpJϴtF7[zC3 ξlVԭ -L]e2{XfE |׹ѻ4몪d8=}Oowzbpd1n6 Qj%v&!$I ?ZxEI$Eh؂ =l現{bc4R2Hi8'B5Nَ:6;9feϿpd*w iJlxfЈהX[8YS[Bj|eKLQԇ<O,7Zs6φm8$(WUc()*% 3@H6}4޺xg`g邕kVW.wΜ~oUȷ~/5bW>k6KݐIPـ{!*끩} +Ȳ @"ㆪnFIG8$@IR(WUUytSe!oS5gٽ1uȱ3=8S HB10z7>lϭTp%rCS#=}3zQe_?&ȴ^XV:I%8p̕ёy{QOS wYL6EWe.Fcy<)ܙ?٫MnܸqG4$mJ 8bSHjP]i2l݉+7ohl9YN_jz\>qSTݦo_YWVRTǺꕫAf>$H-|?] %:>q;y/5; $0$ $θ!}Du4hF0J=SENpZxH<41C(mF[hMxWהp!N?rkr+F*ʼnG)TK:'&ǧ˴ IDATfLum\/^҉0#hW+ ` G]}%@p7n6^|sܨ޶6cHGR eQC MYp!c!|[/DzkGr ݿ}CZΦ 8pFp[79[e /oՏfVr$ ;dƚה Ax^GGnoi|KЭ$}||>ujgvK q[֞'F}tmwíכnG*Zi,( 0CW%V}y8rlR&:@ſ_vk#3X_wKKQ\]`,Gp4GڗI xuͨ]n5.|Lt8*pY;Zey喪z޵"y杏O枯^KK'(Vud_,H\w85[ +nc&Mxy~{WTI^؆$1](9_qfO]84Y꺝kK]ճ "ފ;7prXhٸN1jFo^nh;T,Wb}\\j}9Syo*\$p+#3Q7rm?g\R2{ySȕYHFhၜt{e :ƗT4o`b]O#UTB\"Mœ#U⮭۵eEvle"4p*yV1ϼPo8z^ZU n~2S5+ICiqVg[76 L\>рZwV7ʏctU]ϼ+|po"N\1լ9۷o̲M7Pn-a[e"%6vK:xmV!wިo韒}$cf=U|XVʿ9DŹ뽸YOrGQjhq-ynb8A'Z_,/=KK/FG^n=$5ek~cr}h$7>ۯ Օ_^ pK{YYȲ$C‘4Yܙ^V8sX|Bfn_h>}!] ({JVXa}MB2T`$>75 ,?;;㏆6_x"x2b]TW81AT[s[_@!Jber0*Ald+2'z&ҵjgƌU[:JbL|}"a_3]4?6pX)>GLb٬VȏU[{WaT , K#%xpz&nLvŞ;+ΑA32=D"0R2MLdT$ q3}k&k]qO=z{RdԔCuUj]m 兮d$ c.O,N><1Ym5фAYnwsl RGȒckYvb,).ذ[7Mr"r궬fg pRoz s'ʝ =]LL]<#cԜ̕W8Y~U$k;6!Q1*0c~kU '4[])_Qu=2?4^{ig B9|.>;&@VqQ4h9mnM:ubۄA&]i BșAfŽk glXYmm1˶!$҄ɹX$/3ӂ!ٶ947AYT106A3͵[(s86ȈR*[{WbW_8<>9*߼}U3ׇB0~'dѶk@`@\DU>y虵˗[' 8ڴĤ.sDTD#e*n M}*.:NQPYiAvU jO'HВim=х6+'灉:E¸|V\Mi#_uU%9+Ibf{At %!4pri@e8[zm\B >;Bʰ ӓQW\y.N m}]SѹtY5AhWΡ{Q#jXl )"ZYj6=ԭC [ &4?yVn}{}"a̴7 +w=WWJ4??R)$EɠىDfyƝeչer" !n`8YvGVIzKvEV!0S .4r tPn$O|hCQq2Nbxf-FUhOl*i 6{gjygN^e)ӥ+ÁYq jަ:9qƒ[S_m{ฮ^snn@AbVFOcCճny_nd?ޱgFH")1   Ld4:F=[RDr$LU,7/~н?ɢ />3`y-/x*=$<5\fZ!e#Tl\`]Wၡ+7sfoot.J,UِԴn-SQ!bY6 mN3bEdZth֬d` 6f^+20dV#2 m 7x^^^P^aф)7= ;!e @*fފxpu7ʲƅ~kAMݔΦD*YœͻG[kHHAVDHՉ˝qߢ ZMe(۰t]\Ϩ.h r:\fh{0uC[uTZ緜|efL,ݺi[L (a,"fIJe7֗gqy3{a}`\vMZ#݃QLOD2)UV4w"a0M" 4m3|MsfѬKr3Yh# :fxY PJN1-F`W8( >].^l;K23|wn,@33-%y$Sra+_|f1>3H 'sfX|s??mhd*28s}ПyeRfT7, qp=2e\D_ͩ?2 xdhRYaSsXRUÆ,L]01t2,\o:v#"K۟ClRHrJ, #L̈́,(-ZiY8ŠD{_[Wiώ.߲+ ,6 5] i` oJi#ZFۖ33U~ӣ'޻x8*Ջ||.ΫMuzeA$ы;1w~;H6X_'!E K)S7*L ͹<A) i, Z`)cVA ]7ofY^<<ihƺfaN䰩&pN֦M%+l24 c wwV>.{p3#\.Y\tԋx۶yB`̙U{W{tO*gEzO!lPlvIݢ٦Awݳ jSuİPZe*#0|57UKq zʱC/mrMMg|7LJe~7FN%:d~B_䖕 û+|j ?Bʦi l(.+\^v0a-Z V\bR榛$-KWx쎞-a˳~as+7!/2P\`.8|m 1ѭrڢDۖ\E< hyҥ.068C/n߹{„4 6B|g!#J6@6: 7/)] tow7_LߍmUH[zw3T={5ߺ3!LB}MfEk0f895k.HB)J6~eAZRdiWXU&ˊfٖah .h2;GIϿ*1`ˀbYeX;3x\-,l-:D^q5Xj+IXǑ&W>J=䄚jVn{pNt.f>22.w^s<9wE4KTՑ*ŕo|tݰlӶiu fs VT ?^œ/oS//ZM8|ۆ-nx/2ד4gu|7b9K&Ill}{À! (`J/8"L6/6敉Czȩ Oy3ec0]M_RYC z_[`bE5z|ʻrkY ]7 H%k*TY%WZΞ9ޫU=cC-KeڽO4/of̳Go9r|R4Oi}.x{:(j%~g_Z>XiX6pB3f_Q*޶ȳ[+<_ef|n#0UrsP|`B/.X]93X{{&vX ѝnpJSjmU3G:d O$gsr "myAIDuO0tx?'J,&fb@aMhSpˆe9 rIˊiBPRSW0ְ5^Jʚ P4UU4UGհ"SCs9~3|ǖZ7i@NT\v6k6R?uƷu뺱w1tOYB嬒_ܢ7aG>[Y[_’1@(,H,]sedϴ{ظk(\(q`[YsNJv?Xvxcؼu{,@[Sw6-߸$9?9ʰrY/a@"BCe|.Y-/8*6o^j:2uҪ&e.S? ')Ӽ!6̕WSj`ah@YuEl:+;4(]{UVIM|*u]U+wl_)99ڲ `Y_pŋz|wm@GL8/- |>3\e5?3tB5/~/.rSKgeu:~dU>2?q>_^O{us/qI'qXbY䜌25yV6Kn ӣS5tgGOwnfB۟4B/\\3qrw@ xV6EneܚzK`+n`2LiNl^k{z?nk.JU =;tl[kJatg<E3!,轈"<@ɹ\Y2lر8?.r ϒ~:dr2!LD[5ĐuyUE5bͥ2|.I܁/l*G}C|lY `ꊢumU̪w >NxY97kc>>q!gwi;TC'bS˫l9rTf+¼FzI(s^?Sbo!BpO<9,M >ضi5^`noA;qObDz*O'e抎z_@TMSRq |NHFa<Lf, elt"ŕV Rʐ@UNյTl*#.־'CɌ#q"Q8t4uC%+JL+rVNtiv Z&6s.ƧTƛ9Ғ+*+L|Z~ TR:ɏ7jqh`XfK-yZ3z|nCg&bJi-rݵBx܃g) @(]P7{v*deas0MMD1ҕDbVw$DPhj2j/J9K尿Rԧ zB:E&$1!d jz"a[D*]ZV*q(&qth:¥Ԕ-x޾#w gi) x$%2J˽V=>% T2%R4ke1ώI/ P@DCC6eb#9+֗yC?`g ):E|a,Әȓ$ÉCt9sbD/4#CQe,9+p%V-#NTrjk;DP$I9fxIb YGlS4!BFZN 3/0ܺpVVX]fH@Ni˚ K&yE1K"@gGrxp_(5qmzjKulTZ|!'2%(⳰,Qo!ԙk#I+V7->4LrSɜ`_S)DH$y((a6qSSStG\tFBUyJ7" (7WZ&#>׳;R4%`F(-)"'kcNSSD.q4a{BV%I2"4Fс2Lsll,ɸm?`<}84]tԋCģ²Lf 6xCfLaB8j߃)HsodP1b803Efa^)0,O`"&oj:Q0Ɛ8"LrbR4`9zo 5jeY2yh@C㢈 lðsvGtIqP(9%Ka@$fD p_Y҅>OP $׃(|@t E7B> ò\x?!e9f_Ea eA¬JiF\)9d7جht YBAy4 .,bn @3,MBߪ4do~V iY1׍q,.|Y 2, zk$8h殏=1XޜMDSuOM;yAWa&@`䢑Ye%YVl='җ@a,/`ir=CVbVy+~)0 [VP-8$^ 2,( ucj#((y5K(匧'G9֘R]^7u339+' pwԉHOU2wm[{㖮`bb/A} :ubYB.CAA@ x$oSZOڈo*QXAF/$S ' $cLF11~A+HƘf9VXF,ǒ dt*oaz67k ñPɤbx*5,|dx8 pjF<P9+ɴb"6at`m60 ! 9W*c_REMAF`v{+@45eALdh4a=l+_DT"OLTqr)=>6{cl*6ò$9\+. Ø"Ӊx, G\fh\0<Ϙ٩ؔN*V/8䅑ai*7KȰ h3Y͢{ߴ3|t=8n1CM {8k>;>4_ 39>4RhhChW'V3Xlj:!|rxhCstLܼaB ͞mUg&ƈm});jjdh,CVQn5)f~- ' Lxr6>zhF[F.K r IQz*M6I4\V~^tYdDyӦ>-KN8q8PA#e ,uKc"ct,9cBAD@g}_ oS&'2#oۺO wVGiBKOvsMeEXdabD>ΞAY.(068m.< dDC$B $$<)- D`VMN 6.r4()!lMRRr#:rg /,z[>qj_-zNzaEL>Wk=gz׍>,Y6Nr,6ef||^!(@ˠ)>Gu!L$nKG(gŀdūClhA}Pw3t PX֞>y@ŮXY@`οxq)[9t[~/GQݪ:!`QkQQiYlM3(Zp:;%!q  d%g,e Qx,eiӬtJ|ቒKN`F-{v [8rvw[[R[]Ԍ܁b€T\urwT ,K4eͰKdL]GsNjilv8-@[fR8'QMq[bbʌ}([~ea#`-]0;{惏\:-hlK }8{| aw<3c|pޮkݓfU};dCҐy8yЁJ8dprҌBEsp.~z{XBC:B(5=m( H8srqu v_^ZRmwp/g7RM*T38yww,Z_ƺiWXf[-A4M{.!䷬0'D뚍8gus 4[& 6/HYa!Hؽ/\΃x i_Lƽ4U (4q,b8V:O}zgg ,vKk E% Kt* ^ ?guMLju8b3@N6>9x؆N4@!8/۵ؙWBt'҄pCB+ք2Jtݳή=36@Y/m?0|{ZqIE1.`9+Nt2dX= DZnwkkʗe[ IDv َCZ.D򾚆rWg+{_-G%l^Mhsfj?>3)-]H複9 6l^␩HwJ45/$yMSf؟h  Giɣ, 3-nq'odW-nB'x1=ptG[;_:06Tp4t)RfӢ9u%W1gA!}kKL1qGж<¦.Y9kɶ7Cǚuݕ U~Ծg#w 18oϑ3]׮%\euU~He({^)]Q&qN< &s>T*5G +Xɮ]?ݓ*/=ل|.ChN_K[RÒZ>^g˟ώ5lXG /33=g^6]\s+(M| VnnAϿV r;ޚ+ki7;.\9>7k+=vΔ(3D<徨ѓ=Ou}NA>tLە |ɱ:GH^oo>262+P[&L,09$mOר^X q[g'n_+ʵγgδ\!ᐨu775}u!I|P򗕻#:p\ٶ)_Vf27.tFG8sq;H{>|à›j/^<}4Z> F޺;wt?j}%^)J>5xh囖#\sFzۮDswّTQwGsy6- '4˃#[+﹪mXV oMYSSS62=_.Os="oȈlЖWaYIȩ'j>؎5+fbH3l?>1>4h:kÎΓO\dJʂ$hN75u.<}g.u"䠭ǚ.Mg0Yd]o=~lL+ WxÑ)XԪʉsQbI.{9Gu/F7WwlXPLva>Xth |+CSv;>%/imٗcJB>mjch"22tѫg"ls }N=?Q G-a8ɸw Z5f~޴칀<#t9a|/G]9:Ԗ\8r Aμgz3Cyei!΂e:|jp"I,ZHraj…Ķ&`uC)/7mjJYe67=|WႵ%r^:[O4HY`|©MBoUJ^l<8Czf.\-]d"9d%^wo斵K>?iP(_3b~}BʃxiOeu)|,usHŖ=#)!PQꄣ.^?:6$?/vp-W^6 K"n(5W_saݸox'6FO޾rPNtȿKcGڲiGA峹\0\.̅G=;~zťū"E^RvY _h̆^}IiO}q[_:g-^LK|3~Hd7EjTz3{dWa|h+sC-6,\Lcc륮 }AgF;OhK+N&sYt舢0oWVs񞖖A5%UWxƯnj#S3VɎ<&EXXM9|cBYyQPQ>8™s:5Ω_Ų4(ɶ3- c@"śJz"GTv1J[EaS!{&3̃@DMe+V֗>{ަ|ew=(4#HI0O~uuCq6zc8xK>vձkC9~` CG5EMIYF V$0rqD# <t5lY_eo7.FY8;XI%edd[6WXi8r؁ӽRk߻9M,MH &zOW Gdqױ ^\Tn\~]aK)HH.uD`Ն,s2NhԔ:0$v4Bs[Ϭ4ռ Jξի>dߚ"OjAhN;xa8'NlԜh:ݼŸ MFNܷTF>ݝD0lu Ԥȱs]x€G;N_OW~[P+\z݂~qeii:3HGіT#+=r}Ӕ(S]̍}Hfع~J]?X܆Nv$VzL "VFkn XMnNn"n;|÷f"U{mOAI ʴ^reeag>{1Jה ]'4 ۏ2! s-WFLHZF93}1 |i#Đ{cʦdzf~j":܁\_u,Ű2hd,EEKN( +}Z_5v'_o,P'T(*Um&&^9$39 ;S}k&SSGJ[|g y0:R% -@w*/l6Ur7^_NQHƅ֗R'ӳV/tB (SRsooC`}⣳x*:%3cmlŖz =t\Ʒ^Qjj LF%z3E<Ad<-L#ESfnDmJ7 -5gqK6Ϥ7:VW?na=S.?;}3rD$A0"(Z=/?ݷvvvv=gvY YV  An]ILR}G͋B}}om列+Wՙ>wf,rbǿPequa5yC7 b#HWGʶ;ʙF|rTI>wf vhj`;a[>Myg~|6\ָyW]ojK稽m}Q=w-{S+Oqf"Ÿϐe8{8@B^ոr0YqU xOUTQk9tBVq?#~];+FZT\QLmЬ!z2*VUWW$i2MweC`~9]!i<{2Ƕ-\foؘe<=n޻m̻Dn(~ǎ _SU zԽ>iFN>?Q_~e}vq}ݕl*k|ls/dmCVF"qPT~>r\'+SzoiZa-򊀭*e$ĢqxSFbXLMLykrd+it<~,{~NpIy qD5ꦯkij76qO{u\+Y3o\ږ AVզ/= g[y@J0Eտ_LLD#Q qL(%g˶ԍkrirfݐp /̮!V_Q7-'f}k'sW6lٺ~2vst"#88i۲0b%{[-M/O+10g'1}d5,,@B Ĝu8ijK]O1\U"sQ[ZAzdF([Pf.le;Z4f@F>y] V5-Ϋhzj=R12uuX 7O2$[ruϙ>  б4KLiIfL0K1Jb7iajxYjv,XF<,xu&&bPfL!1 08&1>vl۱,1?_ӏ9`lJZڙӗtt?tlv?я{u𹗏E&ؘ<LLc! /LF?:6Picѧ// -w>I6e!!1E#l|LӜ2]8sҦ;JV{{6xyes\ٶԛna$c4'WXh<"FK#NY17 26y:3y9*;ؼp=I|Ţ'_[k>+FƲwTU@@)Pu[Ǡ1:م3c2TK)I">9,lUz.,/W쎙XB/8dc1?F6],\1u,]Փ?)@m!<7psVYۆ! =xV֖R* Ï_z_w`l:n"G SUT+ARXǗS]9rAmiQм@Hf6~ !cd *oI뱩李k VPx%w.=CqηpsxZ[MR]FSeo鹠"D$tUs&:߫l\ ln(A[-ajQ|pcՇD@]>?fe|qtZz`'"A{M8ǃ2rjZֵ|ԂUU `2yܺ8I Idiem+~VK IDATӗdx.wVTg$ !XMxC[Oqt-aϼsҺ/6IiaGMKaT5ӎ%̡PvݷȹBYǎVuf;P׍2&ͧ`lxxTD@^o*:A=Y9~?'(%$v7H~o\ΆܤXc Emۺl;#ͥ0>7*+gz{Q #[{b䥷\W%SmPlxor G༖p&:ejR ݰhc$FJ/ LƷ|`xpD3$=?e b3ji拿?5(~iWC~4UU,bhZ@YxՏi *,W}vo~>!Uj, 8lMx4 jyW5mt{J<,%]c=ͅKkח}0oڐǪ߰uot/o d`*z fB4 '(]N]_$`ZzÊ3oOsՅbJVol.cNWRn=z?˧r9\"M=\Hr@-7^~~]<۷#Υ7?__moWi%^1﹵9iƥY mBH.ccOiiyONYU7^ۿ0}jJC[6!$r64}W~9f7O72 V4nͻd<[][ ˫/<m}ٜt޲t)||T6p}BىG`=7/WNĢn#HFn7.l-uٳer*[h>E"Ϫ,M,[]Sw~[ph'_,˻kȰs+ьoUzzN98{䇈m.1!.Ջ22|AR"ėٟ<](km/̿T6: /g*5ep K^~~iC=t7N>q<וֹ6J^9sdcp:ٹcL\6e#` ݘ(=%D (cOZQi/ljY~6nrwl=oKr >w,lU|g~C |= =;;tNvų7,`Zw b 3/W4ǣzOL`7O hX\_n斔G^Y,\TܼnwõW9?Yemq8@x4 hҰZ:ƢJv5WL\:1FJ|feS}^,ݴl[QR]i+_^k9XRuJ~ jo3EQ͟_~Mo3J>3q+׉D 4,F 4^[tr+ߵV1M|Ljʊ~gj~brOS,(ox˿">zbM7:g*~C.4vsC@1ՙ zǃٶ%ܸumAw^U ~y"VW?q }u(u hő<=_8~mz7+<Ԗ3d8=U[U40?|/ չ^؉lg&#NF5 \U-b8~W_VwOb/d2=H4nF67rOOPQ޸:7! FHFڦ鿌(۾|ٱNɜšW/L͢@ifT#=i3jBV"Yė. geӭlT-X6d,W.pA S-7׊A Β/dzgfV45̵t~-=c&h;c]yLrʪ$sf6J@  sF4j9>Q st+{ݒ>/ɲ`QUy0yk6g/8LH$&"Dk"'g{ #ccM>q%^/ѩW4dYA1vl.JTT DV7ݱbZ=@r +0qU<ϟS1_ΐsS3 T\D̼`(377]G`,x5m/6fKQࣶ=6Җ׮̖I,SP\YPV-ᙙVRװ MyOv8l/g| 9-/ ٙd$'/)u^9AIedu[T^5ft]713k*2$!#7DcqǶ}mX,MI(ߴg|bNOXpNz =;?ۯOfqaGs "~˺ax<''硾q+Z3 O羸:ִd1, ##ömu,L o/|bk63i ^RJ g{X`zrAQPX-*\Tf&MOt,zK2Yez. gQ Wo^%9vzIUI??3gB9' >ƘK`;vh6tJ!>J3¾UˋKh,* g.+䵹WnuYg%fA~ȸ5b_rFEulEu1]T#?".:⢢0oq\ȇù^ L._^Lڽ{x6֕8L__*\kzάݶq@n_&3VGE+wܘX967!+?eg.fs3|'TX ]8n~~A(##aڞaBe9-;sxв p:59 AEx539\(2$klZXmS#q~qP ̡ZqH?Ǔ!L *Ǧ˛^n' / !1uT\TpQ~V'c]KBȥU~'2Qy_fA8; 3Ȝ+&%;6V@kN)<(> :|Q\ egeYM_YW_]3\Z+!Ip8Kye!=2p^!-)-J*( ?\`QVqE15^_  gnzV ׮-fdNLm],hQw8"k6i޽uuق43P(-ypH9A>lZZ+}cU8o+MԓmBx\QlF V|^k֯ϖ/7Oq%m n6=#d9/t` Wfw"ߕ]E>d'pZV^&tymq 70L9UF9&|-y<3+2l@pn?='`# Oni7~к Eq1]ui*B(n@ OI6)EWZ%vX8$[K(&F)r4٥NuXLedD\ T}^e ͖<"͚0Yll|WJ"ahk$ڒu ٫eY^NÖM2Մ;(yi} 1UBGoG|wwwVV>/iof7oUUUM=^/rfBK^5.d ]yw_"b*MYbhwiɾvoH06 pZ"Lv/L.l1[7`Q]V㘉bVyD~ϝߩLIզ<2`EQ$)ʧnJF|记`[O$LmH+RKZ抖yWl=װ/Sm#FJAQR]]W @qNVLAɌKt5û6Zl^/\ei)<]<.5<%u@1zpmSXN dyyNWzOYopL W[POP7), axUe%˲zaBז~^GUE>UӘKVW[ }C’axx@=y~ƒMBϗeA 23>e' /ׯ0+<@_z gCҀ ONMF )V쩾Q6qI5?E ouw|e}L#Ļ!Om bd- `2,yp 47m}2 S'G1팲9Xfj7§ IgS* EG.SjZQl3!1-lZJ}jQ$\h,X 邛.iJ0A@p =] ȕk{*i!٬yжR%g)|ꐌz[ELeYƤSzG=Ƈq^QǸ)#1!!($(- >\y^j۶uM Xh>c}OR!DeЭ[c!ƥ9 wq附\r'?"nK>mp' NMMed, %>ӈ;[Hm1VS8OS ,i4etƈMkCfff>OVG?ۈ? 6qTUxd \P3 nO8bY7쑳F=R}7o$˩ 7~oƎ`YK?B E1''gbr" лFe'͒Ul*,,ÕO!>!` x$nQ'Cc7MP(rSx`@]SD80"H))dw $Imc*}IrYcXdG%X,fvR1~dL[0 x@ۦ7` y۶Ѩ(ISKދH.\'gN!,j!e5MFaZCN܅\`YqCwEc8N)]H.$Cx|0$|>_0|w'tYJS:d&% ˲,;;;yG%ɲd a`RԾI9˲DQx<nvQO)%=B )B )B )'i14MUUSRXID*e=񔀧^W40Rz )! ej4qџ9e;xq,./§eID>-'Z1ȱLHL)bRTqY333-#c6@ Y%"Jx )|ꐌ6Ŋ2??:!c1u1lOIx )| ,X!لy[S4bs%A ʦB tHnI2}Ca:бt&(˄@ 0-TS"B V-HGؐS wL!' M-nC^x~vPʊG8)Q2u XTB3J?FxpRcB_vGQxAEc!v|E^~ק<%+*ۏz ,\^q (ɒBr8A{m;xm!h8Bva!6M,9Y%QHnTX p p,q48 QE`ĺ?^=2G~ ,l;I`!>0@ҹ߉&dy~qzf"CbyQ8eZ `#M#hsQXHI&'K$N@NXNWgcsH˱ Ž }^2,)9oDCeAn .N/bxAH`wgyߕX6@^SЇA d,ɔuvX:Ţ -vAƽg}lU7rߝP/2}z.<ϳ.vVY61e3ky7E$YH ]/[==? ú*u]eYXL~q%%Q-gB /"l*M$8&"1$ ~T,_/ ^D9T!UD|R U2ﻂ#ʲ[{gN%8t!ijM]ߊ_1ܞ9]ȻsW>H)'Ir!A.SBkQw,;ȤzɻWuˌN:-vE>ɟ "!bB qMoqb8hNx饎9 L^z&EY[w8aE;}B}f¼^qL;"׈3t?s@ -&{2} IDAT褝r0pgcw#>z6Z #$lXX>$En) *vQhd9Y-Cfbt$0Y# = $I`maDQ BU5?gp1ԯ]ǀBttz ̽C>|6> :D͒$,N0&I> O|>@@; $PV2='5_YM `rzeQXtYi]zläv&i944)9꨻^рIA:~q>KƘ>]<5q5rm)HI=@3کw]ӥ /wu.tNT?߶I+5FԊ֢SOyؖM, @g5j-Ӏ.eR?܀Ƣ/e@u,Ӎk]s[,Fwˆ_/z;TxՄ'1x<`y-dFɘ)6o]U-ړA睹T﵁5P|vlhx",'-UL"^$鶃 ke^=byƙi=zy"j5;N}mawӘE"1#Iya`DF.'w}0`&Kv,]-!GM]5Flja\n]:r͈ gl\_e,J-C ,ލ--S \%%v6 ]70kLM ljnXsԅ:T5*ٶo\de;nGNB9g} &ҳҊ۪fL_}ռM{J|WO7sw6Bo/h(UnFj:vYhvw Un 0,v[/[22JVmkZ&3>~)=xնk$c''{nNg݆r)ػw8yͷ6Z]-fiؔ@@tM1rɐ 0˧Zj bmsCMEo];t.[ݴy2CbcR& ~nӢ4IZu{6VLn=e3do?p.ظ6 vC1gin kg>nm^!BKl9rڸB4 &a%Lu-uhߘ x|rh\kg7Y'?,Kg[ڻG*ٴ!߃- &8D-̎ a>>44pf^]]j cu̡7&caތUuV9wa3W457{rdpW7ݘE`$e6i:jBL8BĢfa$аGm&24U"ܹ^:e b` Ұݽ0muD3TMumyIz1 01Phԉ:**IX(-g[{'!uAWL"JH[|;>XZb6,C-kQetebv|y nغ4 aDyS+y|<pyWӸay W5w^{9yPyeЫ;:wek%ԺNl[qvLUڠCGZO뱎 ,olZ]AcH!Kkؼ* +bnÖmUe#[H4m^;<ޱcb_ /E)r35ͻkQbas7l[ѸumYǐKOX[7Ԅ ^:ޕ\dٌ 1 JK ~fmc$ oΤڽ)HmI 9ML8|䃕u7*A^"G$pwoY S)pnj+e~ͳӊea&-tMcR&{m_|r}*}/++4g(2 о۾f)>"58ux5<2MU3mCNOsh כYRW.-B#RY]^QAl70ùmncDGۺ[6F)ie& `鶮9VonjݭO^2@Ʀ;VdN6T~s}MQКmڈoMPiґ5swG-7/t}޸usDh;Щdݘg|MU-*Е M' 9bSSC Mx3b厝k ^?}B*ݴeSQH$v[6fxcm_\Ӱb^篞8ޭ6<]8u`_Xmns2xhgpͶ ,ɆV3tOֲAɊO9tQ\iMC'OjEۚ 6\ Q/o:Tgsp (فM{j3k@ I9HLdؾcfa󶕹e~GpǙkėU\߼*cvr3 $ܭa`~M΁/2kSWCFcna[T^P2CbLY|ԇ/mxmN%̢ה_jd5^s>ؐd)yd&dSo[l 4A4',tyxTō͛J2O5+G:=uU5LL•זx29Ԇ"rfO4g{7lm\-ˀx8 @c: =&_2 G7vHPx^0fz>sٷ|[sem$.{SPxyCӺ N6EuE$ת.qzm&Nr(iQW`'4KH۾Ksk)ڟLa, 7z Ad&nt#v]Vx$䂰{.Ȍ޸tJߔY ˒kWz y&Ѕ,}V>$&6}z祫QrМujwꈒ`ŧ{zu\:6=NL _,5ǚW;;ޘĎOFM3Y2,}u 2.zt7dm|ٶYH7]zw,BԈE.1¥ Š"7mq+x9rl[F3p3wrCt7Gf%6lXS, :㷢oe]}=|)gXϥGOG8g83 \drxhlldGDTGΞim;3r #I ' Ǐ:0aBcC :91NLOZ:|ɓg_z~;+Yfn9߱l]=lÊS +<9{%ԁ־^d#/\6S{ϵt b 2r_ j;5.n$84꾷δ_ a3:66ͯZS=r<}坃u3[zD0Wd,w_>4UϷ]6bF$/5q"X깩|X{s2^>ƫ/8Kzle,4ШS.ߚY8bbE;/^aEI8o8 Gu7}v87pNLg!#}=]/ubsý׮^2 dnbK7F$Xߵ+QxXsc}]W:n1"=}cbpw]T_WOQgO읰',mg.vͨ8#-DuJ2ζsWU@A8p׆;;E6ק)GEɚ2Vf#z֌l+'9?{Dmn#݂rnzHG(C Ǖ& CCct8y܅ήy 0lR%fg\պe; .8vg4a3"XS_hHxe'eRǑ;V=B$t8̎E3ZznE#B>{Qra~-J'+ }_|g051,rdVߵ+WnLx==>'G9h5㺥,(3#/ʼn;Cy:5Ydݠ:DݓPɉx+1=s >ɦ旗dCwzm vwt(`bBɡuR!c==#KV*[]䜪CKs! "JqN46 +m 8ʫk*J#hе˲lG}Bȣeu{ Ce# !Ὲ@:;:&f `q:&0ַr0YUOԊՁ[Ʌt}c77dKRlih Bt ?j*Q\C0XYtx( C EJf<+m=}###[Atasw55- Q{kqXCJuN$io잇A'ZVAͶ7tρ*%sLwPHoWa5!:=SeBs6<ַEm&., jHˣ~G|~osQ#WBEһ<5=EmyCuj`ijdvQQ*щ TEW *p~e=,av{INWqڹd_6,ŧ<<+s3#3@"4;1669krJͅYW7]_@$]y--yyξmUsճa¿>7d!ec F k &F:; {:'<1bx>O+ɱ] s~ a}554`ATQ+)?Pc+nEdx!O_{|NWϔI ?I"Rmzf+rp\|*ݗ_MK8AvdE$z 1PoJQS‚i_bJ}l9QOQ[=SZz1KЫ_PPa$qK\zQq . [S3.6<}x,Zd7VK_ lk}wZ&!Qp;طP!ѼkÍVY Ei9ڈ dŕɌbb~`% MbN^qBD6gTE3w9Ecyju"35`0?VRC* AD%Ljߜqio?ɸ@(gµ < t65 U! D&ֹ'#/g39'_tBMl`|uW*0祰kk L( J4ѨJSM~}0gemRq,151 m.o,QO wƧYb?~jWTp;\hz޸C,rizǿ#Qpe_{D˙+:ooXHx`?d.&UkU0*Noꡗ wy4!J>"/Aty+s@`PSL^Qq@$ABSjZx8I 4{o.#>?xNJV:DDjqw-έ3 94ߜ6 -p>TJRk]!./޼9X׽W;#:=e\;v"[p7;9g\OȖ-9)Ʒ=RA IDAT C OGeyJ0,_[oi.K ɪ^jA{ڛk}>=J}%)\{_;S/b{Knf:t>ͣ+D~?q~}1 oXr "t֗+cvf$C{NەvWR|=ixnlkF YUդm7+SrN,I(fC@(Drc0v㳳w!S>1 O.+CkX(^vjDdoq.z!gvxJ}^)xVx˪:^{Wh@G=EG4[ 3('| k㇫h[C349%eT7pڤ83GrRieZUiw>󹟿p R"C߸8$2M72Z=ww y&ט£'Eg3 9&[p}R6+VBs' ;Ytҩܲ]S3|ޘ{k09 o(ާULDAh J< øA,[ gjn>rKbxquޱy6vfMQjj%9wXbFIevqf:@#gdȅ\Pvm,/pm:tY`֡%?!jqHV/x?k r:$Q}\YOz{dܱI |_v0t:B<3'7Po*Y 5W.H %rWhfu7iƟXu򾢌]%G'7x_]-UY8P@ Q2gA@R=(;pj'ֶQcW.|=+bߚ[zD鵗0E@"&o+ʱJI߻95T-H2 +Bn6eM1+BKAĚ, nXv6|H13yڰ2@}J5h*ny j\·<в@Mw΍ILCuHTf+.nֶ\Gw,_Cʬ>/ .xPjc~9S8W紐 w+%yWI[w?)}g,scT>F;?# 뾘Ph 3Epm=+J, B]evoUHT&xƌ06B| uvtWU?,;T!,4?x2|Ś(n74wz9dz)GH6 *?tq7WhMkšeyvltkw r3/L/FKptsA:tW{;pᵱy~k 17'iAPU9_=/ÓSs*eV*)0~.Prkw,eHK(?`Q3saj`!J ?S"(.c]{[?ܰ{HSyzQՎ4,/*nMv9O] 5O-jD\9I RAIa6:=.;ɰETW*sũa6@k 0jmqn{u\.*^xUȩ:X T#YSћ d 4 2 2셗βpKLJo>2ȍJΉi_(7'ݑjγtfKtzmW.1%lJ K)M!V=[.&gŐ/h<ĵ=]Uk͏@T^j|BvN@̲?262"1"D/QٻwʹL53 +k*UXXT&&ܷZgs鋍׮ۭ(a溸aATL8H) 啑9{*g'Zg3*wdE@S`ɟɉS+! {N"n9oӭ/G'WvŒ5Ыֻuh"v0lyke=mۊT~1oy~E_KGE iZ,3ִQO¨-Tkb~՞$9U2NʚWbg&qmjl>T0&`&W '.n@@;d0"kC;d\[szg9ʳA6zHmԣAVZݒpy-[L4f\|qoqO4P^^>2PS -6d 䧡Tk"{O_jkvOR*D0 ,: K^봀|k1(?hcz+Wn|O){4-gY_n2r(aWI?rM(@SZ4U{%qj8Ap`_(p[a?[[U]#L8,|SBrߵ^EPf^N)-t~g{_ڮx5q_8Sj`JR AmLvM͋C@NP?$ިۚwU:feDdGs̾W^L :z-$Ѧx Yw!QA*㳏q1J"pL_x|~kOʳL%ܸ104R6w/}m/>zmH^|*4 R*[M}V7Y5n!o7uQe55\TqCÎh9HhK1XUF!wZp6E kÍn ʀ1hT_3>q'.J%TaPR'Zhɜ88U:OޜJ%zJ ӒjA,3J`A? E&G&*wK#qsAᵘ 4p%@ :7[;0{N]ɱH~%s f>[*ڥ̹VZHaA:$q0nN|f1U 'tԻ{q/KK7Ŧeؒ%DaJu@>J 7ӲŜ̉%EΠBXi o-S!%ǮO|]]۽r k}W،K0Jq܏Zr͆XUݒ=82Pc}]4_CD[s;9J \Wg)TI!!Z"ỏ_},Qp?rꅟYӺG|oie!<$Gca :;) V z[|zz@-v*q8"S + &:dظ]ި:4>0ۇ޳oi\?U7:F&Ee-+F<&1RaW2rwA 32 Ÿ; }ϐբ­9E7]Ef f% co{=[.Wp" Oe۴0WKXΕZpR+ 6VZZ>,t>7Ep$I/I%ey7"PЎ{ cQ$E,6tˮ3Gi]8x(ް=up)*csiS{+}gEa)Цf9jg;x@kV~jmβ N*ʏ&=2:B1/\*D{9aǬ̽t;F3VlMPܠi2$X2"}E)pV>99M'W!ީ}Rldz+Sŧmw;(>@Q6ʇH 3EN*LhDf^Foܶ_LiZq3yҪ4.ol_ٯݘR*+*Bvw B 3)=w(H{="mDpmxw5[G{cϙbzƦ:o~LDTmLL0~%Fۻfxb$0#tHyF$&W[WX7餐WN;ֳ5vw_Ȯbw2_}eSJGMO-=[}yN2nk$fE>(׾Iyzޜ:JMNp|qܲHDȐ$X ʶsۗnHXZxVrRá["+W/* ..ś}}cM.mi% =RxD^T)8Mr C| :KݕYS}J]\k?X~؁.=ϻA< PgRPaW1.֤ [.I۝oD%  tw爈HSb]IF85:ZomNwL p56AqmŮ8zi4xHKr>4ӺFg8Z<ZU KR]a{ݭ掆%Yԉ]JW_>B3,KG3m}>kR׌ÿZ'e$ȷQ X"ZT֏4/9EiG(sBNEXn\{ha`mh8\ ߧ'OhZttQVs7Pv.`'F,Wv)+/_J-JD+ojlw+3*jF[0-D})U{RC@x?tyHnKl68[\fqyae[xF4D?r 38CrOވ{ѢO^*.<P1vzF$p(\|`ct?( f/ q-Xw'HBxe}Śވ}׏JbXa u,tv{D Y8ʐ9QD"b2L,I"n;NmB?Ǥ=˫ʋZ k).8"8gz[1gE޶-FiyTA%ZV3&f@l@FH 9nlex9H̬Ln=0M D"L l$k#O=H=j/OЫ/b\DE(-Tr҆ݥٮaM;,2D&qd7Y8+gPS׳أ#,(|VpL1̏ tϺ|>K O [;]bUFg|'f/bT#$k{ᶛYR\>\!TGFEi5֖@XT a6s@FEXc"$GasZkz~/زL#"M?=NtfgDdmZ<|.>y)#Z{n(H""-|akb-9ى3#s!2savE]oT̏ƟA H"C> wC5ߨR@>Ri.2 rMyEQ{I/+@aFw#]I&\mKL$N| {/vfsg,eإ1߼.MV!@ e29'>Ve0Z4f\oF:n#!jm*}?. 'Ҫ](lyǀJb^._~Ѱv:=#? IrS|6w&"8xTğjh[{vD5nmmv~IZ\?VZs|I\ N$jp}̰NhNBeY޺myJvHyvH)MqyyꥭaI#.iߩ=|8|Bj;٬׏X`]rF"95̓!2r8xR A^^(Hi. ePN"qyņ?_Ħe*VťfmUzf0.HQs/cC2\Vۆ~|.Z囀f4 vkMcqy$mZ$K2Qx C)Y]ۜ.?'Q$Æq;EO2(Kb(a8zH, IDATQӦiֽnTl"+[ /'wA ($oNO;"Iy#0AxTы?[?atlN'HVHpIVȰkFڸd4<^KqoVߜ 4̜Zתcr]y8`<)N)# ^yMUŚ8LM!iFB8mil/퟿a$#tecRj! 1ɒ^V `0-$>묒ֆڏ ZEpA+%@]с_ܼS8B6Mso?'N;vAYn52)Od(I`qsN@Uҕג{2xbMb`5s23:^൑=vp@?D>$-ѭ3}d;/ rYX` Z~<]r`{ϦYFn]z.]/š^"Ӡf&=`J-}fxh"ؒ⤷o|]UZgyVE3 "3#[CG●@PR  okbO9SSX]qL  .Q>uSܡr;VdC G<hqfO{N'W * cBn8sB ETb<^ -sS,F%K i\%r2+/ukBm{m܏ s9&HrpVs{>?]:XcŠxBHE ^SvsT$l(a#3 JCdFn?:.V 8}Ϲ]557F,c4 r t⳯?W~Dq)G$J"3* ϫ> zV4x_}ڛ'KQcӁ?do#.eO7=LP0s M3/"Up"r\1)Ia]p(0u2a$ 0T,.Ns}U/g(ѷZךrT ._o[8]j9n;Y>y(x/"$w ZZU6<(ú_+sJ0@{c/(XujL(K\XoJkn.HpO[|,$ tѰ3"5/ R?ˢpaq'\lHɲRe噛@wڍ}Q21D$'8FT󋋢JCLjvu{Sh%|n=~燖:87yp J,C$0lm[~󿽠[o!aN)B| IC!U2-$jXTŕև7ϕN~0cKñ~r$O>A]og!v:J<[C2uSY"lD6{@ Tˏ].0$/}Ձ?ɚmk`ZRm=R3Pʍ?~=y*UzK|2pc+eԻm5Uy ʘ>:lK8 i0ɾIT( #p0`ŬD^IQ$ᖴt28tLly+%X&L4!ئ{[<.(pşՐ+xGȭklqcC$WαX@ー }>*bUȰOLsg~?IAmJ< hكgBqTEСG5n?ppDlxn{i"3FEC77zly{)+~TSq!eRŹcwHQ\ʹ~}ޗ_a 9,M҂(zg\-7E(WVnw&D C!N7MQ{JޜY!4]TVvdgoc-+U8}tJ5[-6v3$@%IEX͡.]^ +RMթ%/lCQӭѻGܥ} + ֓,]XQG&"~i# A"J A(74M c6knork(=C݋_p&P <ɇ̥cxNN&$#Z]6޳&Zx m9%UtȖ R}X,yٱP;WEV, T&iXYhj7՜ C KI׷ϥ9k)^DFjC+1Ǵ5QݫiHNODOڲOi؞@Dy2~@|@e\InNicjs*S ]~^@cra`m|FjAv]#hf1Qi ,1#;A=&E g4I@<%JI=0MS?J\ VH w[T&†6MBU+AUGYA^x ř3 &ie.G>?AP5wsu_n^T{m(^kUHFFeh% mʫJ9PLǢ 鮨(s2/A7!(J"3 k(Szvoȥ0qT4*r7 YZS_[SQz!IH~y3`0QLWRsS,_{61E+VV8>_ X:q2lemR#q]TQ!d$r֬*rٴa(֢WFVӺ: Hd۸sszhxl&7ھ΍&&Š*g%tܧS|;FVSOxW^D"QSRY"aC+TqSӦ4nh|(,rlrb|z&L ݌ȺXJe .ύOvFѦ49ʙ!;G#hZj\x*$JV՗z)]741R)DMxu``B6P V揞:f< 3 @\ܨiٱr=?Coho{m\"dNyY$"P IP9ť>ӉJ Qe}fhT*)2A> ü*ǦǧCȋ]QґC/l͕㡸LTT1!؊*JsY!4Fr&EeWjw:y& ?O3l?2wii>b)rW5TxQRYQ!vͺ Z S`r**xU7TxL󼬣>:H7&Ʋ>vem󡄖SRrՊ<')ɖWR/-))ͳa|WHw~UECOLr=MeT$ۋ STG15KlyY9ܔYRQiou}}IpWQy[SɌSÃ,DyM]1 Y\Ov\7!\]24"l-e[nFN v Oh][W򡙹@FSSccXNqge\}QLxQb )(pO&4{a#!&FgJNIe.2ISAco旗;QUVuT/86==:۽90"mE <+VTqSIUX W^j:jB4m::K||¦vCV4)᱁)ٺcsr-ʺ[-΂/ ([Ud1+<(I&jYƦR:Ы*nÀɸ9^w*r"ΈuHPW0l/qpsL!Pr=K˒Z&ETl(P%UrIRdYWd: I9j@܅%E*eW׸h *xYm3yb&)_QH%cqÞ_YVH k!QUl,ҩg@9vH򯬯*+鉙*VTD&UPD2poIuu[L$xWx:&%9hx沀DlR2ug2U)!}>;E^PSO LFB:׮_QlKL Lf~Y \4[MT~qOuvmgFz'f*WmΚ\svl&T0Ktt95zEa u̓ G OqE V]&$OBk~ IDATdBq($)-)"@bsIMK͌M(\^Iq.ON-,:yd_xarPB/jضkCH͇xqe0ŵ5nDtOdJ7 AiE6%R>k471:L{cAN_O5;`0we$4x`m9 +oY#C *0!E~@-i,/ᦆ1Ӳu]g,'PGP5|她( MLH_LO tWmo]%H_Q.?ݟ]R HR)(tX8a8 rd4!NPueKm..w9"˒,+p9&P+mfVFbj(C49   0|3 ?Qދb`_{Y"+P|^eQg)Ʋ $@D!>q,maAY}")w .z*ā}g2YVQ XDz4eI |2Á`D_z|M ! MU-ȶ7&׳Pܚ"+ Lذ-,T\^c ptIRD)D Qq!%%4hpƭ! ?]"4`diY`+_ ~MB<} gYQuaaҪE.& eAp_*(GdY#@-%Y4S=Ԁ 9Meo ar$F"8d!W%Q6P(-"*F2P$ktbE0XYYV^p;,nh@h$&A$lA6AVG4Y|o%MӜN R ?XpsIbBgvl pX_*c4kZ:̰,АdT}߳X!)\J4\@q(j$J!V΂@t!b /,5M.U)Q4@RU\~1$@('Ű䕽{Ol}50[YvŒ $-#H1(uf/ [: (l6P42 ):n&˲AӲ [rKK١n Ȳ(r~wiم-[%'0Xp}|˚>wLqðh4*CP%A n1vpYxPt&VJԎ~%0BQTQ}=Ead ,*ew!H㖎/ V,Ip\0b34 @Q4HY:8 0ato}%?C""]saT*hwąnz/0$IJ&yV*(t\4M˲ٯ5M["e] xv0::ݮYt8q l$\oQXBQ8r(GۉSM( ('r^Ĵh ru3Q$i9P[a ccc"0l6N-l˄ ッTfp(udU1Ywe妦jLfttt```ڵYL0,LMMYt: PTǼN Y>eot){544xJ:K6ӄ/r20wottT庺:"LJXmqJLfhxxhhߖ)˴L' fggkWp:$E^St~f0h: CCC>ahK% V0%Y##A~nt)FFF4McYf2ᆆ{8>>>>??_W[gHMG+ONN [|| ˄aX*vSUT4 Nl>z{{5oEѲҒ]a&0ucIk`Qm,G"v2]""l\MM5I2N>Kx#p6TT5eR/qְ<+0+tG {~ٽ- lJS&x#c(lQ 8aoIa{q;6vBZVSn;-Xb{nG4;¬.r(}{tIo A+MʲmBnXdT8.V۶57 `9dQHJo@smhMyQ5?cβ#%UhɶN p, ZWoF*)Ii#>w޼ ͤd˒,ǒ*򂬙!h YEE[M28f9R)0&)x@`iwpoAL$E,QK A$Y7(ŭ.CSdI\Xv nis0ħD ,HT3oolv7F8ݒ#;4MZP%QMi *0uY5 Y1>8t3M(tZ KPs0% `Za2MbSy^>-)`liR/JC^$$q%:o@0M)ŋPe`1v;Ji/lٜhv*`#X#P(+ P8 CLhU3Y16&`P3i.Mqr*y5[1Q܂P$IQMbXrLSxhLUUհfei^г*P tYS}ۊ9]id0 մ[cA$UI/E4*,+p iv t> @;8FӼញh8&񼤃MtSyQV @eLˤ2Bp6K.exIm!]eig4T?w"DVh.ԛ;B6vC3#o BL7XߎvAkY#L:c({5ua'Zh64(RY/nj(]wa(Y{v1t^u!3l*S[&8LK}:+\,(0Ī$*+W?#f3 /-HNlgҊé,A[X E78q1@Uqۨ_U11 /j& 0LF1Ir.DQR'G vn6Pk.fxwgcITHfT1l6LӢ)[-s M _M. 4\ZSEA5k*,x6Fv LZd1CE53{wն5E-| ~:F@mp1\q`Цqꞡ(o%P r6;a)AYI}trhX9~̤ho޲Sd  nDpF/^c j7ọqI;yT\Pu$aUfxԱ+1WմLI~ݺ.u3`3siAx'dݻ XDDǧdݻW e3P?Ȯ$E3GhuU% >u,mn(ԥPy{v I8fZ*~mG4:r~ʇ˙zߺ%$NퟌyU[m΍:k$Nַ,CiZ6E  Fq7;M+gyjź͍<۴ek}]7#8LvŦH*c4t>P.~pޚM5"74{pIօ|nenZ?pƴ㝓u[V:I%>zbXReٰ}WsYrȅ+yӺBTGr$R1NSr̹Ar|ZR4a!GmKC173ĸJ2t {fQ4eE+FSDǑ3Xn͖-E 4vQظs{PQ :>]q `xȂE_526$j?>6_K**CH^˶nJQt3 `8I+ W٪k]>YJm__) d5uŴFΜRk7:e')*6do]͇zU4k2tT& ث)1FmclE6h|A[y7[!tŀVt?d@kh34%8\>u2έX_W4Wb`(v Yux;Ql烪sk*ri#=|s jdюvxIQerH /ZCq c摦nLtN =H_wo}.xhz^A*5njYmU b"j/Ϩ-;6,4ӓ~) &[a{<_\<9nivpǫ֯.Au^/Qkπ_ kiؑ2pr'I3tKO:)N'P$Ma|cqHzcm$ˊS'tQvEiOg_>p iPhd>I@ɄssH,J v!969tǢHA/`H| ¡ўW^xʜD00N |0"IQ,:h& dqoE4%.قܒ4 bQ2NzCW"!N{n zsl1DfЙ ?޾ 覹*ZIs= SPF 3/ hԄx$JK&I3ʇfgX<FӭK3ʳ/{4(Oo}@$I %ƛWsc IDAT2ÑȇX cP} 2~`3 W(At+.΃tn sEv>=K4)ێ |}]AsoL$MIV]{gvpEaz"<uITNGfgp</'D˭>mw1gz`qSgp袊ȗ0kcO{nQ]IsPF5Ƃ hB:'C:bgйϥQ[,HO!]|Wgh:uOד svuW]!aE_6 5͇ ֑Ybq0q=|X A1 :QĈ{w{Bɂjk@M |y8}}?0X q4Ű :{ҸA xn4FR{Nfqȹ?򕁸8ER3 F1$Pl0OҍwM7_|/I{Ļ/=jg}:1鑗RW eػ/ʕ°.``>QTS`R6Hq074IP;y/Hۗt߲Z (}#uc]щ¼NCS)Ϟ8td0"~+an{.P}O=EdpOް iTチ@,%c$C"j"2?3=ĒHҿEI>߸`݉wAJv~WoUdKkS(:zГϾ]yz_S/]@ PԐҡ|\ v0<5,"$;ps臹949 !U \73G5AouA Dtg.j̛/30u܀8Y$(D810/`ܡ}nc8&1t셑$cgQ&~iPA GâiH ӃX"7,5{%-MŷgMN8gd_;m˜"z[!0Sӱ@ QPp\բ .MV׼(pHb&237oͅq:s׿|iD+O>srTyiv,m#ɓ'(H?ŝ hS?}@#/<[gp,heC`@;ĭ[(N`R|wXsj_}c. 'Q=/nK~ˮ S,}b&>DR!#I揽ȐJXfZ{~" WN_ οB7G'6䃌q49U6$.J@|0#;*~OuO [e]n۩_>c ȉK|eu<"(KF32O|32rp"|߬!ŅW(ES}hiH= V/N]f覊sՕy|vNBLI\(^Gݴ}O^pY:ZSKd!-!$&\G_nv=ɦjoc_̧>|yD!߇8! utPKzuy^MuE-?/4Sq4 =:F˾ķWQ{sAoZ7󗧪>7m z )Vng6%/|lss_RR=[r(Ş/~j"&Kw^ `xo°q)j=9PF ̅gqJǺfE RƏ}+(rg`%Ξj˺r-$yB1\ v >̞{Z_O^-~仟_MgS1s9J~ ڥ0H%-y4l4gϭ/?_^K?ɺ'/wvRviyWi $fuaBZ>'VHCX3>DwWڮDCS=+ ?qhl4>'˿_P1{yؐW\n?FyȉSsSk ozD`/" G7!R{k 0 {AyLgh˞NylϴQexAJK+o64hz|VUOLY3?>{76qQs\Zv]sqJn_g'h<}EO2kj/ٵ%WGch}al"{?zMjaI:&vwM~31s} ~v; AX aӕ1L"پg?Ybcmgd 89ru_\u⧼7_o7X611o|I_ 1T_nt~:ϟ7?/.ϭ.Z+ʮ7U;ҩ⸎:J=r"\+=}E[wZ"H_wƻ&?Kb r_@C*9>:/K?5yN0uכ`\S5 CΌ}Ne|' hR]:ʈQl՟g3C_='lzjTmRe@>bd|Ob_ׇ@wFM‰ضݧSONuŶ~] W^o=Q_KG<.bҒ<- lG?yՖ+c݃ڪ,P_\_Ch|o+돠!fdAeપ'uWΝksicQϧ ȉmuklUWÓ/:SP#lf3ɱR^WJh5[f\ qLo dRC&]<[N-__><4YV3eH2oZF|ı[ʰ_D 쩱٠੸ch|~"Mދ} >MΜ?~qT0735Ua!S oUj+mW>NZX ICtՕ9- ;bI߲9sa ܩnwӞ2:\ߍ{We5NDS ?} y#{0VWmJ|gDs\o{XȇƃF?]:tZȟ=юwK]Xm#:C]Dim}!%wK0#QP't@lTr %]K kn/\RǝS'Zkcڹ9#(q9 ihU$aɵM8M_ ;lqހ戳_ޙ8`نO~Pwi ẙ15@oX"qmǍw$uߟ[Y4qp} +z&BΕϾ&:#<kJ΁ \Tϡwq,;˯~/ d:5ϛsN}FMɄ·#=!4mݳNM[~_@mn&W?|dm1i/ljz +-LwtDG6G&"bE<102dKVjk|tF-A2=5KW|\w_=ssVaV4]Ixxi4WyBP4 ZRcs%g}[rIz.HE1ƁGvpu[ZVx Qⓣ~ o+7u:N%nL$;˧.=/n޵֗&YkCu{‡?ko/v.,`*X\{;ǭRD}E.P' +VH0jOnzkbmv:5(r?6V{`]"HG厖c{O>z>zht./~}Ҙ8N<.TϜhhoKy:I5jpu tٸg-|$nS w/O6֙ι3/zb/m\Y6-S;}LΏ7(]Q`+)r"\[ٙ8 (jɹѠ.m/>ιyT5-@;B8E{cDncm$jӸQӁ*ʯ,vDgW:0MկiUa}ŷ>yfݹTS?_>ιpX懦DM]%2 d͞JqMݶR<@ Y|GO<^|HZ[?=l+|(8%[%:^=rPh]kdD-t@=dld$6 *+Iѵkfɪ_ڞ;ye#=ޙUMe.DS}]X퍹/:uh-~<ϼ@@q@}/i-qߦ0p\}.LTlSɌrҷ9l7Tf+W5P uM|xSmfd?U`Dlvw\w\]c388H|n,ŮMܕÅ?7GOuNܷfUQrwR$153km}5%K`"v2Ƣ+8%'/2S#W'U4|=޷/HI !L3AOt^Ȥ WݎUsDߖ8##"jrQ.J4Nh)on#- 6};rsU  @HMUt'+ (cwTʺ\_+ţf6H@H}sʦUv_\醉r Lbv~;muzF6{aO/5I;TLZwTR9t`ڽy[LgVz+'qPC1c8Ӷ?f_Mxtr󹓤+$ cvb;ԫĩJR^UUVwկ{՘Ԑvllc< @B@#Ь+9WBb@&+ܽq~8{ x&L^OJnΌt-+5{d!Zyrv~A׾ࢤϰ0hEL)/|ulڼ'斅wRZ[yj]GLhqs|qw];_ݺxDUI0gE_~j-6EY'<-vɮ NwAd·^E &Z+ix(KDT(+*F A+xIwܜ)~7{4^ F [}Cmu7lY1'0/W^r3y3?x©W뤓}祜w~Gi P 2Z<`uJk`fM8AkgyPkA;zY2t/Oòr&fSғ`smiɕưSA  8,t ?KF \ &h`v o ҕo;~EP0R,~Wg245ǘ]57tF*fm{/Ɋ֞-q0#>mkĢ1I[FQiV}K&rDNI $%y }w/tޖªLR|\jESYK7! 4M(A槩QŠ,i(we295cq]@7wɼvf>Å.~EE ߩ^RQ#!oRv'edgP$ptvX% SsO^f`s k0nlN7͋o5 bf)Q4RJʌoB2H(O $c)tƍ6nfx;,ED{s_Z֮_H2y =R,&yRPb N<aWL(I EIfoWݸQ&Οv_3L .6ʲbn׃dYVqm͟Ʊ='Z WK^{ﯙ,՚45v5m[6UM'pi~ߩy5xdvi* ;D|e骵D IDAT$Yy8 .w-?яϩ>qњ$8Β|驈D DXy:$p7TE"$=d'-z+J._՝>wTО2{qİLOՉ[U⡝4dv+>vdX6~C\"9cյut&E!7$hPw뷱,3M.!X*_n 7^YT>t]F<;PT@X=R4(Z=M -]]-7ʓKiy,@`c>/?;}% gY5-]R'9r X$W\qOQ,.):[vf垎%hDF)y3#{VrΊ pBN$lUs`@5I5ր8ť_~ys2XSa ql#@bxNm]g8[{f;2e?HBF,+iH)@j]yr&L\0 2 H{ARrykS>ϯvo&+}5(ʘ3;)~Xn zJܩb>QL3+X_;гpI0yg/y1-Z/_0i}Z3!wFZKŹ[m7Ξozj = yވ;;{"dQ$fAdΞ65=c`i)`wLLCV5@nf͚O>7@XfރĆ97^:pųxl"[tT]AHoGGR$(23o]p5?97gqyc)Ɇ ~ ò 2+w 'Յfj|d7!hݻAFPl()S2<+{To,& B+rh蒢b 03%6m) 0,Sv:p%rЩ:v\J(*= aZ9 -%EC E]sg* -^0眮f-p{lY0dMlI̓F/,˩cydfҤL.xlIźS3GV?%Cζ`8x\8:T] * YތIJ+6o(]aX,%YTySDOZv65 bSOWvu֗=U7@c w@B5yȝ+en/u8iY]7qB8XhijZ\w/Z4woXIF\X,%VXny& LLz'4%ᶅ8"PL$Ud0d¹es%e( V@;(:Kaܔ Af&K0\+ ܍@DhD2 f k{ceajΜY$߾t"&d'aN"#ĶYDT9){qAjإM7Gr3 l33/j|ƅXdf}Ѓ,%J+HT#>C]]S0͋pwOT(:pM˟=50){q *8mGi 5;۱hiL7PH.?sRUcm iFu 9G*7sb۵sw*ϝoQ=YsgLM39Avb[J.[(U#o$S@2ZnGC%JvO4Qq!M: D}eiΆﯛ ax JAδdY'{fNLd^82thS徢uf 8~GӰfn{%*5ovB מ8S`܉䉫'u"('}7ǝCP"oKP_jdI*PG:eZP7˪0{i/lyc侒Sg:LK KѸXsɟYӠn}q*8pAOܰu$nH蟣5i ū2qɶ?*x(WnAZDD#w{}5LUҐ᛽{7^.~}馤am|,+)Uyšכ8A׷)/ ۖ:=Ђ`_Evݗp9 S5šuG~_N@ $vݷePrpGR$ mz3"; o$znBsxMQSmiŹ,E.QźH=P#w{hKMkL6ooOׅ<elԯJ뾳%嚸OV0{_B[?O8xE45ߠ=mn?e? d$hf`&e}9ǭU_lmf'[+.Y/,\ q\Ӭ@ꍝҙ2–yt~P]D3U3i̊qpH[trsk;?[ iΈMМ(:7syVv}cTS.3K͊;qj%S/gӦGknK7lNvO]FޣW-[WLM[?Tζ^3 8+S / 6R1Q +ؐtּiE`9i y^#F[knÿ׀nN|;Ml=MгYnw(3P!ԍᄏ0)t QL.8S~Ќ JaDQ!#z@joRف.FIynY< ƞk:Mdr^ysS?&s=- }?/[5oouCmgw. A8x" N"U(^?cyK&]: Eg) #A=mö_?7|q1{ 3.I{*.^5x'?'4y+* O^!0śv`n\m"Wb'nV\n-4a$9E3 Ȃ,ER@O}Cw_غϯű땷^MpɊ 2Zߧ}s__`7o\:hn3y}\}Rb!<9#[3s&,LkkDxf8e;[Z4}wgZo m\3ɦsEJW0ylzS莆nMcA*c- o;trn$qSp? <_MaUIye,V9pB(^I@( `c R[J\^4gy٩}Rh> ּZ]?&{;P%'wn3wW>Y8+I*l{k3A/?TXA9]U|珗U TҢhn⺛jUOⴼM[(O'P74?kۯ|4Ks'oz>?]Z>`;.;Ѧ 9?PY^Y{0- vgh*I3<}y9BoAY8zX2 vEu&5=t{$xxQDI)h(H񸎑;]UUSYMO&Ya(2ʊnF:Jon 9V"k4O/IWT cyF>j==: z-U7,~aLM3 25CfR:iWdMaٮ`Oϼy$dYjwgWLғr,K*܁@ uYQTYUI'_ EoA4]yreff/XSu@ 44n{Ah%t;4UVH:zEBhF]mmnN/dg8F]=Q]LJMK UEoƂ'㡢Qqғx*4 !./cnbeI4t$C1Ȳ,AFi>ҞbL@I bYke&ɂCl躅sMWE5-NIVl͟`&#n8J {# MDKS #%'ɩ>RyCk:M z 2,WtXۚ#(E1r ܺyfff D83Ξ0f=ii~kqYGɘ($Z$ɚ*KzE inݚ0̀a!/ؐ[4R4 Y"QbX/k=/r±`wdPԀŚXz"gXC%a :[c2}sEhGY‘stv}9sxHOg0for\bqB|rj!ڪ)^>L0LSSS4͝3GXtЗ+f/&{10Ico$x<444Xblބ#KHme4$a4h !D  |uo9KCc6< &r|}CK_K<"q>D?U#~7!B K ݐInyaaGև1׏{{A ً'%țد4hfփNLsܓ?5Ix4XzWz@ƽ̶q_%?oF5 3LxLW8A'odiY88xpדW Y!*Ps 1)ݟ~{x'"?_v % X_Y?Y`1L!?y*Ӥ7 C| Y뗥~4="Uˋ5z-ukU(1݆C к- IDAT~]fd7ra`Z;­'BJ;EB=QEQMkP+dC>~ϋK.(@~?ď<zBAaS1=ρ12cyĥAG*>8,'àH"AC5hd?P.ugs=?j%qÀIi!@t%MxrG6=AO!1g[}{p>0 $ţZ2#1ʲkjB?99aX4*Irz,biڹIIcFc@ܟD=XXqz LUO46ȩSD"].ԟx#im=ٳ ˲Aqt3`FVrPHUUu| K[#8&%<51FcIIIcAI9=F"ѩSYd3ѷrpY|4NO Ćo:;;u]wOͅ6캛Q cf,x8u=68oyB'4EQ|uuSLx. %jo0HFA'.g0n9 |F`0(ISqavSR۵>JXP(@3 +F/'ϐ]cK,UUB0cF,xe,[%qnYUUԟ-=e66+ۜ,9="Sԁ4ǎmwF)h+@hO))) «3Msp 8!ܹ`q#mY(EqN}NFn#T`)))}8=CBIޞ953>/xIPgҒa(r9;;o>qss1c \G9#Lu]ohh|˥q=Butt(R0 nhlLIIqja"pWWW̙IɌ=TbT$ݸyݻӧOWq=r< 5}ΔtaV[W8\c,Ӝ?˲UpSV 3&Ci].iz$Hʫ! ܮYӥ7CPzzrglI__i>^+1uO̘ xB>NG ܹs')ɗ1HsNPO֮:EQ϶an@֌`+7jjG˱3fdݼy+أ\GaMΠP(4}T\XƤP8 i; DOʱ\f޾qQ%YYӜ̐7Y3#hrr3O%Ib3ff='>VN)S"hooOȟ9!e~. N%O I0˘!Ͳ`Agy^atd7=R CCCS}-L P7&q ,2eI6F1.ǚ,:CWZ@[]  :e&Ģk»!w""|( @$-d!ɪ5BB4 #l…%SY7I18, 8LȏeDuqL\" ÷QW-}$AwpK'404!y9w$lIJa}@P 7/+ Xcq`EK&CⲊ`z yk׼#K<)4mkkO!u^8Zx1&-AR,E-K/a}:.H+?|-˧ |"lP 'V/\Sf}cI^ w8*e76ΝiTq[^Kg6A(7]/<-]zT Iv}r'具R3ƸyV!\nq89xaW=+X3k/=|2NݼzA&{mӽK^iC8붮_2 ɒAr$g&fYAKeG?iLٶ%V&u_U귺"='.j&rĕ8J;{KkLAZpڱ{'t ^}~ Mv+XKZw/؍|) u2YZE=nƉH!' /܌BekVΟFVocη^{u 72{w?W9N|Ys]5t~7W)qM;hroZ:oŝ(H0x]`_[w 3)oŖK} 8 }(ٸeiC 2YQ޻ ? Ѣv]Q5o-{yQ&#\nXGM; A/]m r׿ZvpO]moݘz儳~Ƽ1s:nH>9TyA`14 ׅ$-q'Ee[^(1َCGk6Mfd^,3#ۣiHX,%c,T8qL>%">~Oanᾣfql+ٴcViX隓Sw=G{>7 Red/r=^meSV[*BK:wlE#N[ky"0rfQQZ4Yt[SuґnPOo+^š[M X3}y- ,]yUdīOTsC"+6Sj نs,\;M[rLüm<\koh{{w:E,J\1#z\\ܚZ<7'ad AAdk^ycB/ 䮪]_2ٶ~|Ѝm'd )t'g|_݇tViH+wy~rn _ƔoUv)tō= TJu*SLrq#X3 Lǟu}b;7čҝ8'k,~OuruPF9`D3Z_O\ed/E%U}MB W.]^>_t ť啵 bc} ְ]wٛ. ]9YMa_yeaGh^2ULG>hoz 5x̙ u+\QrQ 0fnJyow?bxj=zD  Qe}/P}rٚE85'ƒt`;?Zc9xcm}: bK%W;ds1'N>{rMK3 {׾P9uG׎=}[aB«-޸rŚXj:˄.DiAȶW_$xǛAF̫G>=r]Z~ \Gz<@1=뇻޸ݥC@oч<BقwowFs{|-=:"#JKKJZfwnrUS>x/òrt]? ˷ÝIibU~?9b']l@sv~t> =yymEݺt^->{rU y 뗯4AS_q[Lr} hzOw) -t3jtАXܕ;~yͰ9uw}Afypǟ/qC y\TxxI ͺxOu(/JWmI˷ZT‘g OXRVQi'ޭžC}k^|V֚~q02?ȴr=Isˣ[.w5U-:s1Iྪ*hV[S u?*jAw/պ'xi'hNzᑳe-Eb}3Y,+/Ӫ@^ztYݘtBYkĠi6)5V^Y8J#qH:0$L#;ޘb۫бO>4U>=xII1 ~X1I!_)zn>rF(hF'(3.*)+T\SE1 IDATEg.^*jS )U;}XmO_ @p'WI|=-DN<>WOqeP+GQjr)*o(9}W)&ܭR^9-XvS< 9$#&M.%>l "ioUUlߴ$?iOo56u?{u%[s H0g)D+[Zi= ۷3}]Ox,{֖mٖ%S@Q"%1$H@V (}:{͛Us{4U*-n5q[h>xb%]{A0/0!6ۤaj_+5zCnwR*G2чZ=UO[TI8mSF-V̮{q\1_nh ~Ag8]{R{羺yfq%֟A.ꝻTv^w$Hvԝ iB?nަDhl̹:pDʣ3"”P*ѹgO-OSyi/4к!b;x×ӡrc%2֯DAB뙳qi_ʜlV0&I&w~pÑ#Y# LAi:+b&zOi#qg_B${:tj/n}: r;#(s'O)y+\SÁ濭kJu^}f}6bmi.߃,+ZNA}Gzd?9+d:?,%sh`=t?1S杳*yUIemJuQM 9^w<5`cy3́Uokij1:5b~FݹhQʙ9Z$/G{=\ku(,xMg]?ؚ$`Ӊ-|>= |l754eu\0 Ȇ{~p.'4 ~dc)ݩ^:tjݟ39صcϊǾU<_pΉ+jݪՍn%;[y_X#?;Uߜ},LJOPilͦ).Q )9%Ժt%ى{vH%4| /~#盚Fk=֢>tf(KƲyiK#gzOM_CwU_㾆xٴO>tW / ńWqe[l{>B>$D>]_YbN,Is)}#[[BC@' "H9?_hb؃y害g̪onM*??rML0K0rk.]:Q4c`G4 /T77N<dYA:RtȌI{454yAx>CQdl_,==jCSʜܳb.b"'5 F5LvR8&鑹?؜9'Zy\H8Uנf-ZZ Tul’-'5vΖ;-E1]{dlx,vwqG/c~;w[~{ea0gGaŲqSR?x'K"d}# 8dPz hLJ0%:4P_5YpPK{խ[^k:me\˩3 sdr޺E?3ul_CPwI ؘaФ̪ZtyԮei QZa/ZWU;4k.bLT-Ͽ?< 7gweλ 959uv,ād5x.vtgq.9 zհ6T>wr} ;(zy=wvtHVx5vsuSLsb@'t<?k/K aP)`}==C.K:c1cJ'BW. Qx"`s[r`uGO5`̮ʫҎP9[+< H33AoS]ÃBIl(͍oԌqL2 lփ7Omxσs#*ȯ͠O 04Vl \C 3|v<6 qg!&5U^G '6g#5;nuO?)ʨYҫ[_|:rcÁ/>,ĚjD`:whOkP{dDHU2K zX[+31.0<8~A # o}<]BywGdu :MDgCTe]f,@2=7`Ty\k:|CX$Q8Z׬t ybh\+l^l:".X.P":$`ރKE4t֗pv癊J|oP֛>טDϼkbmLBK`pkւH%Q/|O 8|,*!nS ޷$ߜh Mw C⍛W3=wwjUXw^zYD֫'ɑX'tCO2 FcZ{K/71#E1<|e &M]6G$ڟnb'蚬2Y=~l'GJUfdMRфೠ3s}F u/{~- E' ?R77ޫ < }iy) +3v \T-'5PKG}%R\Uv RIUd{ 2M2<>ʱ h=/Ȉo?I$7!]V E6ő,I T/]*qn)+2ュAeTypߞڸ0Ƒ}o}Tߖn|?3[x l+NSxCPJ0'JZq32( :-t67`spfEUԧRuO҄\+7wj7865чWb ^X#Z/|MYdIѽLE>S {B4x/7/||o'z`*_*49-' m7~_6mjF|f9iĜIuVEZ t6*p۷y| u.nh&̯(c\MWQ]滻Wi.oʋqMt KE WђE?<*T暪 ֪p/0x<_l?n\UL,4I,߰[oubH>Mإ#n (hntNHuȞ3?݌4Z}os{NKOtˉdF{43pה4Kk>mCpQSgbӖe[U?yBnU˟{u%4O_IL`sU!禢=q 1k5UH>MIRN 4 ~鱥n ' 8]PIE;H-t{gRN^VL  0 Nb1 !da"ݚB[di;sqU[MG>JJt&)e3eIn\@=c ''XWןWh2YYȺ`iNȇ뚎O=4YnBrҠm'XJ4 1!K΂[nZtvaAiJ!i/.\{6Fɔto4q&24M@7Mk2\4/w?ڃPh~@$6&#ާZO~d*_{0?TQ$ᣫaY`{{RWga8 *lU$h hcUܿ?}yY)@%XⓣIN+DT ʖܦH \ǍGkt<їizjg=k/͝)ߥ u1U H(l@S |cC\˟r|λS $KD\US5錊ƛ9^^6d;lf k58x-/<Вq9m5"lRmƲ-@lYX|d00U8 )M!Sr\M`N.TT؇wLDQpEUyk-%[ar-p߫}(]_6$LUE }_!xjթW sh+,L]׀}Z>Ql|fAo^Ѭ [4S9ӟ:=K_2ϩK QG.kdٚ'~DOg*(jHDvd=g0Fdʺt;dTcO0%sS?}`GO˝[xa*J$;jȋ ;k{F>Ȝ 3!)*j9q׵U ttb O`e4YD\M@%1ܕKWݕ"- ď$E@ Y\i m95OǛw΂ҬotP=WSUaDLgVv~>vx4;{CcPγYIA p `DZȋ dъ'B}'૩IAo;{-Ԧi|q4J8 ҄d'(֔cNV#qd]Ҫ0uY%@8d'q4o?zs'dFnAЁnt8nCHh;xt9Tº*/,vx7|Z2<]U>|ќ]Dxe4x^BL$&.U "c߳Ot׎oX$^PL:9?U"hk( .E ğ`.ѻɆ㇉@n&3Oؼtю3#-BWbiT]0˚>mW]({? T1eKXo@+MMH /5%ZoWlyƫՀi9xn_,@ s2K="kL: IDATi$ LUֆ3xI.T/L v25>`F 1>+&0U-0EOڈW'\ZNf: ~dIh9bCn3h}lW>;zx ~X+?>5s{IQTqJUW^J=͔>?װ:m;A3a4cgZ;_u%#9pu}W'0>kUaO|@$!WV2HFT!%MI]U͈= ;opٹ2d>MHin艜:w0uɫ+sXD Q xWc~G/˜d@< x4Ѣ`_0%YdOܺ:pzrda^6ȑ3GO]p?jE̲ $bwDHaz~?ӫ|@ITyEW\Ny)$)\ Ã-݁b$4e$ؼ?",'ywwϤoxtSC#>t8ydsfi蔯8 L-֜^;/UUSo$ xӑIϭ]]Ćv3gsp"HPs)k.߈3 [̤5Qt-{R:[XS-*e|4:*+Qd v& w֚Pa @ۍJFO̢/]54ݽgwٹXzoXWS}k U'^hSg9E e%>7iݟUT0LMQ3J< Z.p\$΂[V, 1&RK]qYQ5T 2 @b1e"%Xrx8TzA+7?! /i?XPBOmd-#KdR {HC{V?n>Pu;?1%hZ~ipiyEdAߨV`*]éBr=$M}>z'DLIH%ͳ ̩`\!u"c?.Ê{L:Z^R22JYP^tP^8Is2+_A͘- 8ASp'jxo]^4=l|{{>R~ٕOXKg*4wѦiy%Pnhl0ҺaPw/]# yt# j&iTfa4w#hV:qȿVaͳ1$xJWRwTTSxl5RSRgw2w+lP x$RgOhew?rQ9)JJnѾO7=<ϩ9Ï}ڃ1+ 9OqI2΄KSBNg0oK6LEY,<x@>sh91l+kg S1/]bJ"*LW OG;CeDj3gOd**fn h?d}EsJ=z|8v pNS'?(Y$MǻSO}չ^U֋W=o$SٲɏE[6S\Z:QhTza)Hsib pI8+-Z_0Cp{_\J-)3=n e3m ɲh is˂ .Kx_*\Dtfa V$1fS5RC*L)(.IuavBeZАŴLL-/\re^w`,Zw- ÀzFkQ4YUp5uӝ^PL&0=L/f)ahH+^dޟ='#ima¡$A E[Q YuD1'kd#3֪CW5\y\N$+&"q)!K=~^.*\Nߍ4tPHL $i?k=^ERxfYNk֏dXf芊HvF59H$^1,x39G"U5k>:92EA)iUWWn5O᠜W!]U4UO ]VG`&IL˕(,ǑUVdՙN'a(8/X8д*&M|k[[KJKNR-xQ!$)~CUT$)f"F% ^Օ'*̑Αim䦁,:].'VM0 4DQ3nm`p:d0`G<2rʔ6V(_yBY&q&9.xf(@4dIU5x nB1 ͺ,h)C5 ` e6wNQOD i*.RݴdzUD MMQTݜQEӁe: I2.'e 6Up8RRyyy~ݵAu,k*2f sxueY>rQը& a¢* xEga@sHdH{BVC'Mey>YYYid>EN Ә%hwY%"Riu@0=#]ތd9hA5u:i$ XsNP$YG'PAS ugv4x0D"E֖G_Y1,3f@G:DN'Ufm%eT-c88.iZd8**e_Hm?}}0kS'dXE t4%FyA1OȒj/U\NBDI'BkUႢȶ+PSee,ސ CV'btcXw4c E#f Οh8ħly隂E1%/HUă,bxIձH MfYK9sN΄at 3 I_/a1q6auB!MKh'33Ab"\.֐EI% U~.-Pc:I-.;pCap7mh݂ $4T@>3 ?<#.ƋnëJe[[[9Ι3 WP (ad2QQQneIA`(Ҿ g$@28K HF+)o!\:::tNIo cٳ~or xWWwqq]L* @0H̄ 0 ÑO$]nhhl%)sҐJi.p4=#efN knNIIa6aSҗ0QFFFN &LP(H$}~l-7eU(j"d`66 7 s:CP[[[,wi<6a00܄ T]OIq4cKT*Z0tQQwJS&mC~EQ$qIL ^9A8rfN,JQiXL_eT29˲n"`[~`0H$nϛg|>glw"!MrX x83n}U&lj˸Cmxf }x<.4h9m-GQ,wBvgL]P=9zN2⊢Znf*x ?63*BA n_eQ{Z9qDb6 0>(ƖMle6s\ 0Mbج0k¦_{0x<(fMk9si)))8 Ͷ < Y L!ؾѬeY L->Y L-,3f{S A  8Ɯ,0޳;f9|p,{fn(l-‚vuݨ+M;;<^lifo[g{j)ْvhfܔxlLY6u ( Ed2۫i뚦My[!C R<`0zg1#IRUՎNILP5m_8.`Iw>q<ƬBMx_p4j-S~0 x}>{̙CH,gX*:2nSAzC`JJʝ{@(.Hָ#&0e0 fP7POoo,C8˲>? 1 sgD53HFQQQ&$II{zY6 CU՛`0재qNYloos^(j33m0fgg̈́@EX__0eY^4 8Ul&i,;)p3D<\ѥ~T:XdƔx"!Bee 19˲.tv>c ,SFe'y~xx //o|Sg4L X&L.r&J; KR/wtk)-'j9UUc񸪪ݩ1,˶wtv^ޔf0{Za2)**ə &aᑑƆ3.7.75T1 Ch4ϙ3^{6>e}AE"9مEEaV{o" ގ 37jb I2XQF8lüRgRӂDvڀB*srq pS󚜛 d233f>lMC^ǝ& wuuFQuE(j``$ѕlӠ HKO< gYI!T<5r2gd=@ p:pbAጁY鞅 ESjGc3ҢQer DQTd}7݈H@z}^'B߆/`wFWv43="vMEE!4)iQz5*4X*26h6="3 pKI; q8VEv{|FV0Vz7Fy ꖖ#h-c*&rF-ct`+~۶aՄagolPׯ àijth9M37I0yw p9 =Mrɩ,ciU&@EO2T]zo {>BxG3$):N@@5DB BCDC MC7 cW`ʽ+5C#Gˢ)ģJ7u@Ͻ#k a)Ô{oG\=U׮ELY ZV KDsv$ }AծDy% `1nMط(\ B¾ɂ6O($HqMYlLs::qVڼ!0|c5$Ew=c"N$D|" qkf L"@? 1ݗ3&/Q*'@L뙶*W: >ٱ?&z7`,&4'Ҵ#eLXE Ԇ9>iI0/k `śQh@b[dZ @&- ls4cq6(/gZbL5C"|N/7"ei cAA$Hqi ];=t4k%pQ/rT I4ԺN֯BMse) IDATp '$0 ]}Vw68SWr6IħM.=S0SK126sQe2G+a~UjcYeyZY"Do??/3R2{lkutGt+`i~iYNȨYYaQ\tt\ %7_huO_/2a==w.I;fxU \A:9FIvvt`OO(/b,P~' ƈLݖs4*%yQ icPфɰ^ǒTs2*:",ɲF5H31 ){"A eWe@aCD AMd] "Muq#l?,ut%X ý~^,K[_iHowo_4!dX^ 5j[8U=t%X4`H]ULz\}B:`Գkۛ;oٌ0G_T=ZnEE'osD#( r[$Y'  g?odKy(0:7w(022I%aHL&"WM"Tڴ7]tᲲ #[8z>TTx?ǎJS9M0= ݆##)-:40]f[p%F˲e̎t4zLyf{qb'c[&*13R1nsK$-uli-isO{{P3 u`خS K,̴Q:ֹ]it;6]FE[GsBtCDp`?l#o:ZÏhhSzb}\S[c\i.~>8~z}#5ӥxQ  k?Wd5j;IS:7x\bEʷO Ri} oð{S ֝;xTmC]MS?jMJ01EsGy$o+vQ(N_ܵ嚆i9%+J=5g97kIXRp Ov'/N2GW:$!)i_3ݑ[u7ˋ-qQZ U? Fbmnm{SB-99Ixʳu][&IV${-(!xNč><"z ͘p3=AMє!.4ESQ&.(D"8snώWlə^uU57k&cjUd^y%²ѩ)4/0?:o8;WE:DR[_5& }B23cFn$9\%W-gEVT[0i33 :^:m||v(J@42MLS$>;F{{QiuIqn&,9bMdi+oe)8W=NTݨ6.yS $hiXOmEQK{W;-0"7NV8u-B9Ӓ]HlW8&)ɉC2Fi@GsqQ~7?GSKS /:]o>$dڑka}΢7Ib@xj yAa hÙ}O_kjj k8=UCMmTvνǪkÄ/ˠ0hk4ƠOzĐl&γ6SZhx~ Qfv^x+50E/e6C5{\Y2zqjk(wJ%o'EN\~ l\kpo.'ey^":~ʛK,v5WT/I@yh>yAzyR7Nhz!)n/lEl>Q ~ڛ'k[dva6:tl׎/wCV_SGY hD~XwacD`(T܋cj74w{4$_ iD=ݾ0Abܾ(P'h<4xd+u7o6pGJ`">NG ܱC9PVVo4%frjZoD%IFG _w `ǿ<КXP(jN)7+߮[O^iI)_`9^#%zW0Ac^mij$f=m/; O]8ɑsݒ!!١BaCPAW9yG%VLPF+x- ծ'q,/taṔ7s[dB1Tj;].W׍ ,/۵ %9=EeizLH 4EkV8ALZGNI0H:XZ7P*L,58;# aey?Bʡviof244p^<}r@w-ClrVV9qggEQ٬wNkń$?H;^ghHIps܏{>~h JU!Y 虦CfyLc/_H=KQR۽nW<`/MaIی 7vpgn߼y7_)Fy9ߛ,h[s֝ ; )lC}< "ͩFS+L BgUx"ٟsYyܹ'dKVdko9x%m9wc5AoV6lr'11Q j=QYAQ_ɒdɪqE2 KrSq96!.@[l=|\{u#75r{u5dM:|~Бˉ9qk:8SsB{S{,(rk}GںV/b:Z[-ͣ FyTW$([A:N9,=j跟Tr foG?+sϿ쨴%T<ӺIERXUuY!E1†zjn,)P`djU}ղ jnMe9^cJ؞ζ!vrgZ5QFA<n)q;c톌l}zjM?vo\2{$H֥='Ck_ӄ;+\3gѫ.;~0G'ÀFc.-/{C"?~A!G}ΐL]-Sx>wjh(%ӊe)AIquWH՛GOٽO/df'b[?#BF Dq>?`ᣑ U+_L&ILri`ǩB\dW7q.^M\BDB\sl~+j[ܛO!HFQEu\>0L*<9Bs,,;R=3)FUęaMxR 1^vd-YQޱzC gzp1xءY6ARqݨ4u~G?ί#)/T=JWoTu蹤?}.I/M49|W~iitܷ 6RuZ偙yrŋ|׺DDnPb3 >}Pݟc#6+@Xb!Vڎ oޏ=i!{ky͗=xLBrK3"WZ3aXFP8xruɅK2@JY1u2 '=gvy/&Ou2/7G‡"pZt0߮f>[uՓe) kn攼tTO{_J)XXuQ'k[ƊWxio &Ұvo/%*<'h=k7,O FJx 78G", 6qS>$Sj v2.OW,ЅڇV*4KglF Õ@׭Ϸ)ZaǐrZGAsF[ *SXV@H݇.u{R0}JA.^> S<֭M(M&-^m;; P`yF&ĉS{v^uΩ)!VsSĚUnc2ݲ(`l0Ehk ,Of<֖Yj'YBՒP23[⥀| )QQjqY]jv1d֟s|4ͦqĕN þ9D ǦE}nI$,_v(̔_&^lsYnސf]Ei"{虚(ck>|qfyiTKr= `iiV+v)QT9I_r|ř0(aR_+2ɤ*2/(攅~w[[+HyeKZ$G*\QkmaClwtMϴlJ##{Qf8O [כFK@$-)qPekԍHFo0CڦBq,GkKe+CaB!iz0= -Y$,^^O޺5l|Zj~ѡ1 t\ܽ0%斥Mm"QG~F;?ZAmދۖD^T|mYԣYG4㔆ri p(5H7Z1P{m(WQ EyVp獁0LphGQ_?jJtv "eɢ }He Gu{b˜+sڎN (XuRˤFO`߅ JEV9F\YhKK@0?6`)K_tm6Y`ƽtT3)ũ##UxT$AD%>y G{!sIi%bE!6 :$a CcO2n]qp(dJN.^H8Y ;1է Ԝd9fhi^9|Ɯ DᧆEsZ.ʤdYF9?tF ! 79$˗G'N?7!khw=hC;y`*)+Bǚ'#A 48~=3ĸ_k\JUѶaźUZc5yўiX1j8vA2|y[zaiFA$$d3ӗ1h)A6ev=;4:mGH(~S\bӂ7@e[1xT&:zf|g ֯rJ#M= 8@p\mć;o\V'/-Q?w_2 P>&4C{5!ѺgYڝ-{rEJ+Rsn/ GZn"G=|c0o;q!\r1- O.7+7ՄqѦp!5jl$RS"ʑ<>/_}vY v+~iABZH`Xm6g:jFU ҹH0& ݼxe׮$q@N v֏0`!YaJG#b$`:}-_Xc瑭_zr6=]rqyyv?IF c-19qٶ7T/ сF*^S }~z v5X ޟyE9 K.Yusy ұn֗Y v )s7O uvOyi$q1G"$;Hg/+pD+k24ȝ0E=u*r:q)JG"ad4bKhۯFe2zY  blX(uH4g.\WTy˶o;rE6=V$C yiOOUELVp'YdGw] ‰V3u0C!i[~aS2Җny{-OD%(AjiAڋ2mXkQ D^8)>@XVSu\ 5 _/]XS'4'}zecի/jk4 }ʪ,hKzQ1@E`Ϫؾ}+LG_(yyOs3g'.^;{a &wf*px?/Or"1 "h(8 T(>&3l͙NZe ۗ%v.gZ0v)_RMCDlh n~'}w@Tv@dQg+)"/Qt#dp@ k 'ms~Z+"vT=`4ŀ{?0Z[ZةPb`p"Wy۶)2{Ŧg^y.[.̔gz;'$7}yvg(YW !|Ci!͇cljw59>&Q@hXT^8img\Vzy={F3䟸֖Ce >zCT{N<cTjāDI۱cի `' d(dźnNhA OQHуɉHUsaQ(N. k.5‹d#ayA="⹑/r*DMyIE嶎8`)(ύ7O0ؚC:pKWˇGϟ'1A?a,cQcu~k}(biȫydlbCxָ-l(pW2E!]/?w榎i̥) ڿ{lԓ_"*CRQ/zJL#$G#0V^$-3q/tIauUTAS!gNIun(0ېㅻ00D@{`$D&[EΝvztN KU,2mJm?vnM]d2YV U"IDު]';ѭ_mgʝg1y lxbK;{Ӳ֥doKY>rwPվ YaUjxQ~9 Db2Jtzɶ^)JHmg.l$.$h:ɵh˪Hs%ԍ3Ŭ# ىk,1 V8Dx7et{oK3w_Gy~+Zch)E;ɫ#?|}&鑗90!S.)&8QK yū0{1:?ϞV7z $ cZS@ZXj~{*-su"onz-Ok,p_ .jhH%Q$A!Y F[š.@oknet2=4s+4s3'I9јVVxcEEQj0)D! rƽP8 Z[\b)mSObj:o/$.ZL87Kthp[z@%3pܾ\-a3~. : "'HFoahOw(FtDkIJ DN(N UDTx:S5m=2xX:oF+&{s',=46e1)ŋ:?:hY0/|RTlΧdNh`P@<SşH1q5+~lk{<7&%ϿZX|RhLHJ,wYguF@<Ǎm)PZI"'ZwawO[L;)YoB]XQ`B̶|^e0\=8k8pF[pz=~9ϝ*|jY* dz~ ϲC0QQ]؊k #i M(/8!dI%|ƧV$c!)ammlnıl4&8b t;[AD!bZQ⪗@USzH/>ުM϶!_WfV=) ΎQ0/LO)\]^6ғS{9ā20}~rRy$.|:D\1ӷTI U4i幩mpWjsW?4!GQ 8E%kqH,INDO,@ :&>RZ2F"sJ[慗I)0)^<1]iDM{{SKn (q셊SPV\d{+w k\;8 ;7nf Z~2|ARzƕI. O?XG CQPr s8NU&WWql;XS`Uȵ3!SOB7!Yڵ'-%?݄1NP BЌ$,:5[z0t1/ߓC]L+$8;N+lԡ Dm \,q1y3/u֖"{)nfzrsxH|O4ys2˨}?y!BgyqDL]#rkGN5W<~`fVZ8~W{ ۇUbu]'aG]h9WY9h4'ݐ+D$V KaU V9D+1 "V9Z a c /w?;./:a;VRPa':OMUJ7a7/_mDu#fv Wそݡ DmEy#fee>8c` XN(X|?d/?{}o~frj/ OrV,KnkHe%ٲ9oۻ >gmAjRrFR2 y[,^M<nގ[_^LcR^mQE\7O FE\48A 2/oO?6=,C)Fxm6e"Y"aw5!몈P`e EmU^)=#ڵ/nyɶ~a:II#sݡlZ8+6=BaLW b,+l4*Eg?{u8x` R^h y>m2@D0xlCаl+ٶ<. Hx̩qﺴXX'5\-WX(D.@ ME$cIY{[.|,+yyòvlhvV!|w6ց֔$yk/yW)wSA7檿|mq2Yi]wKaϪ?.|dÀ$t=FDzцCӨ3,? uTXKN %(ynQ|w˝\66 ҞMqȲӯ|drCJnY6DV"߮}n H*~#@!+|(5!,h &mޜ"\O#:~c`)cA}Kz'̡2+ j~ۨ6xf&5gņ[EnJbٛ !hzFK,ƃQ+{VgLl 6l(&-GT9t-._IH<6`D_:525<X§ܪ=wcDo~$;6xꎿvM'޶$< l8T&O:cy%a֟F=89Wsal404 %o;N5R"%QLws9kp9 >Gʻ9.^У0υA(sSc'x36#8 N e.ęGόeԆE탓ݧHjj} tx͞YJ tXקi5K_/n .K>}=F@WyXp.Se.!-Ye? +!) 6zܩ+}Y/E++^^ i!9M ("$-)Ose{ΩR]T}{luE\PLAag'Q`3:ĉB\!IaV1qO֔X(z9m89F'-.OYC/M EyC FƧDOri檋u]ӄSL&|O.44Mxua6d J$" J+[9g…=Cḱ:bs|7dMQ[׉dYas;ޗTY5/NeWj[Vܼ @@?3P𜕏?1eNB3d՗[D6cM7Oޟrԁ,./wRQ&(˱ 'zFF,n*uH=\jEVD, \ ڼ57%5$[f͂4 Bt{:\0qXT}6ɣIhZ06Na$I{Vsޞq2G|^82R2ukEEQ3*#{M9VTtY>03<%=<ŸyajwӤ#mw{lRqX`2d4 37f_.{ IaTP0²/3RFeQyaə`b 6xRLqȑ%]#<=6b6{l,& Iq9In LrjW Ìn@aJhYhnZF#'N7y;b/-$JpbƊ ͅ)e9v4479i6&P{ae:ZaQYaz(-LmJʝ0 L&M$clV>4V49>449<x|b3Y^eA.@NVxsʝ,+ٙj̤<,v݀!屛JgqFl$‰ޑ2_}~f(NMMi4V{_{<43p}r$a3Z @]Ȥ9oՖUm8: qgNPסlInZYU D"1=FukP6Qa0S0= zoצp );aeQ6YMz\a4{]DGuRyQFP,:=pkt[# fg#b-EVK\$* ĩt"QVjJ2GŸQBl8A{8^ܩ;X^ z% V5%K";Nl'qyK$?'qIU]dɒUYER(@ˢ3 HAI~vfνsO_ k`pv^<ܐHQ rS8n} & M$36yΚ ҕ@ hMxA`ͺq A<>AqU !-+čY8nRSS( STfXHT\ϰ M9* Z踲 $Ik֬i+s 8FKH*Bϫ(PO֠`S@ʕU T e|>_^^!>! >VUp k}*b MY$<)f"#pMɄH]dm4 |:dv,0! 2E~EB(,me ;lsqB ^O'/X _Icɡ$m5ӊ$ `y#8xRY#8Xf6/Cwp%q}}{ܚ:µiCpq0(wEiͯG  @A9R 2fnC~L PU;;{˲ qs;Kd^ד5O_G G뺂KׄgMجU_@8{:Xhg蠁K8iTU'D+,˶DEE&$$,~F鉲fiXa5m"ɜNz+ODuHz==sl;#|A"}K|Ah)C# It-G0!<0+}N YlHRXgfHsO(>D;lH %):v rNIJ#~@ASS{iHK6@ +ݍHOOu@ ۅpV.G3FT8/8GxBз܌Y8MS.};36r+4 =NOO$h=6.%ZO4tcdxDeQWhu7^Ex(㙚JKOv*Yn3nN'jz!:(":ŗ)osCCncq,F֭Eqhhhxx8)9 ›{ȭ J !qlA rONLz~ǥ߆DӴbY9z#DQdF($Bȕɉo5frsc97dY #1qYG,3ݑ)#Qv}>f3{dsz(B4Bnߙ)!4=55522c̅Xp8V (J~r`Q#Ga,ȸ;؈_!BA@[HV2 A^WcjksN%7rEjEB@$EQ@kvc_xaH$I&66:*Jn-Y70006>NXa7U˙!+!>~hDsB=oHtMH! B}}@jL-G3 qqq.khA eDV[H֬ Ҽ ,K]a\ +dxRsM7rCY x;,900tZ-j vf/DMK|^oAAJh3NQTccc|||Td$q[_G ᭁ;bR!un-566$,%_*7p5nh@H&&rssWȼe[ZZFGGҜhi倥tqQu3 rrr^* (jrr11113as͟f{#4g|e¬x]X|jj`Y%wttZWUIDiFSrsr'rD֎rFQ=\QQ$:9DGbbB}v\7qa&ӄ~AA~lL20q] Vif( :uY[&t2  l6ۭAPU%**JY.-u#PtH 04ECwI 364nWO,ݠD4ˀy?(z8S IW[4%sP ̴D4 -6 qH34y38o-\V-gAhY_YYDw&X^HHBHнbo$ܣ!HxPduChŒ4gMf!iS&lfq@Ch UM5 6Qt:޸>1A$-%&\q B XP o얺 1-qnI=>!t5 oZv!MS=.4L)4s>Y;`啟8_DŽ"s?eifMfΜ0d4gue 0AҼpb8t*@X@<=0 @FpY uc7 XM vX -<3_,,XEh#66-$i g5aCds!RRQs~@$A^ń!k^yƜH&m55m#.e%4hŧ9y* \WbS6UKpT oJ;D( }yRo`&msJöj/Tx :b[:A16Elzȵa7za`YCK-F g?g#Q')HÅK0en. lv$ 䩆i8 8п0a)mǐ'H 4$ IDAT#UfQwZCI%χ4jVKpxxyQѣu)Lk\Z|s HΡQvUap,s&t79)ёNhw}MMH+0=nS !][77&ڢz皞F{%P,Kʽ]|T%uHeD䠵7$EA$85gc`ukɩ]˄Q]c贳2L4$u@scC\vZGgPkme}8 U56RGK& I`Hv+B Y{B$^;%!})KR!###E{2r84 L;`E0M쭩 1qPA D7L&$dllb^mѯqupGe"c奇{GbHM L uL#! Fo!QrconxeZQ,K#M9)R?S?(%H$0J*/̶3jW*;*[)w^w=i s 25oqY SlLvp?zHwΎ hM}kD$<'Ksvs%#U{ #tu<^ $I 2mw4^;_irO֝wYvL1o###/ՐCAUoOm-e di}t0q[I6|O+(+MIpJq[huT\\I+?ɯF"J2ßr$t{^R<5o{bGwS:wڢHxTNM+OU)k-3SxeY{kKS YT݁+ g[ar_(_q|"f\'HU? TbQv2XȺː1XVLOOEG\zgd]BW|iVr̓ sS~ (, >3e7t痥E o68\uWrLXe(CU/)6(qsޘD#) yTm@g>{rXWNz&+/NQEىǟ+SJ*b(Y!mLS6P~OjI+ޚA0t 83gv>pg~|t/-+v6Ƌrw֌Q9ӉRePGmͰNL"k(Hsk8/9$Au~LLTMzg; ŢYr]b0M:>glܙi 1pAw{Νh y=pv8n]NHia0lv%b9n ؂q,6^ypv W`q(`˚ k[cqƒ>N$I^7>>~!F '+?O*%oޘ)y^>~/z}qzONOǹ9䩗6iQjJ# 1ue؂mGzᨐ[ek/TƼ$)+:_?mIWny?j~gN޳>{?Hg643pX}$f= 1' U6rOG7Oo]8{줒̆s/z"hAxTyǓ"@3-C/V$V Շ~3pL19yhw x<=O~<ٰ;hݻ'L0,8:J=} h:Udb+k0r|~ۧ^B=C39[w߳)>c~Ru[mue, &Z:;+H.b 3Z^$ͱȉzXOFHj?'4:|ow|;/n|"'_@!tOӧzK`(izߜ8JIlD]>а@m@,8xm*:19-usQxtgoҿ¦??_w^_n;2|;oy[6`x?rTuҙےrK֜mir041:Ѣe*ke{0.>o;Skc|kj1r>FW&iV;qfI3zOcdDP,8z?tMRhܜQlNcŊo`XuGdp1q~JkZJGuٿ̀'c|bN9O4E T?>.%iP:>>SR9U~יa?|#g /ϛGN}_y^"2)^zKRKn8|mSog&OAI.+K%-./I&:x|ϳ0qNbT ;g?vWV}Qv n=늇ᓃ(H5jK+FۙS-3z*M L)E~uym WGwmTB!ycll[Zegr˙1^d_UcQ-?ȚUG9TQ5.,oB5"|k\8|˫b|ff1.v[&g;gsmTآ kŭ$anݶG6%% 3 ޯ.t[P8O%1 7If?yv[xg oN>sgm5ǣ};ڑ O6-VS 1tON*to `uoȧ7 2{ȤYV9Ρ v[Nu~bǟîWw|#XȚ02̿=?qvaBز֯ImCDlZmcuc[b(FET$1!tuE3a$G 8IHƩtLdB dh}'>YwIlOWj_:qP P@Yt=lsE/#?Tk㮇&zaXwڀNj>mNEMfd#O7!Wr KEzMO<{`-m'Hu3oa7>'0͜"C8Rt cFO><Ω 讵?7qY/׹K#8P#Wϋ*Rer?MN_\j|jO?bf/K w혌ŗS8/ *8M@:]ٻ\[2\rn/8g;m{bl6ԅD |%&{:~`xﹷ.jz&Ʉ?x2pQgPcg$G|,GЌVcg荣-eSG:uW~7n)_Oq`mȉ!s2&'vn-L-XsꅦƁ]<4.֍¬Of҆G1΃vh|05DŔ([~XǶ4{Z8og˳?qlYW!C"8Aq_8y i:xssޘ9Rb>=S~?%)+wbPMHL7(WVڏ{/oU.Ch3Ff|>g&;O (.37O(رk{iBѦ6wߝ`~@O{xzΐ+;i5Hסu-93vÎ$xTߦ-_yqzHҕKĈ+&Lw0mzȤ48?4!3X0A9* PNUYr9WR 229{ԛoWY޽#_9&PB|𩝅U{"SDfd'0-=a$#c͗!Ԩ{b~@߾+W<_tގM}znQ ى!bQ $_,(LG04EBB=*H(aDӁC!2>v֞xX皊 %f&3C]zڒ, O*۔f8 ^sV^fy@N8m\DsظmA*BKz9!$( N%(##zTiYt3> ck",RQL Y;X޼86pl컶fV>Vխtyχ8BijQ3sD%t<bT ;o֭%6ҜWd!^c{; pZQ4d$'E2}g^{9&gsQ*IwS`GȞJ'F[M4h+TMq旁hGfg[:Y#}(chu?-OЂ" uTY[+SmSn!Y%y#4FBャ3Mut};C'XuG8[G;"V4k>KnܶE1qMij뚌_̈E%qٳ̀ .am)K$ASЅ j 6S3XL(ؒL zs-чN@#=iyY"qgLt>3dH.ِlSrHiI]=ުڮE5_ؾk0z~}fz51/7E )v=f:툎}imٖA*"E#w|/IsA@t cb" Fm)IE*([zF!`In/S}m+mqER/U}Ӻ#{OQ[4PqJ0*CHYH_r^q, brҜmh2t AܢT:<:3U>lqoyY^V^l8~k(Zt5NL4v۲ 0򁎧W,*0O|>{w44̼9E,0boSyn2mv֋}S=\J~XЯmp`h>X"b&Wަ5.09o5" IDATry_U {=-C7) !]`f'OưM tpbpn\v7Ե!g!@אdYjb0(پ3|kI-hkq|[F[ZaVdgӨ2N_J}}P!h-ro|vC kw)R'+sB$++ <}^|p##7Ҧg|L{Kb:ꇙM} @E?c}+*GQGe#8vB3y鯐 Oux䟑D A&q,b|FᆢwV$GE&ePi0? ȡ 7tz>\WTCe\R\ g<.HϜmT@&Wμh$}~*lgyPӅu{2O)/t߃f:Fd넽_|,Z0;X/DHZ pf^,S 3)rB6dIUmD $ĥl(wҭݴ5>0AR^q16 Oz^Q`ƕC3)QBtţ_c&]:xNO芦1hybDLWSnAJ喭}_p(,H_@ͬo 5V9Pwm/J |ROVc!uDT-=CCɰa lB^\~sUD3hH `)k ﹫8KL*--mQɥ%i-uiRJrRg@-ÑN䐪q#%=N)*dWlZO~y@]c 8_ ; dyL*(-ݰM頳u,͋lK2. Zb#\"E7p,ʒA9!`'$o 1vEHhb ']M͓(>1+t=eNWB;z3+)˜jw 8.)X+ 冈 I;׵(2ůk_p^:e.vhF"nv%O [^BU≁c{~=bVn# }[v纴_aCUI~M^a pOG|+TG*SFѬ޺"4A3cC𩴍 _Bh^ wݹ%wܔ!83hH-r"MlY!$o>ynR"iBl g=ӿ;;]oV:WxCfKܱL멮jhs'oUm|@ADUl(\`[A7%1s h-`v*k! P #p,T e:bKァ(-VLXW\}ywl0i듩.@kS'MV~MCf5NA9qc# ,DaG=(&BX&6n 4_V5t橾9v?5gؒt47knQa@HuE[ڹ!f3`K(* Qw%j(׬iiՠY #16M(X:h)CQ ăp9)h13s'du ~~F%,7 /~>k]9ZwKetֻd pI*(c68Oh C k9:\d_ '"޷jb7k_?spD,sk7o:_"*6fE*OSfTϨY (]^:>OFbp lh7utm]JH%).$$[i"判 oz":R$ !ifmM]Sdli~P΋wxȕ;5{}??~.W˯5Nxˊ,+2Y=)X3{ԍԐ,2 1ubX xo#R\)hc UV5h&((AU#H %(#噅: ŷ!"PЏWPhWfI>1 SB_k{qR(hn+d蚎k&fd2ad͖_>umCէۉٷ_7i#2 bԍe܇zV*Ѫ&i* CW$Ӎf(^n6r{`#*kwcIS?G YɚUd説 \_9交@zh83AE5IEE #Q$#(|O*\1[I%7{5ype;zMRVq@7IrIſ7:ơqeH*)ƆiaүL w?~=NMN?#.bilǁr!pkQCޢM 2T,iY Y L]|}#&M\Dl{u0yp7&%IP$YTeIPbs Q%E#&)]0@2ʍȌPc]S[kWȹt]X Gfkd  A@ P{/;|1zʗ5Ȑ' IQUl;O:󶖦9UҴo*gqB<)͵⺮+g6ɒԣa^sv`HːHeB~UABHUVfML+3꛻ۻ||rYnr;8?$P4]a(nFP76 Iq" CSҼ}C +:άxuzx2t4`*HOBVtdȊ5me&Aфoȡ퟼?ہ4"! /+=5vnv67#%B& #>ѓ2d̊ؼ|g~Z,*/>)64þi'b5ꌻoL@LwjCA|t%# *NgFL{BN4`ȲrY9 z>TG#s88UST ;r ]DMu[s #gŕ "QmNgi_^Ok5"irl6yf @cb od.V֭G ]M X;%fEcCIC"Ū3\fa&SEJP.v-`קMD1:>0MZкZld,E1}9Ǧ2@s;;{78Ͻ>X@Ж2T+H!wvy !װ v[)tTtZ" $^݅u|;sOzc}J~kN@rD+[6-+C4 Q0.P{.6!{踮\sn3  *H$[ݖ%JNK'Ne%/yqRؖՋ)Y(^` wLu@"AHƷ6/ysv9uzrnhCMCm*X9v,M-n2B.*$z*A\05U%,BYHe08?,nXlܷ7 \Bغ 70 )O "xDHW.YZ'OʎPcJɓC3oOan7g䤛[W¿qS&g-U۸Μ*g &nfK񾦖^BW1ɴO7ׯ˱汞@0&i w۪Nw[CFW 7DFwGL@!;l Vgu"Г% #)K77dYGFe&Xra{osRRPL*5ԑ4 `=)CPytwp,%Wu:ᯮ.FQubTM?gT*EY]xJ6,xrOAdNkFes-2ݗR:Ky k|-m|ݶjtadžWV0u=}T\`X>eqdξk,̜x}RF2Y MqAPnKp 7{TwdqC徒5떿_4˱WU>K@1a(D@[E)tY5Çu ߶mS9ͻ^?_SlCDױ~>— (9..呻2!CY."ɤL o_ ⛾qvR$B`rVI.ũgԁcoq0MSJ"j*g8-y qsK7xHh@-JfٚjZTtMNgDz5I$PTh=t ή+%|ti-3=ԃjl߬Y٩@=~soOY={sO/LAyLYcT͝=D4e:o>#IhғzN;!LYO%U۶ ![Ie53$iHfnjŽWdⅷ>r컿ۺ쩿/D.EӦJ{h7Ua?vW}%K(SQq2LMemH=KW/w믭۾z gSWK p6;3.+CkhmqdTZ/<5(;`ZRbG7pY"|}e.[_/>.%4yöK8/N9ݗvaSTX{W# g+]CA\oIYUOӿu_\Y?Ue}vdW4%ba%[H% W #+׬ܴg>YLs-IY)EXȱ{ W,Lg.9`5h("3V;S@ ;d6)[2{˟㴤_ŵweXkW"nZ2)\o(:],M1!D͑LO>3dПVHyabSνֿ,<'l\7`=&JNqxCuUW/ԣ'sn즬 Gos().Sk{{_ݟWK'G)"I EZc۶7GUD(Is'ה;ok=ZO f8D,~k KΦE.dQrN15l~oŬzdEW ׏-Le߀Qf,l<EyURS%٭"I7H,YTNRW,(,)t0N T2ҟ@aa[$x$eWz9-`Y˲e2Ӽaw @s.8(^>[Ȝ&P }dB}}(?j^> B3ry@$g/k`TJF GZ[ fsJX-N֣<Ӫ]<}ϖ{QMC{`LxyXh476%א3A/㲱HL!eEHI|~I R?jqsrrr*++t"E(P`?4R*Zj;@~%!%{[-ztOw Pcc LMP2DdP).P6bXͲLh F"K T७t$Tdyr h% 0==b6| ]rZJ2x~ƴH-gτe+C} IDATцj#<2 !q)KKQ!O啔h63 $+Ã(*+Lx AK hI[!/gTmtcϰX|/ed48X/m.ypK@O_0ޢYUKn@ eZ4?o;ӝEE9@\X(3eeT_F>CI TgD8UͰ_|NrZMePFR\~b P/تY[5! 1(Ḓ(ϣP_ K =R?*¢Z!KFR9)鮬-YdD֮ld:SXZ;(Bφ{{z国`QE>6 红beH lt:dRYv܆-/" D8PeH%D%d(U< ^TYch`ܹsEE%%%cDف`TfK )۠8Vvm좊U /2d/RVvl6ں IY_Qy>E# WZS㡁4Q(Si sCb~YrNS Oy^YEj&ӗ _plꉁ@(ىpPF©AEAKB esWbє=( +gXO_ P,lElK @!BAiCI(-*g͠r+JՍ/x.ClD$*@CdZTUTY+jj x?m| BQ(c01@.kɀT84\k|[eٮ.E-[vMf`D-)e,S[ZR*ͨ\^ْؗG;КyK.`pGbȄ:uhy({:$ YĜ'lm02@x#sy^2yt0+ʪ#OUya'{{zV,_=1J/<6n:1f/^6U5a+PºKQd=4ҢEF$)IL PH@V( Y; i?'Xq,3)lyY^˲<I_@Lfy#!-Ss/{8ok?0ζhK:1Vb<ǐuಢ !N=e(8E^\hJRqbx5fxv$EǦ踽]٬스9=k$qjܺ& P*E )jb8w\AAaAA m=Kj]T&:IRϟ70 \=T ôsSQQ1LPήٳg$9ΚIMӑH$N-Zж[_ օ M9 wc|p7mhivS;wӄ(6oԛ0Zsr|@u0J͛7*n0 YU' wdlf…׺90@OMMM~ ,-X0vTtttu@~ۥpNM: {}>p'`8 DeMv͘kop$w.Yu1i5n;aYRiFѤp|D`.4M7ty78Za32~)pUː$ĀYssDŽr-K {| Oђ(mC𯃖DBC;ZJQ ᚰx,f&qɄL&>&(˲Yx|Gˑ$ixUNn| iz<:::̙Y|P0a1L36!z8y)<^G|˲dEbtzAUt nb[ZZz{{ 8u<޶{fqu$IN7 JeI:mM #Juuu!x<32>Ƀs<^oOOHyMǥ&,:8fKJK6M377?gYNm[մ`0*))q'-30 #''' vvvVTTG:ׄلnbIѴ S.e1 |gWEQBCZn*%IR8eT'\|)7BaA]x=> 22M!TRR²vF !\_ƶ, 77&2e믧Rh4 &TOnY NJ`Q>A٦i$YZZJQGhRufLYP($"6lM&/((əFܕ'l81ZEEELq&MYqEQB?͘&ۄQUZZ^O9 mB!YI2ⓥ\ץL-7XCp9*$IQ,lvĴL=|xwCndAV-Ɍtؔ0r˲^OɆ{ !Jȧ4MdEMiZUU˚]$IQ%I$-Z1W a;߲,OD"1S0>gf0ťLFUrEy^FuS=䈢8s B\фMxhx8>&݊_L8m,iӽ˲^YI Wdo;̕i]ƹ^ܭ8m90,i\,3򩅻pȤw{O\2~`fm<!IҌO-fLFrq8Siħ s7ۆi_p["777E<ݏ&ʒmC72l{{{SSʕ+OP(YX0'0h'¾2-Q`ss3`f &-VKKK^^^yYDZNJ'|0!on_UT*Ԃ={oo7ͯ]UjA(t< J0L6Ҳb M6)Bw…9>#>&4-I e)q$I---%%: 'h9VT%H`60WW/u-tlV(dre奓zTr4 8ohhbS&7B;So@eY&U> ]Ye\|"['87 VPUղ2]ׯܒ?Ahڴ%p7M4B("!cj>ˁiy|<Bng4Mkڇr3p<'|M^˹a+' q1vHz827}8!DŽ<_O7չtCpa>nН?>Qōx r3_˱$"qT{DOVw9?)࢔&in쁛r7BM˼n2N9%.'rot idi3%SwRu6aN9һ&~ 1 Xa2#`R7,,p]oaIHܩ $U@nx3fTۖ 9%X6@4,¦&n@ $$,]%t(R"fXz(i/mrEPj >il YΏwJTI5&(WUMs¨g 0ayLZ5mF p5VD"s6 YE&+IXShM ҔCUE1mp)Eu.;v{l G*bZ6!γ>5Dd嚵 |9?~$!Ǘ1V$ I,y`,K@C;bEAAm[b8ϨbZ*CVqYebZLҸ)D[,1^5l'9&1U)+k"<aEI\!R@JZ`q^/+m;Oִ([ "v,9-jxAkId=*SW&ό+~4QHsl#.G`t%#jkfqƶ Hb~.M̲=iՌ((SUL3{pczS'W8,ű UI'1tMQ Ȫn,7CZضz}4aiZe'p՛'"f/#x9RӒ~Ue k.Mh*YQP/08*hU'H,euEPgt1k@Bݾz=UoSmP5)# lHvC [j`}ݾ*:TIzfMv%n&R$ ⊬662R$2%& 8q^Lv$f)euhGT޽jmLdp25ɒfYcA8Y]58j,K% ?(rGVْ>vW͚TS" Xfy5aC s4^# =b)EPCYb6lۦ\hKngYQ?=ڈzhBfaS|,YlMKZF4.6n>G@46@fKe8 R0C%Vf^au`: Qx)KJKWwk=!Gڈe`;N%rKxlc=:s|W:4?߻}8~C&9MJp@5blϙCZrEX}vIiIcl^P&QTtqm)9\/e4 ۷o 2y"?)C[y敕zq>PkGI$IHZ\8t.ȣ,ò-( 5'۸J޳c9+rH92nz<+BWVvvoK//Avͻ뢦w֬bZRuϖmkH߼9%,/ Y[N"1eY...aqMWU6R9,l3vكG;@Y i v=$4Mspx>>qpOSR(/A"xAFhUH 88~! TgZl;Z}g=G8S-Cd2iFIi9NmU IDAT0s+xXNuݲq.xViFJosBIEYLv] ~3 mQKd8aYNN+2 ڎlWK+ʌ;td((36awOGnrʋ/rͥs~OQj<xhF;g iE. M=<jk@4L 9r\vn2\>˶ W/r+x֝"RvCII!`KmN9yl]PRVGkgrKJx۰wnpt}urNiqm6CdgἲY n y"]ń#ڳ""t};w:,9e 4ںyO}Ι5h 2MӀFKL0ZhUTC`ciޘ@Rf[ +,6`K(m_,n0 uZf/^72 -$njQF qmJJ9hQ,8sǞ~ː8}pϾGO:Ҋgt?s}=$]|hfX]C_Q (R`ˊsa$m[k0+~`]#ȫ,)w<}3qo{lkM)Fm/?|d^͋aBm/?lx= 3`hMBE*fW}v#zW^J14mHhh 4] CD_!᧱&hR5¯~nMR Rƙm)wtB7}  Ҍ"s_}qIxw0ֵjyG#L@3~=}#ܽv, +qF`͵)f*JH5EKճocYѳ粷$1rۮ|h2S7) -FY+$ê{_}UܟHwYK<,M'<̟L/lsorjkV7GOUD}z׿\y?9r%돟rʞ8~"489#zl H,Xk}p:_K*)}рvu$˪Urϑ-kG6oKGk/CY'?0OkCuͥkG6xcGUΒ h_p c.ܿwhup ?"5V *cpH@WOXj aghZ=\k~TT=z_<{|SkxZ05}e/EY%ʉ ]ۉݛ7PJwW>{G[lnϻo}nJIi1+/YSt{N~["^yu(sO~/y,R|oϭ@u Øgvnw|<$kCsMk0+~S{6_NtGq[q%_qf- "͵}cEognޕxkf9YzY~򳚓U{]Kr҇?y{NTp=!}[J]{2aPkK`ު*Cgu#Ez_יGFu/|o+k^yx_ҞoJ+!$$IN׷a>W{3UH"rg2/<>ウ 3ǿs# }dA:[.]{ƞt;ҁ߻Fּ~OU7Dj#G۷??~ͽe#Fr'iHvxMX,Xxg{{gzzBcu 3m`ۤ d:<㞨İѳ_. DX]I!bB['|_٦s =V~WЂ ~]yOl++.啺;[\ƣ,xKtiWBV)]o5#_| qa˦z]mz'KAfN*}}"V,@ (7&vţ'ﺏUS ӆ=55b!~j]8]u4oVy"ܪ>rM _BC&2x<u/[K#qOny۷={֕xR;p*^gg駇OtzӉo/}vnYRavyȶL )-j:?7Giɢ@HdXZv< >g˳-ީSY>.?,C)@)KWe)/™{N/FMjZЋ?_l]'w}O,lY{'3ׇ|4 #'v^FI*L,},]w[噎fcj{be_\]E:qDIN ?xEp {e!k4T_}xbq4ƍ\c]ڜe˸tp@+UX=Bm)Rj(MIVպ=ЮAw̙Sᒇz,\IIPl̟?{1+#G=<}fdv,SPU\L6aIC[y4 -oGD*>6uHM =&a!wTDXP_>i 3)82 h2RcZ.ۿiC-}AEb)FG^˟v_Oܱor S um~UhM50 g`JK}FX8̞7|=' v)Ao#[.'ޓ}jǶ@*]o84loVʛj\hf-%/}45N4,JnE+/FϜ5#@l!4P}N Brl,HL|?#ɯ>ם_;*^)@ $@<+T4|Tos{@ȯtTUdźr/@~X>+?C{hB^eszd`ᒦ:["яm,]3+<@Ĝ;ZQ`Um"QK_}!r:͓&z^bt/,b}I/(vϝHF2h4.Zt_xxA{x`QVt$ QywGW{?K_JxjxSt+xjx@ %y>rh0ﳵoȹQh_r,8F~c??Z(vmz`ʅ cF8=u**6+jؒMTq [xU ^<ѫyVυ@E <~C#btw_مHk|wl~/~xinlxX7ǫ\Xx~& kҬYH7WeYt@ÂR"W{{",2_~WFM̯,<#W970X{Co?]ںi_AcϜeU )韥!Hֵe+t-hwE2*Vޢ'^[hR@@󉢠uGʺ*s xJs*-X3/9C}8GoNsʻ*p @iWDZo:JO;O4xwe}cN}yyy'ԑ1#5SB40C~^BF.+Cwʾ7~GK~/^'vzǞSH[T5~Gg2tDOf]Sj3,5Og_Y10'@h+]. uJU< wcUT) Dl+ .пk@(jApJS,{?<ËuM96K:5<7ZNlx[s/(/`kK;?[kv"n͕W1>#WEñsa&?nv 謅uy '/,OVPG,@_,]kC㎝w_drB9ͫ'W- !Ħn&!Lq"/r+.l cR # YE-_߹CκŒeK229_qR464S`ZdCbF iB! J&GCR^}eo`@"s,@2tJ '0? IDATxk+ب[9UMYh!vjFLfg]Yfʊ-P* Cu?6WKDhh<_f9hibPlfY@B}b.yu91=Yifg"i+^hr_$Sb3ز(O| JQ Lg[T=⽥%>@mHEa$iASjq%P,|í),Âe n,*MOK{<5Y>:0и:q_'ْ`L*NYtu#J-9 }o\KkXd4PBo# LS$p#b ԱwTȪyl!Ow ==CUS9t +g%+WVqKwN ah_mZl6J8Pšbpb߽?uc=z]r8+-#@1Ȼνvd=ڪB'3h2#VB-c[XHw/]+/Bޑ0 9¬v{\q9uTl$tn]ewX= xs*taˆv%dXV;ij'HXƤJ8,hjJx=1b x%ŠPw-GNoEz0)(R?^Ҙ#{|ugK%]vb_%~ @`5$+x/@5^ӄо}sLcLÊ.'W. חHxu%s`*~tIv<`cCQXWT  -.G({Y='޾{.:ʈʊmtW/jZ F!B;6lՏ=s_Su)sKuf}J@QM9  /ݵ9Gxma#haӲ0E4tDђHuUy4_VY}I+:*ilrG/>/[mc¦J^3# l NpEЊ3_ViѸfYl(ɴvF 2FjC`MF@zW7.sykFB2Z O/_ cJb6|&<ÍPf1P6Sq2L{sM12}oBh%p89DBBMmu~֕ycc&u ӌgC z T+1}{kސ=ZD[붟ɈAM'_~欸;Y佼81KLOrice>&h 4Y |KrYSh:Ἅh:nBxaey#i r\!2G `EBvM?;e7R@r\1c!p.7KHF{*ۘEP=2q31.2p_T1+8x˹aj:?gͧ<3ˋnk7 ;-2;YDSih^Z?k[Eq0{+eE#G#@VYzn(KIg" ;aë `D`ϡYK!s$-ӎ)q @'T=́CjzmA4G}s`~j)EފeY<Q\5ArF:v;z0H6{zٴlq@z1":&/kǟd}reXoVZ0bQ+ tF^@o9æPe%ȫaZud\ʅUo8џ^\Y\A%G<صu:x9{{fW;֤Ys|ة#} 1kdyz~ y]HlE 2E_م3.X;ʅMzye[9WG4v{VmmoxL*F:o'JxzʈTSpJ/l;'w ^ތThωqO;CZALM[$^%5VЅ/*!\'bhHG@Ǿ2eA %.zI@ ʛGZ|b5Tt;JPwtR%)F@ǦuE S.[+9q H|gopR.zu,b 7ӗΩpb$AҸ  .3shׯm*@FIrgBFiD ھ~pgJs^ QٶJxLD^'yGbRHUaȹi*0L" 0`7EEGlѵ1 |;>PYC6^&"gI[>f$gsÃ#XX@< Yu|$$TS!X:YY9EKU B-@)u'jpbq7vH3)N:aچ7,ڶPhGH֎ёGuΓ[UUJܷ_]dbAGk@]ջW,X|G.kj! xJS$p?F6:2(5deENreTb;7}vo•Wmg:BZ$7'۵zs S\[, ~ᔇ ipI1 ӕKeF;Э}=N7gsx'}__V]V{joA]ھt|WDG .6:w>?@o:]c)g$ϒc䮦2ϟY\Wi3kl6r?2&Mb=۾zv  Xek1i~|dў;ZeYFיS{zi\tgN-f< Z¶XsZ+lvWtiƦOC}nڬ%9-{׭kQWb  TSwxhۖqwy}MMy^-Gv%&=z\Q1+d3L-nLrd9uhֳ%)lExWC #<`*o><sIfY-iomDi9mcv~}"^\!`;/Iu&`3 Y /)9w:85:J{/[q߃lϾ8+ ed b)xj#w|% GqzMMi̞hak*&F\5r,bVܢ7gfH[*iDtb-+t ˎvbkKdAl[[CقZO<*]X#igN <1}@IE;t%ޫw"XqQml| if EO^};cx֭5؎cέ[ eu徫0*r0p܄u 2Uu5>r %yeY7~ͺs6𖽧o(Ko߻hЦjȅzB[5JՖ;mnsPy >^ىF!Q ʾ Co-o367=w\^W}80F.IDNlXߊj_Y B<6i߾RԼhZرU\T"M?_NY80i ؂@^钦|^|| FT‰]hx2!::)U"M+P)sfqC!ջyS:y{{fcst93<:z\4/(G[6QCmg5ԓ1 vxlӰl :͍ʖ,lnM9b J.B_/))D!G0C#e$jW>'V|w-=^53fRqnUJ`n]Qh(F-D;E#/mV<l:zlbsnH QϟC}οlǟ]Qud=rؙVꙻfp"O*Hc;gBZdr.ijv*m̈́Ѱ9Div: e ھ_ŢSk[K_?+yno@Il9E3$mwbE_:n??81,ގ}U67{<^!D6U_xSLZQduڿisjkX)O>89Ɠ6t 3s$tF]T`1)֢+V #i|&ý<86&.~~~Χ?ZEZKϏ#&:J1!%IP0׼2dE*' ,cW37o {kԠ|]7ۥXWaEK6؄y P^K%h9=UL`+ y{o?2 7V䩿>>GEeAYڜ(;L`a]CEXO#CQ $P\ ^ȣWF>_!!UḘxjljUO6.ZSx (Rb'EXb@;;xUͧv}ͺ.k<ƝbxI٨{6a&'N߼BQ%?yGΜ{W=[%oH>ɒ,yRj+"j 5għHҕi>`…Ow5#W_]9+~2wT#lβI.lr'E(r_-**`&Ep^. *o:3k\t[@iMzՕo]lfbo`tWѽ<啿_3'ѦL:,/il&dH [J kʱӲnGbm]~M0,tU Ppjj Ɋut~45ESYMrOp{b524aH" PY @1 !Ű4AS'q#VY 9X"k8_{V/VT-T$ "lAc6:<Ӟ@誦iXT,N"ūXc66 vuuZ20-DN&VfUhMleY< Dpµ쩭HK0CL@հt^&If%- 0=#Cr01"P"}42d490If N:IJb KMWE5-Jψr͎s?A9M4"21X\L 4XL6IKwqHUtC۸ 22u(m[|D#]Ų2 ©'OAAqU$[Y)"eM1XxʔG,1-+e*2fyƒGLgDUI>4ԩSe $ 10Y`;Sq )@HU6"eA64MSŰ0-}n8+74kX9SL"8菘|fvh$ dQgs2Q&\KKKߟ0t ۊm+;CCg M#s7,[px+ IDATZt XfsNM.ihDdEsiqդTq.UVTǒ`HqM\eKY65͂d$XɷT %duク#t"<#a3D5%)b%G@R稤FD-M1&@d-\#ڑhDZpzX~u֦&Fd cCUE+gO#r܁L/ED^OQ%t]p!T*~nX#+go+hRgbHpH5Byz98@Nn5kc]Eٍ˶3]f&<]]l1y KmLpr"~'%6|BS8?D{"?| hSUtv-V.պN>'b+_2*Z|i qJdwyoOR _-*tE.R&x霤'"`jd{@j4iN1}/I L Kkpl.<"l^? '-8Ctxi,-)'l*O ԯwo:]߆ "naƘy!+ii&_([CF"񸜕xiڹIIcf CfGn\@ZZڟB~}54䤕F#QTwЌ`)ԡ]!_!(Z$z:INvE8 +H5o a28ϲm|~54;DQi#$o۞Mhy撓ԓұS9j'OI3{輵s6Zq ht>e撓tζ;sY9Ls~~V cvHd^o:1 t.L&ɜ˶_Vnfq.KeUUK7؅Mp)oUfr .^#-$IIӴE͝+EQCCCP05!a43HRF˦xfţАnlđ(9wl¤WQ]g#HrўB1H3Ms>XDZ"400o <Xp8<<0gd9ef]0bFӴ. B8w\Ffz@!x9)J(7 mmm. !N=W4MQ✜9h;DI$8 VΔX)GqYeeeq>>G/qqgg)--Mrn:Viasy^<!Eihlll†Ν?EB2_Zc7U+?yx^i +x82e6]={{kfSS#˲ɬu8[T+EQ M&iՕ$:EDIYy4D!%O YYY7Wʝ%cccE^fh:K^srX ߐ0/^ES,lTw^[\\ۧ:EQ77a!@IijfM(b9Sp8n:[?6O4 Ņ놹ܼ`(4::o izhh(gf D7ʱ\AAؼvӬMӃ"ggHYvaҒӧ[HZox4--+q]I'>VNp$2::x7s2t zB'S v'r:Ә!Ͳ`8`3F(xs}-ICahhy;x"^ųGO<\MOw024X Zv SZ9ab9GP,IeYi7؅q9O/>ÜwtqoL&8z#R Iͷ D=- sa1jB046 Rvr Bm0M(ޭʭJކ#cx{aR#ML]'HFy=J%GBb9,fn$Tk#!Gq4 2-H8D/TEJ$n,GS3ybT|#9J4Fц^ǧ9ϱ kDxVoSȱrry3":9uB7ԅ1Du]F,44m+n:VOĉOc 2rI Oݺ@DK8n1$gI$D4/6 !O9 rI,'yI 2u'OM=Ku\8񔑫rJ"(%VT4Eܘq?QY~2B|2+HS$,/J(I"/) 5 cHs.K< .@SGv|7wHؼ EX4ΫI#`DQ ^n$mA*#JH;$[Hγ% pbr3 !*״r(IGs"gn|oOSR!]df?ܰŰ?8Cx33xUR@Tsw`ZjҴ;uk(qٸx{iq]a&;50%Ź,h䫠TR|70I(w zr"g<-gq!ze1J8FCK&R^2H+[֯9dBlM)ч|GooӲ I#>C;x&g8X&桍kv\Ъk(]ǴHNÞ?k\uiErƈJ9;UV{ið+8Q}Ej>%-(O,&>uh $ 9_AOn^Z][&BD{?zw_W ~~Ѧ{fEL<D(FW&a99٦y5+'Lߑݰo,bө#^3;yOKy兙%[ ֠e" rӡR )?d+*96qp0 "3ܾ7?}ЮbVyIȲҍTiK6^7=YCwz{PYZ6}'Z.0E~CJd??X*OzQ-Z#k~dUf#_o*眼VLnԧs]} T(2Ҷ4Xuk~%Dgfxx}r @c̎{qϋ, ŀu|4V^2uK|G&\0(YYW!bEuV-0"Dq&S_ы6lknBֽn]S IDAT%P8(\`E1~aڏ.<7QaуFN~<;ss*waЖ$q'8s&q~DQvWr/0ǿM/(Y!G~MPZaYWaW_AYM s~tt4##c >! mC\? ^S38l|Z?sU8i{@yXnN^E$TL6_{<+/ @ +ֱ?xʪ|@Gqf@-*d%Jڣ!)6#. 9O 5Vs#gm_tvd[Jt]&D'#nJ4/"?|y"_ZKgvorrDge$ۋq:O 0\?z:ʃ,<(u\پwoow`Ta)T(%;eq7oym^g'NNlKHl,щށ{q@IHf<={οv_rbmqN$CuvgJ:ܨ!uox,XR(/^UǤ.J3:M02sH_:ޱX H800Y8E +?7(*B(J18|>$̊P #4~xZ~h߶?|>IҤk>0<rRQ;[Q"C@s 30D$o<ዎ|ke#3{߫fģ2$Iʒ80ޥyr>iê;[Z =gWFtH=) oDѺ=NU˫G:L ʫ5 ̔U jHɃC~1i+H}~"Il%h=P]qd]$jgn)dG0C:AN\:vhu1Q8iKgQ^? D c6ͬk++?}bPPg9gp'?/_ H(ASD)?90(Z_?^ %r3Hxw'_ c=M.utzLM(-xa\]DUA"ÿ;*_g꛻[9ly|ci](fO*M>kI5՞O')•׍DKϟnp֟9vsu 7bNV$n?x?hPFC I\==9k ^|oI;(e_$8ޠ}mgNU8L7WVlUQbUmF~#\Vt_y SJ6<^3ni57w >":z'.#FGXHn;l wyi(ʎw1rdP~rͩhXul@Pq@. &klvj3ъ?}vRW0븉[*~H6kxBʚıPI=?ΞsB ~C%1x1 &~pK]$m&ejs'+*NV{kw;{i88a2({ y}n_'{:vN2,s9 S@WSݩ0X}tM_1&Z:4]8L|a(y^$-+N7ɝ75 MOlu-쿦Mw(YkApe m[LCEPk%# Sl*M _2Z^9IN!"vPzc_1+MT5,z?"܌ SMD f 2lnWՄ5;wH&yvz84u=x{7J'M67V-]|ӥd"w5_ e`Bd.acV-2"+2/z1]:N)b;^v78\>"OgSd2y'Հ/PDd^Npx]WY-۳b,q r<8V>-lWsS&k{GE}nY :Noo>6I0irbaJU;fO֗X2_кïy%L}tnZgBUIGLW̦ݟbS0Sv}smU]ې%t˲IjAә؂%JZ_nd~:{ h e۶{iXyOpao:2DLtpؖ=saˆGX:$>t>gF:RWdy536ʁkg[o=%2pRη~R gN)c& q {Omu5"( ҭ6,F~{b fW *Mkqn`ٖBzIkRbY&M74|,MM:uT2O_'lE]%gNs]4fKgX-oAZ-O>J-6tݣwx: +.| rW-I,.Zgًĥ+SYmuX-=㩗ck+aFh#v\jQItם'r_vlg1{֗bU0 QԣtM hҼg3W83nKw'q9TDCa7UFڛd=?EYe/ĕ[ŸoZ눏m3m5 35k>{ PLu}h-*+,vN.\,r#|E.ה$bx;G1o=vVFW3 +\,Vo(['(j"*&+atym`y6-s4lNVEہ:xa {Sy=&l?Ϟ-@Ξ.y?;dd~VOM+{y^B44u3-<^LaPDPzqq2B` %zoTƏ37]TѢuuLC`c74á_Wu ]Eҵ],¸/\XU'FB'f:LF-b_"^ۊP]?yaU[Q1f/W?Vxc6ܙg{]U% M[؆|,)P&dNK|;T-j7)A} @Lɛoo ^}tuExʠcܕ^{FQu+DGqBFo\(*bwc). YD7m($$*ӫ4U7?Dn ^⌋AC<] E,Woy8W[͏]G߈ H^6ÝtObX-tb0 EMP~enJ'֊2iFo|2_~7&roUڦA)aZ/5ІZGEy4&dʢ+Vg:QxVh1nTW:ډɁ4xՙNLK%2c[7;|$)zeDpe֏I.q'v?yG$,zK),ݛN]%Sܪ7ʰ*7kU5~r<[tlW2 SDێɰ~wq7/q;si ht4 -h*jv]f)z[ip׊4C<׬4m{jjzM>nUa2 bTq"Ã~\x]z.K7-k:Kx lA]IJ~Ͼ-%6~Nr8VWb]HOt*!@1}Se}<{%PqkE GZw>VWŏzor;&=RuMSMJSPERzJ/q&&мosqx=M~3+ N2髿Ͼt~h-z?$]tQ&?Fe^I,'PGqc&1#$q0~{i A*t&ރJYT)Ey $9ģ_Dkߧ{XBZnvծ?@"w5FZ/6t $>M]ނ\,Y5eEIA%yt\ZC $W'śz?t.ʚGgPi :ko^[a_@bBB ^!YťD[Ϩ4p-h*pJHڊg~Wܾ*{ȾW#1/?7Ά_W8 ű i#`N=M6ַObFKK tgM/OdUghQ %q˒.6VWv[ Mܠ#@it&2+fZO:|V(N$V$ rfa p}r^ԺxC2%j2A{3%kO5}w@AL|Bty,  j-~n^T \1wTa[">bOp{uCXA `1/@p%d:m\+2t) LdƓ<H}x*Xi$BN\؉D jh5JA'w~n*&ĺl<1vM`UM)Mͭ#fs7`2L7)}gx!pql,!6q,,JO! dhGb )J9ku.с%욠Ȣ(s`O9 M8hbd׋+-@PT@Ұ)\'ai'ã*P%4P );PIq"hPulq`%-Gϴq)L1K70e(u . AAC^ |y &(EOstK0##QCPDc{]AA H:CH `R0.#vSRi ¯ $ET^(5she\a焇~.9=%;ZI{iNӨU%'N4kb@bs uO͌k @x8F\"W>X<׌*]P(ؠ4BʣY" T]9866 ̥}?(j*\ ɧ+섮5vV^V5ؖV'-۹}q$?#P8d燧)>c@> ,*( 7f,]՝8RyɗxYY9u$޶YEs돊̢Tx|H8 in'p!_P0ʀ" &kD\|['c,aU%!DSYՍ(i"Ǐ!;v=H˜`}='n7r18p':ĉ1F'Lc+9t*nnD%\=qOs/.JtwIuuP+¸54ᇮ0GNk6PQDAdf)V}{ȱhYEѕ'L vHԫ/2FIBcȴ5 \^n]CF_Yoج6$!ye%VѓCmQi];4A{C^BϓŇq9mܪyh>2l,ȲO1&MUUҙsܑLJaI<~/ͱ;֐#%\‡Y|$"B $[vZ%SzNbӑ{+U6«:TRi ²%UU^Iu.xCL|GKz4Q, 3b5$ c9OA%O~Jv΍Y qpݓʶ`9#mjdY6j8Owz,f0l8 ݑƛ,&.Xv#_YqE`!F0&it.ht7>fy'"k5IP  S*m Kv%捧#Ied["T޴|/!sap&"ϲLT4m񚴺~Xp{վ>bWkΩ$̞7/=T^D(Y͝%8vUV8z2\:s)K)=S$!0,KWG&;qKlpZZ(\pCY0T\8tt?cXS}5JI }RUtWM5`gQ%9֊+-yI|`žX=3z!'GxaژJ*+eeifՖV%.oK"^u/yUp<Ҹ;0$[JN~pvSDM?bQ8IUQ#!?q2Z|0_)b `<-C*qBlLmrBnxDucNR&+\Ud&[2Ǔ #>De[% q'Ӡ*u-)gC!`B*>ȱ,wd,]>΋ed.4e0'(:Йodm?Mz|Sv\_Yٻ g_M_FD`@cCƋ t kIidAYNJ=tbIfvkOC F""V )aV4D1+Hq1fQqjb8}XH-YiU$6B\$6*TڨpHV*$-^7^'[.w!i|s8ÝWJFj>N{ La h| E1\/@-_]kH<{|_\ߒT& ,ds@ĪjHfYO#+Eب;K9YQ97\s`OOWi$n3+S9Az*'GXJ΄A =?’chq'ThXGe}1E r:#'(1fFQi5xS͇|eZBsc:>-" йk_(m_6Osq'wQb~~4:[N7_}?F*Y~"/uĆ Pъ("'*Ҷmo2I))6Bs;V06:v\˗|)sX3/gg:G} R ڑDV8SQs vx+?f_?"+?Xܹbx&;{[EYW|iMwQPˢ)'df<*<;tE\i^;zYS\s[TBY=nHLj#.r#wݫ <'ѩ9 u"5+fP)gr^Iywj4xpGHsd;3{\Y UVI[BNϠrAUQDNfٹE8Quf¶,ZFVž:}jONPq{zNׄMΔMWT+me(-] pGVA~]B*JPNzrr%7^޳ҝol-"‚xk4;*Ez2Y2W -N!R2r-N\VA<XGr7t/Z7x2k$yY9T$db{ֿou۟Z 7(dsO/̊^kS9,:G,i řaLGh[e)43pC> M Dt,ē v )FVj2NjKLdI[^qPEyqǦx5#)%+ 3+7IJ@oyDTI-yYJPkBNHLz.cE9%IZ})_+%ZCϚ1) p'ggvDZ(@%@m~N8vt#sMA-{hu 1i9Ĥ a0@Q4Ie+WK _&,6`S{jjmbn-:&[_ycgFI/'MȗgpgS,IU$W u Hx3L@L\neFIEh{omyk8 W}A%4MEiona@pgP44fko<&[{͵ cρSdWܘeS`jٷ4K6y*SLPTeg{,0SEgv٪=V5:S$FO54)JYuWD]87=*AaAV')C m˫OqO=-׉(aOXcr(ɶg^ ')+3bU=&%[YA(WV~Y D'?rXk3#]*N` %Q!(Gγ/n;tLŠiW4i =S1H/t+iΰANgZ&eS3h1e+\lHBYq|'fclh*Lfg;) /!؉ K}~s xY'p*צ}ٛ=H_QͽozT%EV=㘷ۜ:pFٵX\[gs9EEiwVNPf Li5 5/Z߹dq.CfԐXOHQ'^To)_k]Oa ]SDA5fp qiYrSIǎUnpf2ǡNܾdRfHdۮ2ZsJ0{fN%&=wIb .->vP]OXX4|5AWTN4S :sP~nKX]%OhbMܖxDMϴycٹe OHj[V\AFNxtzU3((4Ylz=W\nQ$j+uSS[_wtM'2Xs1_+Ձq2Xӳf`i[页{k[&04F=g+^|~u2`kK{)t FZnk,‹i@\pYHlZ鲪*K"jre4 C!PcYV3df NݨAPqMsu &Dd^f ]PUE kF=Ie Jtf1L62DsΘMFP& R(=NODo̼A3$"X;+INqSQ;Ea"<=BZR8Aiƌ2gY&5j; &|%%%v\艦pU0#IDA󓍿3|U6î4]1Iɢ(,0*p+BL*"\yf%8iI]40u>UWS9&+P EØ7PtN"$)| Ac&[f3So' Σ Eh3k\01ȉ ,pƩIWh6FtKKjIMM6.VB;0T`8NW$IL_ mAL+ Ӕf4+oı J14 `Db1XW$6[H$\TTNO <;ͦ45 #: g6%Zj/7\ظXi:[Fp'8e2:* W@yAэ #r>`3P(t[ %i GaE#nfWoƔW32q0 %.> *L" q⍤QYNf Fheh\%+0{ͯ=] ȴ O ~&x{c"PI@,BpE%nuBXQ UxWd8tÒ;䮮yEEF96MP͐5|y8.p*YP8yE)<7Cb cƁb(Q bS (cA vSϢE8>0ũk:P;7/ڲCh|edfpU`yxX; X& yNo) Z< p;E qe8 _6)qJLu< Q)QcT^%aVEUQ144aH 46 4M!/,tIa1RS;!B΃5 suQUÔP9^04L`5q61$-ësSY)9𫋰d' i(IQS /**._BSM61& τQg(glTeo)Ld@(H F_]Q0,b  M ihD =~rbǡ٩(jvNON #+42ڴAG]62J$rQ+i l?d@1T %GFPI8@盘((ȿa*C͖xi`/@UHg}2 `Y6;;{%aDDgc,<$:;;Ɣ|{U.A^JOO97Ը7 Irdd$^innvGsZNc xƏIeƔ[y rYʤi~>#It @Q4 deeeaCXXXƹ{h(jhhe#yyyw5DyssqV(q@nn.A_+!jtuui1v|0calHK'`Kr[#ha[y `z j=p[e_ 1Idb á;-z0>+rAo\`&܇-AWeĔD7"qMfu|(pS*. IDAT`NP{Mi00EA 6T62Z}n࿈(pї?hf6EQ  v]4' |+ir(:1>x G@ܣ{MM]@1շR`bIJLFǽ!a>qML&OJJ17M@A.718aZQqk,TUZÑpv+}a$:L4Dzfr(, RRSx $aYBxTؠ3`nEY|d2=|twXlV[$͈`0A7j4 AN$E\A{ EQNg`rrLt 1껥[nqIH(JKO&&z]Plap@ [Qdp ;O6ظ8 [ ADXkj%acȳK_'8M&1D(' 577;NxZݵ,Y\NE) 񂐞q[=a& f}ar0\|jljl Zl g& -3<BTtii|84pXaWQi8[0,Drxx*4MZ ؈Y(G~yV."-wQ},@^ h "](_!wXc.a,lX x^vEq!e5p"jovȣE)y&e=,?X=m{/ph}{y(]LB |[rwєuEqFgapxxhHeEQdYeQPjn>a$,$wa\0 {U1DT}>MӢ)m$Gtad 022,.4 6HvZ>OCh70Q{z{yݑ|El0EOS7]i$ /(tz<$H B|0a8n3y%0 y~`pPUU%Iw fv;G&kf?xP544a6w<Ӧ*Je'|0qItEE"(r> i...^貾{ Ǜ4BAe6wSq$: X-**l&(tl'p(H|~e}> p8HӔH0fh>QvIyhrwQ$I $1 ] (u:v",ڭ0''333#I?9tlav8垚*<$\a(#QįJ9 ]vgoB%/](UOH] bb&&'lr/ SRhz}_h6FE@bb|_IN#"j1 V%&& D_\ A8cbF}RqN3 FEEBua iŨ0dG/lÖng u rI_/. &&& rnrBȲ999u%0<aE|? 04P8Qv;a I) Iݑ1O|稐$ghwהѥi$IUB%I8i`(g@ .9Uy[ӳ(ҽoi]R$4h)$Wj_~:nBU04oh"n_,R$)_@#I.?/m ÐUv{ >GӘ?̇.sT 5=M ëuI#!5EVf? 'pȝ  MUdYh$AT~tpbbM߀* Q3$;h qPoeM;Qh~CWDx$pUC>ie%Vw$P)&:ѡܠB(0FDPʝ`v-ygŀ*1MJ` 1!qm_S49Q B rEYNtv~WI뿠NofpCStjwU0Pz=OQNJP)!GWI<&SLwD ,LaYA0zYtÅUf ,hz+c7F:C[*'f1D>0`&槶h@a]}!"&L[㎗.mK9S$$´NQ\ cN fOzM k!|B9* BoҮgq 9$kPwU~*<,fhw㖴gFq r #\O?濊*IgB#LUe KAo!ZF4OX@HR ?AΆ(~Bk0^ia㪊N71TqVڸv)i!ejpUy o㶬)Ӗ{M[ʭ6mZ}J9$UѡnbZ- Qӑv#CCLt=S:Q1bu⍖?gsM'RA [7TX]xꆺ~jCfqyL*L1]/ܯn#94<%Qfs[PHJMq Dߟ2uNq8iChsWxUENh#Cʬg|I7D1I /G~%sX@ɱ +C&BH3F IW,h,ZHB~#]*( WqiAd x0}!TE64pk"RoZs"K 9$ze}.\;c7ŀ.HdAPuy@olt"@i$Crn3JaP@װ)R!$Q͉kG0FW|.TnBz2(ExYH `"x㣣#cAA LCIW(d &H*&&AA%L8^AvX8VXFXAM@2M+FF ,/Jw9MC)89>0&gu)kl0ȉ*>-2qLBr;jBUUdb+Mz m4Ѹb9%\ 5!s39::U0i049gHb$q.xEuM+r\yvҎݵ3y*ra6 ȳTB̀:džBbhr9))Й8Avʸ&p[^Z# @ LNLX oi!*G =>6ceIi  yNA\C3HԐ] s iZmSc M+qp 586e18HVЅ>] ,<0ȘL$C,?e A xGܛp 4M16f%H_xGI7U1vSKp]~+(7k>C9 1$t*N,XĤ' `8TEeHasL9NiZߵ˃݉in 5>sM28I;((kӇ" pPn'rRpTC+M+,Y M+,'k\36:M(A 8Gǝ߰8v1 * p $ I{[nI~U`2 QDɿ@e5 \c!~'JJ< 3OY+~=n?? HMH2Fo9}]QYqFT%QVgKa׼uYi$l3mM,u=_|iKΊ3$m8q!YJ2ن֜Sy 3=ؑV]#U87P, *nHU$Miu3"T 3tp) ?(߿'.]n YQ8$Mf=q6SHc؟s*"PV÷N8*q<pSGAv~t̜ǐܸ?91qa$&$9='֝:;"sIޝjK58; m6UZiy͵ɴX0wt+k܅Vk‚$+C((j #ahRΓCƺ㎍m!N0 <YUyv)l?7?}B gJI/NO4c" Vk*r|X,k & q̚L;%J6spP^CW&$Ib:=x!?f3 y<8OeFvPPwcӠ)%7.ݳKΟbF`hm1%&7neyΜ&i8cP&vwgPCؼ% M` b&4 .mi 5lZ!4'SU!C׼Chέ{w]Tl߼+M+))hdj ;ΗUђm햓Ks(iֳWP>hG`}kcsP\Qj (mvjloivE5\-[:n2!'= ?{ǁ㧻x^Qlp bw;*:k{]V]&֟핪TG(utNO,ǽ^qq2aQ`dۅȂIgcm[q%t׉M}KC\DaA1M=;19n` V4@͖S& ASƁy]EեYPI i\f? (ͿK!lyֺ]"sLj8Sj%7yr;_dWpܷn힓==mcjVy6Rw3._X F8?vcu:'P\OdWeQV٩fɏÛϞ F/JbȂQ8MhP%EVH@;09Q@ٲvi&:7 R u5Gfg[.Yu A:+'D@d1O!pHF$1oƷ׌ 3$qgU6Lo~ɲf˷B*pչ4'W/]l"2M{7|MRjnv$ il;Gδњr {UaXmjFu^(**Խ-\ZEa<~mȽ,a(JW1@URnfZ,f,!k`P\]}|3!cP\|+E|Ɔ SXganX WQY13Q9$ ڠkq&~S"CS'7;>SU#\Be}fZ\=pPBFf|heQNG?pe5R g?xw˕޾ [\}|ޣ/]:<K˰38m;tB;KŔ'Xd uvq;/yJ==u #5RlMb b)"yzF" vN2:ZAq0C7S-(.0L/uwx`VaMuߵqѳW[JFi6Jq`tGfq\ܱv91&:w80k+% <*qq0oqW}l4;I~smWk}7,J߹~O_Iyh,p=^&GP~80lEѴl_4'-f2 ]z`~5@ʜ{3h(j S'1{ B?OcF \w6l4\۷7"J*3l$ \mmx*JuԾG7yь*xdYib1MN0]FMl=QXhXkϚ. "}r'In#e&Zn= yV\=.v $8-q~~lg34S!rtLֲǫڎ~hB˄={N/~#LC\VB\prK%/-55xZ‰(k!\0$ϯ)&ǯlW)k\yD,NS m{x1Ϙh[!46c ~iYS$5tv{_A{G'uYw$ڻ'ys2bs"@ݕơfl蓊dX)ǘ͓@0(c[  p8H({\Y}EBxj2s׺-iy%˳Ɏc}4ՆB 1av "ん='N\Za6jx@6'`PJ[:p:`^MոsWG$ '15RL=`CڍO| Ui㩶0e; |OF|Fi؎FddmCk4%FϞjbҢPGh0,'*3;>RwAZ Ibɞ+]lHR )uN`}_*42=9%VeT*0wl  1_BՃ==z|*AݟA }2 -ݽlOFR$Aq  ii6hٿy ,0u_  IDATu!y-y?9tuD}mCF޾ SZ颚{˒pcFҊӳfĠPۏnT6 yFL),JQ9_ͷ{ "~tƬV%1PUq y&{XZjÐD]m'KP >qCfNZ ݻkB0[$|>K96ڏ{c4")GPFw4A $Ӟ~[F)^ػX;?~w뷦w)LR⟴d AhRL]8 %PsTh^y\BJv2b*3 44lN{(, s] LD==K{9-LSXk]0,)SWӴ1<)b‰Ǘ(kɅ/#]wL(sw}rTŽ.L6Pin:y&rn3\vVQmY\g:eE7 U5Q0P.l?x"!Nؾ:`JoP~g+퐕1Qk۷ DÖ;v';>N.{ש2&~E)7-i<£IG+TBAov8ؚegę^4%dőPm;[8]wlYhN3vL{@S$k0 OEy WClyX&-&}zs=fj)M$hDc 4MehX~ J?t;>FF˒:7&}(w8Xd{>xocK[֟jּʼgGC#)ȉU9s U$\w8%!N- pStaIEN̜Z(J];709yXW^lq4Ե( k=uc.Ld<¼-ۏ&l5?C!ɻI /}+S˫hزl/{}` fB {]J71-Zq_-mr pfd.{_`+?|a{]sG5CƜt_w PjmX* 5:kr2PO^TGv _aPʼn>lUy/|Ɋ$"J,s{j0@[ #`c2, {i_q9ƒDu_<;.x\hZUnˀҋ+ )b!HIl .4GDDH.'VhqBt%帣o:uLb.]k7}|dX ҊsiOCKLh~c4*D|.֚*TO'[e@0ހ51ŒXaTnNz F.=0(FltYx/tf(Dй+B PE^8X@1[h+pߵqL0n1 ;S^E 31QSuen/#$yU'X.+6v^j+qJHbÉ''fphP[+-&ZkjUEթ~7yaNssCiiL.HS2F uQc=Uf@j}=!me{4|qiJt)w7t.h2_޿f>Ǽ;7mS-ĨV^QCnMD*X{ζS˼w@4EDPB) 99q^i$E9/0n\ ]4FS/'-_Qe*X,0 H}'Z4zt͟v0ܳiӹ7]Pimou56Iev-%/FPGK`Na੏i(~jEqׄ"˖D(pa!:)3moIh\ꏼ.:';ҒX0=}&X[T[c3ɖ.?ՂJP4,~l^=?%)ǟXPϾ:S̒IȢ^KD`I˼A=Ѡ-+7qۿ FMJ̌DQ?^h?*㤎>Qr @TgS+4 򟇌Gd /JS $:4r^z?v| |8\k 1ve+SF6m<,Q(y< Ys.+4wڽȶɾT~I'>4ׂG=3YFE[a$M`lNA-RFW5kfѕEeExk92 z`B0 b#Q!ƤYgFDJՃOiXg[wH&a7A_sD|NqIdΚ`${{I%V- /3HzTYԂl;)UȄL3۹Ǐs``]GxFCҚyUũCۏ4sXbٞƑ(}\!$DhdL+W> gGcyrՊ(\^sB60P`O+̎R35 Q51=5?;~kxLUj/AcW=8`J~dS~f)58j0eI"lx1 ?~lf`pMx9STFI;a^w`,soTF/ZdE<8tTҖ-(9?'MȬ_w^)p47ođj'_|`w)SE%5A9J1,K8_>>L,\/KU|z}M)dƜWd_z_a )$~iuɔ0leG_! z=xAE͜Lmnc?kf ֤L! |deFO\o~KPGoMa䜢HtA{^e쮭gE`t}ύި)GS&,~g^~J_ U,ꡗ=?xnš]Tj[4+ CtZAL|SA SjiaŅ `e~2M5UOyqm,.H[Ft9dsi2s "#$A/E lrnyo?lu #x`rq ՂE* l< sFTͳyw~mm7?*PE,|ꩧ^}r6xiYK5z˯-ɲx(Z%cBvFL" *$h%gw~sT^ IY__nTS=<+m1}ު'_yjqh{HXs˲ޖN͖Ud` ҄0#2/˱6ظ`Iψ*ԥ+GQ-)=%=oa8d0҄h?6$587ƧΩ(7o?r (|ť9߸"zݯ6 L3DN(4UEސ6я$)x` L.쁴\$ >~'PE^\<8Vuٸ xq꿂)nོf+DQ{Oo @Ei;>DV0>wMw\bPP5zU fDi @Z"̸&ɒlI.*+ͽV^%{ [no,*(Oeph<,wǕ+P~g+۶6es+|lIP}x% Nb@Q7Ȳ{D.YY"MӘG~TC)D<~omHlm`y@A.la g ̄U<Ə~~ֺaр)dDPAՌ/=1 @mfF.bq"Itl~q<t %9?JXCϢҊˋ =@npmV])Bta":U?O~ 'wI\cY3mu"&Lt~qQN.t :9)؂ޣ_vfW.ȈdNMBU&݌ 2ĆĊLZզ_KXQƬa"-w} =¡5$>V*,Մ<W1tvxgp\Uw'yKS~w߿y K}裛7KIeՅ6TVXb@e-a#?->v"0@+zJl7*yRKפM(s ә r͞kճ 畐" gUI@ܽnÈ}᪥9PKo%TYz멜OA%ROdطq0KI"Y9j,SlJ<a$J5[XI n ­16Z5#i/D5Ë]}-MeKUDh W?OVUvjф^SNC2`xhQӔ,<09$R*w$+C4M՛Grdo-9iQԯ-/|CIʲyO,/t]i H(my_ߘ"ZX{iqV5 AC^0T:36ŦΞI/r$IaNMx޴9bHIPTQ֧1jH}s(spM ɗt{ĂsBJT=vGۻLLb 44 i05|~p֊Bi]Wݳ%sX@LwPn?-1=A|G-Ph k-N3NҖ#A F ޓy& IDATI5>cX5'«e2)'WPޥ̅qwԐEsӢDC$FI^&d1<'L>{bH7Szie&Y}smX4"?TIBlpDɘLl7㣌=-nd8˄a}@ S+gκbV,*A0_`MHQ=] sSMS jYҝ LF^E() `(9;&LI)fJi 2~f\Tgg롦`9iM QV(TX[}ۏs,/<-+# w06[daQh5P}h 1VI]gπ99F\0Y>F*@8qU~{(U׉HS84Ŕj& zsQBrM'Y$E^;5$"|kE8iu*x)|N<>m'XY nWwiCr{Ybgo9x0'E ~j_hN-H4FX: پ~t nQ&FECVU/_PEYQ _ 8ES^Y U4c9. DUHge2{RH"{E#~56aևi:#ސe:o s%} Db)}ݍnu\Xms & kx‡_LJҍ疃^/y"j gk>Tmnα0vޒ9׵^Y%Ù `k@:[V-*LK.Llؾ56baIsאV^_ؓ̅ `"L)qn??gPFM qDKj'8>t`]m[{Zkwmpk`q]ocqNWD#I( O /u{`xz, I~Q;y!tp߉;7;<#no! Jh}!4"]9פd)W\Y ֽ~ᔙE ;}~,qe` 7cOc?]^W\¬bd4p4:8DXv1q΢B[}&1rvxznʥ7[FF'6Y;/ FYw+vp8ټg߱ –;τ%ֽ[g_z" _ibF8O&C)aiR:Q{E0Yĉn.􄤨9ɗc%LZuAeޠ^T))*}pySF$!n]0op j<]Pvsc^ -϶߯RyK._xmB/8Z^1KucdMA_1H‘ھJkNG⧒{8|]]{s?:kh+}$/s1J[b9I458N>oȁ}ۚ8c3[?>V::mWX{I[C,n㱵;.&kqUJ DGdM/CLeECN|=(œ(}s5ԑR8'(:4|5lJ^_y6%%FU']1l*LPto"rxHU `Qy)q8]H _<\Ʋ;BTBeMMAl-[8 1%lSn:DC29> 00؃/}4,j;K_\ʚ[W"XZ>?rC}ANDK%*rA%R#hug(efGfGJ!LFch8zJV-[ |~Ae{"IY czѤ3SRjZ #r2H4R)6!!j$hkbJR5k3#" @B2aI˰;FVDS.LH)I14Bb8r<'+zJRM٩ќcL-y%FLD:s39 RNg-ݕd˖lIH*P("A ADb&&9S3$4 tXU~Vݺ7 C'##PXꊂ2UTD0M].Oyn*Peeg혡L<1'3Sq>QZ邲??Mlx]a]MKb66:JKP3v9{Ñ=@Ձ X0JC^Lӓ~jpfv0` gfG|vФT|j:.ލ۷!U`aYՊ{hS! Vm؊)$ڶgVGG/ hDGYw,30%Xk3TX.[]7xX`3CU`NA̙6eH!mt2'y`YvY.mj`)ʨ 3ÕQg,{"KZh(81N/Ã_ٰ5*^@1yXR%T}>5OHb]IdFm𘐷a $-`,aN=Xa6]7ZV&GWo{ A4rnn  f,Bzjr*)"U;|lФtbzj*-v>6/`ެ\_r_=yLRn^j7Ahq2 j8"ADsG"A@F$Ѿ@ДT3! kd"!r({݀qb6]0kӓjW+(*C&fGy"DIYveQ`Gb!".U$ryܞHɪE!ju3xMEBDT^R G43aqc&]ΈY+N 7olNgS_[lpœ4>v?Ѝ dG}|7K ]8F"( 6nwx:4,ɷmO׮- ٳ 04]3Izh_yu6 OL!?XaEAa\hȃ:a ed}4tW ]] N^6uΝ&0 -`HX o~ {e"J-l43:wnpVo70&3KP8CAH_$p0_mgl6iI՜숛^+r=plvPVf&€#H,$&aWup]WhaaVzMN,p,OMM:hȋ:c]W/ { D p{k<"7qn3LWgCSCUE9Q(g(+#@y!,.͛həx\Ɯ[\$1N$I8ٹ6WdoNQm۷Qtede8)ed IT @1`$(qG3B>VW x$U>H73B]"74'pp$%PMtJFeܽޅH73?lr?wPTba5ȈYg Ec>J 9nNɪ\T kyqUU-+u30u<>=9HO?e>IJتǿHSQGIi>ܻzzSK}†9SvDttƲ\4B3 (,Ŋ={l4φ: D.vOurgU0'&PfmD#rs"JP찇6831й}>,hhhfqϘS~rWEH3%`Hku%\IbA}!;@Q Db' =.ofaժ -:OmPA1 τm јY-#Y'Sfes^ҬDJt@s6Ƭi Nr6,;dh2sZDJ fwp'@PaG0NVRIQhF邂R՚Tݏ~1wk3XYx:M'Ӳ;_3TaIa:LN-JV/jE1a$)0QÆr2 ucXMj.]/t'&&** 75!ihfJ$}*I#lk07bf#8AVkh,YFXSS3b$IB8 AVÎ)BNNIA#hnJ9/-n1|fW aKKa /5 #\-8E/=Jn`NR$:?2whO&SŢ(F!pQncu!4a'9*(XH% 奂4M3 L&5MII@a_} dITNT?v;K锨alUW4/"8m*i="fkP8b*% 8` 4$m(1q`dJi JWKn*'8̒#q 1G)AmJХ! 6;) v>g В3<]J$3vukC^zKЖ V}/6RR,\Iõ_ڲ%(IK) kgpEp6?ӻNJWt!iT2Ds툢cuh,f~4 d(LM$y )0W:H$-.́t:]VVi)L y\%Yz;U #I˳\9 CQ|E`NJ,Ca3 '-íMfl ƪPJg^T*WVV aiDE}.~~D0?ɒ@P$qudNMu)FZ2qJIqhRp8aז7nĂ faIEi _ګP A%%(Ɲ(fW9{(wUQ^wwwvN |Zϟےװ.6dF$wAi\:::̸E@P,-zq|!I###dVێ+c|_2 Ye ٌ_)+jOoOn^Kwz$Q[r #Ira0, /wPPdE ?_ Irxx8ͧ֏~( C1[Z~};Y,e0L¢ $_֮zWWa n䷼C~n,,rwGa膪4Mfm $4fR|I*w@RUVWp@aUrzaAn D;EgI@t]q_`.Iqwlή`0g0,<'v( C@5eQ㪬pc,Wd`:g\"0Pb0TS;Կ"f)L5) : uET`,"5`&Ҭb +gVUap9P{. ǦDɭ6CC=[bN<V'>2<"IX"!Ӆ 6I`aǧղ B&4Ms:ÎlOM85MSepp);8h, riԺxly0 H^;Da3@ah>f;``5oIv8Wt.] F"k(v-o%_ކa4 p`0NX9M&'&D(<8\]  EQ CUafozߪ]1(j. P,LNxb,s 7`HnDnkc%=~7񡡡d2ɲyk[ދㆡ-o `Fff&Admzzzxxanmr (IR$q:j~e)J__ s()˄ ,Kr eff~9 IDAT 6'NPX,ˁpE`9sXH ⪕u]$=O0IrQ[ ȗV2 e29OݭXzcwaY&B0 Y* nI ֳq:Ù0V@βl"X ȗ(( l9!h,ujl@ EIt8ǩ|T+ֲr{lX a.{ݸ=]]. 333+$&SOR:h, XVNxVv&JWOVtWpfAG} kGG}>)N*yGfq4J ^i+X V`+X V &'pCu]eyes}q6srzMBm) %O:ee\_޷uSy_XŅaE!"IҊ/9V(l-.SY$a+v$q)yxb>U$YUuM-*,u,NQԲٞd+IƜ.=EeypE;8 0+ (mv8,VN$X9,/^$ /-,ZM Z-+ t]EL(o8NӰ=\ir$)I%ua$}>)SܢK`Yu9eQ~yBu ނpì?x9ZyfC87f"b:q .W$sec!SoW̢8)BQ8-sfIz2װ~v90Y{f)lUQTMnF'azcu7Z9sKvCebnK}+aT__$0eCaAzz{t*N+G$0`v/+w;`[$/!^}}}ỷYėO8Z&M,+7>>?0GeE-[Vk XG8(ގg7|AQTGGGff*["6^Z&Pf񩩩P(xh4EyaaEL]Sի,-1 ˈ8Zዥ㺹]  S ˤ_EQ---YYYNòr+it|OKJJ^`8ONN666F"=Oaşgy<%ө¬֥X+ohh`&33cy_r!DC}}yE㹷7W Iybb"+3q(Ru@dEloxh9PICCCW\p\Vmrf jTojrrֆȢcpЬ K=O2TUպ$ 0a+'+(ͶWp ˲$hDQ;Fa8;NAC3adp(x9b}^_xJ1BJd3^ f9Ӽt7&6 MH$F+@0ei]L :ؗfh)A6(eHE4IDs`Xp#l!xQG1Fs6\E:園7 ,[ 1DEA4%(eH/)#7U@!r:%!0c)UL-W+cC1l* pK nTYĴ`¸)r]~F  EZa|B֢P%+ Ppe˦AKSDIdN[ia P%,,ahMEJh8)s`R*ku-]:fC@p!J*CS0$ :KCx:8eci]Jic i%UW}4. /c2 0FB'PCn 'Y1]xA8B*ePhtZXg 0aiT6iDS$QT %-dQMR#hU 3:۶:701<8R^EKH ,j$K MM &ec8E. bh!&LΖQ#OC1%$͜幥ջ쩡(A6/ݨMr' gR*iANQe7!a9T 9@ҩ%:_ G Xmݰ+<ۃ}G& T4Av.|8s/>#c]sg~eMcs 鑶޴;bqDOC4* 4*LvT4B$ P0Q_ۑ6GhT6O HaggE(L "+-"<;B17>1nsbhBj1fD]hwcJ&ښ$U\U;(\0:gŀiP}cJm\8sۘ*˶9tbP&TmYhO߆b'E*(GưTw}co"TPVqHLύ  ;ooAJ3J0+"pO"Ut ) 5 LP@qI3Hy]c~;jviC115^74ނ\$ Є6T3* 85(.)C+#rLo gMc%FZ {4F2BFBݰ(_UQIoP;; V#-"4ۺt.uSe 0rF8FBAON`6$9{C!TSt{m/ddwSȴ` pD4pj;y:\ZEc*ƻXM`*t})RKMhm^:ܱ8"-lAl ]!ͷ0]92;AaRWA),/Ra&ϏhBO^錻32]4PUǁ201{QN:ߞBO^ip ή4b-*A6Lt6#ea8gP (/S/0U wG~t $cq[Pf܍%8zPOGަ їYT38!#1[@S{' C1)w0#fO[s a'&:4[kG`ihWm*vSmID(4C$[jzg<مy*JXoL#\5xC}}i,CN_Q\`@n2S&5O@塶1ᆈxpgDI@dD Y+$;{D2})z2N4~0)HTW$)] a)i J;ZtF[/*pO 6rTyAG{ " 1<93BnYl~P6rF@ɓcq)ʵQ0K}[[YH EM':rchB%šsikx|^y卦)&Z~m:}e+I(gC/*پ=^ro(8pSSvɻ|7o4nƆΝP}%98p>hiܕ` W^:ft&Lp/ 0$ps?:o(Q*Fِ}璜qUP L n88I(~ӮKØ6vwoB(. aG'."EeZ ?zBOGcMTNEECs30>>'f72׬αA;׾܁ܭe6[޺ 70&h&M$ XqLp試o|/ تUDQqOrbG.t;ss {`[O͹"VRv\8H3+.0pBPRPR`08gL|e|n 1t^֗9m;?ΩȦ*-Cwia3qpC'UK#@ UծlDqk9VE)4~74(:sΆ>1,lW[_n TE闿=n4n?}㢑2ChBWmZ 6 f'b[]-(qD8a'^,'N;{\B1D/z}hb-7:)Efz`!_Ě-k효Nس?>ʕl(M1a\.u#pcO$oZ%bS~]IYZh}]:7d凰>}W.듽1L3SLxr?zipȲUN"y{XCO[.hML鳯_oVzHzM0cPpq 8zG/ؼH4<4o]iQn-(B&o T߹$.nܾqk:efTvc >tk`Fb ՞kf d1|W~acOO26qf=۪*錓=7U,]; 6goKh0T(kU'p%1/%O(}:.2K˂pA@wK]G22l/|y~$o#p&q74$ENW}-[W2NYڡ7Z 6== or%шkҀfRњ.S#/~]M5jg_:}*'$I R&mu.i;/*R2v090 _066fPaL5|M\|+S38qdMʖ[.t ל#U1( 0޼g+S>;#@gġ7P2E/̚mȢg-Գ}>ujPړggRwI֮/ .:qCh?w~C/"F?=<;#E9+s\}-ZX5~ow ]lAy%c/~'5$c,>?Z^s#{y$kՖ,/ ُ h 3ru ;.7^*hWfhGgXq~ h~t ^ּ%Da[ĭ)$c(LkgU2YC#wW) 7ӆi`&$0~ܑsܪq ΫkyD7ުhDKV^o3^ޫ6v^ܫV( ðQemjEٗÓARP//޹ѝ8؜gqp J~ G0QD(&kMmZSf:|-=uO4JN+Xw_Gz|ū2d>c]户"K(6UU:fl8Y&Y^~+ݘ*ԁW+x(0 7 $IEnyB _>$.L۳Jj:w=TYGdÉ{I_:D7߹޵oMiˊx˯o|gS8}uoOyy{/neu6q䩵EOD]HAE/e_{/u&nmYǡ!h5OT,">ԃ%h`.b?==?!'''UW"yOv7@P´1V IDATN"1"jdWgFlީ9CNp?QxSۿ9;'ʏ~|(Ųbkͩ%_r udpQ=u׿_L֚G ?|*)I,\ēUGd 5IEy׿vl/8q]-eƻ-k 8PQxIA! 7c J^9sL$#U<=DSS O=_Qpkub@ G6xDS'z+o× w u/)xymŁ3E4IGZ$CNv\&In( /.(+siéh٪KP{Dzv*Ӯ ΌwֶM k6;>8T9rrC(MS-]l~eTE+=|@6@!nA'7_xGv#dڲ0kJ#m]\WǓjFtC͕$@66Dڔ97a*޴c C=qumJ2 MTAƧO)S$#s/ veD|i:k]UAj] mi{κ5w&V#(|r0Rmw>jj˪PC[FP62?4Qhml' ´"-֧ #o(֝B7[?/5,؝s:pB8jc}c||Vkh@HLh;Wsq0$Hn݊M"4~WuBDžar~OyhuSjƻ&PYU1ڜn|ԇJOCCIilEa E_rffc)1- $C*tH)1qQ(0 ʩ\WoƘ-ZYhߠ!ٕUvy#h |a*?6=p+;o;Ae^7(ڜ7::C|7~WK#"L4^C!$03@m_mz|gFz"$IQG=5G)A)`0y|4`vź]{d=[P%$ZʋN4N"DC{<* ^S͕Q<@6=ZBYfPMVUʦ1=5w>k_JˁO{'@ &ʢd*3IdI<糛ϔL&q&;lv$kql۲zHIT޻ss@bdR$%|G8|s~co,"ApO=y.㋼/ ^`UcijvQ-Lw:nZfZi]=;y`K T{>O, c[1yn$h _/5}[;$.4E|  _! a9RVurJli箽Dȥ[6WLHR09mn,Gkπ23Q + YrL'>|Kl~!{jdF,`Y8}3IUDX >y#6'{:G6Rciۆ%lv;*A_ט_echP/|v-p1,9+;&1)%8 o?VG QŸ,93.gDnl۲xvQ˶-w@N/`s{\q#gMՒ3C0UgAuV6M~@6Wc2y,^Os:ƣwL"6ǎ5B|\+ <4 -?=rrddLB:]l*wn~;pZ g}w~ssĝW2$Ų$F:@{Pj>^ ,cf"OԖVDUǾ:U)@Si"^m;j2ckj铃zgNF7Ɓv%Fy! =~7K{ ~##`w}͎YIlO7C cmmKS8DXAc#cKݹ)Ai 0bm[oo=7-T5T3]Ǿ%Jb»wP1S{. ̣h8)Y2I*JصrJh~C-"?VTֶ=<*Z6 gOcNEM ѺmeΙ7%9mxwQ.hiHF;tb㕥9@5z.x}ͱ4P@P#"3R+^T20Jk[{܊;GHնșC6GN l`{a;όfUTE<3 j.*}t|)z-E9<R?Z3?j8.E3&PVcَڗ?7$ݹ6ǵmM񖻌xQ'2 '~aj>ݔKUUq94^UWPV~-:LkyHeĜۅt3.,i7ݧP"7V NM WZk k>[{DYvHiPAEp=:5;_w5zc;@aDLdжl\3 8.[r <󂾔<?p5&Ȫ Uy|l k0 ?e^DNu͕i?ܟh"Z>;%m!W/ ʷm&Ff~r>s 0 `N6cǟOح;wjGlђBpW?^"K l\ɪ E;$q mES}Ñ-uw-"8oq<{2xrV~7mC#3Mp|rDU}crW"ogbxЛ w*=׉-<e9>fV=g8#rǛf COvby¶  ky*q"^@' D 1[+xގӃrŵo}k UO4#u*ܠo(8]}|qSTLM1F㵻~֞|hԍh(Tmdq,7lM??tum$gK߾ϯ=$S$T~ZOIZDWyuųx*S''qP=.R0ߙc#g.cY'pYc9X#gM m5 TAuJYE@ݺ]Ye_ў~ɕ}  _\\ش}so$ڷ9vpV=e.dޅNfBtiʶ Z*77bEO?&n .q-~hpmH99p].T XTkehp&.mDmn[U޹b8Kv>}WR!+PrZvŽIH-F^`n\Iu#Mvʽݏi-Z*6,?{ykUJ^< @UA=/~;q`q $Z+IJ$-xK@Blw7M9@ (498oūg9Ƶp fp$[}ԉ,c7 E-_??zrJV$Ue uiD߸gKEsQ{P v^_u'>Qc}~JMG~o /`] }%Q<eYWH> zh 6cO.ȃ~$V>y\OZ-mosoC}m Å9ZR[(wE6572.! :8K=M~Ttd7|gͫo*Kt2TAb X0 \6@$!?|ʉ6mjʙç|D-els_1歛鱬~? 9s^TS#/497Ts)޳C80";s.[][VO-LNyO}: }{*Bf?y*˿}WcVV'{:5Ҽ<9_W`\U8 vǦ~lײ5FC K;n&^Yp{D.o).ʟ9w<sv$J/3|V eئ*f; eye)֛MԵACD\炖B4f&:Ͻ8u$Kfrwa̻DEGyiߺMr4ufds*RհL VF;NOgWVe`aagbaڔxzRxGSZvE.=IHWęJ<僙:'**rl1:TJX3/t[l K)K)-Ȝ(4`T yxwo r`zv|nԳ SQ(eN;eF cy0!N۱-[qWW 1[pIdvg{PH_dFXz^}ު(/WcgNx`*PXZ>5sWf*["~EnmoHՏ^^,8+Ñ'.)tF̟ퟎ#Y\nJ9uUgGUWBι1<.p(ǟ9Ss+X,.EoYȑYwM- zzHG2\KkJ^aqo`-[7gS-ewܱk!/td5Ufzo4ÔZqb! !.wcg12ʽ^Ϗ- "]Ƞ]w>P,h;3G |f6" R_H pŴ s #nԳ"wJ'l#<'ݎe/?Cy=BaS.yߧw쿯}{?='[Yۻܳ&6ؕ6Mi,ei <>q{ӋO~T]_iBoM'LNWAFezOk Vf>TyR|t-CA1c9Y#/?dL?tg?O?zO;dˋqs}'w/~Eo=۴Pp>?ˢ@=Ϯmoy_Vϵ(lȹ1꾛4-/7?zoLRo+eٙ3?y$^zލlκhݵg?3_Vqѹop.dX8ŌR! s]fL~S:sy9P>bfW O EH~lXMG[B%k}#,|"ZLv1绖a1Mw5^֚o-_V[%T]*,mn!8=oGvӏ?B/$ͦl>i_?[umk.jRįt*pŅc{>f^6.ysK]_&}wƻH XVC{I(MgxPo{XH}->7) ֢mgVu_żTGX0QN1 gHҚv򉿙ex73(1#=W|O'6]ּhVͽ?׿2o+cG^bZ~SL"'i9l9o~tTvͿxO|:wߊ|az^D89~wBnrGv>}0wVevmV<ו99f1@3޼‘ujܿr̵4e]50m?b8;0$-h0O%Wȹ Fzt< m_9/ϣ3^\ty u#oW_|4O}wŎWOB嶘rjW{_ZLDԝ?dФb:'_'ݟR 8Y%.aڒ(ogcZ1E+5~}-ݔ<$ {J~QGQ?5Ƽ 'E̅LЇW|x)l8ʁ^lMBYy3Za 3;s^xwR{⛇gi^z{su w=۰d (g?/㓏@~۫@SU?|aXaG1SmU3mLKki{hx;ƟoǷ:~G\]f䦻lʋK߽gTsח w]"g`R F_;@i-fg3le^)VǼ]wTG_Pګ62k$_x#Y~3|=}?>]\m4޻7?OMrȋX2;qp-nV6l@, y_ ?ZY;vc-Dqq ^jzjK*'ļ[XY!@zfbhrQUa[XW.{ɱɤͤڪ,ϴUM9IMO-//.,)"tx޵?75婹EYpr,)fEcn*iQN24m$/2=g{U#+{7C^aqzl 06$ su479nXa"($d&' $ϻ[K4999LmL;pYIk uK\YZ0h~ccCD Ci )BQO:jZyEcK$ *!OO:Rvq856Y8=Q 'RP+ޞFYx0&3c(ɏ2?3102=h_/lltnL`8خ WV!addd~~~cs<#Y"¼05za^%lMM,<É)N}߿0Ԅ%ċ'sSg!vOӓB cOMc}}nq}SMAYLM/HͮI"Ӄ󰪱8[NNϹYE Ե=ʜʼnLDqg'IH#YK9y$1pO13K[0Q G̜YHYԲUp~Zr)=E SsrԬ-c{ab:h@drt D% ;;xEE-]hMLpai TnHhbD,˝EEEWL+X==<2>@zn]ScaL' ꋁc!EqCJs}1m/Y8)nhl\EڋL,4WvƦl58?ML@0OA<9#FnIqy8q4,˶+ D> i_G\ؖb'-UdEʌҋj 851613!,;h١@]fcnrr^*13ruffPVaM,D.L,8.$rvUV_ 75G`׀TyMLLN>Er(Ksƻ@RhjbyTX s5;b1LLjnak+%9z6F"#ZC)1LU'`~[yvI%䙆8"=mj,@- D%iy>֢$iI4/:@(qrQT5e%ś|s%oY5ZǠ|}X'C{Qn@!xpv}Q("x>%U\ryAYI:o(33dsF * ~ (C}$a7yn0S3}~%аٳgu=RRR8&QFt_6"8;(\ʪT|+qW!tϝ;W[[w1,2Cw_G:>4`eimxdd$lذa!g~ 9}۴\*Ƀ9ƺ.L ]Ll}vRu1s.yw3;jD$19O1hD^.adLET ! `Uǰ*FƤkrƭ8.ۮd,og(JwweWt "t=$Y )/w,W 1:KO$K!M7Cmy,[M\3㮐˺&FC"0`1s} SΘWH4dYdMMM+8,cٮQ8r.(%O%^YSsssVB!AEU ]1}$LlX/Vtoj_C ^pw<ȕCʑ}#*g/J<˲\_bd=+}Uu H.0~ \s=QwuƟ5Vcwsg: @n\pfHD]yge C隀hp}\ -vMHD%4;`&7oMZC=8W__ е $'aԘ0hITc1CCæi644Rao2L^aUƘh2hd8ŊܳJreٳ<)ϙ"YWM~:we(Rne,71ARA #:ə]e>1$QMMt7 kwH4A#~E2dXHpF}%q|(ɚsP Vd-"A78<6H#2ҼȚ^Q4W&\焍1q0=4(iy 7Z I"+++* BٙH%e< }p;X,I%@Q;m"@922Ԉ1E̱q#x6,Ȩﺼg*Z| XrU0}}OkkkVʉ:V"%|)ZD$}?[ \+H=jM):sssLc느ϻ#haaэH$@`͠QӴkkkC7!  ,*iۀ2 c``R5T_'H455J-nZ Mٳ]w{c-x7mD]ǽX<)VWWi^avkjn $7g;Z\\"8V] <7&SY3tCCnήAWWW"}Y!˲Fj%I~\s:k![]n _Hx 8]?nI e$B}ë'L+''W^Oy `.4q-DɭeYL#q^"Iəd`N_v;#iZRN34:j \2 12F|mr^LÒD~3 !C ٔj[lB67;_UHIrzqQa(RlˉDbܫxV-# ΝR,>ae!NXFB`c訪:[0PJesTf؁uAM$TE ,EތANß IDATbΝPEh[I-.bAD"<#0H4IUDž*,93do}?++ܹscccYيc.̌OLw[ֱ Aeee AD,-7+Ta x>WaDIu8TeMEQ䮊 ,Ik>yOL,|)yk-~#AFqWCi40h4Hdee}~!$\BP}=țs8,xSUqH9TbQE[ǔ[Қ0 svU LD<xsxr4_3-i-P۶=11ρ*LB1611aY UJzIt)((D"78_Cn[&S:( eYLfE\[3z4M Cn7 AV7Nt)1pBEQ(ZwC7B\uBt:m&oAѨ$IPzS4 A 0M:IPRNuM<#)Rǻϯ+˩C:e&Ta̋K8[ʉFEQ\%B<@\R]*,z󨰐C"RNUհUPJѨIC4W DH8&,䥛C&^x5T$^lYEHlx9>KH7+pB` Ƙi4b]U}psJk RUqu Rߴ*,$Ȱ iZjq7#cX:ֱucX:AlrZ@OX!_̀&v+ J~C ­JVîߐ{vC~+bVϾ~C uMBB8zqRN3z<BUU0kH)]l\wq!ɤm$L[TWZ7EQ^4r8J|7,۶LqXQ0$(WrBȺE0H .8BxB8ڕ,@X DH{a :((J3|a{\Ǎزse`` SJӴ5 SX1b)cJ|5CFGGsrr +p`OOO2 g-x%~1.--M$Ksׯ#ckxbbbxx!ɲ!^ Bv|$dOwO$}:n466.B`xjk8x^V^-i===AXU\^wmۙ_Edq AڬqCc4$q?J|'a#ݑHDw:n<!e奫+`>31BY9ّXqd2~  66n[Ku%~ ք1~8$*/bd /$I4Y }+EUWP&ee)TP[F&\bY59,-bg볷D '+D.}ͱm> KPc+P4L_m#0ʐG覌UcPRtMA=#czeUS%k`a9рg 9QÖw2ig %YN:m("]+m#cp +qo /b:&L,e=71|x.bD/= ,^S,M"JEAt,.EU!Mg" \]PTUqimvI"a3m?x%ضEW~; AV m;G좈>]QxU~j)i&r/&1)n @=NN aQ"QU\zNZg Œ,Z[W5 YPx ,E#og2]}\I\0\WUM_DӰG,rΤW2 ɚky*. 2M wը.hÖ.Ȳ/-E$E qF)"{FD6#YýE%UIw]%w%! cDj9M؎.dq,_hp8:>KJDSor͌MQ$8LPdl I ,[Gc6 ǻXG NܲBlJ(*9|Ó-߽!8%_i]^, q]-E.堝ʬ@#*#ex\Ry}U5]g+q.$''@[>a5㪽bJ*F*HQA2% @ :}d_#W pIA(0g[[Y2H!Y]@Y7ZK*j[ ?2^.kdJU"buLNΫYF\ӹXKkĩ"Fk& x` 0PtEjFȘpm4K9 jDWĥ w.%ǎXQUmUNđWJoURn-EفkHˊr]íU DR4-Е4فZ<";}t^2=xqqx^s;Hhe2Nhx(1 4^Hܞm}ɿ$S6L?dqHL팹X1"K <쮔2W5PGQ\dWVJXMW:]ܝ̫߼F안uynJlk(F tߛ':ҠlÖRK%Bƭm뮜h#Bfٗ5[47и(zg:6q\V3>thu xI"~CCs 29tŚsIC |XTFr64e1B|`zWYŞ7噖bM CǞ=JwՈI 7*n*Ǯ QxNIN'vల(K$qC`,XV%pg ;n\ M_meѹ#/aś7WD[Y=GNM;voM0_ ?|t[viv-guE#'O5nW95p/x8D۴$U ^zݩmv6湖Dɝ;gϸ@DhY˞[:+M=9TPr@B$rl6`nϸ}{{g̚nGl09,! sYURp9o*6p͜ҩ:;WY""` '0Kwٹs GGǝVw>JR`S6:Elv)-mTxkv\di1P 8(ٗ{쐚&`r EӲ{C7wk,-^8>at2N Y/+ p XOSS؄duʰ >NSƦ 7Kռ$%أ{qQk`'e } 4=Gm,FQ¸, 1>@Dd0N9=#8N0 8q ˜ N׌0Babó4ɐ81֛>OVq|qIq \;#]"}&/z9jQO[; 7А3_|vvǤNuaGzj :ե['ž_IʽQ=n@g]AlMkM^圓#VHRtvRܦA'/uU>0R98OmA];pP1KeO:H1\x3YLE@De4LDԨk_C󰔽=kIf6&a>1m{ I^72i08"UzG՝ 0ҥ'ZMo@S_|yNI|pWNdl|J8V\ (`jrzQO 7JN]yX>A)0JQxKUe $-42NѨ{Νa*@Ga%p T:Rh-{mUs #|qcf8Aj0<LӔ̘:F &Ã>S`|pĥ2RS=e_}|n̍4,)aɃ.Ądd8bj)ЦRj;tGln>ٹVDӄ?&6.yp䩉fo+u#7ȍ4mzmQ`MY:KO~鍢zaL \ZP?{b2hK:G@[XiM6ݺY?ďe~wyAfWhͩNtLJ2 ]}(hQ>+".tؿdX4TϾ,R$*fP&q֮x-iXpLw8Y5e|2E@08I֡ äIyJk$SK׻ }FLv򓏯79en_ kqt6 })(0:aAHlŻn /<{APCB՗=t@Z"gAM:+n?(7 xϢy Dz \ =/Q ꫼wFAuxlAdehv((E}s{M2FP .<}|n<{5.}rnM`@'XWMЄֵz4$ ==AqqRܼ_aÝ&AF_)6*8G^Ш⋟;BggҋLu?)x*">IC']x_vҒ "qB0omxx3yBE$.˄} C3W?vh¤PM &6Q|F`  a;1ar0, #2+n_|X'\++zPB1^?w+hL?o mOxPXp1>X1& n^,l2o%S__ndX0sWvE" Y_ta)||8pZ-ml-/oAb}!&\̯151nvc8a;i0<Nho4L=8Tw7"@zh CAv&&&\o?8Ә߃ ?,B쉯yh5 Q9$B6;yrS%_}\ [/+yGnģ5 !:qƙч/uhNE g$$U*n~WQD_|:0B h[oáPw'A+e.% ETZ~-RA&^zkwJpyyV@q&(aνgТ{S7rgkkS^Qglܿh!uWK fSuw|49CKg=2aE J([o]H_uW76?84USDnyP'td[=ǃ:Ƈ&} xxOѤMh}h?ioKWA)'FY,PɹʁQiU2YR2'1C /EP .˒sv1(TE0?_-{G()PY`׽Sмu' ^rxLjT~ʐeEC] I"`\0~PoZfvjj h,(Ԍ5Þw`(cu %aG{dqz8PJ^@ ,( ZVzy.,"D5Y\DKol v56֒08Y ]7Cڶ0\bmD!&JEeՋGs/O7'ݺ/'˟߹7oy;/pD]{`^+2p^P暿rE@gl ^/ŗE wjښ:7+nVzzVa=, H_`Ro} y[wS=V఻3Ԑ{ɊhPʞ{c);64PaH@={t YYk\I9zӺګ똙}UEu 3'*[Rs?;]]9$= =XTX4S$EyZ|\k60X>jq1eAliz׿DD̆jUy6;8ʒ!弸w:g֍96)(tW*[^ؑx zSF/}~nq{ΦDB+_}…7@bW.fƲ%) a'nH TQLu.1~vheXCvHܒoEq69-u[zM(udf}?Ța2\X>=_|phSB 2Fk+xu"9`eQjNEӘ II (:-EØ2D+ +g{oW` ҫXhe43!eVaPz+?~6tϚT"{G S٣(7}vlaM/F/x$PЫgoՙ\qR0,-p,\y,Kx#/޾HI /MӁdAEe$G(B r/3֯du%Sa޺3yI-mm!8/> <" O\mquAt^I_|:kÒ.#$,ZP?f'}#.; Feyw\* y٫]e%{_b@gNשw,X/}JiQ` "^SoA&J)fF~{yeh6Q{NsvD≋E'8`kখx[TeK7>vvl A Ѣ?*?k1 /\ FT-;GnF|Qdhulh x#ZhƠ^niҥ[ V>gE0~v3P93uGs䕷ߚTOp$?_Tw Z,zjJ~K㐆 |6f-̙[V]n"hS"8"ɘ+RuQTr^9s~]V$3 o6sN0Fk.|@խ]s۲PR y o8N@?DE$p2(2A}ŧNٶ| E'=ep: , XYBRoGcVz_VD׿|YTW”aP Zxo~}T!8 wVUik*,Oj>5&8 e﫯KS]○ᤚ"Q$ϨDNt1<~ OP*ĩ!iqtI똠v* (@@]3:L"JMKT"%EzkJ&ЋH})͍)'q]a?'ko߽> ى\ESng"df$&;˺NfZP2T/oIT;oХF1c4W?;?94PRc`0"8kZ bi ;%ӓj36f-5]xUbN*{n %$Zꫮz\ \"+@q[\:{.#EEgo<48S^j]3|%Xnyfl,w\qLt hE @?T!XA&Nz]٤O;qyoIk4(331M?d3bPۈv;l^"p~}嬰+_/>rCԸ׏WSޣ+N;ApbG=Y&Yc:Ha7{} h4_\.sJnk0AY|3 /Pv1Sj-)h|xAgc; IDATc(/*$p>"2@G1r:8IU([O BF&( @0fL&B,a{SWsbNWA1u孃C`pLu6$eFt6a'BHƚWLC5/_+lU(̤goْ_QnVu&YA#_zuߪDCS  mupjKg/6.CrM6 Ù``p0?ID+PU|b5OϕƮ}qmc >8H'Xz,O ' [GѭdžY(CjA fmx#[ۧ>];FT6n۠E tbA&ouwדvf9I??2?CRL Dc8x÷z<.SiqhSQ}WgKy-0+ fO">6REiQV%_lɒ5^=Қ`*AUݻ^mV/Y*-:S9(|wKoZ=9@,ZC-8j5$cI透EkZ5RC~v|C(^ʷ$ 7, k.+w#mÝC5\5v5 ;Gf,Xe;MuN࠮ ~!U}05drjÕQ>dXg~5)￐X_puRP$ړy[f.>#hՍOO=o~3$M$AKšk@]E0 S`vqI cst\x$ Rh+oژ5fut =5:$MU8oX\ ;+jV04DJFĩIuddH\,Y2b #n~E^$3BjK>Y2±\܀H5PqA(ZJZJz|%iu9TMp֐8#DNKNQH](3%'sCo*@PPRn/|^ijĐڀU 4]G'Tն1J ~K8y&T"<=XDZ\ VORц%ʇᅳtέ L_| {'G+; %|&ec%#Ψ?y1 T[ͮUS"qqĂ-/o92XzB O6T2MC4Ć|>_q9H )k@Ai(SֹXYҴr%A kw +]= RVrժz,@v᪓5ZE ׄ$]i߼]:)⠊ 8 AddbDfz}@`Pk7p$s?̥H&;kcO8Jא7=Ҡ?= (H"g/^tQD4( #~n<əҼE4,yKR٬.L7#X#q^V#PPbF⌐ze8p.!51!: YYY \cg1(`7yq y̹Le CNž*PXD入nXIQ39+/Ϋ&{@Uyu}u^Э>w1" j{*;;f8 m`h4UuSWѯ>|wؗtpxU]E#=]iElcI^M UeOCyŵ<ʫ鶨T:)H[;h(AJΦ) XY< .:}шj$"ybLY`Z(ыۙrݖ)m_eN6rBY1Tߨr q~^ݫ'%ԑs NnFpwOL2@lvu^nERp gDȣe]5cQQ~QY|H>`XI^q VJ-鱘<2y'J-.{ fȇ,uh;sW^ڙr͚ht$"S{sdlojc"If<ψKB eu,kQ%̊$͏ MZƜc}#x5o]z&{GfYgתqj(k.22zxDs&f͎AZXI`l6HKHQgRh ^TŽxw9u?p3s<\ D̞KK͞Ges [Ç&=M`2$> Nv;%N/L{Bg*##c3thLrBR8So]sisxT UD` =nK_>ԉ`q:^Y,EpMe`ωO; JmxTTib[mbKPm*+Ꜣ n`d8ek"4:\Vi^qûR#.Y({TPaVSDOWИe tAmLK CZJ nWۓ:;5+n\XfhxTbdP=1 z᠄ dtpQL vth4<âoL)dlڬа18 ϳNSBfF"ɂ4"gnݽ5V6$T ҽ6/}u%In~aIVؿògD' 9GwaY_qq~^} &`P9)aƹnJ6üQ^^ G_g氏zBCCi$?ix~~W6Fƭۼ5Fex1P`g1 ^2 32= [Uy7;N.oT$$ttO'|:}'{'ZGw<lSA~GL7r\u/)d,`і9AS*Dan:{8YXԘ{I|8!L5#dEܾ{ş{-ݴ{u +b+/z 58Y~RzFS:Q*_Y:ҭ>X}I6may#lis'cͻP쥊MK0OVMQYЭ۶6kĄMppy?w;td#j 4, k4( ёlIWwj7dOy0TjJ"1I~v왦޺GMC+Dئ]Tu9Raa]TdyеmuKHVBPᏘ9(XgM`QsnOQ膽{} 3x僷 N~`5 hX |#9(}˱$ Q+ 4JŠMKFn))Q:9vA&eêLkH\`/!ik`seE8)Pߑ WdQ&|y"uļW';w4RӦ# (Oݿ2;+7zxĿlL-숭yxِʶksȊBF,9޽CoHN G1GpViZJ ){wiiX_uAeYR$4d7;wuiI[p] WE9'9{61'\.O ' 軲K~DuI`[_g0D, |Cʃ}, w SUT ^'ZW$Y[!WMx9U*2ij-te*x+olN"%e==ywl1",HVjM9қ_vRGP/ BzS ]&q YZR?wN|k}]yMKO,śv$:;=b/T^ǃv^}޵CW\<,]xN4kh tk$$;~lrde]ʓ~_ti)/(Z/-"/Zoh xAX k!HUjFC+⼢19s:vXV[?1_<{FҎn<T!i{w:=pn,`TQ[2/̝k^w5jˮikϺQ|w 3rX0PV!"$Q3vDLDoݺ9tB@$HIT%H3G>yuvwlOЌ5Ҍ$JsI ȑHȍF7 rD5v?$vݪbd9rLRqņcm~3lY2 -S|鱚PZeEbw*m7&vz.ISKޘMhE@y7GإNM{mt8GxcyqQ{ &Uo!LҴ]I^Mźnc2ZWCYٛTo\n?8'<'덿س{DSˬAxb K^;QPSkC/{^DO{a- &yYJ\[^y}'[ +IcGaAq[ԋCKG9a8"2Ɣ=e`/ &aIL>oߙ ki垤ye?_zzfϮo`W,1tY(Klsǟ_%sDSrq.'s@Mv?єxh(|#1H}앗K'z*.F;jV`^\l{uwᒥBF?H8Ev?ޘTn9yH}N-z O*^^Xi?jW>Ģێ78 ,M#`@<; ,m?} fʧ$[sz[WHgYnq?h3O=q2A ~UnA O:j]duЀ_ ;Q:'Ym=oŤ?(l֦pT U]Q`EkX>tm  "闿Uj36[SZm?\J>z IDATZ]1L?σaaў371tHZcU| 6u39N1Ҹ 6ї_uk ٛJ\i$ʵq g<5y<ʞ{nç`l^X8n޲ЩqTEl|tޣ!1lvy]ؓ7y?Λߜ|ruLwg;Ə3g>9uLJ][V^[R{l"sm9xഅ'6%;O*.@yIJ,uC-/w|GSOmJ&9-KZ(g͓@ʽ'O }{=̼hʽ@nDo^홐qҡ慴YshWUbx`#G`/X412!Gb?O_znzi+S뚖ut=oTÉ.mŢ\ c$dxAE-ӵUYsFu]ˉ *u>eJch݁=lq#'˃?x`o`Ha4YeR4SQ$1@`F,*nW7d)*)jXVEʡIPcB9nbb,Ck)0jAZTE tmb8MA%%(,qӦS󢃥P)B+נ%XJdj*dтG90^"h"!ґq9 ݟqs3dY8ň5yaEj(QYVuбB_ྒྷydR8*[=I(AєBWdxg&G5\p 2k([S4tV6Da8B 'QH( Q A EᩘEKJP4^XY:zL2$6=66hWvp@_j X% ~/yjB#3\{ۛWB NqΔd?ח{!YS#ut'bGb*d)nhWwxoo_)Xhb4 )i4ݽ??H)&k&@I8#oܸr322eYðP(t_UP TdP,C~$ X,^ڤ8j㣬[p(s"oG[,-$rL)ZV- "(Z'`!2! hLbK:;" aR(kI TrY i S&'5‘̑Co-l|[XشoT"͇vVa!$ɲffmx0< GdW͐omx5X`l1.ַ;L4JJԑjgֽJW OOLD-&5#CG~Y(9,+ MH|F%E'hޓ& E$A?,*giѩEtLUѐfFII t"iLmekp8 xKSM G CS/]ci%5%%#33QMB"ccБ?m%V#JLFC6Ŋ O+^{Ѽp0(K*mtRVr6=Z CfBѝi+^y"%KxYj3[b@9'NIxƖBTnݐ& Ɲı-lw_{XTEl/ш8FKJeG! {:C"IP*kFHYCl^t1 "at:vΣ+rxRAd&TX$q 70R4 T 83!E &):D@hX1)ӤP`:n?gq"iƊM$ΝDe».x 8D4ZniF \ɳ=RH1Y~eA.iu秋GP$* nqإ??UI 7K4rБk[)~G`8{p="k㗷{=Rkrhl2H:=.s[>AR4UӐ~%9ۍRa1949 KZϱp`:1Hva\[#W#iT#Y@4@,.AOH*0 A14eʡlqchN cFJf )'¦;-Mo~:ͿA/~x~qǛ{Q 䘌z-e+==`̒`a^ۿ䄣nf03д]CKӑH4f'9ѫ;~UC 'V"9#Pc;^N f~$ɞEQlt2MSh8 rБU)x<؎ C@8m fZz4j%> ѷt#gDaXѡ, kYe "pwß%Sv+ΖA( _gr%J ,p`s%i(luI%-q&.WT cs_?0'Y'Qؿe#q:[LkU67oqg]"oob06 05V/HM ړ`!ĭVzK˱tMLZEFf=#fbe"nx,]. m~~r ;D68-o1YX 0ǦDeNunf !'l!11P;2k0-##vIxhH;F&Q\4ZٶI+Kd >S6t#ѥf|EC֦0u)mZzBSh 5 ϸO(u7>B;fުeQ->KeK_ܫQGs0%ńw(Lj|8r|v!Y; KZ 7zu VPQ$ =#2//rq%L+P6wԍ龖> Zp'] q[-}l[mKh^y@"wzO{Gݶ [#P;3X@gf[wGşh;5?R w}q$.XPByw7zS}eލπ8ՏB ꏝ6ܕg8 o < l(0_kW^ZۦouEYxbh}u3˭}}}n<ؐ2хC4Qh]/ԥ+t}Yx2b!]U8" fÏݧ ݧ t<ХhEQ(dfdg1 UkWօB X߬#ǃ7 } ןa,Q|>ěy|g}nC>G DD4+++EQS5˗n 8*B`eY]u՞6sA$Iy,\еsF-8\D"#6s@is2>C/In457$''?ߐ?p9pOIIqt L첸pP4CĄ"999;;:ϟ/"a%_Gv/3Ө6 Ah~GHdch#!Qrpzx|l,'7w`hs4GJ*/M%%%p4M;{}9Q7 # bxd7>nON ӁA~@"G-2 B\߸hEǥ2_H46 cY")ASTff(6*՜28{E<h0ۚV(~v(J@Fi4mY. އ(~N+9-֝{-s8EQ=9hΈZF< Hu}.m~4'㿖~G)aYV899J$ɹ 9Ӝ9a }- QetMs>Gs5#]SUu.ukFadffb6<G )QG)\$kr(e4E8DCKE?'Bw(Ϙr,y;V,1,J =@bh▁~w`;x_mX`8*U[0XʞKƹ hg1]Fcp )*kaXfI|AqmpV:qU-,-+!Aԅͦ4CS`+ Z?"ʲYU,:Ť9ޒB#оxi%LU[NR KA]I <k[I^$f\,hIQIeLUi&s4jLR} j1} t@KJnAb$f -DnM@uch)cBb$):A#-b&9jI^ lOKGҥM)lI`j1^,K9 Đ.EP3ffC10=( C?Ma.Ɉ"!'hY–>Sb@!Y#LYqݶ[w鄖+*(YT X/Bh"O0 KT*r/l@cnAEs QUßDRL 4v&r-#^HPc3qg}\ iWw`ƃbՉ]FgxRD,TT R 1VwȈrpf򓽭RVE|hdH͑D<Б7nOE)Cscilb F%m+W|'*}Q@ 3& 0HP,MSH*, -eѰQKNJK i!T  Kʪ"8X¥0@,mrLCVDf`1)v)hSbbH-?Hِd`#(!1wlK]5,hbf; Y-ˀv Mڊ8>cmxۇZglY! IҾJ+~k??! 0tPP :J IDATc͓f-^^v]+W%ݵ!bАwtlb?-CK:qw;2sf`dr5Hzl=x_ vB(OtqhC kºT>?dqqFfՊtĜI4r7MLtRt7OBﰌ#q Bn7G:DO0@N LJ8͎޾Ƹ="CAowSǀJ'kZ8`QpHD3L0652PxАo 91Ȥw,yef;&7bQ! ґ`q#-4uĂjxߧ3"OCӴ čx/@N&_]鑁q$C]=C%:y4-!C=2!xiwܛmc:t}8VٳH$bXzU\t0pRFzuJh|0Hכ;Pssޒ]#.]sCěАot|br:iAdICga@%bӣɀY$PPvKBR _y{ poGtz U865? Ha f_~O!D c) 9QS*4[[n|@X %NtH0HZp;aB}2`EĔiI  Ȓ8Єoh8D NAok dLHVv qCy#:/6 3a<#8Zއm-CS&Lli,w 2J IHᡱ0 ]"ၑ%\r֝gI#!D1PD )mM] N) .[h`aaĦ'cB #\05/f= F!'O^ 4 ,iɃI|BcnU p]=Zt && "ָ iBzG#Y6cM{h,fd2In30fWWoodB%K:Q>Bex+9EhHɡ5kXW,)yv zEwH$q3<92OA ~|,yzd{`Sh8 4-QO{rA74(%|&YΉ Q@tM<ԦzR2lm;꓁ŸD,44bLno9 C#ޫ{\+%56-/Jw[挳 ij>c΃u W/7LRVf* $AVW֞t ϬXRzt/v7gT* i& ?OtռOAY@ò MS!d~p)Ecsfwp%:{I1Ʀ~3^2 pFhH&f$P7љ!a!H)"m@4 $MÝǷHk:LgNi L~aFՎ>s ?j֊LS5X xU9ΫG֗V@8ԩ\UW0v@k&H?‚$MW$,Oqjcí}tZAQ&?tfϡDKz ԇ?=]zh:d<1/[h`1zmpl+dcm5{ )yűs{%Z`Jnn 29(= FmG圮X>ѧeпR&7ɪ[5Vt`ZTP N{{*[" 55NљK+y0jX̥+4t'c /'Yy;8Ssu0U4w5V%9"aY("p@0L➏vmTOݘR ,P- R~GA%ߑ$Lh)Y" !ʵ!*K ڗu?`z4:CDek@ Mۊ7M>(GE`J>-  AsݥP8sh՚u֍O+)K RHE^7+׬J?._#* @-*p4Q4C!ʰGB<25xv{2W}O#SZZ~aǩކw~TƢYw-* Ճ;NpK.hL$PY:R6zhws9X߻J@gˈ(,Σ7[:Gg~n֛&l# M8J=>w/^#q,\TՠvGj{JW#OMli%)dWGڽJt:pt!%0@gP$4 ag\e_=ᱛpRTЎtkCHi8 *瑐ol{'; 702aIBF_/_\dNt^u/[!l^F&>|ۙ+ך:&23+[$l^!I-g{s7e b]'b,LEWd$Dc(^2ԃm~n"gݺEa/qyF#{)nH]D$aG/޾dpyIpgշ62rs |pt⨏/__]pi8bS~dEuIOvV,JSthW,tBtH$M}ѮZ(#6նoa529!GAI6rí L-)npn!RK Gۏ#ffl^U'#~p#{h׎sd cHΏ q{\/(zHmthZ[M/Os9-}dj~rÕW;3=+= 7D:{b'{pʍ~!oqey~m~hE3DFABe#[=ZqIPdͰP#8 TbYYU2 3ws:cm;\gk#̜4'Nvv%юaDe$I [ `꺉" H <.Q Ќ6tk|… Ltd9=ͽ4xb{"1T{4Dz;<+K<ٽۮM9V,g`y?h_\UN gmR IbJƙ>=//w؞7b@ iEYBݡ'FZ;F=y S`oݑ'o'W9Eɴi_xVru{{.zC./IpMRώ9Kcf#;ë斖R+Gwʹh9y{PluW-HOSK-` d@!A-|ල'%y54TspzRssl]=&X}Wj/4 µ[%1 aBW7EZ,^~"<)\[{C?,G8I&}C xR͐BWbiF`߇M,2efVnzw_Ÿ>yvښ%j[}岼G3ўƫ-y,axlƕ_ b! ($& ' ʇYP3"k77?lΛ?rS_kzϿ?OYXR>0j>g_ސ~ѐjYy6o(_lqiiHvRhhq - 4E&W?73E^B_8~m(B:ذ<vX?4-&Zf͒"4&z\jV#Jo\Rmt- ì5VN^N3֯MY3 F.vO =(=v;{e!Ebyy=2myErYä9mz}c N v]S 1*M&\;}7P@*̺tS1!C/bGq`j,9־³+sb~zolo]g|1ѲFeZy6{|]hKׯM4͋&! +9|!93:m lT ~G]Pӯ.-]S-&z3٥%bתP"{6{zcŶ ]*.jy[ywJ_KFG'ҍ)..PZ4O$X} Vn^cWK1cr7]Z`e^0`d``35C~`k ٩+Έ"I[LY]i:?Φ;$f=*S+8AIue?c}MLR }ZYGwo1*cAƵ$Nژ]هj*?o KRIMP[<4=2v a.MU}ƁجE/~[٢]c[ͩ+/Pbs@’]U{B ؔ5;1-^wjaA׼Χ^h0kU抣uWZ&ckPjM^x;ʤyh -IWiV,?Ro=q] J#(]M׺)K ^tECG"n@D73ՈB?ԓ(q/s|S?LsSK^ܟa1!’/֎qUwKnϗVΟa+仏 g*Ja+K<3 d_}} 4Q(ޖ8Ҝ.{.:umDt6/-w ږ3/ݗnTWu5gO֜`~եl=wJqf]#1390ZnÊȀQ1BNUi( M2KZ4ZSWuNJ6^Ѻ5w\<%_b?8[SR-]r)kvt+vLk+d^;5V" Bd *ZT );д1~ZÕvC𐪤I5nJT#P4$C,тH_=kؼ4Sэe!2 7^VÙptF{O^RIΩZjI1|~0nܸ,N7םn6%6Tg)F];Тp)4َ:~1oC*$y!V`=Kr@k9iu[R[H'd1_c{\⴨m?w}LIN 8t% ?PL ];y;}}ݳ۲7u9_åw=UT|ƉFO}Wty!+ m Q 8v'9F4nOWJbK hqr/޷Sj :gכo^~7vo-ytt_@ҁ_CF%36> ֎pU@Ύ PjHarەscZrJ 3uc7-Ok[}R|=sw9g7=r3_\W߯05;/vLM-)Ȭ^V|cȿD-ldzB%K'8i,IZj;4> vM))#h"sy'ʵAqEFݵGh̘ueZy IDAT|ʊt#x< Ga.YnQArȉx ]X}ׇ!K s4Eۧ2󳱡ퟞ Dt5Ӕ;5مC W$ JE#`/t]:2s ԮJ֯(5خC걃 5+r[u碃a2bffXdYeSN{s.n:NӦi1I,Lyt.IV}[B?zcW.Ȋb^.ϸ[wht05W%^<Ͻ|`[ CC XN< w*vrQ8zXȂ)[Qz}&Rј+ē*(FG\vg5¡B ;Wأ>:Bg0M:eʭpkBf}iɍBBd#Yk0LW^_KkiRW%0-MIBw' -T`xІ$C#FnL]zDқOmC@foڜ[Z̅%o).cFomXPl%Y5syWoefL1J^*Z<닣>6RMA F<l+~5^$HBm5CkTUSTi]9ĖVSXL-Lg%kcED`C֔Rk"m~6BWLpׁݟDsӭC9WQa/\Kp{#ɳFU?9 )aoihȱXҙvj(`kB*J`֢ξ|# vV8mqx<܍'2V"ut${p˓+īݽrUڛc&1X+SciArqb'78m &pЅ5]Ͼ]r'B,<5x~Sb3O սuJ`fv3lL\v<3UK ѽ{HX M ̌ODYw##SAH xw{S $ VbNL[;ʖa%I[}upyFT5-ozfW!^3ɤLfBԴŗZS!("JL&ˣca֣R`݇TԒZ_Z,%/JKr 4&Sr%T 0)rȍ$@ص Tڔ>yrLPdfbva#,+ѳ+Igy%5E6$' @yE0BK]>~xp)(ӨkS UPVWLl*,.n5iah$R5@ F`븱s-i:D\g17__'6~A gN==]9. E5>:7>`v? [|2&f1(2a6޷46`7wu8Gc(z܅;Ά"jyb2$j7/}۱aٴk[{]ewFWux`d5 Ֆ ) UMNM+:)6Oގ|SNAAZz͑ѡkW:g](PDYs՗꼚KK6\pH>K(&TոHѿhU5,80ZX\~[PNcuI0\wuh(`Am;U8nPSpNM s~ݘ] ,T, \eueD&4B,x:fYcY{yrrdd2^Y/T^YM ^XtV, t(F_Vq[W^֐ UQOqyaK [ވyU5qUxuJ`q)RZ(!I'Wӆnsf||F`/!7Q'Ff7VB#XXD8'\K3n2D˟qr6 ~U^Ady eST6WdR aZ :9_gVlM`BӋf&aׁl\>zRT\]ECN&ìG4-ZJ0֛vTlg zohp9MPR`bbk^x8|u|C#OϲmN`rM]f<G-.W o,1SVW%6ygڊIR>}o%jGNO XBp8>{ڬP椴du5TFd݌%30_{8M޸HI=e۷7摁03uh6IMw~g,%K@TMSӷ/ ^_1*܃R90j˽-h&![;;+3 SY?hk+|1&D&F ߝ󫚦▊gX/ t K*˵j71Oym\^Ee^#(-%?SbMBq|$asҺ[/\95ht~)Ƒ8\KӞFh! nޫKHmv )"L.Sjc%Exj+s1\U_F68][0^= y;WoM.q~PTU ΢֓HIu1,M5!=esy?3՚S}x_x{QQ+F0D 8 Y7kj<=S~4rƊΜJUyu=5{?ƿKʶg5@"~=Hd8NJE_4X@ *4"x9DoOn. NMM.U`"Ʉ۱mĻLADfF>pMfb=E+,EWfS,'| &5Wk̙-] x+ܝKeȗS~W{S^:=,߻wW9*4dc4/-7I¡HFˬhۻulF͌Ϥ4[;T6nN/Nϭ5 !fcUΆ"!&?K  xEǶ*'e>8I&I h((ln2| g+k VJ$O7b 2Y.!i0SjrM"\QDW3x}Lq~6.񖽭%j\׳yʃ@ ip_d$YQLe SaH0MY5r5|7ս˶S'oRda}sg[ץG"Rnķ9}_)8/`FL%'Ec9Sk\f3w^ΰ醕yB.H*{zX́7%}hўڼ#wA1Ta@q4ʥ'[hVԔ[ReWGƾ>ِ\:6e+k=;HO \_KM]6Jˏ~7P:qh{zq^RQL D$&`I¢ȫAsJrK{h6py~ecōoW#E^uezK}Wmu08#{ wGGG+ $@BͱVg?'"'eZjd}(3YLPfowC9eMʭ#J;-SWFͳE=vi-Quy{f 6x@p 4zj"n<+n`g[id}[{f#6KN.ıO@0qeŏL"arviPjLJ&d=%M]u_0-0=o7FnML0[`%#dTtD }i6}KqϞ纴/mfT\)j+0H,l--79L2A` hÇ,I8#Ud8~×{J֯1 {@wljJA,M$}~ca5y x6́ \gܮk&~BWr#(H+ӌPqYzS7_.7B -X4Gq]cl±i-9zlrJ0# Ne-h#t S*} OۜH%k]ӁB\V0Plo]=&hƁ'l>"a@?djWgjG& @L =iU-!8z@o lsE.?i>7bg.|mϿ9Xg)h59t_{'h:xĵMwa-˖` "˚h@iYvaJ~uyhh ILd$AZ44 Phֺ_H_.sƯK(Ƴ;ug&N~0 i?yrTWj O+8yNppڝ ݁ެ.?uV t(!&egԢ3ʺ"*1|h("C(ᚦf.[Z[ӯĢ* R`%p01l}W_;y\+ݸ'X$I#m6@ +Y +h % GY`XaYmRRh6?;),6\|G~+S MW_=Tu QSXn *I(A='ϲj+H ?MÄ$^4G[;Vp󀱼oUl;Ň'Kpp5{ױ'<ֳAGXnKEQAb.}늡cm;/^«}5|cO5HaR'dlowN}y~@o) pIdbUeAd Tм〳0U*>22|dv}T8MͲ#hsCETnwmvƃQXlѯLLe瞊\DdUOWz ,, dj[J$9>(&N$ kJ ?/U @ep[g fݺVCwGJJ4qF9(T -<%Ĝ_T:}_C*{wE 0'˒H~̓V\!?dJo?s}bLANv@Sa]mKC#4 YxQ7-$\yFQGF0Pj鹂5Ϋ/ L2Emm%Z~K5C@DB+Fi]B ,"B(a)s j 㞺rיեuޗD+Ja;oqh ;[{s6~iwk \&͡QY³מ xOl6OҢj'wofpռ`tߝ\ cj:#3s \Hw+FumUFȺpU^!RU=Ur,uo .G{\eM7<7LɳneԎ"H;%#qLe>c3j[$;h&PY‘kw9_xtwc= $[.;d7e ѠvK`.po"JY [YAm |.' %ՍL\̑8a_}tnӮ [$6׌*ͨsUyi@SGY?IԳ R&f-=hIsY&[Gb I¦Xg4A 5 q&R= 9Ş_ 8qy`Ww].h*gEq@Hn2ҵ%#8VoϬgL*'@ HחN|zySQ*"/ tQB@#/aa} ϜJH 0of*ͯ?C5fT#EEdVآ$˲ȹϿD,-%Y"H½/E$ 9|tJ1۸ىt<z@R Ng^с|mc{hP@䤰eyPT,p2a K`$j"ʔyvmi}=OK A1fOC~ :B]8zgxn*$eU&i4Ӗ,&K*8H"ǀQ`ŚUY^^Z^y:Xd0 WeYD"’R)SiC'RA^[=quRj(0Vq7ȭI͋G~gFR|ItxϺ 0"i_N鵛š #&ëM^t]ˡRub|p @efmqn¬M7υJ+˩%3!ϦK7y}g?LS!uu^ѿ! 26<{`gW㣷N4u8_bSxWѩٍoVrN*#ۊ@F\u/S3/Ύnl(A'o@S$M8#W}Vqc%[m&k1S8Ò(B$ỳj/(>dRaI-N}2ѸiOy J?C6OIEBd)= ]Y/Y\%C-KcR)ܪBهպ*}SSeQa\J%Y(I(S##!C1 6ҪPEtds#lwzCAy ɡ˳*">9{37F<U%zAr< Ղh,:w󔹸)icAÞ"= Gg_b=dž^YVZ4 芋 ׇ.Kh,αafh=~X9]Y_tɯQ_Sz@j2r*+ UkL5E6䍑k7]&@LhuyUyX[I%#k=.mC4oM7IzJy5PC:Q8pFAص{\b~:0#1 O=Ի <%ZZ$bТeq۰sg:\Ik %=gC֝/ѹߝrqdW`e?htO?.*Iee\XSÓˡ.SXN$ LxkrTZ}W}ʰ*N SSL;t.Xg Hd $QVE:eA@E gD$Ya E#cCKr uDtk1R' T "(0Ǜ6eMP7?G=5N/%Jt3ge9Ŵ!2jj2x]W0 ߤj[.j4 .[2<[mV!P9(&78[HknQWH]ϐMhYY)}%eVf X7Ho]V#1H h(bjxER j\ˣG,U9&ITUEk+,MMDtCwwFGoZbM:"յz nCPY0.?~_AaD@}`":P_ [t C^I(UXA m9o-tlkU7Fo$ҊoyrS^#0&[jZ^)MǏMUW=ϴw0j+y0[ŧDQ'(xr/& U 6Rek 6=ǭ;*$x䌀yÊ?pqME? 㚢aVWZŅ2)(=\("ˠbPtʆ"h(ȳje2Z YqsMn)G}{P͋蓇@P( 8v'jS_@ÜoCGy5 4~ Ŗ'4UdyEdDִlN`PM1`_)̧PMWc0!j̿H.;cl[Uzgr)ɵM-ƍ;JcK¶#W=n n9ז.jAmc YgEdz5$ (!^=B5'fx5SSv5;8zK+\oe-*q-9-%xz /t^>r\5,@$)NԒy.J[L"Hzfe/_Ly]nET.]g#Lw@[es:_jM\fxTET[?LnMH)NTI`Yޔ춬q2nܚ{NL?I0oAaby{:*lV"cyWmhWK0xFi`h cV&# ؒ$&Ő²(xBHĵ{3I;v䃹 d޿?j5wbK+f7@!XTS@XM:0M$1cɝT.2FmUc`ƒƘh ʛsܴĖ܂<RA_3+6%>L>3:n&qp0WPp vJʀhXLFZ `j(  za֫\"ML9NBNla7h[NEs;LW2Ac^ Mϭ%hwy]*Bqt165k&x`#fG_<\[^Tܘ[X`#XFs =mSAGa,Pf**`hl,qӚ%2`Z9&IP%D(!. v]1(RRH% 7{J nAD(,fUb"G2B{ VZE\ZxAH‘4eu)(QQ>V2ӈ!  g4H /ʲ 7寿 Ŭ,<**+pUUٷ0`Eطep38_.,p8Dݨdbs: yq09rAb(%VOQKMׂF szEG8;HClp $VBЅp68&\ PӦG!$1M%Mc(dp:j0MNUh4l<MqږB R]3@^VHL K6}ь@%sƭEcye bd(c1ێA ZR&ͨv[Mct0XC % 3ٌP L%{ _ַleMC( KVB*e+*-Y\X\L5ܲH:oEY p0)N(b[*Bf"8Ox-A4 LG"`&B)^P@: 61D'M`& aIL,4C6KI`L fHH40E๽byM "7oavMޡ@uʊ;19T,yTD$5fL*K VQ6xy5uҲ4CR5$6w@N9+19xB gm"`8=l4QEvʲ{O}x48xpstNM$[81;Ә9[Qu,H8cu9;Zq!PUw’b>K lMI&^+]U |^.J-(1 29g%NrG90dQV/q*?i8ì ),5IR>b9\18]-;+Lg=,Ě'M9Z%ars< dI֧N!Z$>Hs< I1hȶqREU*XA`(0tZJ#]Ƕ҆ q碤@Xaqx`ʃ-H91nn80hzF^L{4EVKˎZog2^ p];;b@;43$s4Td M qcY<LG!6ծEGnkJt) l5U4x"a$v,ix AG4FQ4 ؐdd Ax=3"ax (3Pkx)2ro`$+01PgN9b`9z!M9r ƙ""|Id9x.㱩XG/m*YBV|%]9*]Spr%uءVe<[˞~TR-,uS Ĺ1kP4x0/M@F(i"qxW6!I nH,* X F\3cy[G8LC0+Pc2CqC'˱(8>57+B9&V<5rt ?ДDlzx|sphrL6 GK:&N=j1)p ɪf4W+a/9k ̱#oޤj Kz3yV!k q ( YR fy,k˗Gc~t}y4v LjS{5Zbcl)MA\3h86GRxրLةvVV0OJ15QQB*[b 83ٚN|&2$r&a+8$ #ԝQS1 X%5E'!*Ѻ$ةQ+mɓq uU."k8l'w c.xFu&r fPI1iPii 8Y2^,2q< 'HcLUuxFPL g5/F <jfn\5P Su`DokQm:=b~+ݫ^n`ϛ%`3 2ߏ!4{ ̈oL%x_ʼ[ҭY8`fnn. o1@BcZ"ϫX8Ky c%@gf eY deeP(D]},9SlmS\^YG}i6̃x=$ ~-7'Xx$ef蛽D Iot=6A&n8 Yw9E^4 4mֈO lGG-ˊci3;8㖍  LG;qA$v'ûy[ UUD !nB #m`  Azv'20LBbbrr2M-[K0k "86 #IW& YUE1MSӴ;wUA .WRRRbbb:O`,K{ z^1橑60b4힟I$42 %x =, o ,˖ Ws&ɶmDDQ,++x<Ýa#,3vSeaDc`0<>۶=  X}]2ބ꿳&LGAAh\5+8r3[NraMxr-l0]==݉^If۶ih486s?0cc O&߹e,FG}%%%w,r\b42;BH99MDQgv-P@WwWzz}Cx~aB@]|R/fffɇ@QT`d.?wx*33O$9<{cO3,M޾Z}0Mi9lfg2 e)ӎ1i8{O1aӜs4A birα9N>KMmΐCDe$ 6 &He躍H 0'mk:ͬ9:OG$1u$IL߳m,82RRyʾ#[Bz1.`\?!V3btxNOOrp^n*QC*h[ao$`z(?5gڛi1 LisL(ug6moO#T`޲>Fq0=U1?q8LQ){ r$bb2;יnڐ" AMjKFP]iIni㏃ȯC tBn|ϑa7-Og"I|61A2.C(HR7)v:F!=BbS3Y|Z̨N *`nܠMO%=$&uG~W`fd䜿 qaGrP̈FTn_W"eT'ۑv 5 /;NLorԑYۆns$Ѥ:$޸ sn染qإgB'5E̸BQE)c!d6(NW߉k s"x6h;}m; qmH&HآhD_vb3l6I1d1QGP8F|`x4%#>Y?nVFE,qZh?$ۣퟀsmZ8{2rX<S0S~aZE7,- {tNbQ;jwRA>G$9G*_-cQ A=4"$}%& eN0ǒ,Va# GǤBfăZq#h~M4A[eQ4|@cqG= )j:Z%pO`̀ KA6c#*$XK$4>#tETN0U)*i62Xu#]q*iIјjN5hfh߼w#ُrIǎk%ۜzؾaсa~?"’ͻƽon"ُCV4JX4fE?2%1'm Ҝ@&ų+IUā#ǜ_'Aj?{Ȱds^Q%А͹!%x=q6XTB|(@_f?h 4xalƦW$=5oeL˟yakqy'I+{mʼnHT8B!m Jr˜ Hv]\OV0T__W`F֚l m:J^蓫$MA-U)GH&s;\kNyKC'*:?udMzK/OcKëy`L o'@]Q NiFHJû 49&)(*u'gimY].}eTc=Ԗ,WtaG70%)EM8TujkdZŃo\K_{a61(=x+~Սy'5^S i^qm;ҽ3*G':lߢ瞮?T;t{8 c_mVhLcW7SUh_ªR.}ޮ֐ ^|9$ݞ4aSe.>\~rŘʸjۑ_q?{̥*e] 8ZtjuwhMq|3-GP6r}߇F=UET{wv!.c6<D\۟P0 Gxx%8AE4tȩi{Nz+ϮFc C~DO{f)CZzckY1 +Ip]/l\`3c0 =D5y5._J?/J ˀ̳oXtckjpnDž_vybLTG w9qt͛V౽o)GZ[ Łn`,H6soa&)[{W X]#xK~a}3B隰Nݿ})qk?LƗ&A@WI<.--&hab,: 8N $X \CCE%>ܶB;?AR^|hn9{R>O<f9|$Cksj;BН4Gmne/]ZQ4 9|JrpV)wkA"o=I?ό;s0gσfFUEi;).~ި,'Wy\PMgHb'K0<# +"_\hSskmث86z=IW+^d+m%W,)+-y>,Vo;Q?=Nنbs*G#M((jMM:jY7 n\B ^_S ]9cCDsoIK05pjGv>3nhF'~[2 #[9BdDjN\X4&9q9%y ]jiaBוώ_U9K6aNGA/~GX^y+/G;?)X[/;{3_$ g>8HR v}8b'1䫨^Z:'q{)A]oÜo(D }Ïcy}Ùo>{]$W'6bh;̤l|3C k< >4 M3r6 ^ۻ5 ]?vr],AiC>У_ 4|O쪕+#{t#Hr4N7;h 5{}zSF].z"GZf~ymd<ײ0擌9;< '_V _"rʭXtary .0+C3xMψwU GZMGytspLMp<&E;?mkIK96g./xυ&c]N_W#9.C|{R bCuzϗX5Ξs* ¥>z9\s`L%ԐhWO.TnaI6GB0n}q% y4ͷdfKL쯯;y:"ѳF$ $5ǘWT>b 2zq9fV/|jhl;l{%]>pmgĵ];?ڟ]tfv՟/=,47FQa򊂬̢y}ךGʖ&Akhz( C>ihf8wrzw~d DRvfAbYXTSSĚ}9̷>vR7$ +x23VU)y֗$]U$;h>{UwGOwF-;g#-F,jG}R\Yj=#e:*?{"7$푦C3̶{?:|-㽉In޼pUȓɖ,/ =&#N7i6:9)((Ei+Fʡ]6XJHMuu_ffE.\Iiikބ܍mךzDwEzWck=y&~ag5Qj[t6tn 8d6֎ydڒ-0E45T-N^nM 7;}"ut;itetDVđrб+aXVp{DÅ%kŖ% 8Y+ʓ."yv0-E"SU @c-~sdSEXmcW2*'gtNݰ?ch8(BދGO^1ľl(9wHӱKm+L$//ځj,WVw_:+Ҍ{Jwfeem[D:>z 1= plAn`fќx2r]V۵r\W._ܠN`([.5ELs!MjN:Y?rkEHN8ޮ]1"sAUGo}չ^Ƙ^ B{5V&.X0=8xo^y[&ð!ɲ#Ϟڥ3kK/-խt/y`KY JQwR,tT8:?l2 5v>BS2{]M]cd9l@)nT]t„뢯l2So||rR17z{f ,$k[EC]=FBee!{GW[L!s+?{L[V#6C׏Ho p #|޾+{;]D(B@F\9EBVeugB{,_VypfyΕ\ػIN;sBh71-3'k_k-XЂԄem憖֞I_F_jAfo?.x{mPri?R} L!q +IY75^GKWWY2u;뎝N8ئIދ+r v'Rϥu Y<|MxjJBJ+&ȗN_&z0 U-=۟^<^;籯~d9!ח $/\&t4_@ϴ"w)0Բgk}!l>J nms+rvFsۦt?70jץ\M'<ۦ, )<1vȵU7t+/PbNe'[٥計=0TE3I3tz;.tJLN$?z`[ywnw;|JFVZ7~zpsT±uW4 ILZ/O j<` @0${=H'W 4ՆbkmbRQZ 1Ip < nCo(10YEiP . +Jray*N`H2g0KKPca1xZji4ǭEb2.A kHit)(>SX&ss/mϡTE5QrC֯]bf9H3k^3|En"=ϛJ#ٖNy ݸa/_o,ۼ.9NQЃÀs1+j,}mh Um>>$sV–m-,(D&zaYIbKtȢb4K#81~u?ٳ)]^).+Q4 06>$+*t:b=WkՊy`T)*…7JhS YaY*FZiR1@J隧mN"_x~C 7 mWOo<[jU:*bZx7Gay Gu-{hێ=XǶ@Gk C I)zZ3lYoZ?WG*r`Np+>/ʌ3IXrREg[jRyKܾG+!yi!CmUҊW?ް, .Wz i xQ0?y)ZW\@ʂE9h}C?Iح tZтTJktlDzQqnWWUq%W/_;"")=5oźLږ̯((ǭъyV.tIRcmt㊹L( xՎ;JJ]@XO+mϦカ.ߣڗ `_6q+c*)$6%JWJ`1Q|#5̲%dyl3ߺ .+;45G"?ImhhK8IN~y]t3>=V)PÂIsK RLMʐ4偮!5|۽MȽgε"E"a9jӒz2p|DR% Φ,ݼc˯=\Bԩ)eo{<y 8Qef5G '%0_6Iq#XT7+޾iUy?|6 6._T w*+ʓ(훥glC3¢LVÞgO{S[ɍl7(#ע)7KֿQ@ ˳er7^@*D XFlܶ׶T5Wc-[ZA y+_|nK-w+ i䑕){+a 7wӓQں%Wo}?Vl'^K%hsK/Lɢh{P][$"֔C6ă<_n:|E!0M9M6..O IAz~EYM[(1!zQuhXI.OCrڢU METڜޫ2j_ً0*nŝ/`4OIX;zoK,[]k)1١c ,.' g a7'.}rCɟ$p:s2ً!^؆$*mU]`҇شr;{~Y2q^HS,eݘ8cL h륑%l-*̯\ 7Ψ>MǓL20,8ΫJL}s+K `'% CMn΢֨--\趿i* IDATtܩ @T2t-Z_rSV?=kg- L ~NnȪj0,r}ƛWU)MTiX71A u{xߛVm[_TO3 iRnx'-97b eJtMHBkԦxz8r.Dyh8Bp4V8=FYKvE ЂQ"x]O2}y 绥`N[\c,' mML;qYedH TW L m֊e7 ?yM$hyL?jª- kN3p}Yi$hj))|f _( SY]{--w"w)$y`GNms 3J8UYT;:BYkk78S30!*ĥhE4ڏO5- ҂`6:WE,Kjh#~/lYʇ7,^ 2ҙXW0d# 9Ey!=)YqjZcy8Y!!]XGtYe2hU'9hoc!pya.,NטCě'TV{ΞMYVTxpĎYMۄۡ*xqw "zxV8'jm ^|n 3vp9˱B i]h {͟_\v&56;6Hd̝ v1mIpsh|͟ /ٱVWŕ>w>r+d|N;'Ճ-8=2[ um윅0qZDUUB͓jn׹j9'hthg?~nK{ YgO_E9KJ ںt)z;gw$mĨ̬D5ƿ*ͲMbtcO[6]zؓOh햒;óچQxm.̘JĢ#n˨^^-Rnޗ(*d$o8,~-)tcɄbU!OWJiS+wI.c7 ;xJٕOW|W.k3yWᶑ:Rm'^դI\^$*d1UHp$j Y;(s݆qZ\e|O+&ұcP-=8O\8 #s%vtҝf놗bL?|@ye|d".k&FcbW٩jPU̢ǸXn(4-]:fݧ~0.+~O~KOXae7iV[َ8i}ŒT"Jd,(ڇ5%Xk6W?yʠ{=k*/^}qߞ_\Wĩͼ܉5uUc1{ۚyy>BcʕƆS艩%_uʂ0-"ɨ`В#&]kwQKvъ[wH_Q%SZKmF%\ݩeK#a.T_X|e؁T!bSI3CQ tC4˨\xߞ}+׉4ÂM4`Tl*V߱੷|f2b{klfYD?(s∖Ǔ6ID…u.c-C7U")Adzl`p],*1Y! :[2 Be8|^SPf׊:nj3O*nu~?宪+*|oVA&Eܷ{jC 2᫼[s,0>lRn 1voFߋ#:\!;" e]((9ax>JPddz]E\jx`#WPH 2,-ʲc`(IsB `f 00/$YHC>Hk(U6O`9(q3s@u}jr=.tH,5p[^Q.FƓuwݱTk0ib;TK;(â )(5H %쾌piiu!ȒJ;]NOCf#EAcc4M;8D#?3' uyCߟoTUt_ի̘=1>xcgg԰ ERuМ3[Hu2C> ^11L՟<8j؃%@Į닟 #Q"/?T5^ #ř9hTTrB5uj9a@Q )I URB75;QA2.W -`fP̞QƇx*,tȪ(k tr2<܂'K8Fy32}FQ;-jcq>K:JlO֯/uYVtΝYJ LwZtV~ﻧO:W'F"I bJǎtzXClPġi"N;hR&+2tքE">窱f UY3|σ;H]U%`%eE> QE0up^B7mH =!<XlJyI쁜j㚪Q9%%F8YY9GiJ>-]rlJ)^ %0H 98lL xRcT<͂Ra1NTÂ6 YI]>"I@$p dYR5' Q(t2Y$I{g{ج"$S"4 &g( R ;?jgggaa0_ذfx0TzLȒv-eߟH$KJJ`%B!Pjau!KcHJ SD*=s8a):M $ MnC J~`E%>ifWX_B+D.SN3VK&f!+(M_m\9/|+friͯDdXpeVifinIVj)8nfyG s83Slfp_ F7A (p(BV|`)pS0|!Y)%)nOJg,̭Ĩ9" }zmd8|Z&:! 6ebl'Z'RJpٴ 3聐LJ6uqvEQEQ(Z7GS(*fXh|]aT Lˍ^JJgL،/j{~Г ;#,(`=GēǙCNQTKK  r$9=dIVaaE*& <CB<)..]vSQV )&)lJ"Y8 Ynr'Dy8a)*(GB!Y+G`9]o8qp O` Y5:(a0hp lJ *fR2Z\5Ht{᭾ x`&$qaU &+IblKQTGGY >l`( |wWONNz$Irdd$,<1Xory<'j91_DY#5Ɣ'/?4a}}(篸 #IA}irbO[1 .iO HSIїɄa(#zKKu+0A IX F:eHNNM쨧^0pܑia膪4Mfo@UT] Xq3N0pEUa^au@aq5%\`A KlA IDAT0l9(LS$3%k!xAq_LEpKdA|Zõ $bhY(` , PMYE& qUV t9ܘ+0d|&R ^tL04a8u:ꊨ|%bU0TIaiV1C{NVπ5Wu2CC999iڼ@c6a5 Hdٖ#@EQCCCp:tUɉbH$;'g5>Ƨ[Mv{ww{*jYqGzWLfsMEh Vi6mpppxx8#iHk!URԺy_5~ OYa0lLX4LM688q{h^-{K|MW5>V EfLSW  ,IKTJ0,++&> )7D"### mnrp8lZW q\ž>@QYyО/j9]%IJR.Fj ([; 0(D"1k\ūA9iI+w͖nEJ0yݘg?ztH0v66T8&} gY6W((J4!;ZN^H(I68UUWέMk"k+㰭j]oX3a˶G(zk5+\VYdU5m:<`10EH+wVUl$I3BXh{wt!q\EQ5Eq8 Vj9IerE؛u]'IA5#H(Ueh(]EQ3%qiֺ=jN$%IZ!_A70 DQѴϦ P-+0Gtqʢ|ꄮp쓁_x5#y@AuGЙ5s;`0m>W|msȧzT)lBQ8% rfKU\7{1ja,%Vت- {0^vk3~"xch6lIp8@`h%¬P-[aHR0 Uc x>2V[J-G$0~t-HߐȚHϺ̻`n">u&rU2D 躬(pb@z4lHV-PusɧI>(?++a;E۽U/M㕕8H9].ӒnxÎ'x]]೐ںEss3a0qiNsbɸnaCcDq22TVVJP2::mZnqW 4qQde*L|iil5a)dsss(r9&lⰷa̚Htue76}ojjb&++cY gY-g M.aA˗'&&lKfL/UG DVh4.Rū$944ښt8YK4@MD__dr.Y_YX;0҃R"HiiIf8,-Ksc[ZZjҫih(,/+S%| =Sa + FFF*+h֖>mYB^qKxDeEE>ޑ毯aiF™eev8^all,33sMCC CWWW ,⨳jB&dxxt.ϭ ӄ%dee]!\ ,\WWW2dfeM$ˢ\njll7v _a`L&Pq8i_j.lUX, æRd0WU%Is0v(kykXRbbqBKǿiw\DBUt 6[: ZNVFQT*%X,5_AeI32B, qn Ҙ1 K$6 E1X7r |:?aa(ժ, $I ʮb+vr[gZSDU G1$ UU<7(j&نf^5"K毤,-PP"%؋2L}308֚xe pQES3 Ќ`oS@! 7 $-^mKU˥{ƚ0 (P%YY%4a0^@TIQ~H~̜k2j9|͂4 )Ic*BQ06/_5a tC{a>|Gsglr@ EE>t# Hd1 4PJdk)d9 Sl2lfH )A㗚`IQyU CK/Ob*)IՑPn C$@L򊎠q.%yQ좉_H d&頑" b$M ;ApK10fLneBR*)00eIs/T"+*b=ZI\@ _eAPtp¢ ½~-,ԟJ1B⓲y^ f9tp4Rvu(\LB䓂bɲ,ELLC1"9 eHɔjj (0qqP--uR̓qS]AP6aihOjCP Rn,Ad>)m1REޔO`p0S{Ϧ42NhI԰y0fRҜhƇ fZ U0g/8\DՐ&/J˽g/tgԚ<$UY)h4E$Y^5 b-$hJX8ZSMh ATJރX,i M)@qfBZ(S%>%lNs,R* \>?}v0@P K(jAu(28BJ0:ʍDYh5e0K,X^+~ _3ͺ&ʢ(AɔzCWiF\C6a@\g p5{(T!"P[8+/ $)-즣,0* ͖QL'"/H d"I?2dX y;,V&;*ROIФ~ΥЯ8|z .;*r|u%i1A0b@5EHʍu9@$o*C7k*(":7lA& n'L[q親: g ,J2Te8ASs(sMX羸ɴG")W^^ ib*܋ a /S')D͞Ւ (F 14E$ǘj4e1  GP$yXt: ^t1abǦZEy$Rc]:GPAa"NSU .Rtp iBA 4ʪ gJG;2a$èsg:S\V #QabCGPj.FeC_ z03! ttju\Q?yƼ;B1 Iwwv'Eìř'] gzTIueEP@J!nBap#Zbm@Bh95z欚lȡ 24N!m[Ҳ/.CLu76!$4KDL(& ٩Fް'?;pE+#):(5}jEsdߕ{)TA Z$dYCpAAfA3=Q,8h%D ݤ%AJdo[rVD 8黒y9E> @ w5]>ܐpH rl j=3CI78[\VYOߢ:\Ovu[(h'e_M8*^4vJF_jW9Ue9$2HF]P E@]?u #oOΐ׆HwD[^n0 k3pIYTj9x"4}_ sc*JJF|۹òM#H\4Agc= G0F:[Dґth$*t_ҹ@Pel:ݞ]~'W;G"㜯 na ,-ɞ6:SL44Uu 'H-s%B3BNX㶚4NҸh=}zT$sJ2l!$&u]b7KFaRWC` R<4!8&[;c, TUq Gz;#Z #3aXcCdRu"WT0dR?**/ ZDAY012P Mkq=O{B. Suҋ;32XgÉrcUiv-NסLkiL7܊\ Q&z[z_aEQ!P:0xN/]^ied8*:q56BŹ,4! y-Eo`Q@PGHedv_Lg06`[W*./l@89+!'!EuV֔9iTfM }1rd/a3ǎ_Vopd+dFPPzw+vDRHn=6VxhQin;6@RD۠-ɏv  ̀`L]h̀(.,6-o~@qco6z*n)q J i܈Nȹ~zwJ "O: _tg2* CɮS/ %\Y<=@ld% ,[n j]ΒM!0CS50 H cb[<+Nq/405+fUx?nsOO8[RQhpRT0E8A8I(={r/ZCeAF_gJlL? ``^)쫏?I4 qE;ڣO8|e**_{[U[1P,#]lDqոt]qx *, 07_<,t!-^J)p ǟϏ: iJ1zOBkszj# NQMQo|I@4UU<84|~WVa>ipK*^W"G Ӕ20::0fr2`cvgO UnD$?n4CQ>mi@Q ]}pUby_{j7cY3/f7~)91enu`sO|;ɕV/{AeG?knؙȩ Zs{d{,N$6UIQ8Sd_wf0dSm}WT/x DGH&IE~ 9V8(ME>~4r.s!)i6\dS%oK$I<SQyq a}epwP[}m+2wQ:ܑ ܱbE[8u00I%쎯nOb-{_92{ GUo/ނǿWU 4ϣ,!CQCkL5?+D=qRBj9H=]ݝ)6c*+ EXHi(Jφo~;xb&}GM>/8R=/~5!* %*9r1 ݥYxogߤ`]wl(]_wE,JT֨k IDATH*i.S<~%R8"4mFٗ@j 1꾯}28BѦ:N;Uy:-m:7/~'k*B.Ɠ6?52s'$bLЬ>~_Pլw>-Ğ=',vk(99*8"we]~S[:;_98xd׉CnjZrˉ34$eÑQF:[:"emwVY}ѧ/^Iܑ@| ˱XPGPTGUXڙ^kK__mZi}wwXR^,W#2$YmXsmӈ񖨖4FϿR[{X7ccSΚ]_صSvt!Zqlf%# ef;o7mz],~?()c9ou[ ?OT]ϫغ;9e,Mt_B.'0@!ROO}:wR̙Cu>76hCQtBg_C$̑?Ym/L9TUNL'I[j}>~LOBQ iQnM7~uRZ}_>^u럥)_{ov& xކwVn F qF@i487z`[(MÚEbqc_ޞo}u;-lHxkswt'w{=o}#OpᄎEѷvS!e륕cT0$z`L2":֯9 PѶ-5^< TcX~s6%& [mH{~[a$M }m_3~dի;`Fz8^w<;:~;_:uwPeŶ3ϖ~e݆L^>0pjߡ+(Fۻo+VCCۨ8W7/`;?.$k 9qcq"w4e׎`[n)QdrcZ;Gsajxx2[r\%ɡ5 тJA*=]+dLZisH~$gSBt"!!+\mKq)M; u{B",6P4˗z;&\5nkUTiC 9~U8qLw ܪ"jjnٕ):+3<[M\:D.v:21ß š_esWiz j箺Lw9Y|n.;7Cj*.1 eU%B֖qRc UPRS.N9Fh9z@Ѷ[J-G]UԥP ͬp׫ TH͆xG_4\1[|:xg82)Nc !nf"*%%׎3QįmWl[ϥIk:r6o\~C㮼{C.3;rN -??c5tGz{6UWBxCoR=K]Jt'|ara#xmgoQI{IÞ]^U[R|sXà0i 뢊f|KRk (P)55sg(XO&lA1zgp]T )~loOZte:Ϟ#1,W)gnܹb{GWm6viƸ3sDOCXo-*pu,kֶ4TV=C"Jgoj:ÒQ?αHb)*-cɎ)v􎤢n&v\g՛,z"`xzǦH='Pٶwݺ.;>#?*γ#CCBFy]=9xI[Zmׇ'SeR,HtIrí}O6ؚ{s wUچښ'0#-͝\AeT,Xř$%>p%DY_Ct};{躎\tfr z#+ ;)JTdőȱ7ܛInwSV]7Ky~w%eŖB*I")ElhDA9([7j&(4D <{?ii ]XXW>!kƑ=kwLk=Am; C0贂;*mzf;K#% x͒0rfI~rdoij,ڦ͵:-݊6ãX#}c1@}X,`F_I;vO]fɗ޼2ⴙIXW[_U%XF}zU$ $%qv 1ͤkZⷕk,e[k_e;>IM7hc~Qϓ Ba(KO( ~G}p;#L;n-SJ i_;oa;ӶV_O,m΢Ǝ=Ź@qi9dǡyIĉyݤx]O7_S7[{hJkҠj OHЍA&r|ܻ3};&)Vyj:EM8"u/4JF!/xKҁ|ZN*Qc_w.kYyi3>Z죌E.$佟 aF.VװƲ`({dѱyf7v@TS 9g#,CJ d!"ˠBU_>P"kRr߹'|Cs"A$ -.š _kl.}weȞljb*zg)LJfĢm5[x\ҧyiƖ j3/?G0- *{$bݔŊ"QD5˰{nۖ[QWC44;ڇ[@[Aս\ض2pSX4kMyVPRx'"R #c]wUxrÑmgs 飽SLAeM;9%}+_ّ-*"؆5j/o? 6Y%6ʼn"cؐӦWdI9O/kjڼ@Vi]ݾT9Ք2W.tYe}V cXY9}f~3Öʷ߱#Ͼ<2PRcbvVX0OaC+ _~"%z;w $vPY=ٜ6٧HYuP'Uv?O0ku`|WyeWfѼ@ MLj؜X^-³bIZpԢƽS Ǧ+L_80U]_J!,Q{ǟ~Ÿ@@s><'-6< K &&%D,!﹭qiَ=(EQu`;kv➝S=Q>n=ʶ~28\rٞ#O6@Pb㽋FPO)(^Kq[)L-m䔼wWņG&jPa&?n ; t9چw-c[bVO<8y,іabehlh'%Q5Rt0t0]fNw_Kvn/N6u]M@>6lɼY}>=THeYdݮ*,_%[w4!ˌYh5R ErPHS0òceulWᾞ9:*$ رL(~_TDH]XP8K<*X|aiE;娗!s]e)f(" p<i8Cmkò, iN:>KW/{^Se})-@@1U3<[G\kjD"rɆ)'T[uXV#&A ;|6fߧճhwAxl](A {"Ŧ9-F|`Wy^sgZn[A5}T6ӺbN ;=]yoWse^x.mӢ(@L @[7)Cm` m=A.hTa]s3{mWPYzZm=?ů_eCL8~4i$%DLr`04Aݼrg}x-ԉ{H+\~ j#XL)Gç/WWX eGսok mNdsr8fC XnjʣZz.9ܽu6u7d'pMe _Ͽz#oDM3al])_w (j/ydX`+']k|`W*-ά^<7[pBlغ{C22yt.PXiR,Mðl_|K5{js& -b80dd:.3`3?mw?ZibIqcA_/zO 8hX2t("tr}[Ulc i j]]}Z4P3{نv/_WC?{lU~PU e6EN"&uneI'4-C7tRK9#o;9* `Y;+ΰLlKÿÇ>~tK5P d U y~HCӽ^h:v0j2P{KGw_\mL3?LZXʌtm\3ӳ1AfY-m3_V&:-G\"aQRqVy6yGw02M7}06ګ2}R9xrwd+2ƒs&ĥJ1}i$̡q32Kl)ȄW-^tYn<mbGߊF֗lCu+ ݰbfR?`܅QQeMMnԇ h(PX@d!!(i.T4nD.ƝBC# nUI'kbxop .tKp~_ swടm5eNģtm5C[B6\PT/F| Ieuɬ~ 9aPdw8D-mvjZ0Puҩbt' tKˈ(QykAH0 NVnM E8;㪿:~O3z:đ f'/Y%'&cb^vv`]!ҲH2sc/;2g?5ou 3+\,a"n:m [#-'PFpNEu~PKe ҁ޻C&d _Wd0955%>>|%|GhFFpJIe|oL**v/O:*V` .RڦK̇x3 m_zhU6[ .e}]ݓqald6fbjrb F/*@o [i%93]G` L XlΤԦ@6k ͳƥRw>|W @sJdg C㹉Y+ْ12 m)';;Fl`\jpGǰRCA,BZոcX5)˚ у̜ۄG7,#*Jl=f'l.K2'(Nj^^ xGʊLTf&594ݽ@K{9; IDATJ;?{}+o^B86;RlFZiwbKG.*'^@}E!p#pqȄ7Dj4#HxC`q]i&?Egf)mf{DC4}uq|B'kLp[3D{kf+R\VnBԩ؄eh44m<FXgF^>Sq߯YH (2cd`(_OFUa%byUR"L{85/ٶD,)o;#e65Eyc ًٌ -51?ldс|sbG|G$z[eP̮Wf3K B"ea[ TQAGTu xT$$ߓbY47򑎢ޟ'`Qv]hmfo4K>$3e)ȹ3/s kйA׋8v䆦mÏ˭i[{dArE|?ޓ ch7[r{bl 4K9g?cOo=/IٸF3_3Ӂ`(6$]P!rcmN Gz_O|ή#O^64C| 7!Zjm"'eӴ%HJ'U,L2SW5o:Jlxf ,ӍDSx% 9snL;K`ރ/&D>ҏo߼&BH`ƣ1G~Hϡ-BS@MUa@dLu}&d49/eM9w'vw?t"s5w}*-=}c}׬~ H'K1|4`nRq﩯Ur!3݉ile:FzvC2S! +Xg}4gy6fY;6x##f5]t}}/G*`:ko kɟ#|ؐ&,LuÈeX:{H%lZ}'ф&߾ʑ#V :=W뮊{z騡ܛ)v7KO KgZ4LN4dkb.VBW?7qӗ d-d¹<;K'`ċ*L`ƣ r/:s.sǞr("@s*7:?ݰ|m{)2nħm/|/Sw皲;([~u ւ{oGB34I涮 }"vB*w4zE^Ԕ rBli h{Jis [>j \b&xW]f0}iLk1' UK1Қܟ8{jF7s,  wK!qhdƣq@['s44Ӱ)cϏ-Z_yo(r^tGC™DhkĻ^߿M;0M@/?]ʗW s U\LQ8DNZ~wl+ՔrM>p_S:3v'mN>_4'K_g޿g)_:a& Qfi@Z,hlǣQ-#eM?uvW<$ P{JJ<-˹Oȴf'v$lv=_i۾-r2Cr~&-*I۱eMʟ\&?.>ǟ~̛^w76`Î7O~"`-t_4 cgXBƬ.t>y{x6L_ړ!&sϓ/wa ~ jrjV }f[SiSMΗ^^{k:_ڃeфw} aboo,ͼdGYd /7Э}5o*nhTU4mhn9 E[ve9Ƈk U_WGx6O~('hlwU'w[K>=޺Eݿr >9Z,m_ 7XhBĖ-exs$9sV{+Qwl;գx+`.6|7\OFS5niq%ݴ!jv;p_)v<E+: I)2T𜕒gb%<R 'h:# `G;uwep֥$Z|zrK)Y!11̜tZOŤd `h;<: }i!ΰWŏ(mm`0//=]|vbp`dʢl0/Xk[TP[XD]!uttAGւ>Ӽ`K76ᩨ?3G³fJF#MnYWREr[rjnh _ށȅnC%ݺH3QC e7\g@ EM>T媺 UENB1xYf0YpH+c6+HW{^~]n;Csy $i;"/&I"C!j\SU[1'Ack;L"& q50_ZZ{1M5)b8`*{7e4=44jYY5& e-U՗Dc йpMŞTs,+WrR,DZ iIX":vlӰh!X,688TZZnm#/&4}2h A%C_bu%ۘ29pb]) -ufkL\Y爈q=s^zOp "^}$DZyKsU$cPeyl݁[*Ig\R$k%x(?U`iAYJBRHeeMrg maXfA1Y3 Mӽ}uYh|Kq &H> m8oLIXd=؎eHd!H伫gff. |YכFFFUU/..Z IjXց|c/H{ %xE~˖-Z(JQ|asHXyp799E0cr3%%5%%妳p78s ߘ ~='2 c)^Lypp@4aún 8' dff PΏ[=,@apoIxe>^*k"/++񛳏 PgggjjZ(ZߞEi666ZRRqU( naG;p imX"5T@tn.&{ERu7c!B*WWSy+@TmXk@aqac . 8x|xxֻ,|@ 02:*$I$=z n5@i>;3JJK7 lmۡP{dd$%5U׃\-Ƙ`Mzcf9ܶ@ 0>>ߟ'Ѭ[l; 6e|,a$I.0j% כt<8NRRRXR($Fclftzz<W)m;  lٲEEƍAd0bXeye!$I,˒ ,h>x2 Ą 6 iڶq˲xE_r鬬,A,k%eo^Rh[}rJMMMJJHYh4x իD^/33q]Ua wh98aleoI[ ÊĆ î1yjjj0FܓYnbr5亦H:Unzh`e5MK$Keeœi&Ir ,N)Mj5RMK du_mxrY|}q 뺾080 6DAϡaFQUUWIyVr,KdYm۷0#B`nnnӈ>Ȅ hxq0V[˱,Y]z- @ E<#ׄx&󉢸qLNJ_񬶖Ek,eGB8TaIE񦜯#<]6y7f,m(|zauYqî!q)`ִc6z1dUc r_s\,UݪKPUuS&lir+$ain:눵4քy aZ8$ŢsPI$$YMlb&6Mlb/ f"S E7뎵 y F72YʷyCwGmz,] ¦ r+ MV 9EQ7zS^ 9M333َVq"KBhՐDFG+e%%esl۞ۺekUa`hΛ;PrD oM/X >\ZZq@QoJʸ eze)k7M u/DZ Y(~e:;bx0X_"˚)(߲u ^e,|ILXAAa4MOMMBIEEFWi |? 1;;&0ssscWTB%kz&L`OX,s6+EQϗfQeAqT*JRkkLnnk@N*$(4 #\eY <)ZVd݋ 4 #''DzYO}!FYo'EQDӴ 5Wrfffa^}oh$iʹ8\Ċ\q@p{@ _nu*wCX_xR~ f!0  +;6^^QЍѼx#r%VŚc$29l5A}\˰O.P,4)0;}1E#"g-](6pn~L6/_3,KD؆h #|Ǝ'fXQybTuiJU^cZ ʼ}2I82c@ @oL]7m )NYbe9兩q3J0{2^dZ#'}1tI\>ٽ/Wv؋_:)۾% KL@DD "hl]3,D%! _XFX8(1Y! WwOD"(-b|#kGMM 4%TUM>i.Ű#}" #J~MYWN1֐g[7rwJD$@KWT$:DEXWa,ݾ>/!l5+eI6;Qe05a"K'M,/UbR3a]g]Fӂ_O,CQzyE#8[L #,]3mR( !CSm@<߹in! ҈8|>+V9Ze& 5An$KljL&2d.xB>)",5+$R rA GJ\JH⥹-AV9ׄ &wEb]kĽX_q@MčŽ`D#MӬة3)Usۋe|}َգ FdXZKi|w=(r,Q'%0Z,NVU"5+  4s;-1qT2MCw@ܵk;Ŭ͵ v/fws-PlқCzeSS:`xY8֘YsGȎvegaq v0arqm۹0`D w<}wm̐8Nov f5$Icg.'-mϖYBn%>d6q//W*w6}^B[_DޖkOĹʝwTduGŦ2KǺbm LUCnl'ޚh;+ih,4'kHmߑY5puY7 '0f䭗M{剶t;΄j[ܸb֎w|ܚ]]$ C;+)2r"-پ#Km<tGP&`&Y8楾Dm;e!wm)ˋ(1Ƒ@A펦\bϞyXѼ0#ͫtڈ}m-UC"eyxZ.P`D[XyA9mfUYu>V4mEzqB1 -oܻXps튤+bLQ4Z{q EӐl9)oG]>ML1v@QSeoU=B`7SHw|\}`o~ =s;T~x 0l7NXw{^r<\'㐖{~5U0">2k.fZJ#.'d/$-ۤy+@V arCq6=x4CƎ2p[M 9l;o3;>lv<-[U/h9U? ( vutTL;ӧq[jE(FZ^9kM5EiH%q={lؽ D.>rLkBں{LB4-}ҦTVS);們֑{; # tH;k%^r 3 i,@X.0qTkfđ7Rݞ>S Ck>Cc*MMyjG ̒<M/X w^;~i(YѴ{Aڏ|/_woC>g ԯ0ڢ T1.*SMdV{@\: ;?.Q>B/R(gG^2E 2;ciFYKLL% 0Spdv>W0%Tѧ?IZ|tDz܉7c <lj>g'銢xǟzmܤYdx|:BjљɈh%0sCo8_Ŏ-J[ಸ0~xaK_wGi*~z}{M{zPw 내pBZ99G}0hJݧ ilu.Dh)ccٹ(KH1yry&$?{Ya09-I&f,p^c?@'̩~^PlԜhhf'&Ux^fbg^{D,q˱^6Dd-u0EY×m%w1uW(4Sk OzHˤ(Xg^+-1O1$Q{bēuO?ya0xny⛏kCDxzΡ9xdld,<9=77P OfA<|!<ӷzEIL <} ¾Sx _~Щn'PO%,5;915U<҉)GhH|S,ByYZGA^y?>ϟۜ5x;x@6z<~y 纇B){Cg{gmr lӏ|! 0DoF7s&)EQb(Qq4F׻w=;#ifQs`DFwsWz߭jDP`#~ x9'$Ma|3쨵$)}"GyNBku(g<1lE ?oʞ^̀ӑ#z;+{\!NB7? );aӮ'l98h!P Bݕ{ue>l hFqdBmm~QOg}Mx3 Octs󇯿Z8JH yOBQ")Dv>.ΠHZO>yo_KZ>{3.^'%6qJLdҙuB᯷PH=$޹9m/=fPMoߧn:a5[>` 궼ζZE G{?Yp#i.:8B ~}#u8hǩn8AҨq 9ԑww<`kCĘ~:fGo>MX̭?}J d˞Gjڜw}N˼/zlh67o<,zEH\ۻe_ui"q;J鰁*1POv8@h}sr[Nʍm?)퇾x)a6ueHmp8B }-I4)mko?BE4EnOP"e6~;¨<c?zJ1NmaL= H0)& 6Z+?dszOmૃ <*g;vlT/ EOefdH^>;&+w`o(N]ש7YS{h=Ɵ:յϮ`?D8xQ)JCkq͗1]$w6ܳv{ުN2aC8+0_6Tro|5nJO_0 e+1a__'Ȣ=$M{7o8H XsǗMcv][9U9]oNKŒhѐeSohD=G>xu[U5h#[+ʹt'~pӔGgR3 h9Ts`CO%!SWr~ALϹ}ǟI^#hW}fR߽DL5e.~ى: I ƞغ/y&O7:?ou/B &M]zynyU 5)i 6ykg"' !1tc~{\c,䚿Rב/v=S9$*WpJDRtՕf؉53.2"b i9qFX/IN7sOPc,MS`/(}cr7^ΎSzȆBV$dU3fV H2`llnA\xVIr{,sBܦ9*>Ǥ?bJd v GîVn{hNdCǚEOrqfdǟ~wh]T5s~ř\XSg3rDɰ%1hu `LRU#_4ў=ճp& nQdUSp_Uhê= ,ez&-5%z'cznf@w $.g풲 wœUfŔy)4 H'B] p,е@uc~8:8{UA%Y= Aa$u&{4Ξ{:S|x_ͻ()mZ08EuDWϺnP?US}[ϴNk:<4R}a]:t?Y1}Q9yߚJA\\Ĕ}ܓnu W|.d/6ƶBSxO|"Vlċ+֬⮈]TuW΁O'sQk2bOJ`|3/tu_xdu Yfەh`|10N<ӌȿٽĺxG٪}tv|'}GN=|lh#>0c)3/:(F93]]:sI;ReLK (יτ|˔S{7ָd: ,{mG6 8͕'#Ko>8tv(gJ'ӵعﰜgO;5梔a#~$%۶)%(7:܅*s"H s.ls& ^þ-B2p5HL[kU.Nܧr 5)faJϯi3h4ܑS啿;^a:yuҜ~,~=9Hٳ=2VqTfpOI!Zx_UzE4OFBCzOV#+ ÍPU;o.R/"J ]Yu};{5;׵]K9m{\k-|^پ%9%zo9WOY;9"坍QG ?Ё?9վC'u#ݯÿ8ԔC!vF"KQ̚4<_x_t= lM '|ޢycN 7m(GCgIQ w=|jt IDATxD:_}'!0xw?jvYVcW;.[mxsR䮍>-)}}n}֬+f̭H?V(Lk,}pz!2ܭ"+mZ[$G^vf-X0A#j>EQ2U(c[o=xxo`L'BfʲlvroSk@/\+ys{+Ou?\Y0miI20bH ~GKM[Gf>/[&Ӌdn F8 D6M/|hmo|ah+lʱ R3}X_=8~Ĺkv }l߉V X2=Z0\M!4ω2C /sroܳ.{a^8sK~QM$fÑTW.U>sVO6"GM^RNQX&3~M5mۼgx詟;:bR (A!"8,ٖݯ]U-<Ow8)yFq%.9iiM'jһ_6GY/-ϕ=pM5DZAQ207ƅYB fl×_`DIf8%, )tfئ/,-YXut'.3/ qw64uM/n_6[h9Ů.%3/" q%yE[6pX_,N)5°P E5J*!\ŁX-:׻[anڦ͛ y!Ys䦯߳xT'c2^7cF2MSO:!PX4yS^?D%>cO>?eY>OY5he$@)=[b|/l*csd]=ULb״ RS_6$`ZY$ gf4= ]EyYfoVN0<z=ʕMtJe֚96?M[:39@D9.gO7/=RdCLiq 뮤% LNz}v_~;%WIF0fĞn +P1fy[4t+f{vAN$iȁƳ26&ՌN-d 1QЉ4cz^{l/HL\:sr|Ȃ# Y!;E)KHyT_%iz1⎇~B_:f/z_>vW6嗕%HG]`S@o&8@!>k|ke'&eg 2'Q7XK{wd+Ou-;PYߏ'U:]-u="2g%ӭ,֥k" tAcp'mIbKVLscFal$ WJo[9Kr PSm칇s?/X5LK&'Qt1xDtRIX_}C]0 )yi$Xfq>A+#޶>gf̉rN'L)I `HLk+,˶u_4@Ut"Y/Y8꿾k_5zdQ<9}e (0AIRJGTg2TNqazh6[+rRSl׹^xrICU0;o# fO=mUǎ79T WI y12$p=@ $s¹cGl ͙?Ӭ(DIkCgM2#yyLgOo8p~߮%V>smY'?_~ݯOqz@@dM>>߁R%`@V9 M*X.J35 3a0M‚Y9>w$]l:2ԍwZRi\lN..]`sYVtם9t4$d <'#""F9M,[djΜ:]}L15a#,=`͞Ri ۲f VDw,]׶?6WG =ŏ=xwE:41UwYPYDԙVڜZRm͹%NZyqO-gAos̚qN?6WD 8Rw) !Qտqب#J0_AX6)KjN:+f%1\5+23m&S\+:ӼmWMƒuK l#Z.},{+/ӟVLKy{f'xNUX(+!RP2-0nE&r+Vwv>6(ﻈj]_gg%+&,I@g>J2F` ϊؐepΞ?{xMP>oa po\Zg9ЈˇFȦî{^ȬgX23ѿosWgY`yO3>y]! 1BCwdR 1Q&:ܩS%@P ȡM[.-G1F-'d|=E/3Y?o‚WH!ӛF05nXl%)')JZɔ89xb0!8!:fg;'zlI?JBݧ>̏~ѹGT R6ZDD*+F""A`qNƞyҹ$lPm' <<b47l7s] h(<ȓ(Kxg}h\+6Z䓫3' cQʇ,n0i]sdEX 2!$qSs,5-)}rnsm CTjO㩿d|ɎDA6["+AK#DqMo̟59byx9J0 BQ_yk#~׺{Rt'J7nYxz3߽0H'X?_}+LQ1#PF `c1IV b5Lw6FJN)>:z&! I"ջ>ҳ/Dضa_՛P@ Mq&F$€_1ԷOi3'Q(*@T}kpM[tϜL.1l1QX<,\䓏\6?DQA¬g,]# RZNlzE0ZP"ƫq0]F\,` %S-q q6ksl -hϨpP36h ?WZg"l3'3wF/[O,f 2(4\8vQDQuDyH,'9{ d[owKfg8A!3mN4IJ9֕@(bѩ ȱ.u#O=N$H˟6kѺ0UvV k(PHL$n(22 #𒩼,G֜;ry~g0*YաO/WaB 3>g*.%@H6+0nr( 3ru;y. 2/eQy. rOK]U8nyTſlŧ!/__<4PmTgHb$Iz |#ȋx6*ä#;Qu%h/ZX^@~K= [ttGg,]*F m&y'yjUA ՌQxX%#bD;؈BOmissM@QTp^hʼnpƚ ̀h6tf/Xg^ne$#B%X1Yo)40sّEUp(ʲQA@7̪H:[3g\d|17B4a"0S}ݻZҢܔSO#-(##rD,(@ RΌTGYvjpaDR=mXcr(H< ڵ^tDjOx1{|Rai):@ྺh^E:{ ,_{:Cdx}Yg71yr3_l$.q0 @vٲP2PEz!D¡  OWhyJ8r@X\DB(GelZyjHM x5!KfCF!e\xa`wőVj䵑# /# 鎔ieU$[%ID1vjÁ˖gA?ֻ̩Um=9Q?@ W{KCs3pLcՙ)ىgu9v5L$0ΗW̮VS3tEཽhS~Y9}t_7ԲP=Q1ubi=pϟZ`Dҝ#r5bVVHɞ>9:nsEAAP{݆eKWƒ2Dcua11 9A3PCe͛ܖ3}z<;d.nW` j&f]t8n/a IK}ݯIĊUjסݱa/RZlҕ_ozm'&M_bLyz}Du:8m4}Q~ђ;W19"SEBo 5z۞~3c흷UPռ{ JU|eYa.^ž1U,_=A5BSi:RX(\k,i{ZʊӤjzHE%s֪lBd`-[|9\w7;ś;"Q–{WT"JeGmw?~ Ud]ڲ{f$[=-0̻YQYr9| 3R$/DpT7Q zQ3l-C<{7}I3W/ ܵgJI($۰3,_<ϸ:ko-,9kY+nVӶ]#hN:f*"+{@NyM3Y IDATkH9nɽ?oAJzQɖvy{_%ܾi̿o/C#MM 9sF( @c 0 DLg Q ~[o6h[K[@Nek-Zr+Rkq\7|a>-ًk[zG"/"+zpUǟJo[jzfHECNPM:U%ֳ*˧O{ڗ^\C ؐ˲S|<fXV*;$$wĮ],qr'P_~_"m;&* 5NS^dOIΨ*pFCrEqʞ<#Wp ->uU;Qܹtqޏ6ӯecԇWBo:Țh60GB0X؋~.(Fz.p@($B-6t|S75|M^";ϏZR,!RXH Q42bD``# ( Q@yQB|+exQF)_=fz J\8b0}f " pe`%QDAG͎x3P X,Ë/(JjP R $9ry=rU k"v L'*$8x( #BYM$`Ybd+xUqE0%6, $9QepI`JM eiN $XwY} ?ZxeXA=KHłI0r:$Pq9`9:L${Alx9ԅ& Ě?&q!#DIe8" ,T8F[|~'D¤$a1[ pF"psH!+40_To<񢀨^F@dDuTm#IT/qΝ=k1īL[CMI (鴓+0^Y`3J,4!3~pGx?w\Nn.AÊ濈 ꐋ/Ȱ*BA9eי&cIQTWWW$*-+S+Q`L[㭤*R$3;0FI31af尖퉉#c QUUaZQD70HQ@0s[xc9* 3OQaJҔvB%aqM2\b@`ijPt(aƄLVȲh(jmm-(,*CQE'IL4ˮ|!d"Q%v{k(L&aXG]4ϘS}(`И֑ݞ+= Os(Iˌcq c^PJN+*D+cT!u4gFdLgMウ`hw Eh0(9a`$ MqqfZ`Y@Єx| gx{( S(qTSp&qDiFKKKQI#.7P&r\\aE M돍"=j0 w8Np!k~1Ek#Ts\E~x-8(A-VaX8,++S;^U:1 mwqg9"x"qDHv#.!-,b~~>sA!C6 PX@rH(M8&,F1 ~{@boJ_8EW"d&J긩}ݡWnx{8 `:) 0PEA1e ~a0 ߡ&]Q15tKQ%^0&({Z{+aQ \fà2ynAx<STTtQWo%D}iD]Nm%q(ȑ*.F)99y8 !0YuZ`Z(TE,$eee1íy-ʾz!0  hnnPjIn} W\eFApK*j" ISF6"/ꄫxhm[u14_A|{.<-Pa9Րp* z2 NJ&^&Ic* jÕ;V31pMimm6oDFב!浈%]KI}}}PPfj#Uv DQ2$ƩPS , r9?›Jla\Y'=a{!6d,;f[/4 Hai./g@5])K4OIc?EQ^譩nœr ,qQY Jm2 1՚/+O'h~>''Ep r d&//oxO \h.B0b-T,EVqNV.,$ɦ8kRR!$쫢舥֖U.h9E@ggWnni׾VOL=@5n'܂hR䪲Dq2⊚/UvQ2TSmc`HЃM8*+2iP ulvi n9t#QSaoUrP2=3? B^3Ύ:EQ===H`,& h3Ƈ*y EKGoWUٳna®CVkT(F ө$JdaEslb=$K̮ɲ5J˩`*0' \_'\ȯc>־hjFe+|3je%Y"hogݤ2hTEvb8q.TGTD7hhXe_mU[tLrQ sq5tȅ*6ce[ G3J 7Q_iL3p _^n/Ǿ`*z#I!2o 'L p)8Cy\.A4/MNG&2ba3e.E¬<p@0ϻ57c:#;vY8Τ8跓ZyW}\_E/.cƵ-5T ߌ6Y1Dϑz4#T-w/Z8E9A}Jb_ T/1Cr͆ym W M³tF y}Sdk D|/T64~[@>cɗkW2aʨn"#₈(#U wmUx>.WZ~U/XKq~QI-.Җ D 5<8mƿ`9eIHt(2>e^j;J #<] 4#cN.KGbߋȒ8߲ʈ钵J_g/v+.#ܐ` ו. e A!K#EQh8a8[s1S(Hs$Q&!!qﯙm]xca  =~!k톙0EPj (+ (𯿖 Z0 ȅ0%ha&78qnA'I¡durCA _?I-KssSjjdR ~ @#`(jMr^z}=zd2]|˸EQBL6E?w@uh *p*N; `۽O}CCi05lKQd1b"\ ۛa՗t^'Ed2 ƆI&L&25Pyvuufp+h DqՅ bo.Kѹ7DQt775566!XbL}S9iYvgdfN]WEl6hŒ8~M'UfZzM7a$i%Y6MP]PeXI+8WWC>AדR`8`uP!xmx 9zn[`IîB~v&cdcG;!2CQn'I~5t 0罃Meo5r\`oxvVl6_=Tu%;xh$"I␖Rd; !fSƣ斥!H _lh0VX\z!ur]r(AqqqF9^? Τ{h4zCLD0vmU׉4- 4r`C8b j9؎z ԍeA,xʪiEh{2P:h4 (g'aK5e$sX- 7 @`" (;doEIDQTJA6C$Iq,e<..&"v"ȍ1aP$e6׾E[KjE㸑Oi?3MsZ,H$2D0a8 An-w=He h4BQ4M:H30Ł8k>ℌt_R(q~i'&a|I;!IRTiBo:M /iF75$^H7A4A#$ɉ ӄ >4A?Hg((D&%-M'NN[MV-4lr7j_aeY(JӅቔKZ›ye\KdknS`#7(dB Dօ0An5ɺlq|ʭƗ4a48nQtMح iʡVC:@;H#eYF׉ $Vncv_(a(^Wc8BQh4t[ЧG.eUoiV<nAGƼ4'"Iҭ۵&, p=\U'͆ $iY[ 7Ƅ9oi`0x4-7A:ǛL[Jˍ;i`Q o #ª0An}}}pX p=Pd6;sߧR4O|"755)b4Qb'uE+RF+ 5;2>޲,3,aXaa!MӷxZZZ`,a0"dNcx΀& q ۞M Qhlld̍1a(2 p8naX[[{Mh9G򂖓da 0 (100چbp; ń (, gox4mll9`4sĘ."˼咓322~F|e}"&Buvu4Oึ7jIRx?vv+@rEҲR7u _G02\=ޖVO{H(FѾ4;6(Z%MEQdY377/>(9;;{x 4Y,E'&,˖Q*6 0an{Gu]w*CA{E]dɎر$-q&kf2kMI93Nc(v {_{uH)(^C .g}l\ϗ(:ΩDk@k*j9Yymtt4..+>;[<fgi$``l||\S՜l$of#R-7>>>22bYwԿڐ΄%)--``Zs?OC1`4yGHHmKcb-oAac~~>(( WACCCV%<<MP݉?pЖ Y1 |Z 'ıKg&vrlV˾op8bf#3asnnn& {pH@ˑITttW}"!\|&rzP!@N#)_G9W?WBQ]^( 2>(P檢(PWI 3a/ATW3!(nEhc8}n& E|ZE381EP3=_B~-w:W9 4s(NP C #@!ͩ47M>->J-įHaY``iG&q:@}@ _/<)DI`F0,C84F-] t⳧jG#ࢡ FG=, G`` !Q#Jei UǐpX`_#N}WC IDATFj /p1Pyܩ~z^Xy#N@nCt8,cP0ok0P 8ԗph7 q1Deb@/##d&0, \L,uKb,EP >~lZIՠ@ޚ<3> 4k`(d>OR15tUapViKXTJi::di `4cadu_/uAN 4 n6 4Aєw+7$&>)3(A!0 ~>BPz&PYݧR4OݱFo ym2OrzN=2Ԣ> @Bi C,!F#(!8e4HOk.9sn'X3^bgoC4ǡ.=ߎ]ġ:*!n!|#qSLm?:`$`YcXGO_Lӄt0JM &">:_ه>/o?wA1ȢކHEߐI? Y|>c#/% `_h}n`:NѢ/h h2R8ABB,]Q1Y|qt?Њ?wlx@Gz {~BE hIߎ:t ,~S!p1CZ`32A\i gI7٤O}zZ92aІ-]PxA,ߊp_^})ߜ9 Cķ1| Z1@?aIJ[F̚q{^r Nn&E(#0}BQE ]}8;]+b͊ hj+]SDQqLy!W߯?p0ɄHf&rl"dL҅B ]8]T7QH ^ Fm>C?`K,D =q0?!@S c7KQ߹6rc9v-j8S|gc?5>i`1hBEWPdd0k y+u_UyޑudY}÷ΪI;Udd rJ"D򄤮9gm(ʮ$8u=pQP};}~$0 i((LT~j_ǖ QA̤XwMJ+S!< dK۴e]@I+J$GPƧ:_Z?0I'/ɀvQ7]n Z vۘn9:=yVPΒw޼-g4 MMS(djA5)Eǭ&h/<[3?Q% k'.89۷`Qv"Dbro[J**0tHYVTs?&uR9"_q_ENL+'q[ֽ/#?q{n{ ͇Mc<#ONCq GAdFTh`&Oye SezCHem޳0Q *oe;χI8ZBgݕix gT;oTGl~bS 㘚3X3CS/pxqOrJsTMவiGZev2xνaJy`wZΆCdAWT m{r-$B]YSN]l^Kf(x|'H_BpJʻo86|֭ˢT:y%Ӄp>hcwn[k8Ie6;@vTCvlK$ c C ASq1Dxǫ?ңl}lw*+cBf/}c>l㞂x]Ӻ`0_kɠ6f#W\{^_xzGU}7FH#R{ޛˆQqӍ~צl?t =Nȁce7 kQ!%q#8/@-[U8N {i9m<5[ޡ6A)ƚ-XypWVt϶NȳٖĨB7Ql{oHt}K6MNqWɇoٷ.y ,J*jY~}>Kn:Abkg7̚o^GW?[$˰ܹ5m3N'p~fthRN)ܴeP\Ge\#A(yӥN% @#S=uu#kF]եW\^Q]1bIH!+:ֻ'/M:AR C!0dttHCUc:quWT4ګ3To}m I`E*< B1K9;W{m`IHcgKG\։8%XS۷cc^TCc;4?|Q'K/.ꘗp o<80&)/.rZEu}kv~oP$:t~X@^!8Aw鱷ȍWμ{ j W :eXr4pKKHgC+껜{ZϤ=njbFgz@YL̗ AdXRW]TPhO(AXɓ%HšyE'Zpk0ғg.deMGٺcshPS;=$/ Ԝ>}w|^ 2ZY]UpG-b墫תkFfT–0 ޥpoG.(WPKN\j4|zKN\WXFm^|z1^[^Z^P̤nčJ䍮y*Ԇsk؟a/(Μ*np޹wmR:Km/EhfG[Ξ<2"( iHS;GfdhYJwWWWUՍql$C-E>^TUt NɷA'b49*NaycSӿHCSNiSMq^9-~:{sy獒^Pȭ"CeCӜkcNDh23\sMI ;Opfƺl}f@ݙ8r&rXyeW+`kiqIR@,9*efDO_@(FjΞcocؒ5]q߿8(JDG :q@h^0cNS#n;O^i`4g>*j(E]cN2g- cl{Ξ24W3[< )%ᖊڪI6Loy⫥M]ÜFlי<~kdVAqdxVAL4\>Y0J?y$BM7ڽ|xaL~j]Ljn,V7Rp̓Kb8C UBhOehFùwδDܒ^x띊A&*zGSx@o[?|[f3$ w8aޙΔ5 'X|tESG$IH}sEL\WKWV7v rQƵ/]kp(N0>~kpq;o7x#O\y[@bqok9 SyGkmIqqukZV=<'`'F;k{44%VVuF+C~?\E5%YFeƐή~p988;FC{2Ϗ:fΟ<\:˚dY"sV-FHHpuVG}E xTL*^'cs1! 6?NYA"ldƶ=&Q0 [mujxR? 5."#?}.{h"9ˮ23ώ^*o:bV槕W49 v =e%f5scS%u6qKm myN|*/nR`RnTK S]!k4%_: mOZ)"8uLRٳ:HhņMyQƱʳŽ[X;}_y,() jK9*ߨ`R4+ۨ8F 8oYҋ;EHk8Kzʚbʓ5-AbTU]5ŏMVLq82}kcAX2>K흣/C!gl{P>{@erl:so(X_}c4mM4LgmOS}8} 0 (-#lZ~'tumSq2<ά+G'κ:K[WZh/S%@遶*adjb>vS/l1}~{Gixqx"0ME! ]kGu&- vh(JەzZ5;1!?54/NƬ1]%W PZ7[.RT,W%n=^OO4|/'d [=}MoK6G PQ'ra(<ހ$-kx2?]V3g%ګ3ay:zkC?=8/spc6Dr}=) OqɖSoB dչѩ_bMlᆂSFK<{`Uy8AHW _E`XnPH>~)'I3^Q_\FguܛQ<*N\!3w]@"i@*)k1r@qLŤm|Gk+ 1q珏*fB >^iqqq/ݭ2M T6G_"R>z )0G<zȇںqzϑÅa ڞ)fwCգḬ^sR;aAhipQEc=KWnM"tWLIE 01ZwuȌSUeEk{ֲ0YToQhw wua,iݮ@&i^kE/|՗, Kyp<+K 5 lI ק-E5S6a pK$8e!́\sDʗ|)g¶~_T(ZtNihi J͎:F[`ZpJ"P_lN:!2h-dwɛ~~q低` Yy]\Wkukvg".'tl֖ïP5S ~`E?N]446ӆ4|D432i ưp#V?b 3yw (ݳ 8׎Byj.|3G9d1Ǽm-CeI} AThSڍ?9Ř%4蝛DCϕ^iՑ,t`??^ոy^c {eJ7P%Xpcx?Z\Շx{]mɦD#!Yóod,w"Ps"팮Jt` dt ד?ڑ#"i9׎9\iUlWcu{[J!#j*C#3s*QJk,O<#W4'wϯWIca67;[g[%iaۼ9:"eؒ'1揮#lJ >KLVǛ٧I[*˾k 3M:ٰ$"P{ySp$jk~~&i؋VY[f֠}DM09~^fʎO2l"w^^`x"⦰PtkU]QStFkm3*F44e\%o?owϓ89m[f IDATehWe(5MD֍fM^}ܝJ*eߺoSk KO7r3G%yeN\28 b*_62!<Ϗ} )~XだL_yICYIx-W 1T18<4=,DNU[|V,iW]}23;_Wtd=2wד[Ns"_9y8fU.q <1Wk{O/A@\ #]rC>إG1|'Cà GS> iJ^hf(lč&'ڭ4>YRɅ{7'xڎcyrQ"N\khrst֧^}%.֏j$%:';T0*5˼,CWDLYvzu]>,XsW;Ǽ }# OF0_揊090"Јz=nL+2yykK͈ S<%Eռ-#xk7dKm棣'\Fgc}pgǰ X?KOCGۥx'pE`PxD@+=֤eVA%-DhlUu$WnW2~=-ʚ{DE]=I+7a5:{xlljkpRr3tQtUEBU{ZWuKXJZJWnVddoٓѳ箏{;WvlCl래1=X>?yPqةN7| Ϸ;U+M# #FDWyF9க&]R< ^^ @o";8ÞA W%4"9S5)#<٧,;<2 GtxSEh`:zxQM%S]-.NM'f;μs^`ap56=??Tp|,buU<"+뿠ktLUoWc[mE+tQ -.am=oM7e C#XY]=pvtO&g2RRe|]1õW\(Uoʗ5yuȵ.SLAfI[Jf;&f_~6*=e/  jH_,9w,Y&qkU84֘PJEޮ?jYk]ZxG$j2A\ aޥ2ًǤRG8Ya6#UdTxMt{'Fe{NV *x>@:PEKZo.]{ݏHA讪lmTѰ_{_478B.o%tlA~ SR% '^<ۋw0`V4{훲%0>j]]gdFÇ~薣#wco*  hjjHrv>yC A{Trec7SVmlo:P>*/e%G,b t0RU2LM8D5XlAy7g .(&ʆ5)hg"rZ4A}UX`e<_>YVt t~t z#`)&߾)B'gTsfCGZuڪ)2z()1|UfDGŲN"4%;<¬eM+XfXK*4M}|EwWNWiˉq 6],mm -^KߏpsH\^'6wwIϠ~[7j]ZG8, +L/dUϦ'y,D =A3A&t89>DŽGZEdb݋SPA밭* BR, #ڢ Mb ?~qc"v7^*, N6>hy7 4 Ą@#t""3\kWfO7h,KP}mTU%b3_FgdrwBc=0m͊v^ x,njp ]c]7FٝO粬a/b?dTCӵI51ZKy3&,:e㲂uM )g.pC*yy8UyrgІΎaKh vpSo tM8,8MbSznn{OgCjЧS9oAdnHz>;B)vs޽Ο#z9/ uIy?M (~H᪲*"g`)[γ߿޽`Ez  R72pzp%KyD*"n$ 278Myq_)oO}Fia#qVw. w0k5Weϟ|+Wy+ e#㛰ֺ*N>p8+HSK] I 'CԎXYY+٦68b3lBrKޱ>F[eǰh7Mϐ{ /o qhxظH^ӟ^FAa' :Į' |WՈ4+%v@;]<^Q]GΗqGff5/e\)3ì\sfA/qP]+sl/}75cLaEkh* 3tc m|c9|f A%ĈEnl{[u"x(45ye\A&́'b&Q0=gyz3*S2ŦǢ)ְR9yyr@`*_֠<͔Y~=E a z G#H;;:wZKԆ xW^yldrjz+{q?UW8"Ga6[3a+pOHHPD$MW>,ݽaOe#̈́8;u:qkBn!*7ܻ+SJJ. pw8FX02]ph:$-&JtLB׌:l6ct@Tj2=&Rk8ҬIQ["쓽%"/-dEe+ *'ɐNe46"D&H%2)Hh@qɉA ZPTX2Uv۲X$K(F 2YYFؓSbY_"cY O3'Tymi0 ɠ5&~:q b eNH& iHIQ/gNvƈ  odE KHǬ}! " բ k0C!55''  K5e.ay{mQ=BzIrF%UxReY5amˁfm;]Cھc; 4 IXL5hgh,LɹQĹO2 asBk@R6(5)`CS)9"1)"mvZS7FD))&D)㚦tPJFJ lI! gJ/ɦMϼ6 ?SrI6m|f.ZT,4& 4)L#BQUhɝ/$X]0 _gR=az9~Ano*nkZ_EƆ4?R_}Cn}:"!(mI{tP񞖹<=AlQt&J9aӉ@W͊ -)- 9K#07 Sq $0  ?C$}>xY51FY^SbRWB%&cNgH!yيɈYs{+^h[eY7*eׄu^PpTEP$;M } "ڳmv )L`t AHD~0UNl TqDT5!=٬8lvl˼gn ҃x-軐f MLB uIW}&;p2܁:X{ 9|`ofhD+O* "9QQLZN^H@V/{s5aKÙOm[tKN>7X=oZh+dTQ|=8x܀U=ӝ= l[6m\AHC!@FŰ݇uz̉I,J5!9Fk$.aqajDni5~ˈ늪2D#  ȼG [uW++qmEG/!Cɐs %%VB5<<.I bU%ZPOqIWZ?qӍׯ *)? AE0])I MچZ$ 6vpN'!Fgo6[׋(K).1)֐Rٮ p\ JHkitLJ:bBhOTjQe sʇg]Q6<ؚ(g/"u Q׌!qDG!ͤ,tpUddz/ GxދqwS$NtU 4KVԷwq7WI^rŲ*gt\Wv&zͷs09)RDVDIvm؞yYyl3v܊(HJL30 @Tp:$l IDATвDR}{QUsv8gmMwXu4M&Ͱd :f @([SM ɢKc.ˋCLDб?a{ޢg`v`V9J2n{ +lX϶m 1?[HLtM!8[z$ab}'Eg\Ul,vwvu7fW:rDtdwǴIw"E3v1gNe97/Ϡ,MyIŽMPEЭ$4Q8b.'61 ; JJEQxOL\!gl23+V@aá1ct]$yQ`6`eMeZ1YB 'H 4UGA D=̽R^rD(usG<2}Isb up/ TӅ -Bq +P d 99C6M-EV~8Ot"}K9$%K/F> v+T؞桂m$0\I"gaӦ,[W=o6 ۾HBt,28ta]mcgTt]?w\,&F-]1o.7[b{3E$cb؀9tOH }?y xrJ4prym9G6/ BS8Mh E SѩS223̾)F n1(>8ěwF$ލBJo07xt4똴7#I+[6]u,^{kWKAⱣ:bcGZeҼ^' j]nbN0]VcA߾בs߳%Jܕv1z\ѽ'K 3n5\fM5j$TT EhX 0yŰI혬YUWwq䨑'Ư< $I˻-BiŋuEEE s 8kmmD£GNVWW''Z!;ېa@ĸZk{KLKM3)G eחnMKJJwqܹs璒o! BWJJJw' ®!i4|ssDG'DcԔׄ!TUmj2rHeqU˟VuIqqq ۧi86 Xoi[ZLcwxC!/Jh9c{?^%[q?=77ucb?f1-h"t״Ln ?7q,(&ADX {wWM%010 ޒ[G!ƾL3'Uglz&l(Rryi-~ ~$0ߐӼ6<C999nNavRRR6)9YXWrQMbK4H$ &qQ.] #Ob6F2@{o}[N7vgYU223y"Z.* &s˄.o饯1a8Lm۩p:1)I/rZ-5]/**񝂚0QLMM B|L&;3+݄Y /XIUrcl y  h 4M3-ۭiD dY:{Qa, ?UL4-x;EKHH -~5? x) ÑH[ C9YR2NOa]׿#-8B(I~'nþaL BMطk\eB3a@`蘰 E Ze٘c,?bיXBzיQ7 #BV%ku oȿ_tnk 3CjF݅[؋m%I ~;nBt9+x:#r\MLL7aw_xLmUUqv\lsẮrURn. o1(.Co1=.CoŒėw|] ;;5C0f|##8~/ |ֆaS-8 d#GxzFg| !q爥 Бx yw~kĤ{H%RB 1|`DZZZ,Ӵm۲vOt FĈↈ9H8nhkot]ײ,۶ 9,%$$)~+~ǭ16Le#d,kHqL|_ IRqF<;Ƹ'lmmuPc sSYYYC8 0ƺQ:nQ@G#\_)==eپmC yƸq̬_:ZCKIMnmk Á@ !ceَ@ q `ohVvV}e49oFb!/i8QH$3.8na1f3cwoD,ҐDRSSԆDI䙸t`V%;i6vw11?t@@(I,eq Ë; (я}CxQ\(+J"g$H;~M츌bE,?k{ ,8>ׁ41,ΒF2 w3E w!'2 c_U3 pm #tmAAz?؇>&qur@@\4Lr0!ÐK5Q1ĶyQ>uA~#&%s݃aC@g_mi[ "c2pClr@+0 ?}Bloo54a`rnq,6KQoߑ#CGA]3}0&2^Qdk#U9 ]Q?*+. :}KU:&zKE8q,ô|`11zu~"XT^)#޺!4\TzߙoI\5(bcwkYXu Q9M58xl&g1йRCAq:9۾ }Z?էqo9!o7NIע+7,5t*À W<[~3 I`< M5pXx1ddƞD+Z$+}}{2x|ա){evܨ ǡ*-0&&Żrk#NU/Vy}@1>I+ Nld O-׻7tiݹ{Dnju9SfaG3h(v>c;4@j釾<Էd~[5v{pz1 0v𕠦9yjƽg5W,# 9\'tdT#B̐H-w4DtbG䁙#X.8훷^ '0D4<4~~+ B6c. ^>9M0/O^E:j$b8>Xv>򉉉!rTצ dDU%Xi%Bpv8q>pDkaHCW/awwYL$~'gEC +$ܰ3ǿry>Ta"AWl[e_f8u?<2 B'q'*mժ6hsG&[: 7 ] e>.'yE7IW>0@[i޶~ݑA'|O>D`[}]wx'%>gm'JERױC3|<7j= 'vԂ'3-SUliM}"@8r@SQ;Um>LiqBÍ;U˅21Q[􉎮(@Zʼn+Q,g/xi>MeY3:=lUXxr~ϖ)=lѰljxprہfĒZ6&)jOm57leaI_L|guՀl ݅(vM5.ddپ䟾lEM(1ڶ{ KD?m^zkIS2#H]j6B78#xA A۟=<62)4uv۫zť!/VU7k&xe"@uO6(/%kTcSϽ1O~HGxi6=γ6nbl[|Ǘ>+ V,(&\Ó8\sK3yTqyKT=+NmwmY]8ْ  t9( Y_"lkEHvmji50f IDAT~Ң|"TŠ 5;?rOJ?4΍9a9ƽ|h'[όNYTm|)dhfj!aqh=fe_}SQgnٸxs]"ٰ91 ˉ4lpn`N'|d,#ԇ^{lbcUL zm:x~i1AJ82_BJD. Vk1j'n5}< es{χu#׿Iѕmy:%^i<5D>rV3[>Lb%O?:5;buBn ~ϸ 9¶G'j+O=#P?utڦ ²Ȝs ֥8Ъ)c+5/:jYDh68;(z9zLՆ5ԎK;A#&ϞYtDƚzrŴz6i$rz-0bBYurdgĸƹkiJ;"EU^2yr.ڕ-k7Moԟ=7#@v.u\v2 Ͽ9a/|cY]R&<297I?m*}ea1oy JݮϾ>5Kʄn]8Z{K=IfO',:}N[p₉~"G3"JUgU-r߹a$,4~H*9eL]g{|c͝*p($\ܲ:{|xvceɓ 1H Bқ ٴoGi#;pMzk02v|c#׌k/o O/o>,؄$4aSOyԬ}_:f(RS0^p:0UG?$ڽBK|p"sw6y#͞ NNwTQrؗ.娪EêmIs_65*`E>$T>ٮ1fM%sr8Uu1l˱)Kx0H[L=iE醓_?uEl7\ m |l"fg?:aBѩOח<[q-MșKi~՘|>[+u}ǦG/ٵfs ia"t|vt=EMH&U,WiƦc$P鏟"˞, j#PwjR/n_=#:(F1U5xjuCU+ud6xB{}>rn 9{#4S \2^ru݁<0ۺ+*7޲vﻞ}qpٯnդH]=]`)'5e}__ɄiF#P~&b\aԡ|R34xloH MYXꌱSǧŜUgD}*{ŲrlG]zj操}0ԲK9 3Әf=E|˞p‘MA|Neڎl]_n5$&c_oiֲGO=u $ذϥFNYP[i9PY3l| I/ޫ[3_o>%gL!rȉ:xUM)<XŘaDtްʨ9:NT+MLu*ݾ*^P֝OݿސԔ [ /j×:ՠ1yA}:Mst'l™㚏Gb*z>YTZɈ<-sԌ xA!nCJP\O?jvjŬ\(ݻ2Kd0q|nX.,/qFX&x|*^* bxIrGy](k*ukv_21c p {w$ޭk:8Q{.TnӤ1|_:6DDYd^oQy]G1z-aie挌^bY9n+?327ĵ5E Gd% ^J!X8jttUZA~Ϲ)1ʹ5d1cǕ$3|x۪yyIWnZ# $K"eBM5 g3^}64j!,?@vvbWeyxz뚍Gғ!N`ͶtQOM*+jgoh7]Xʙ~ߴc;,@m]۲`vŢY>Dz׼ir%'^~Ƕ/m'rsJsR80'A.=D'ˡ{wc2 ;kr[g>¢PW H>K.]o9&k?d20Lu$efk?d R띍 zzL X: ',dѭ?oe<^&fOJ3;}Qsb06]t?PBȈœ705 ?'.%r,M5ѻU6(IFΠ2R؀I*8~TJlWo|Clt(+,K, <Q=glH 㺃.9FH8.2RPOےqq'GT4u3&d}݉exz߮#u&bnANgNoj~¨+NUAO3x{OX|Am(5L^xLqGJ++/δCL*+X=<cn'aqԊ iDݳȊs* SGR.y< JFDj+ɱ24 HN͛ M;RY1Nm_[yNK߻ዝD=N:4~hػv]9Κ;50+m'U4ZN$YE7u]9*Hk<9}~Iz3+5 %r|ypfs%ɏs)3 ٬ĶYhHŅܴİţƎ+d9pd˺bFskwØEYi ]K밒fN}zoMQ3y4ɈKpY#Ğ_p K4,Bgsntþ:>1kmwiQo 1m9 _(Th8 =s4 z>Y_Ur%̹K:2/$+Yf0UOQ>6:zሼK *װU{D;7qhThٹ;1g+LN5y|y$V_Z Ѕ?̸g':갗H}>_bFG__1Xyu~03OӴi0h3m9tqÕ[_Ԗv"">A> 7رdaX2_:ӊ5~(u1cZnR^yjR^kZKζ,.h{*3r } Kn"4P2zTV;BVJvaNo@1%oqy>WiPaT}햃 H9sBD>YJM9><ţG 3+pt)wKXP${ꬒ";n{>+H0ܰ5A&GOusKrf{&g&-?=z6@#pّ}vI5;pK'?dS'Tк:Laiiz;k9ho悊ڽGOuOwć Nsl*Z^lc\_PM\{ҥ&0H'%<k(o'ejQU_/`9':g 8I֗nU5ӵQR.]' ZQq@2"S^ `*e Kl}бulCʟݫXj9 UpC{'>S{3',G5%jXP`ʥ=Nޓ_}'0꠪1q{Du_#`g~f˲V׎?RƿtGh<u6!5V''%a]PĴ-_\"'uZZonבQ'Jb6̂M[|髥iժJES[ {L{FZ{\iTA0"QӅr]tXAk>WʑVlҗ6 = PV^GW.l:ԬLu{]'i?=4E*uwQNH ТE@8)@HzUSs9,Hu2#|֯ #ш䮐2jxY֮P8Cq>f݁OMC뜁?_{9WsVݐۊɏȢO{sFLxzi3['UPg\ΌUF"J$NC]f;Ք?+;Cafd!ls0Ÿzf蝝A6\+bҗSbEÓ~cƄRSU ('6,}2̥dlJ]7MwO@i0`W~\yeңor@;jw񺚞?-pDW!tplK텾ysӏh64 R[ SmZ$DjWN%-N &Ec aY:B:P{zbi^yj挿 -k8fTT!0~V: $vɶi$Mz */e#E&R|,eu|2Ԉ QGJd٥":xW߆.W]}g;'gHnQ UA쩥,pAӟl>tӖ=ͱSΞ]|hߑny^05?_D+?{c.^䉧 $SU;j4l ڪ 8_ 2sRBd@AkP(陆Q'< xKc@cG5݂>lBbި 07HpPGfk0 {7~id=ivjw[_]c[0Tk9{ÕYiS>5=ˡ% Ԣ:wFѽǪCSӧHҹA ITS.s]T>eY$tO _{pEݱM9`9S|Wqѕ'm'֐eɥ#+^5s,d6rnSg>>X=oZm'֬Z2Ǐտ56B)'[H+4P:;/ӧ`YMqxc%NU&ɚ9j%n kJE`-ZvU-6}l0 ױu AƏVthMX/UB@[_o/4G (Ͳ (k,],{D6x[mj@3Vl:lI7!#es/^_:>>vZ];vsfd#cy4t"I&&-32E;Ǻ6'ܩ"L4榶?ND8np,f>LeB-ӄiK~s3˳Ëkh<|E}Fs).*񝯪;k[Bd*ၮhv<#XSWcbƩ?>ݱDCQ8RfϋpGLqlMa"\m'B:#.UjW@8̷]uzn$Ӵ{op@{~^VblY7!s-N9OӫΠ[kvoQt2eIB+GWjcա;m5 7wcgV u=(9wx7Ysxl, #3q8 \3CU/Ëou~)Ps@&/y?9~]: ;G換1&ؼ݁'GZ M%ȓp*btZLxCs{ּI]뺑yfX,U Av͚TZ%Sm8m;>_mN_ Y8s@_2L71jOUNEx^zoJ}XA*+Xꓷvw< l"n)^_\rOYƃM='y’?[k_ Xi>SYuH3gTmz2n/ީ6=" l_V~~bͳf_vyE IDATM!ABR}>6 }@Nq2h陥`'e&-bU ,Em-1f9ډ2Կ'jG/ݔOXھõ'Aߩ$de鎋\^Ie&b%M8?*9rqMgg~\vkP%.Kc[Z2s{BDJG$=tIYtΓo)UTtIlR+>9-2*7m߫//~|…Ml$~}?elkPĊ-T=YN]ȹ+\VA)YQzωLtߧ S~sB ]3Qh"/,rrلBIf!@eQScNl% %ei=M< ,A]4@AEŐFN`x!Ț߯=dJuEяo~Y4$1+^yWVEo]e0ɛ?Ⱥ6@GO+$: m! ^ p0b&f#q3mO|9}qk+WxivitLUQl);Š] $&>1i<1&-'+O|W^yuz5$S{zQVpu&!S8okcm/s +3 8-'Mh9{fRIw2ӁD*B -耕ӫ>ٙ}kS B[W# mAO=YAƎ-+=:^kNiX>njjMiJ|qm=SUh,Wn_7 AyC\>}ᳯ=7;unYc $SNm _ɘk#?kƛ4\knۿm3rٟ](LH<4"4ƲLQU0^NJºup,Hƺ+HvCq)^:zetWfb1 GVtPt%rEJ> G2O)AF#] Iݷz XBRtI\l\Px*߼Pj'?SC`TefWqeI! r H{~N)|$i n˯w|{ɔJ$ȺGaMEM54~BeܾAK)?t^^X 197gCd2w'o+#& Ih,_Evr]-`k{ИàZ /~8T Mݟw!@ z,eԸPg )..IʒuA!!U8{+*GzZS?sfkO~]ZhAQ8i|ptP6g:"Ba?7__W&&n v<֞蓟",)sgYQ%k"MUYq֑Gsk4)c߯? X}թeG5TWԵM# ^S/ml%6.?fv³+;A&sHS@w'.gmB׆†e /o99lY4(NqwQ&:[%e9["r=I*Jء]q (T{g^*4ʱPXe \=~OHlrb~I6%51 E\5~Ct2w`ϊ4ܱUOL+W?i7UNb/NN{S1IB ]:.l\aj=M\єx~{b[?_t9̊. $_4!U8^2s}mcղ <@B0n\8|%pH_3$Ŕ胟<a3Ek7Ɖv H( i eM[eUuYՅD8%SWnT[KaG绷5HnH(?mvݢ[;~72LPBwIdĬoկP+Z4cv֟mR,A QLlvۻsoj:tepNѭux9uѓѣx;~07¬oNMmRU~4wt?֫*EGloGPu⧚WYYf< .)`1:Yb.P*ʊO?ݯޞgHաi#/mH9p~vPbPqf˲u-jC('鐮h4=7H&A9c\g6~?Ŷx;]^}bzI9vzF @[Vry xB!GĺV㖷vA:Gm,' *X`?E1o:(dΝ2&|S;eV;[;j,`!A0-;S6fʫsعkV2L*.\8wB3f2E$%Ǭ +ΞknU jai [v[Fos4i;Êe5@8 ^翮[xᣟnz)DU))^9{bꭿ]Fl²{ŗf<3.67LU |O8-mî>Äsۯ McW_\s O\4 h39^|ECѸS S^U/ᅹNq4&s'_,ax̚=V#'NZcqY2cJ.DBzisN]UtRRYJeǜP뉣Wu3yiYEeeLhWbu3'Q B .bIAPEFőSGn+~jұF(QB cfZAi_$:EDGsjfAHB2"*Rs)̙WQk1^֍Aj4Pri0fz,4kfÿ,SV˨F0@!!vܲr%C14gfX'Mly[@w5mH)q*PLA{]nkm!b1rS,WT]STKVQ "icBC N4zBX=>B#ucʍY4"D HkƔ8x$Q2vƜմz~VׁNʂM֝%̞dküNY.϶QHlM:ix ^NA߬zxZ92@ LXJJ.ן sy]$FFBOO-傡N3ZCOr!%Ç;gTpETGQ/74ǎ\wϬhj03p4xe9/ZkgVxDdtd4RIs =qFApݏBO5!$I*)<$ƁLcVwN۬CDVaD چnˌj7 awaCU_Y]CEDE># FPk 9cC`TUjr$ 9%lcsbhH`'Ξ?}ԕP)EH'N~\?s%X4aU b٠OeH4٬s-#O'✌+̙QjhVIIGcڬ6GO$4?'aU /X|%#"bF-,1(@S|pGͩeQe,N;+7/ׄr*ewif{hTK8GQYn$(U^dg+OwbfJ5eL,+ (6^3 8 ,uY*9 !R"1ɀ\S!3y^AXvׇ<-Z3)o]x u.>kB/,ʠH5  bGv\[z&9k!rIB"va;e]L ( xYU9 hR>U? $2)IQ$DT"Ѿ`aQDxK+ ([ %0=vլ(ErAr EF# .B$ r$xeejwcp(:Nmp{yD0 B\Q OoZ }yXB4$l^sCw*K؅xڵ6vK,|hfd< o@ۇ@(M`źah0,//C@`hWVԯqX~АGnmk)?> o`)AٟzAdGGI90G /i$EO 0"B{{GNNA͂ۆR(C*7# /3І&\(CK_sDzALrEEEB6@ S9wxYY`\ڗ)+/=H67ج6!}{ =A,`>w_oa:Vq UAM0I1@}YѾ?hN-k!SV_oqqEVal?qYt7}6V̄r\N?X/G@agDzIȢ1Yi>c0ӯ7(^_UU qI ́_oIfQK|aeL1cH8M%|cCUU?8}QB6;i@k``@VUcj]|! +\kFT:mA \'p4qQ( ?M70 I"Mmq-8sC˜exAuhMFdq$dfL̎[4 f@ EQ(h:oM)xYY(>jDxLy_t1 x<KT7-N.H ,˚L&A O3 2=|9Χ,GQ)q[ h38n2XUSxDiH$I| 0,LbF:Ƶoqߟil6gGdKL&2=|9X,-;INv1 3T\FC7 dZ~ę}5oPG5, @~B>cLCx5ECeaL&S&ߏ{1iZ:v8C3r,n`'4QOs=:ΗL$<dAdAdAdmA84!("Iq 2A4$iN$ 2At^<x|Ð>cYyQ3D= aH۞@jA9q<-5#EV/d,6H$u`…Ag23AUUa  T ޷0a 4һ82RD]WU3D=? ݂0`:TpI{]p1 k|"Ή7LFA=; ҋpE1 {   4EL$7\_`E4Yd :|pWTkQ3AbIV0XTCPZHǩ!w^J=  NLnи{eO.\DG?rS_0oF*za ,4cJGnbe#1:B/$`Lk`GO^ɑS7"BRtj, /ʠ̌D.+(R'E`d1]J&8F;I_Ia-ED)IH"C0Jc'ݸǎu=2ònkAe MIq> !I * >/?4M` /M;/ڐ@tJE4Y8QnĐ;Lnqou=朷d^! 뺴~ vނXp XQԮXX:p^?`NWMi>:p_c|> " Q ^v[%/XB==9ܔbSt(z+>rĞjkeD $1=g'QYp4tpe7‰ ZmF< r:x*j|;!dw,,q`,dg^S˜]Nـ]m$nrd{,JE1b];{E$%eO#/j*FFcq {&BĸpoWyhqDQĢP7BLv Hnl39F\}t2xtc8fdp ,>&7b(9<^߾֪.ipﭡؽY.Hq^piaIHĻd^Q!%YJl=m,'xUg^ZsΙ;3bIH::dvey8/h,)jnu~8AXgF$$1Nq1Q% ^tͤ.J(E#Rg(!Ìr|FRN흥S>7:v|MjFWqcS6mfD !@sѸ.jȁ>E FtI\t ;c!$IQupD@)rb`ojw;h vg'S9ua8߯oi鋮xv~ J[G*&1l \l,%RYY6nv06]IwBd)12M 2J.Π纩1{VL.Pb[<\alNDI a2h u"X=$i(DچĘl.a]M. i 0F`bt1Gil9zsԺ`GgP(oc`_gG\s4ucn+auIHʘ %Ydyd 0b6a  NR4L,((M"pwhR VH_{ ")b -l|W)ǸֳG\l3[PƏvv  ΋IZ\8n˅AXHO+'dGwoaAt7}yJƉ]MOTɬ2~u;Iv (Iy-Z -SƍEoCY& {%"ƅO/hȵ oڸjo24Ȉc(#nzv0S^<m<5,|e^~{:7VM|@fL{c݁lm`퇛.iEm;?aY/y}ɻ?ho^wK݇q:)kΌWΛw{:F#1o-obC(2o}=۹Zkp'FEʒ=cy "_\.{WP޾g.v^ e˧V.ڿea.Ǿ;O$[PdVC)eOłGw}a񜆹/pgr-a%Uv%|kC:Fz[̥/[͸ZzfI%)%y6ls'Vmo 8 Ǜv^jVH{݌Ν%oݰlXBM,Jș}w-YO-_>vjצGEE{}v쉯xev2<h<4KAr>?񙫷"ӊ/n_`\T[Ⱥx_oqp/8w+v5;rHoY㢧V{c{9q3HYSzge @6q߾;KϨ+P7n\J?qPzoۺb{PFq3.n|R''-4''}we"d_3JuPIWNo>7'֮9t؂'VZBscWw>:Ӥv̚'[ݼe  OįltŞPjx7V6 0cFeoG\?58hKsT#u3,;_C(>5K{W%_9:IƑ?}ɊESKbWdwhLxsԮc7cjMZl3sJ]icfe%T`'^ DA$lsx.ܺšфm(qeM"iΚ59+:H(Aa֫z'd5[J#{n:r3ܬq6 :h>g ,"JڱB~3~t`+bE2`>7{r+"K$Ϳm45|&ݰvjX~"K=O0C{?ש,z kΝRݐ_kXOy\O<8j,ڜʛs醆*oB#p^Loٴv簱nܶ'7/w|6p 'Jq߈2w0cB;W/{g;~u֝Ɲۿf̹ݿ`G aj}Cڗ;||{+C7O]Z¬|F1LT3nAw2R"*n [[WM涏lM8p8hai4 EwA}YwjHܷnxCUUYkc~s|h2 N&  zF$k׷5f=m-[UVecb|85 4eu \9ukomAC ,sJYKCp ^l7V[GB|RM[}/.3wYf?,8~{F5g[5#Kܹnuoշ]<-sEdce2[@0]CHo8..:yvۖ)ϾVo>OwpAumeG`w 4%6 X*6v?jXz *zhP`}uQ6YpMR3  涠{.X; D'_+輕..qdR.bV}|={6>{n* 39ǃ9"|m}-K__5KuU꬚+m<ȅ&M/(,SN^Oe޸xGq͙ܿ~b+7w]VsrB XShܘ[d.ߤ|am`[BP-M'Iy֏wm>P\/;r-9>a\a7'$|i{_ M.l!EN[{Ȕk>'{9FɭkvmYXIR䍉E~%yP/7p6N~tTMm|+< \l=/ͮqɂO;pʘb։Ӗ( 8qAd[rnZuˁK""NjHA]eʍWV%޹rmh́FcaX #no:|kr^۶KW5s^{uRb6Iqcs=&H(Jd`#A16換Q.8+dhA͛_V;s}|b1 CHÛC%> C1+n1=LJDw^e~f kRƅӗb$A8 늨 ( Q&gIe=r}༨$b~ŷjڤ1u>CW(I?G1|RA4)wEuZpv2mIM˶ɓ{m'O 冢%w҄ąèQ ?~T9cn֫'̘<&?5#|s3 )Z_㣀S0ܚ>.wܸuy]CSTwvql!{n_Zl9r+ӶH :',iTHmĢU%MS揳Cf$dMr+ʖ7$ABƜ쬞2xi;yR}B]8|mZRe8nҢ\"")$O<>8rUmZL+`ڄ_QUŇ 8c$Oc)P1yaQ0=q)XZ+@$.,Aoӝ4nll/6G?ZQ*GTd0+Ǩg6_gȐo[GD%\>}5$fl€G]DkL(>y$X}I !^uA* DN@Mc6_)S=- I_I %W}CpBԍS5;@C!4zNO" 9alij_+)֐!|> W[gYSNYMqג#~̙`Y3g[HSEE#k*f:'90dHrpkzksS\QJWx"aHd,N&prT׽W޳tF f5c;˳,%%8;^pp0x6``v!$ h_F#3wunH @3 |Dk={N.`[+d+@ \JJEn[h @ZLۨz?ԽYӷ\#vLRqC&ȉ*S٢31< 7j} kU4G)nQHG7 6\;&_sR5)T@bAò1jn"G, IT [`m ҏ}@Š=;Ͼ='N6"ugnPj^;Nb>W\̖& Xmgo'=Sih_}/=(l誏 g,KJto?4b@lR*g +VGHmiW:AYb{ƥL]8}xqhF\XT99YP 2Z\]CHut 2 UdYQeﶇ$:{ޓ5XZE3,p, %&Sy)!#'\/ M"B W6Bhe n|͟IҴLakCgͤeI*23Y+4TձjӒ#xtn|~䁻1כV&*51~ zBrusؑ'wvy2_Ƙ+ sO4U.bzh5\R+cp K7iٺG!^)AUgDȐc4fEhP?#K_=gGWK"hбJbPvR.obW0uFlc J,1*e=h̡G~Դn[wٜE8,[C}=ջb|.Wp  /YUG5 D„AµXu':@ªt(Dn!N Xʗy各$ W&&ˠL~~,P+;%lNױcg; %x>>3+ZjHU[K gsty$I u,i}^T\zvg^R ޜ9Ě-%G`]Ĭ$zr,Yvy:ԇtWOwL[}) X˪ :TئV)" 4rEB`2V#*9:(+3 3va{_MOzٲsϚXy!i9˲D`lۺiRUbځԥKWwOb;uY'rْejr!Y ) G&:XU@KMKt0U+y3?x^՟~ ]V]uy+&"jcWʞd.0V{dk(\&?/}Te4ԎmgM}<`1TĦ={$`ж} א[+NiuX4"״tǣ_pBKtEQLu~0ްhun^cώv>R>x/iQ) %`G[n\So iU¸K{bUrِ.wqW^W}B;Qt} IYM%v/ȫW^ -MR 3x%uēcldsiWk.7cwN8:T:Id֌Ko|wIqd$%{{o_C3W Z~B -x-Jjm_uS?hÚtE4'w}՞ֆ lw/k O*[8*JY8Nq*_{eST t4{XnwlUEFYNqc<3GǔzdXbazX0[rlWEFܪx`|G JE $lrY3@;u \+ڰn_푇)ɍW_+CwubUْ2Pz͚ʎ$7f햜v>>N.5@zxսUȄP_#_&f;īTPٽ+nk}t]X>O]jIӍZj{׾'!\y8c}U=[O޺jUû:譁X=!bTKEt뽸JūiMԍT;Ҷf=K34 eS-XHKBSy%<r4q"l˲jJ -]uc`m Ke%V]%;SmlJh0ܽ_ { K=G(E.um#nlNUM%3Ukڪa,ML^<!3~7Q[|ߗGHlDbM{j裂Q]vC{g˥D 9AQĉ_C3ؿ6LXzG;dmMuڠ:5^Uٲw,)<.[+bU(WlX [L63QP-1VfɉJ)!ڄY.L6^=FuM-Lo dlhlW.`6jiT1а¬NRlN5ׄb3yJeܤ.4wv7xx^Iw[Z[[JB5+Qe˖)Neb"S6I8ސ0ϖƞTu^bZ(Tl6֜ S\+.mohNFԤ]}K[kUɦ2#;aynZKfSmW|$I,W*B^ ڍ6䔓qd]nE`-dVZSgk[,F7y=72WޖTiMG%vXq)D[sR$f:aN76FwJ\42@F>Sj:⣉t|EW]i [)tuȌe)=V,Ofjގd" ,Y";jxj$ڻjdL ْA5M˗bf2WD| ґ#wܲYGno `,f l5坉S}5W/k"H4V1+T_t]&ѐv\dkwS>vlhLb-[.` =Kh>o!$2$v1WmjhǮPMSS&&UƳ i hډ3 2+mhD ua=7A mQ&76u]mQj9_pj&Ս-A851"-w]uV,ӷʹBőۖUT5쉼Ot&b!TɌtҥ1=3)tt6&j r( mW ;9QB, ބ49ǚ;j֥KZ#+bь7w67Ԁb&S7obMGx) ַt.]ҝGM0ό+&kko96޲-+l%Pۑo>o͚dP(6ͶRPQmsG20O7bbqr撥ibڼ 1 /o[k6 TIb5ۙ -i 'd^csZšrPZ[D0r%&ؙ񉒎tGKKzfa*gqю8khIZvEEX ,^ѯ>yKljD"x|ll4MQC;mS>(˺Oe ,(2tDYYi檲 lNeJu#PT>{&zy8/w8,m}Nh#nN#dQǼ`JP&]Mՠ-Xe^DfϪi#{M$wmDfM=怮6a89pۢcǶLZ Ӎՙ/,C;$Y& _}V 4`xxn{ӻIMF, r }M2X״ّ˿YX6 XNPUâ*z@d-ò0𜾩Ƭ7ՊiUc:f窆5 #,.]O89zhcG&bnA{);B@^ MqdE% bQL$wDBboX\.W(IQ SY2g!A<˺mZEvE3!/hJșUu^mIu4AB>;u1[n2ݘaLM 1 O9}ρ'%k%(0Z%,Z"ߧSQ;w0 +xvEn;qϋ>8KS .v!9aabN0}eM;NLʹir{ئ^x}y+ǩihdxO5Bqh4Z]]=22b&-@555XoυXT*555U(8oυmۉD`Bx/@ $eYBstE  c @!PT@>>>>>>>>>>>>>>٩ GULZC%B4M #ĭ#9Bq>T -aiY ˲,ok+?EQ4iZ1t |@82^eqEQK5AQC+w#;\t!¸<5'd IDAT,T%ɶApyS?NSy+P8NE*F;q91Va{t)'NuhA?\!4 # ٶETs2L8 B1P"222266mk c<SMs3aI=:88DA3sZCA8vh]]f.6ncccímḿkvgྍC i2LOO\1&&*Љ!P"|mg:qs^KӲ$[AyuNbV.njjE_t#;^>11.[J{y8Ywr8rl*BS~Ϳiӟ)R0u=7g^EEEItNS9:ߧ?yE (<[?B B?O'Pwc áb>8QO= ކw>荿\&m ܅xNO1;d&daXowc߇H{;7u\t 7<ǝf@N閇Ya!²$sF0]I V%ؚfzHGf8XTo!6 N6LA@ /,`9aͳ_0 nۺ| 0l1T*}͘3I1 F@V Htv{x) @dhbhƬ:nZ+Ȓ0unpA«m:=PH|aQH5tmTVdXw`mgoguPuhNUcT@䑉r>@aD@b.NkFNj0")R%+nmOZ Ļ9"̃ 9Ė a{{v])@7M}5 ?;ģP-@>˻Af7u2G5?=_ͽ⎇f:{ڐ5Ԧ=Npۦzpꁝ-z_nνy:MաD"^*U!~y'PjhF1ϿIrz;DߋÜ $9Aq;W±4%Mr}E&* 09~OR/o_zY/~&ɷ~iM_>ӟ >o?|Q"{΢Y9v|25IR5}um!'o M8m(k(3wVlF (; :W]քo=g2r?o?ݼ5wϮE9՟^~pҸ`L>Ȓnؖ~vk+g6ۄ;7֖{ײQ]nkKb=!7=oZE_jK3]ڱT~ y NfRfN=z]B5K?v&~;;B?g\Ҏ(ۿ@_ҥ~C`IgR-L=5տ6^ww87ݼj߮g4<68HAy}}|?z>ѽDº`MgGd_ o[#f&䧪& +GW}[&au*[Tjyד[쭅NߺI$+W ,ˠ|WϼJѢRͶmORJO}?_X J<3Ŋ߄s??7V0 cq{WY-s'O2x1Ǝ$ɚ:_]EyCF!6q7*w--AXէ6c!o{lG'. `_l?6hguG3?(o?yr-h(XYVۨa5_Xr%o>?$'mk?k kf,ngg7:yb(͊h-,yxЯ/'+l]h[𧻓Qa2BʡǾwk?ɫXȓw}oF_@#pϼnZK۶mBb wnV/cgɪQ )-g-!''];_/8ϫ~s*鞥m. ުeYCmw3x f*nUyuWwW} 7kcdN]w~羽om9]LS%̋ڏ6hо \o]Ľwwd{Muh@`p(+^?^%%~g{D8 ueZ䮻!X<;qw !۵nE.0 #?|h^[mMu_s/e[#j}MO=gٍK>ܷy-Ҳ9x @0,f*k +#۷-WuFxq#yAZJ7i){Ɂpqs6K0=;G#[[BNaGnڗT2\FyxK;~]ꐀ+}#Ǟb$>xxK/e;llaE,1bA%e˹3awd Z3}* 8(pΗ#t<տ!mU7|x랯ņݺr ?}/Ofjō/XNu*Mp|N=@cu|STKB&0tm~'^.˲Zڛ[|wL,8[Lgb)R(6Qd3apl`CEV WAWw?}h=}OF^~v砚W+/.2[=Ӫ@8t2O{Tܟ|V+ afJ0-#T)#٣m(pj+-7qBgQKkp' VX8?XyWE> Bni+ vMjJ4 FT婮*l~XB͑=?SD8;4p p%iTxj׋VPAT1cB& P!ª1  CŪ_riKk501,żfUuYtZn;D!]uUӞ݁rUmUPTSkΥoQ\:Y/mΩMEnjP}*Pwҩ]V&}'wc =A񢮝~ wM='Ci\aS(>krr XDBب " T ʌMx* d fцWwែm@/[֧e 9NVܲ|is ȿfZ͂AbY6sz;Ul֤Ƌ?Y+Wհ.\ f۶#%7#1Ms˫kk-\sa1HlyPcdB*\|%S"=autH /۰wewg7[h HA ^~법+R,Dz9@7cžq wekg q%!:!;}uEX7s @bVvhq6KkBp0zDReFƙzLKVxwƉu|+{ض>t3$H nXrl 9醚][n5) 8[n\*!A֬c<4xu::,g> Iщqz%s0Kh\tL&YNWZF3 y;Um=3  )W\5'Ne,0^cXV?86l eY557]㏊x͡H4pj>3i5У?^љTflo\vbO~u`V5iAL _cNM0egTI]ϦrM[\Tlꚣ֋۷nYSH36 $dVӌ7_H ׭dj4}Gs!#w_x ,drhk{ѐJ'UFvg/DvX b }UdԌ]ЬS0m-7p5צR<$=(߽}X$(37] 5i) 'KcS˶,[g>Bl4`ǏN`%7չus񃯒l; b@UqfYuv ?|o]*!):WsTMjcn4[mae7_ٱmw89U /]C3 C4PCw@̽w?Y) T_4]iVv 0Lf8\ʫn믹> "Tbэ5{Whcġ349U6#r!iU7m^`(};u+w'?Xc|57|#>Wjc7}65[U{+b.ZT~ rUķ~[Z|-<`jf:f{k_Eq`ˇ[MwUz_,+Sf:a|!Ǐ8Hrqofo]~;~m{&Zw}M_ &0VW \h^a-[q34)]}IJBh8,/:zˍ7o쭵tcưPVV1H'1oQB>)>d:g}F 8G{?ُ}?~*$h6ohw/TDѪ|3 B6I 96e8c606^vōFumʙi:+qU $ڝʎk蚘XyW&%x"mے$YQ3Cͻo>teVMnxV箯}F=}bG'o}W*Or?z`kZshR(dmP,:ZTh:3\ .Ŗ>ue6a!k!sr}24wɵ7_Gt zUu !JJ85Meeϧj(HW;rبpM}S6p <),D{z#r"$QaT&sP[>^DlvFE0o{e00a`ORu&4CCSӂ ׵v3"փ8.˕Jt:=ߚ8--j޾Ϲc,I,CǏ/_кPC̔K7#$B#inVcű)! 2ٖM16: :ӵalZ"H <|b${#8NjD:.) DQZjb{&%IF-j-x\ B!e_ݳGv׳BXQr"5 ɪ"䤊dkg{2J/DCVǴ0t*ѬUȖFG>U/1d]!0vc%\\CLFeHRBdVƎ-& 6P}Z566L&>!%x<bGj, ,ܽ{wggg pzd%Qe, Rɚ"9X tvU+ck'u:Y /c鈐p6և2C'L&A5sl:nKF8S7d!Fa>&IDvĉἎ bjڻ[j8i7PyTw;Z,c rizBK/&] '̴8i٘y,0 r:D%MA!a6;/H/OeYO=/q,.qֶ`D\tzB^|rӴNljj}|jjrhh$q! 7SMӴ0 rt% vLF%Îi3G-Dۦ$Imiw~בeҶx Ĝft,n 8 9 EmMM ikkx\dXAؙR/?-2 3jضLXf4_uiO?]-c[8v3s`ta9QN6E>=!}'ra8;tHuU< NM-sϞ=---`p։5{Nۦe!B5 `szK-q}N0 ,VD8-3!N uN'|B^,2֖VǗkr3^Dn0 "P IDAT@ $m8'c9],t=ߺ3_ dL0p/.kum\c5;e|El͌Hq|ݻCwB&q gQAh= o>aYiR,mx5CO:f tLO1{co]{Fx?7Msh3{||wbgW]?qgoq0 ˲X̦>>g5յ?@Jyzط +,J42:FW3.ko‘p( Ò(N9<ϋ(ɲ$o޴Ꞹ/ g&&J&,}$I(;~adY Cq (Y  }ddP(R)?g^B"H&de߉/ > }c/жBp!IEmg^@C訢(J '84@bHKK>.kaMBaAs 0aT*ERޤ8yiTNi2}WC(e[pǡoe FX`8qo8Jb1g`(!D4UU3h];st0Ţ(g3$IMMM 63 p8eYl\*3,u~~`YVUU]eIW q:H) >sc k C>Y1r4d7O-T-.K,{58 ,EQ8(,eB(iT*8^M?NB rٲ,X `96 F"a38x1۶}<Dq*D1˲xx϶]9 df!JgW!J::jjkeEDda'cc;b1Dўd}2,_NܲA8#!A:::Zsh`G œT^9!I'(J, 0 555,-{}j<'>|x||wsqxUUOww}}}0nL˞d;644 -F$ 4<-񖖖N8x97ez4BW*\.=!STggG(6t #<`($\ss3rrydd~^ BHmmmG{{:6 ?{y!kD}"PT:KmwsX,ض&.>fp(t;RU5ۀESQCx.\Kk+òryttԟ:wt/e`}2)+JTDmm2MDxEeYE< Ȳ(fgH]ӱx܄ӅN&BeŦ\dСCɤ ZYt`#_'OghoƘ&b9YX$)?r䈯_=G0Ʋ,ۖm٦-"0m>R)TUŋo<54::<<hDQMS_lc#1رc`nie-˅ET*u? %J\(vkkk9[Kn \W)0? BR5E{'O*v!N-Lh]Un:hnFoıݒ 8E׉/Ɓ]HosNꋲwnfQA.V{̩Xp;^›W,BOՋ0B7WUHvuCtN2{eXHPOԿZw\y'׊j1`i_ =c7]$;'@ wM Uzgns~:σx>Wy,nܜ8 ֘'j7sf\tdN|[7}LSNܓ~ՙ[L#O9㦯90w ~'&>-X'&fN+HUU ^xxݕ\h /Nn-At@bK3w]v0dNzi/ krYQU$a{|ttbY@>yYᖚ,ۆn!mO-y-{~V{3B'H/7{Gqչ'9I$HJDRג,[ ww]:'Yٖ%R"A syRwzHA+ s=֯~T>18|xb;*9dQ'Ǹpn:z.!Pvlw{~E敬^,%V:Aњg;6&Z,h0 _pH㇫4Y[Dz7GtahԿL}q# ^Hc\[i܊hk:@)wホ ݄>磊C1d/`Xx^x KHLNQ;[;VWnH# MMUYE (}~4s >AR1b&%IV 2^AQсQI\7S6^#iI2`AE%YRd USAP>P4CS$9wƼR_)gp4yzžfOtbbR9Wi%c+;JF&4$DмDI(X]/(KopPݝ]d\Jbk;Accol ')]u ΋מ7TeQe}$\#u:1#k/+!`MD/>F? KIIfQ,R󑏪"o( gX>I Cz^L%ɪ_'? Fz귛ZzƿXU ͢>[5I(N_Ue h8{xle8 GQ|!pޓʁf>&)!%Jnml_aU4)B@P ŚySE_Prb8yġ#u}̮Uk暎r܊﯌]X=mk֔gqI(BW̃$Ib6D 7^XYVd"Do멃O7"KUL/}cV伍m8XOΨK6nXSI9َ?{]Y\IS#M|/>XrO,x뾪mCS֬.Os_sn`*+xw߾? LyG>휠SW[$-LDC@5??WZa9yFgk2hz;>:40 S沍s$•vmQa֮YQs=~x?cIw{KK$}?OzYC#N4xEw售ZWM|)Ώuĕmg.!SqݲX3 %W$FeЖϽP\[۾>cY8ѫ'F<_aKqP0qi.*cuɺ[^WQkoMa-8Rc3ۖzF{i%ԑCgDڣ*V.J:oowpuұ?s|p[ȅU'$6bdZї`Qu[jOcJTdC5G6R+w8t;/>{i+--]OL30R@ Qep,.iq-FPnsjmM3ϬOӋ[.43B'`$tQdH\QUQ>wf/_a>4wL OySҹ^{P3'%YsC1b=}~8I:0}u2g'OE8/zs3!%\q7NyGgҲ Wmش"?Q%w⎼c}}c+"<]=3yey)}{NiaOg窫Yqߧf @޺9A_s]$H,OKMbŭ|%iG+zFfʦ4,nd{Ǿ;  No^QJ:7|4EŰg"Nux ?=7bQrM0}lsc֥ei5|o|xo.cU~Q{li~Z!KFPюÍ T*,+3%Ś>LxlW';Ot t GɃxjI8(N?px8sW]1HnŴu׶G /Ys/[ĥ敯^~yA%G#خ]jl}ɒalk,]Vz>صK.Kzġsw1Uk!9si[C; #[JFz/f$ڄKiv?ooo={ąIe,ymvb 3A1qsػ.ݗdmeeiFD7s4\j)Xdyaۭ#әc=ʲ\M{W՛J3_VǏ=yDYIz*%zHH sO~~Vl2鉑sCԏGN_#' ]GvsoWͼ79" 'Xvٺ#/w=%Rc)˙8({1̜vlo@}gBN^[$$zNNH `A ? $o8_!X[z/=%H}#~bϫqpV }#lQq^vذ~un8/ M+V#茦 .q% ը %yO*=w?u L=3ITMC*K@D,:)''̩Ξ~s,L#ɾIĚ:O󏌎{"w|S -Ox֯3a~auT"] # (,,IxY۪+P86?Y_ۿo O$A 0&+ #+FaH>ž]PSs߷MzrG99[w#s&WR2]zQK܊,y1cN.ˎ ǰ IDATݶ$r$$ڜDSPTG|+w^z0̈́ViL ciޱo:yꏿn@&əX20VVg  E_1^jD.]V+?~|?":?q9qd N,Ayt|$b Um_*OmVby`hfCsQb&im)|;Ͼ˶Gj:P#Ha`SnIgDMҭ op@ฆA_( a\r~\uW[g_DݩD RAtfQP;E{bVj* u' 8ThkdM52b҅8ګRBcpCsAEe9Œw|{Uj7Ƞ3KTBβbS+/P5@v78`]}LbrM.NwvL˥c/믪%qdK?i|Ҳh E5w'ݳi^ Y!69^j׶DŽb sWl-Kyfd`{Z;1WʎOnkl[-)FbrVl]$&9!r0<=ڗʤfId>kEiSǛ`xJR5@q,욤z;2wrpԹ㌌Ƅaf wq*')vGoGFLi3_{t;߬H#dKw]%Vˬ v{37>/~wRS'򢙹Y78\ )ec DSഉl=aFf'(FGY|:OtWLF $DǑ5c8nI=6Ɗ5µ&hYv(j M|x5}?'11V´rT̫qQ9%rSJ^>|Y\[nE0}=6Ӣb☙KũICYy\<-rIHO`:5'@&M[7}nĞCGdZIQ«5)hKfTWdIW2șY9",+!Q)#]iɨgܝʤh;Nǒ ryM]ܬ7~_׷t/M5v/dh=8WG'a|e$" |^&à w{~rlxҥy)8հh9& m(Yy%ucLMw,ݓ:Ĕb  P;;3KMMai6o~i;offK]Uo}?߲DS??a˻.L:5=61)މa[6}k0L̶?!EPl0'D dVyqᒌdWc;?_G,`fhڢP1i)kNů..Ȳb~[q]W+%N*|ˢdd*MT=7#=sVn]<Όħwڸw߉?'$mɽoAleq,dep󦥯qZ9?Қ̂{^.XgG>C?cRJo} g"#M 3DGjSL\z/R\'5oZh%&ۺ]f%T7ܟh&$#5d1L<3s3*tM}$e?>}]^|g q-}h"?>8XńӪY\ii1 mZ3rtsĻ?6'槟_o\#_}xS-8Abωo\aV( ÒʖZzowW5/L苲 f).V* 91974vDL;ņ:ຟ<33{zK_ecy;wNfwJ o?9oSp7~sW ܸHDݺ㕽ſZ1yKy$);'3{ɑ7REÑeCz0!iii M—B h9~ՕmdQ9">8/#J+n1A ,.+s iIQ6 UTm7BQj>Л,x$''9NEA}@riffdFZ9kBĴ(cgN(*K@&<)o]w̉$^2*)? #)lqFq@&.Nm.i+AexV!%A5p@P4Tc#֟:* o @1̙ӧ/^l`P1.--]f믿>>>"c$˗/Sd+tf9TeQ ' pY^5IR)"h1U.$E =o!E7olqYqdY߲e3q(~"&5)gi *ϧ@hey ^RL&OdQd=LO\bX >*O,T XJ~ rݿt򗿌a?|\AVVnLJJnW:\40B*%U=!\q,9') ]̱'(^\/cHRwSua7--ǎq,DuI"""|GX(1116UR%K7?0aYK$) ҺP̤7 7WlFX!m) J76pm8 AQa6o㿱1M&DWA2 , ~ &h% 'q* H4OUD_^(N$#G;::BG*++ssBΕ n`ݞ=kQqUY5OUFoѯלf=$0pb Jˆ9q_sَVQ|pIP^ Se{ŷ2U/Ju#Fuvtdζn/Mw^{] .AE(@p|tolHǎnbAᯛŽ"8*z4ɂgmk-c,x`aV{zfHW_q ,~M&8)c{/8TI~|pC3"(~ߜ 4_n\jn YWA瞷LJ怇繎n_GhJX A <d.Hϯǐ, x7!M_dîX?~`5| z؝7Cpv;{ꇞy`ԕ}W20_;48vg@6> {@e6z!B霟a,P-Rvs-@ZVw: *M0?!_*!DvJY$= a+! >϶P>E\K !zY OExi#h8m7 Fbу%+(X~CpWd=N(XZDq((o (zrea}+ f h.>=Ӳ"r [/]%Yeq j$F_BAAũ8Q4,}Su"hdf|\:I>fuHe(OX(rWWQmZ](!!Jz4D C 702220Q?O8  HrtlWOu6̽0Hx<VTsXT®G= ad4'!ny=Pp`||°E*c}}}A_$Ivuw[겗h>[E !IRUNt8# pΐ{eQTU%>>fV S@]&``tt ꜞ ٹxpQ+Fuc$ 3zmn;.6a}T6ɻX ^SɡqU }!B, Uy`]an"3vo'Perr…ڸ+666,aeaw`<"SMMNaɒBx#>5>\ |>EQb $HRoy>Q%bRHy^7 B'PBvF[ZZTUo·xu}>_) kMFFF&''{zz`@صE"$IW}_BJ}>_P'd  pU Y[9='[!pu655+"r(W ;X>zAQ 6m띘&ry:>aP )aE A@P[„/:Y_Ѣ!Ak2 q\p.jTU8EeG%Aa1i-X,PWσk-VԾTh6A$)4Ũ|56~f{.t'(QZtrv;^CA0LF{OUUYVa&vW'Q 8k8ih3Ӯ,9!ip|4!G={v߾}vݸl,ǩcB`[xh7< $07;+id6k 57ZR0veyjꢹqO n; B٭[+7EL& |!Aqqq$AK*.v}}F]@Pdipr,,+`__Q}චiZxxxRRR\\0ڠ,v߀!LpltohhXUUcNnp]E F( @9ΜܜY4"qaaE 9̬̌ EVppɜﺲ8$~$ H ?< |rI-j]& $$kz3/9P PTewm[;u݇f]o_ngu1W B8AhEY^T:%y36^ Ս%޺* zNe7ރc8{14 #*pjD: o1=!^m:~gB$ %KK"9YǹpFM'4O$VgdA|$k^~t{x#`1ewe='ۘHJ|orB06d!$2&.)Kp@9?KѴ0rxu$u9Iaޙ U;_G@HJ̞S9kؘ> #HBoKM "@?zc@'[4dx<]`OFp]$BE E]gY=HZi lN^:Z}q;JR"iQNM|93d]ƕ=|u'ό1aVWϟ=}~,>,ӄ~&Q!qбm_پ*5aꨢ+A3>XѰA0}G']_zl{}gV]yl IDAT.ʎhBBDž-[XF*Tw]cdSch14<_+ܢp4Jәc.Oa1pbcʈ\.\/,aAZ#yf_=:v u{46|RǐB922l杚QSM2dwͶLw&XQ_˙K H׏2+][7TX\ZA~EH8{Fg%њQ; ij8qӣݙkS o<+cBnpȊJ[]iQi*!'v>_Rĩ5?|}zϟ.e¨Xg_nMϾ^!c;'@A "ETͥ6ȏ3r B4Hɩ1X̊ɖssnRr[y0"W=KboƑVAu9ivv|K랓m<L+W?X2 Gxz;-Yro=U7ji```?^1'drE9q~z-ȀoAAܒP2Z&kecĎxSJSY B4I4\욋ېS2{{ C+Rmjx -A-7*WO~S]39"&҅j:m"LTmG׍)NS&EE%I0pNY[Bd S̎ow IV9y[VepY4uW_C== G98=f2:Պ&M h$'033466 O|U)׌:71!7UH' $/uj|tȩWIMaiK[.PXZnA2)-֥̌>-7 Qv35J1 ZZg͡ S}3v316I&I=ư<)f|J,o\kUVHs䊻P@O|_ w9-fM;v<ŠH0&36%w|V9ү?Q}bHNu?|g**FiEkH"PVP:C6%z'fqKMh}xK]X?`]M4쬠ḱn``i5ۣ޾7W82i)Cl|qf#aW.b2΢ fvʎ}}ٚK/=dl:owSδOKf ǒ6+33;V" #v!,>pTs^)Ǎ71!75k"=Y h^2hW|8Ue,-v}O$J b(Qi>sv9}W_$ 믿3m{VDDOynoԲ!(iJ]F'},eڪwD=c &1 BEQdԕV׷yW//:w5cmIvq8`Ռc=p7TL4MNF/,KHm>^oh$Hj/5?}׏s` +|wgT7"6j9s/n-dl,200#UQLH%7W4}_ߖVTZjϹ=NvQ#{3(l} j,z7%"!gIy5{?<*m_HWzT{|38sJ!M? sᆆj]=^" ~T״pmd:N~'.9y+aO3o ' ȿ5E4Y"Sd{ݦؼm) s2tt߾>ob~qNAURgR| Rɰu\t[kۤw)Gf,o5s5(?=LM;̡dERwoߖ)~gFi``YG4fbba| k#9.aTycHUD@K  qܝnST,|lXskǬ,&ʫIew<}C8pvL R0CLqYi˦ٙ8/.wOhwܷ,3o~gRD rO =f5$0d/]~ifL̖gTZ{| iI C4gY-, P`_Мf>HȒ?ã,&RUh>uמF6 On7[m0p!}#sԜl g9_TTF{QAR"$AYqi#1T= $ ͯ}Z`%,M@z#8TIpbx'A8A3B \:M3LRk}B9f FEO˪"2+/FX$K0A!T(nllXҸ)}LYߖif>EHT.WWW P(\`!_i'˶镍t:ͭqjv>k}BrJ4%؎C+<!Dflۮd~ fpB zmB̈|Mīʿ*J&_ Vtk_Wo_ψm۝"Anp8fG>/ x d |u͘p8p8oR*.\pP/!w]:e9Եqˣ*IKK'muK_.nyc_-M=wPq)R{gזD3פB%L?R (dgwC<"G1sy#ԭ'Up8竊$IB*P1Q篼tEس aϷ؆^* e rP,R4"Q. RY1^|(: U)BbZebznR*e,@EF zuS L9rڭ,, ݰ1zvE7gRlb PbBPͧW\HتT cmll`c3re?+9PTx?g7Ŏ3bX,WLpEm, <(u6<{I룩>JX\2V[@@\;a5:z)/KϨ Y.Di81yt s-bzoL߳ -C@PP(&&OK>{p"?m.?:z&8\$sْ*wsS+Csp8Cݣ("S!bDP{2 r\D:&" pfv @9v%")@ Lt?Uz>$ݍB&s`agI a%o=Wi!#=ɸFVք(ud\56JP`e1mAR ƞxH{ sKu?]z@"u~d5jv&c#-ŵ}+3T˫OL3[`<ϿCG i}.8`؄z4~dVg+HKe`0b9rAsoҾ)f' ֍LDř\}߉cJEm|xm_#Z"f֡DNiSs skŎcJډ7U#C|ԗgm,I>2qقdLz(FkIܚ9RġZ,>(8Dj:}5f<^)9HQC1}Csm/;Oo̭fEd+?k>3o82SEoeGTЗ&p8p~YתĥݡRADI윜< ML-Kn8sšz".z4ց3'гX(d-sm!S'ka]|ju'.M (VVW^m $G5ŮeHC^[L82vP\6NRhK_~gxnqsj;JxT:[ʢ9YG.4MD(RJZA- hAM$q{ d{bIW4)-_ ws-k꛿b=֜K6D'>|Ŏ4 LAs9^1ŚbWqM]96_ȕ ~ZEl ,\}zMG˶XsμMERӱ: \ype]ˣq|{6#cWr)Acd Z߾I/}ʱOwWu hBmpS'?y;* ]Hk׮RCʑM3=߾A<͗6lQ koճe;J IDATẵӻSep}pۡÁ֙EOZp8p>6Y1%T R jAP~x-?O>ZpNGJŵT֣ZVSG"UǦ~].Z&ΞjV% &,!(JN*Z&h3e*fzJt~*gZ OZ=@dE* NC瑤R;[ O(kRywkXD襉n'g`,cQS0og{LWT=0F0:pGhRio{84 eBd+){"yrMLqgS([}*ʊ*rYy Mp8p:aخi ٜ <ԩ<М àͭ/~Ջ#;30`V Tph:d^H_~/˾KȚvv(9|IlNԝu0QYx}Ɇ8[(U]<p!]jH {'쪧1T u1Sլqt ~?{,KV=͍5 eWUd;rͻ扉ShU56"IQDtDa zaZZehPD%Zf(CXݷL=%%8*aZj,!OMksP7onW,kdAu!dl"TTb5Ale&vFWD1A2.m]ESEUe d%l7&ävQq;B*1 e9XSeG9ԔM[d{ öd +EU aƿT]WRȽXsSCl6  Mrp8%7!Vn+~;Вm'7('/ur0=! C GJR+kCzoX-m1VV^8:vf'Gs7EK @ ʂJ! I/?xܫn^6̖*+g^:ʫU\칎7yAȍqO<^{7q[u5LEdK@]ˠ!ZITr舋XOM=ԕƮUD[%0_[~g) JR%I/ѹ7p0B@ ZdM/ONR3ōwS(k/~'tclgS/-魹(~muH"{GsWw2=:Ύ5oo핋'ܝ=>ƜxouWϾ펴K;M/^8~5Jsbfv+C&N_ZRO?y׿_s~hhf?bhӗjՎ䋵/[;pKts/-y҆ Dz̩^oLE:eHZ7|bݴWc.<ߘYBjlW/*:8ήܺuo@ev XEv~{n~9SiO%;H*zث1 INikcѰVr{3+si5 :kۻϮdfcp4$[L:-b) :tIϤX e˦v  )RHv\)R.sw LGi9tPZ$^P@DMool6XX{t| X5gR.۷oS%蕳E3 S=ULV,;Dm1}ΜAR>Hl \Ďqʘp8p8/ mwww'XhyhƱ qTe_fʪ5uke"KX'[8WNOus!+j dܦa` #W,2*[B!Mp j $约a Հ9(bĀv?sr-OW ,6 h&j67^ooN#MӴ*!AW'h< @@B/<ۨD e!HZ( "YtB9R[w%)LH.\P$gc0l_r\z^11j ɈQ&n @r Qp *s!("RlϮтEfL$FRȑkiQ Gp_9|m 5!blL`yMb2M&K/k"pr_6L(Zط/ǿM5!!dIZق;!HkWLWTI+MeM$<͟p8p8/b˃?2߉D"3\c@ݥ\$5)v`cGjU9SK# iݓxZk6y為N=?®!^-Ucr]ϩڽ뫅/Cp8j!$I/I9v]\E$"q-ǃqóc[H,~Y ;JʊDzP5?<]LZ<$ɿ_ߜ "V |^O0!^8@?@(U+\R?(q6>mV¿ZΧw'2 h?T9p8׃ rX hV\0-,|~!pIfZӊ2gǣ@$+UXoR(*YgJIV7kpsѡZcѡN䋳 P7>m5Sobjnju!UB*CGIfiY4Mak}q:ʝY4M,y[Pou{^J<̪2op]@p\ns8p8{Ay4\ \:$TV gBo C3[_jz5%5Ig~늑cCqsg헵i񯷢.-/&/\:ޮÃ=s?y^|%\M#GjO0IOY*FGGbqf:D~ZB<z;.aGggp8p8 KH~L/ 6Z^zh?^v‰,"mdEq,Ӥmc*bЀdD`NsJ%q,X #GZhX@iv(ڙ7Q%)%y7'"$c;%J"y(26AT:U[IM U,2w?m_`qc!P%9~g6Ql4,U`#ضɳ~} vm)0mۖ 2'Q~X\k/^5=J?Ԁ ~̹ ^U۵,ɪ"rȔMӗF,NDEĵlOU`P8Ս$wJ'#cVf6-Sq<;$2"pG,gE.a9 ĵ0"#$k$'Q"lǓUiD[xՊ kH`w @>*>l([ f ,tX

X6=pwH«-gFVnUO^hVgwik=\zw.<>V+=lu Kxއs .|k܍ >u.(K5w\BB]O6ZlJrpb|! [7Xg^L;Qp8|9QtwoJϝ=u+8wƖ8qR_9tX <%Vlc6łbJ:Pnyjv'1th4A NL PVuj ״ :ɞQ$J3{8_"H@O]nubM>3G9ڮu{z^==+9fQܘpF&'\SۚAc*7ԷՇ5)o̱VY! 8)P˰aVQs\"HѾ~vy?Zj1 :{{ txl_WPl\L=wØ_NcHރw߻>~n$)lmd;6~v3f{gZYpndg/%X +ݟ]<(RA >=s9 5 ]87~2e Z|0<}zIr*?FNHj+'5Y[S3{ 0uwj}uZ$9>q ;@ΑӇko}xgq[w 8p8W5~\;~ ?5~mk9OC- bh0 Ĵ<$Uc-ܝ㩩 oPҎ[1ߊIJ=wNDN-, q[O7pM@A1ˢ[ί/=[{MdHϘڙTd@@%hwRsSxv ZX-Ktv$R-az խmMF]"VܚI+25=dV2OmW"XĺdsdadͭIU4DR1L!榗2.kY3SZ}pkC`n "Q7:0.&3YeR:m=ܫi1֐Lh Vr'kL(b j!U6VVX{= uh)l,XV--CcX@KߞI.BƦͤMdI }~~X7 Zݡ]RNݷT"Hb䀸kwõg, Y4ޝ|SD!]\{_o,V@G&EcA9Аc}R;] $څ,{" `b(<zP(^lmJ7߻$҅k[N6ޤEIjB6^ kF:@zW>h`$ ]]TGRb1XZ)bg}TZ=9I\Ap8S |P,mlHVU:v,:^ʬ^eˊcSԔVEu)&B{.HLU\d`b/~VOdb""깞뙞{҅[G sE36& 2ic{&{O\p]"o@J$9;+kPC3;{氯 IB>gll-!2+ xTNM*dg~>q)@-SE0x#$ɒ$~` YzB%UY6٫LoyHE9nk:gm U2[iR<i ~8;IG'~ӷj+o|h uqU Ȏ8,âBkM"T*$خ.`E4EtʺC^1 ReXHRɫ躉)>ZIV@D@2'/ykNg5֡fcÏ!V(s(+"ut]ڸzJ(]nW=RYf\$uOġkuT ҂*1ʺIDH ]\p6_urgoߕ&ou԰,uӰ1rp8kGR[' A=gj6zkl^ oJDP!@xjX32`"("IVUx0wG?~k?54*e"њ @?ɟY5|;/pZ}˟ljqȪ]br6'ªQf5--÷~S ;DREɪ_< *WVu7z+@i|rʠOUMb?<RSk?;03ً/?CE~O{T*+yGG'3grNSz8Ԉg_09XLR57;){h%ۋ7D$)@A28/K5}-%VJZJ=;JLLD3Ϯy8|Υ3hw_G"y,#,zjmsCόP ̼v9xn,m AEWR\>y("G  |@ IDATF;}?{t2kA kjf Iy[}ޣ]T¦nE5 =p8S#~?,d"WNɵǾ XjPZΆ.`{r5"3KQ%rM>ޙpk3P2wrʔQ8Y:s٪d7Vc'%aw{B%K=gOv߸Œ N JE'/W %陞Kge!YfnO5_x/uO=}ƭŋ'_6}pਊ˹N7\uSXVkSs@2@joMx\wz巯>{:ZKܽuW^7}psፙ/WcWXѵD<(-8_Nzw ?O +< EUqwfnO'.__Ynf+ʐ"I?oAQ.͸챩*aXE{ξ`2᭒ /U ԵRk襎5++N q79p85Ez߿wމԄBP@h57@ѐ@MYsG~#%qKٜI# 0""J9X"ozJ>\jg7S@I=(PZS[#s2qhS$"*)dɶD3\ [4H]rD XLNGXsksHl6)6ޔSϦRA66fJ;o'7ݐ$(c $-hіjϹA&Qsyȱy kशR%,{0\A*SvBɦD̓%uYe˗4* C񺀠3%)ڔ!;{eWjlh;0LPV Bjkè;\%F)54*;eCʘ(!*lPD[eb\bY6 ֵ&CWe2zƈYRI@UB[!K%ITYkx剡XP4{Y'^rC`C2AKt^rzY8K-˦R-n*kFʅt:SXPtcow o(5u-ɀ3N!QSJ^$BڰhPNR&}+bBdHN c! H[%TgHKSCHJT*D3 y݁p8p:˗/f͛7|X<<״]]_ slύMkَG),VYز(k(ؖ R@)MۓUMBL۲RQlLӲ{YaUx!6 L*Ƕe.*= g k31qVuNTT 'Z)"V͢IR֥X@kCcGVR,ہLrT?ٳgii8c_,I]dՒ/UWmqzȲH瘶'MK8,ym%k.5UVš),۲hDF 6M)U"e:e#꘦$M) hE?XKX56;GSbc;.&g Lm2=x_[QC$+*hF`["$k<ؖ16(8\ k3y EEklsװ"l_m#@<״l&Kslv(dRTc%?OG7m#/), .[KQDa}|R-?2XYνբ(CvblzBQpTnp8׆|>k;<kkkɱCm__.*PϣrP]緗l瀬pqp8? mwwwTU Hķ[NiXD|PX dYEns8p8q0e3],#IENDB`amdgpu-utils-2.6.0/docs/amdgpu-pac_type2.png000066400000000000000000002444621354600334600207510ustar00rootroot00000000000000PNG  IHDR:\sBIT|dtEXtSoftwaregnome-screenshot> IDATxwx\ո{VzŲ,Kl L H%|@!!|Iࣄqܰqo,Z+iPl4>ǻ{̙93gfF?$9ظY%dBEEEEEZJ+~pF1jʤ1k3Z $~ʪ|^/nzm;\k+@?iCC2EQ"w#",4tqRrrҏcE˃NEEEEFQ^Iu.Z1<)~|;= I5i+3;Wb1k$I2˲TTTTL\.7mvN G@҈u:|| tKZ,HƬQPUo2pdv,a2됾k}TT.׋ڌ(jILDD8FmmTUUq"نo;)y&Qb(FF>ɯYSpݢQT! كc"46hsه:=KMCC3Cx^d}%"$!"Gs9CP/ZmϳoF^7r(y")Jxˎ׫/jAX袱;?)4چw%#YBMKsmWJNσɯo:}ƀVMꑤFXj_< _.NbbbpxU{g6*)oŀ\˯Ј,(1]ͧ{ hYQ>OBkGcׂo$?u3S⿊kǃJ-K+3y2á7~jwa &o5}[1N~7*T)-xDEOM9^,*x,yM+* ӎ+N~<(>fr̹s:yCgE ]^GҠz;c?sHiE@z(EYykj/4MiEZN7y0^ojtggy|hӻvfE: yVT. $x'}%Mb vtQ By %Z2=q o=̝Tx}36v'8 wsݝQhkr2cIP(݌MP'[p6NO?憗4  W߰l#TRGe3ǯu4!a3cʈ,0\h50 ]a@i% h4]~'yct֛-&oUF$Fd2 6[d4T|$('~#<=VbL9ڟ Ӵb oԌSgc~kqAL~L&&/rfs ^}a=1=7!ZO;NEAg%]e7M}F@jŪ]@&YF~߆C4bpN=\i8uPdy1詮h8zw^ey>}nUPok{<,SA2liI:<}rTW'1~!xPXz p9Kٺnj!z4VQrF`tqɫYnŘdq2]״ [5wЛh 7q&4vKvЛlOۈMElaY$[Qe$UgtDii9$t7OYMM>D@NMWI2-A]b&EQ5E}emw ("I|z􂇖F;Eg¬Qp4hqDŽQcoMF:{&㲻hsv۔u:,>YFਫEG =+摕UTy!jYXDz=f Ro/V'vWQQ X=SC-e(2.6WA@5kw^fȲFdT$~OEFkUM>ßoB^Lq>FZX,|Wryl˙\ yF#9$lsq+qi`Hl)OQ'!Mͅ##@Qt4/MlGӧ䛔r% {eYF8W#QD soݥ Oe'OEEEEF]SQQQQ"PTTTTTsx*****WSQQQQ"rx=ir"47Y靊e]롢DQ]ꢢ{?TTTTT ԗ\h%:_/]4;~Sʅ `c"(2mm.\K ᩜ'">$E`+eOD>5§oVr4 TϊBxJZ>hT=ޥT M0E/;jzuwƦQSyr?2wxKױW/4|ONRTw "2}j: FDfWbWm؎VЅsu#?$ɼ|N]v:fs r| {]5L:?KA,q͜,nARws#:|VKFs}zJ+eq!S%鲉@ټ~C,zEC}# pC.{/יĹye e@8;7E#Ry(ûM?@w3>8a&x%t~9BR2LB?ƪUŞF&0eD/>ש"f@cKw< SWʺ\X&͚QH} 'Ws{إ a*q)81LÉ}쮓 #;}"%[ҋaXus!۱U.OTw !XxLhw".kk) 3b{Ki 2_]XMo,.g[4-9'2#3WsI>9 ]^  㴞"26{Y=S_Ա$=q 7Ey*~/;Z^0Fn*>Kf~Sxn0_ȡ滮+\=QP%Y/ А_&[XL4:Qf^)af"bj?+tnň bu7e笮t~ qX6<3 1AZ`k!KGAL)3]$ 0#{1y+uw 2(`OS.ZK YVⲆs(X a3FrKȣX4akEnc惬) KʝcL(jzkSnpS4 /`[ 5tB$?E;ou5Q>&z4[+qa , uu >Byw jOWO/'bXBz[gqgĩljc2wsۙa^N]nj~g)NxZ.S8S ?똩 >\-:3m>jx jc?V&-'GAmnmhN{hB}SOT$Tw u::] xmu/r:XCXw` "|uHN7]o`!\(?#mH赧=( Nb\4"ʧd0cT(­`p#l؅!-DcyٱHk kpRO MF ^7vYBh jB&0A.=mS<^h5ҙŋB z':pfa[i_>lt>61 8N4pfZ %&[l }C'*WûDPZ))#p`I7~(2-mXe-A [#qemQ0QCHc6)Vd; _O汾2H"s)r$1UETuD;o6R͔Ȁ("^o?6x&yNИ~8g O&3CS/lfU͙eWZ[s׈EQHE@inB%7^ǹ2'_<2Âv6ru\-S lCAV8ˣ'*WꦕKO-;O8:uS*I )L@q_3W3Mmx+rD&U({}Nӯ­:䲣#j8R(3S'\)ܔ;=D["t:MziVn^С} nK7tȗ45qzŞO蒲Ť)M["S_{X'ڟ2uuB%"51800zrE4/!e{x[Q0y\x3T- 0t,ޞJ~%3'1OC܈,1@EWagd&YL3q?ͥ$͊@DD"@P?~B9g-C7.t;*b۪lM컮gU9IlyuP| w\& ( DފRvTgrx%5.\oc'.vm/bLaŹL\ϵq˼LųhJIq1nTw~ IDAT3}T#6OT}Wo3ʒ\=, n kS={~` "P(:gSyg=inq)Fs}V>F02iLحW/X]!M˚ΐz,AEEEE加krTTTTT6}z|#TTTTTTrE:<Z`朞/.R8M[_ɆcͿGg_lݾ ߁UTe.gs_bK[iMj^J %GSP㡯t8y3+__lߦݼEz~Qy_'߅UTezӊ\ö^d͉FZ >G'2tK|IZ29RS#MuWAi>ʁ-iw`:_..=|wR4>nŠGV󵶏** }<\ ƀA@y^>{y'9q6nÌ8svtd?4Rqw-u\,],zxTK5wq\WL73k|/bsoy˫YO+yuCxlqb?f5Cɚc1`W;G]N O2 2>_YY0h O$+>c3!u'JRs-??Ha D´y`nھyy-4D!^K+GO!)z@qP#}zK q^/ƣ%RY9n= : @n&orVn;Jy> iwg+*S ^]K͍dgE2/ //5__>ٝOCGPB46tQ9?;PLe Ə̛~(p)+pa$8y<325ωr+ncCgĭ0uݜ~lҋ~c+m[KSn^<(8m {rɣ*cd%L8oyljzдEXeᮧP޴ۅq#^#c{ː$ jNuGD%+˛jU块h<FYH6;\! 䝨DF$.#\\/+hBnMA?fragdVi<́b#,];Pj~H$&ٗGA5D (.F8xl{ X&Y6byS5ˆҫ};?z50v!a-nFQr$yyS>rBA9EU~QmH' e҂E5_Os'|_Kx%4яЫ~M+dخ dJ\… +_}̾>noe|rIC#"AAn b C/O7\\@TDK|r<-u8k+ eݶSx5,xaDH4~ Oi9L5ɭ!|s9VAbșOi˚M8qO{r:ŁãG7I ݰk$ƆUh8|bc:W%7uւ RSH1]OR2Hq4|%$,LDk;k~[1n~f|ȡ CgU| yDw_eGزJܵiq廎Qt^CHO;!,!q$P{ dNAHRXX_>i隞mrrAt6SVP"V>0+=+6 0F&/DN5L `lSQ@3)C,hzO[^S2ꎬcg)n­A"&ջzM7I_z_7NmӏIo lJ%@5TԿ{:7+mv)ˎ:~,#亓vYeQ0#P˕ pxvV@% "#6tki" 2lt ?Jl? I9wF!A8H~@=́RRɴ~GZnn;9qhmM‰\# G8 @ʍ7p Xv,}ѻzMPPgc$Ix: IPk~m(`B -2]{Xgi_@cm2'{e1 R8f@6 8}ա **)qORoޗMȂȱc@&RP-xFq,X3&2ib*%sflb}C0瑰!v:y]On8ʚc S{ad%=!SXc<8Bɖy`ʘHO>hv5芘("5~\iWSYJĔycI$2&LKFI lbpye]8 s)&FiV&8<E@>a|͞l/i2P>}ːdJVq{?z*}$xsl]^ 4cu}ܞ֑!IٻGodA!c9omdqC3zَk-)1wB>޴"p@9EtorQv+DF4_&3>uLnz_^̙̘)/TalWPâ̘MАwPR" e ;oT$J}c!}Ad2{j8yyLYH:r~6J&1i1ej e! WN^XSl2Mf|R Zg#mA C0 k#r_ǁau(|mr҇b \[OӃ[`LL}z;`&㖟@j}CY]+X5n4UKԩ$nB9IӇ~Ue~ʽ!l lu~DEg tH&;4#| +\x-ڰ嵭x$bq!=i:C6ljYp}+{ $/ ?f͎j7% !#:1wayɷ9qTW1% ߘ01/v~A%$$QQ {_^b+b/:{3pۼ5ۏP X0)-|巼!hxrIB *3hk`f K@nƏY(eM2ƐDf/f+SXT5cjDM_,8巊ώ*btLOOrPQ@9)w99>]ACLXb[Hl#vɆC>;&`[om!bhpX9D24ߗ.Go\ln$s8'.yibKY]I>k`撛1S)ؼێR@0τ~ d_κ=yTZe̱^qg߂ S}*tuSM)Lm~^Y7y!{IjHTz7S{v!g?=4QD(hC1_|Z~ݹTlv"ة,GI I';9\i`eSQQ(P$(MVeyK΁he^Of" 2R"*ewiVPV,CH++P,`Y˖w^4/WوSbF|*|/ZͿ[&&߄%!c7Ŀc 8zt1*-Tl7S ƄY祱0>+Ps'X 5}1$Mbѝ_fS_,?loFU~͑x?sd˼ 7qO~½קAq'dEʗy 'C~}&kq*Ę;\WI)]%à!$ul: ]@iŋ.8ɜjUq7Yiu)|)?Y=5bKMJB+)) J 'JIMEE 즥8[Ā@l)̜/^s8 M#ߩDGFsݮUT{IGU"ySe惼PhU;ߔ= N WVJMNI ݰk$Ɔ*vTUd0QCXeW) 7Cx2i)q f=CvlREGcN4@ie=Cla%1wDl'r7ޭJVeI]JK36u_ooN[v9pz;݄Ψ9a]i,bDLbqޗ}H H$j^ZJB(e8D<˚%\PJi#A1ȩkD&UTT.px^NxWF1c +(( MrZfDli):IQY)R hD稢*d@JF2zSVL[AQXì즉XGiwZ#4ήQlت,zrYɉCJ)ITJ^k)%u2i,+\}m~2E|&qiuGֱⳃU7qzݽBZ*')s1$?\SNA*^msKAӞ1hP!goyeWǶ~m8G)7U_1쮇yC< vj ɲu j(X]IB`^ eqj dCJMIAN.Kᩨ\QBբ7ȩ8@IFz+r'bH|'7/r~)w+22 hɚNHL4 "@xTY$ {˳ruDϛlGVtC.>LY8$C9>D=i+ ʅE0 ^Os!ŠHCRF|s X,B ;> "(R/@?F sbHE ~gEp],XhE+"n?K ciEKǺXw<|/~TG]qC_.L42x ,,& 080ر:+&R #ɝPX7zLR+n\.juF-sJ܂Ua,) ikaס~^ < 1mtDg#dFw!TCGaI\h"y[ɑiuFf|yLMKM)MNsm-v\=u ~^ 'Vt83*)`#C|NELȾcڢ"F܀ [+ÓpR f\|w%` O"9wU))7!+G!ף! h; w i4Ƙ΍ZH9sHc **8Z͜IS}o?Ix<舙6a;,nS2bP"} LB{,Fdu3f+gxdծcPUf 9Nu_gSn'%6_뉏siyr#[_5mM;4LgϪ޷+$ IQba]\WW]u-]QzH( )${?b@BHh9w̜9sg3(\_GR8[PU6GXt8.r13wAҎA~$=.rsΓCoD$FT<[%pk>ympi#h}+䎧0~lWe(v^_1Cy_J5QZ:OL҇0 2~r=#9tŶa6:W IDAT;vg:]Xg:nfCۀ 9p1Q"\E ;_ !~ ;*[5=r>6"_xQW;Lcvo>get?yuXiE U9㹨÷ ֱea%%s"~+ ~[G[, 0ؒ E,=^ތ"-^;;[T6@,tq.ykvgW\bp7;BhAfdm=do d ~/"hH ܼ!M@ ֜< 4!fAWPPp#Ipr\YnKTŊ6mL*U.'n ܒ(EyT<)ӨV UJ r+ i"U~CZckҴ2z# B$”t([v@epTY$ɨM5}Ǣ6)F<-*v5E$g葴:*MI$_/%UYC)*`mqhw'gg}!5 @  n$Itm#; $ ,LIoӝG /O i [ k93"IMCgRpFg@ @xx[I@1# HxB U+/< ˕*f$I@pB5@k@jF@e*e7$ bFc0"ɚbɚJY-TzO4.ꃉm/ iO-'~Doj1UUAQH:=\w$ IGQ#ELeטOr]Uv a6Jo7\# O-`҅ϩb:GB[eXq.!ƚDܔHm|L*N?/L#aJO緵񜩰/vJKeWIw\_D'cb<9F-ZM&c>q"{w"b68kHUFF^+}0?isݝ'=FPPTNc,Z} %ZZvS(M;5-sWQFbݻ\YwݩUvACƏf15^Q Zz?_uCa<ќG(}^RJRٵ|sLLEղ2ʥ`2n.Ms[`%=n Sgx ç_k}񸴥ɤ)*,dG{BT='3%CKݮۡdG9֋܋JQId[n6q4DiG0*.>ARNR2;,%U^I@aC(+F7A)t1udlbށ(˷59>!ZнfC#ıy?Ϩ7&3".k}+a2޺ Pkq)J80w: v'=֙2k;ɚ`C:0t8" [L\1dxZ8>e2@GgVTNĻηBFԄYKӵ1e;w{%/?ik(!=!1jIu]OPB\LJ+-V죨M7ba1i@I#)Egv p4n^xj߲_҆֡ ]C4Sa)hbj2:"[w|Ը1 C Sޓz'Zov {M O#&𲵻|!'|WJt4cT7ec?}\Yw?eS0RW|n`dp瓔vs}r4l 2KeC\~HgC~\-òywFv!+ّ8m*3FѦU(r&-O&ɛ#O} "Ҡl=oo<4<ںiP )g}_3.*y(]my&kQVSرVc^MHbtXS${7S$? p+]o$,282YҚZOppB&'c"4a}N^@I<7O~686SKh7jBݩ&Lfϛ;3'uyIt)Jf2&W:Dy9|eKO挵:ʏܽ/w}׿7w;ǽWԔà ӭWF ⍧AXJ:k$ YZi5QUəOLfXpͯ2Fg{ZHHzn-^yd Ožw#*T|%]/!ykT4>u$&s'm'c#ahә~asc' õ庤w#0" bywt{uieoj)jü&hb-C VF:NZ'd[vDPwՓݵi:_#i4JUG=UK18Va!hf*L7pf3#rtÑYi'\披BOWHO__|޸$z=єj.%%{TƱ#)yPxVÜ/t^׊hbc;HvtuhVk79ԭMF| Nb)Cgc^sKfU5M;w7sUF7_KFne'%h֟ǭgHHC\\qS%#^16ؑsR{T\rrMLKhF\{_O%qt953>!6ZLvq<s7ugYL #(j`Qrދh|%W\K<=:g >Xm1PО |A,7/;3Y`ѴAӂټG~.gY7s+A-}aԢ ][V[J hq~HLώ>^Ń4D?l "*O'=jQW#S mݺhn2ܡS'sɨK+{"5_ERayc~Rn@o?bR0\MRM;#!a~(Hv%Z?N]F]":0Zӌci<]-jcڣ*,=]vIh.+=jI]iz4)2!tɷ]X c[n0bQx_y'.% :;gZԐ NEߙqS旁+cw6x=N Yl7V/ڌ7mC Ng劅-",v,7*\T1Las-~#ya|_U^2%_cC\h YEX4vx'"HS+{#lڳ4Xlp܊HW#hZ-y}=!^b%k"*PUsdMyX,ollsuM?t^0b:/ı01 prr@Zpk!mP-&kS6UAk$$7zÞ?mR̤. n'knEubuHbF_5(ay~8}qBAvmGж!+1niRh!6DW@UP-`$lXn@77{܇CpCB)'|oMr2\n(a`nEIB(+s($UARժhZ6cm_eHRbBJNA1)ePnC dY:+VVTՊ(SLZln% %n)$IBӡb: Tj*C$!2Aʹv+w0=fUw n)TUd2!lѷ,u*( Q h.'%9oPT<'')@ MAKKKr@$A3A<@ 4 kHٸJj&cuBI3y_@p15S)˙1o7C’Oܯ 9Z&L@t͒K wGسl6}9r)1 k1;ؒ;ƙ ߇x9SY ~C_~>E_awͧX'T*o^Zž݅U4]}€A u j>;l maSՎϑ9 cp7pЊ<*ˤ*^W:L%n?g,DE`'VB E#+lCA>'43P%dFOӬPh(7b3bkp*~i  @+z.Zo&˯Ma]vU Tl DF!\ 9u+RgXQQ)RVT2g_~#0Ϧ,&&\hC9Mxg۪ݰdk O>|f]3fϒ'9ҩjvB3]0+R{r2|`HBN޺@ y&8t2 *Vkf8MnQ9V=^?j8}f/sْ|6n?Q0^a  B-Nb_X!vS4.o94ki ]5?̱29ɡpF9NEER]ͶZCi69BZyROb{|1_N[O xz3R"44@d4Ѯvv$ %L֦&.b3{o"p5}s~fy|9T`ٿ5ƌΐ*L-,xr$>tQ`%~<N] >e<۶wV$,:-0-n 0E*?GE36jG3X%fS;BqV" NEc}jA>Ea:ʠGSDJT { GgG$K7&aʏcK Jq!ŪJ*,'5l*LT.(փW_~dy*(R2з?ygE[0sh9/bq2I<1$T8KRA'yaoqbL&g"_edN kX2$D!TUyx}NONԕ*]p)IY3JaIvkI_]}ŕV{0A\{ ہ+xxVN-xgac`"Ƽc,S^_;W :BN|6|8tF{OL٣l؝]\qgc^00PMdQ 'XtSX82ST"Ы?ϑ84ȅ{)<_4 ֓S\L"Ӳp ߫=O)8{К@76Uؒ%AiRe$jL$Hx'iVY>1~?Z@-f2ՒٜO/rW;{$ \c){OULW9`R=ܧR=N57qETTNРx[j54IG 9$yeh4Q;u]9 OvОNm]ps#9y(6@ 푐u MV%Ë~fֆDr+?{ɚ *Le\PRX̕,H3vC6 F/$RNZ9R(&ak"R* RJJtk8 kh(;fBғ^Q&N,*J(U@vkG;~g~3>zKFKu[2^c ڷ$ mbpjߜ$z i`_bZFyHou $@B!m|%ؑuA+{7eOؼl'GOvsPbeә0'Na=MoKnY?.A$ɺI\ oS>?RNoYI<_чJArZv Nv&$ԉSs:?Ob{Jn %] ےBc]wchA_>W4Jcvm;*gEo@ar*u*?`5jq05 l\k?vxdLT4bq"{w"b68եK*ZIZzSeֆxVlًO?v2r̞#yz}LFHV5\]E~Guӡk?,GG BZ~ʄ̝΂I.¬uyڎpAo,r<ǐ 7~!Hj.f|idSv 7{X8>e2@GgVTNĻX5)/&t} hD~%;c%?իq @D2xYܛ1dE3'rGb}^ss*YӏXFU;qEWȷˍz{1FtF"FӬt=q^ JƄ&_GL9TzSڷtX]v_3y&\yKu|=(y/kZ(ؖ~cbh=^Xg+'e ~^shi?eQYPǻCm`i~t7k7xìߒcׇ+MZHҾ}dy - {;!k?N?b6w]K_3>&PBzB"cxtgٷd3ÉVzx26n:(kmi /pv@ yIIڇA>"[s2!\ʉHm8XϬwA%#N޵$U>=&~XQF'[r||P]D?|x a أj^D۷^u]Ӏ|Q {I5<1 {27b㌛sM}Q>TzS>µz8j*rW`G#IW_;d/q3 > E[xSwcȳt s1BT;b 6OkxdW]`93r4[@9BZE9S𢡊bkR=)*i *e(t3Hcx+&ɖ#wQ7H~3xh~ B(GoHN†q|:y#&o7/*%iUBsH3 'i{c%TzSM̠ӟ7wfMO6V:wtmHdRMtsRM˖.۟k'BaEsrj73??_숦^I: z0bSp3rOvӠp,% ѵ{y,WNDVY 3]̰_!dH|d 2*JkZߦnȝ.Hg`Y˓>8RHA|%]Ig-P?{32ek ɢeGR"m`Hw#0" bywt{u[TCjfx%⥻ܐΨSأ 3o#\\j$gMңׁd:%[OkyG)Q E]eGW>ͬZoűrd& As-N5SaA'3̵Giv#[>2TH89d1ֱzF7x%I^%eSsI/DZZlSFNNG8aNe;R則9a +y8"U^I9 I!8PNJmYޏ5BtND#ʞ-r]ٳ N2pEҹҿ0^,fn}Bj**[f,#O E'+p&Rcb8j@6㇍DDG-`ud;/7 7X=-&'̦XȘ6H:w`/2o"}]Ӊf gz3懲.TkW"et%CE_08*i(ݏv*;}=%`瀝TzYQsN\JЛl.QM$< aol-CF@3 +O܅_DAg{X+o!ɼ;6`2q%tNO $|;jEat$/Aߒ^~y"f~"'(?Â+[+1b:͙ [bGx֨jA?Nhk'yL`ޏFE5 HŪu`f,%Єlwhz^zHu[C2h4TUm(Mc[&u4o܎o=øH-z;]?6+:|窪hX.zjyٓ>>c67fCef+v:I} H:#6665~z4MZQlRtFl2Nob73m{n6s}{_پnc(M[)+*A ³/̋NgSt+yj f}ɬ{|e&8NڃXX=Sd8|͜SsJQ~%m qfSb b8+,L| xl[>z:ܔ\YS/˂*ie$'W>%lc}*F5r_xf`=Rae w!]Z̾93ٜic=FO+?4>A:-A-ׯLTYSchJ{,fdNRfו[Xo±$@K(Y/LE ?^샛Z@,tPɰh dN敁^*le.[ϒWTBY-G1[@sղ6͝˚)mpQB= Lxejq ߰M.bɦY0gzc'd6-XɎ wv>S/ygYh*)m$faݞO&RrMhRcrUq<|amK!7Se/AkpXADa=|c +- 9LPVH?/dbꢧl"xy?ȓKDRAgtPFaV"M2ώdցb ;X9]\M؇pGk_;RORN)|.  Fg{2i%/K E}=;-h\mjv~ v>xͷ3B*,G)9{]&*”p qQ)8?A_`t3~okƴJGš%hJ~qpoz|Wg8c%4 Kf=Wu⟘5ӫ!{RvwV7]J,>j˧LC9y}C4M@Q )܄-=.Pd܍cTŶ}lb :Nvj^O9&6I(r}o39>ZglU.QCf°xgRՒ,_gOpc@pG!{^3?Ri`jϾE;n{3xtNQٿMG[?PquIC0!W@S_VUC v7J MBv>כ \,pqZK@ v)]:O|(!fЖ oaxr(+~S eWGeDXTڮ\XZL{HeywcIwЙO'=@9?1ŞWϟ^wI׮d<-HcrY[L^̮ȹnqZ( qa=/a&4T甉t ^ "\qanK(!ՋBg`wKg]۾5!q'kg"US<-52PP4T |4@Xv# Kyd>'D}X|9SXʛaIg̐\;&BF^9ypoT0A8;j\_*c+ Kmݸ`6IЏ7V2gF ty \.75bo}05x:]B*Ccrj'gF{1=J=Bs]KMŹX=2)BOH`L­ON9wak^\24h%lD| ­Ll%iEH:47 2o<) N~v?i",@+ +ouE@e/gQL-ե"ꬕ9ve#9r$7Mޭk.r%ۜAO!i䳼^9q>xO儖B=HO%6!H(%"HQDg*QqXDSE_&"[GᑁAdVt.MS| f7KiЁc9,_͛YkRTU{16!adO(͟zo7ƍnOPnĤFZZi- pg'i3ƶԕS~]=⊖_j*Ν-*nTUC amڑ%;;-El%v}IuQbcnf[39?v98@7(sa`cG[ˍALUWӞl]3AqnAfڌ~qb&wds@1c%YhI^;Cj}UHO0)r CNA %!q1Q1uƥ#=eZj#h{d {),Ʃ3c#e\-H>q ɱy1E[Q2 A7׾zHs)vM2UAUp^.9>a&Fw ܁ 6bړZyH:~?ų6C0o|{\:$E7lIn$4dłY[j$Y(:0vۣ1p 6~χ \J\[tl_%xu'g=9g"#ebfw`k~7a  ~˾aּT懵ۇрϗ)< }wי0h.@`;FpO=ū ~&Ϻw#G(-ɔ5Xg[OzSO嗮J^lӂ-@tE㵍M~ۚI $$$oҊ$Vn[a-\v.]InuN2$&m,)"Bljo{8W1$]frHS$I3Y tI$IɇI$I =̇$I$*, {x$Io)5Yݻwp8pݸn<za5 !PNw- qqqٔ&G֭[9r$&&(giCUm6޽8z쉦]H &pɐ!C DWAQ;U dU?**dN'K.%)) ژٔk xR" ++To,ի0L!HMM%''X˓_"59DEEUc2t6nk xR"U*詪zMGf2IM`0\B`%I$2] eәi]XBTUd2Ul?`2|?)IgRh6\,g߰.]IZꖅJOI:噥sg|":{G2$e;eQo򗁖7U}!]͎#I|DhX>I/ΤS羶~gy "~ci^,ux?MaEl>/yIGl,@zCgB x~Jҥ =<[?I< DewWjQ6/7VP\sq%aLពٍC%w;9[ަfWٹ#xenN]Hb샄<'nihcaK3`8'ד~]S.%<5?C~iF mil -RCU})DW5\ %fb!Lԟ|&[pڝ-xQ@+ܕN:}?3Y3քpf[Ӱ~ڥs e{e'ݓKt>wDUϫr ƫ5E^̱D*^i%c:tn{՝N(uC{x~Jҥ䚭۰DHpUC ҰтĔ{UU3;9nN?zUq8Ci{Í-gQbBVnwԘ&hޅкc?=}۳|S(x(:նtOt?y}Q]@=;ÿ`*wOOVCj֣0" o=?($]t*w% e_O;EƄQGVЅfDOM SP+NzRgyg)D'&Gõ;_`+ ^wsӼ'$]KxB0v5]m9/'W4/LRˇ|jl6&ZD||6{scPfL%6(BѡV.pwȄB W{'^(ipBQh~Y;b']wVdKvHlAŁ=T=+½7HZ\/{wtxizFˇ|j.JKh6!ڟal\sACii ܥoP1g~L3yt{ϼc=ϬgiZJȵk+{|VZ GWOEWY?%]8!nΧ|=yVw1SgiC;ͺY(JMbfW,1tL&cY0F`.T6z:L&jI)n lE|7"8NJ~a媤bs8>Eq(r0HnIe7y+~c{)8u I|)I2\?1|߿:?qoeD *4K҃7CG()+;jn>/G}Dl^@&_3"P{U vlheһyŮ$V@}l]4MCzkϢtɄئ[(..iIjdz 2x`nқ e>|$IbgiJMh]/K4 χhlH5O\jrL&^2k6׋dAI.IMhDUE*{xtȀ'59\3C7vV$'Ԥj%;; " zj^SVIkxR*XV֬YCdd$QQQ߂(JiZWUU|vN:E~~>V_$IM9998R B Yff$ Ojr4M ^O\\ ޓP5{~eeeIMOj$IRCT<Ҙ$I_)I$&T4%IkQI$I rҊd9vލvvxwL3M26GG[OM t{}j;g}+28'0w-+sROzٖwv&;;k;>{gۦH4ze vxp57n gǿ^K,^j[ ~+УciogE^7)I<([dm(֣qW >N6Ѯql[wLb|IV}=oϫO$Rԗ(fb/l?݂CiVl"k$JW\.8̚s+tbtQQN,SVG5݈>{sgy0,>_ o"FxI,S.ex*kdڎ0>:~APk(/EC)!7936Χ@-"dг7$f8SZĊK_wz2 ,ܥ:I+{^<V=쎚gU9ԉwO`h |+(gpOK 5Hn}q2_{p U;9V3"V̛}-m0m9L|i ]u_qWeKtB _»IPUz/"Է,a ‹}+39TGZf*3C6|ӵd N0b2xhśI!p=u&kwFКN}L{kO[yx↓{tz.#)|=F  wSdg-=4E6vIX]h[}~u24'$]Skk,Ĕ{տSkTy"۰DHp"C ҰՓRFJn$=o92܀r=7uvƬ7A@.؆1X؞CBEֹ3~+,w ߬[H!ԬGaDCiz/~tੜ쵫8ҋj֑,??tSabS>f?YrYoJD4‰p8AʡG Ĩ^?벑S.Y xl6m#[OZ~b{srENAph0zRfDa=of}onIuE(:44^xp]h7׈v/\ɪlj?_ '6eˋ(Chx(zuGdK]DsQ%)dS d"it(-لkq!b &&pA93?ceyO&ՙ`ٚ4t2.=RϸЭĶUh)V#׮Yi*]=]dK-46rBi΍IgeݐX7SCYk|L&^el<^1zI.3Óш^;/QUU$ Ojr)((f4 oH5O$I$W$I!$I<ΑkY2o!+gi6[̜og9OβXZI.mdՆ؛SК,Vo[[/5xlVOً䰣Uq\NNl/VéXu篹 IDATyٷYuiNPf4iv[OGK;'^kPnz~ gԈGjD {G%]qQuW,eݶwDHtp㰶_m ~x5%Prkq]tӴü}i1ؒпmv9NAu?6rng`/Q>Ű_h%lUd\3fy27AW[ef'sm<'$ɝr-=Y}5 FTk32 >V?/eg7.u n=^Ng,c)FR6/I~yQma:Ǐ3n0-~_j<<"T lV.Πs[ AqA!^R/6;ߟ._:4}:CB9`¤E߫rE84?Qdׅތg{;4Tp9JP[[cq:E<([w xt4~,"'qx@s( t7B*>`gۊ,XS3֯U 8g%ӆZ\Wh̟ Kfnn㇅H^ #>N,|}xS3}/ᢾ/j x6{嘵el#vZE؆nh%doX8tʉf0ihr=wo`JNԜl~r@ѣ&MLNZɏ/В*{}V05z[gc,q gzgQ^=*'sv^|bZ1b]E&yȭB∿㬝:Yy9Jp ›am+z+3f|G6EDjH!qyh40K?zydB^aṔsv'E^8`$#4#@,^&OU'F7;٠fˏ0зKO Lf,yٟg $438''( Y&99@ZkZd$T8#[g9zmQƶ`Q lΊv }7طfG Hk3zh& 7M%0CnI~ͱ 3xمe"i7j ? ?ZK˪'(#3%.%xs*7~Ǭݡ\[gk8I,ُ:TW.b4'/W;4l?o(o|{μ~1`BǙɟcysmYW[ffQ,}'32z ِ>XɺWOz\~jPKp@ŇY0Fݳ'T r2,x/ƃ/cy?:J΁VY2s_  vf4a ?0wUp⫖kH<27MA= mڥbqLmI3a($kCpsp[<>P#μ}63kpz?䧐;s s&SYM_NPL8_ \WK؜b!bvՍ}[2/:LfyXM9%O V䷊0FtaGdV. m^ f8w;GnԒ(B `GT RpX4,y33o{0{H&ޙϮL_rh7|ÛCVf}#*$x94>)!cd\H {Mg]*\31'Z9pZ'}tԟVjo%NJb%z kQ8 oS])%DM^'גb[YI0g*6G5CL'F H'B2̪7RFs_> nt՗?~ vZ vcD!Ԃ,8̤'Vܢ%͕d)g;]K jKWsPH7bϦsE$jMU890Q<nd~׊QsP(cX?n;/-OGKMKO%V-C/.MDf˾=99}h.a[5'?3̪h2m;mKBΛ1GfGfW}5PA_`t3~okƴJGš%hJ~qpoz|Wg8c%4 Kf=Wu⟘5ӫ!{RvwV7]J,>j˧LC9y}C4M@Q )܄-=.Pd܍cTŶ}lb :Nvj^O9&6I(r}o39>ZglU.QCf°xgRՒ,_gOpc@pG!{^3?Ri`,Eyx4eB_,f,TmsiZ{YABAHٸ{6FN[><)K Dſ^ ;еmE=mag?+Mh(#{l,n@-sU~0ՙ3zj7,| `Bf/b=>GG.JphyG) ]Kk3S8^UP}ݍҽ/Cӷ3?ݵcBy'zSO t/M `p'/tT[aL>@OUTꤕRR3JhKw]̇˷0<9 H?22",zT}p._,-=_g󼻱jSSk9?1!pYg-t: .J]?̴דqh&t߃H 47.Z(7 0VXsDU£W}y8`k-"Px 'ҙwǶobM~IڙH|x:lKd (-8O֫ ~_ë*ijeܷ>_)Bѡ70Nf]zh瞠[p˓Ob]38i>fD҅C6ɷfɧ߰GX3PO,W!za˜D)} ;XPt(hhrE ,t%< f?B^;M^o,c͏ذZg 0bˆMJ!t秮;p}XGdZ?Ə":5fjn\n0MG+3#]<Ղ.W7JX~O3KHa|Wq애3&S??3 pciЯ &vG۱B%t`U-E ѤKCT#PºѿC hUG%&X@sf*Ν\ehJ(*r :C h[JrӚ6thn@hexSvn ~y"6 *FAz!|YSKzu:ke9}]zHFɍ{ӧw+BڮvI6_`SH,o9,O>p;B$s˩[jsq @ P 9[q5_e+)yxտ0s{b}7+/ˆ'>wN,.G9oDғbMH$ҿJ!Ru֑%*|bj4٪? "{7Vχ<>rT1 HŀV~x~דj<x84:7=AջUBjZiii؀]Μ3Nf#mg9qR",͡9ushY7']\KWsNwahD(݇d&kZ@hF P==$vgp|_Į1.Z?$Cde%j9o?g9Vbs3&"3fv5#b k&$0ښ 6NYVRaPs+t`ˊ|^[_:,\ǰ`ivL_P2c߹M] 5zZw?[":X +enr^."$sU?}"x1p`QHO1n'[?}3 z3xt1S\'4s9*3_!6D1p7soXn2cbn5 iwH. `g|oNAAV 쵘~̧ L )Di='c,źqE-@.V/>!)PJI> Fpj>ۖ+:~,oMoȵN̓ LƊWD _@){EU!=&Fhz-E$K=cCZ!XKq sp2AOPt C O`¯9|ByNT@ԓ/]n7n V#yFB1` qUtk2˒9Ve` T(Q?S.a{s79Z<]o-1/VV-^O{+vSEƑҺi3AƉ,ߑiLdf 'y qК[TE ?y,q9%(~%/GC_ǐFŤ yky(|. 7!Ό%:ؖq\яPLM͋)5l!?S8d\r|:ÚӵM1lŴ'104t,~7gm0a\1.VPu&IoIiɊHTPt`&Gc,l/ηЩ;پt3K Ol{sD>SJQ6CKMcxD)σ#w7V."IRQ<4rֆ& OMaH˸\h2puPpO=ū Jo`o쮇GQZ:)k]r22QGfMe~Xێ}_嗮a/iAz Ij "F&m$I%$$h1In[a-\v.]InuN$.YXS.EN7)wp/zW 4%Ik9CU@$Ik|$IP+..n|H$Iүb'I$FYRp8ؽ{7ۍ@_EQtgbG\\AAAMIMOjrlݺ#GMbb"!!!(rFP1i|>TUfQPPݻgϞhlLI. xRp8dȐ! rT2MӪErr2NKjmlJ5Ov˶ W-q|Kn+,ΗGc4 ^Y<^?U <0&nzu:;˗~!zހ'$]Ԓl/^xy* /Vz|[oG[&ă757?{յ5Law"`bFM,1Mhrcnbz/7$_bM1w+XQDTDfE4 E<< Z{]b<-fK[!rmv WDңDM]%C[WD&مLYw;^~O#만L]sx"[b!wNȹ/~g%>4yV{0`4\fҀH@"|iTpӂ#?S)5E&άYa?|D__0kUc ǒ Ok: O=onD2|=^|IR#,_z {>`8@M_YĊ^蛕(만Lx`>W E #fr:ߎP/nE/ROk-\ w3 bj>[ )7l2nC8.GUK`]r+~a7֑#yX̙lجJ$!D^:+]>n f֞V){C*sx.]iOOQ?]f, r|4)_'\+e7' ]KEL FTnkYXl,dl\ܝtJ:9>?Y4nMIlF3v}D5͚Lz⎧3]bcO6)#SWYWZCCTPztchݫvSx5/;xj;PP}Aɑ(:+OByH&SF4'⌎|]>IKAeR!E`kk hSkQucHi$ 5(B  cD&tqejG+}YJ7\ђ>c#GnnM+~ԙf^p)tʿIaŦQ3>aJn1RT MYߙNGs@޾e=%D0[s +8 `l]$ ?bNdg(J~H~ԕH/=( //a{=#1/B=KVS:/&W΃PSHP="9pdIJ[\V:L]o(J$IT`4^|+)r 4qok «H]$ Rl:~A]ϷL#RXjɩf\_Wdddn泆'#S 嶸,U$, 666sfFl6fa6h4Oacc(>ߋEQ4ÓivۓsLi`ooYLBEHOOfGc_z?fF22My OY!"uVRYq Bc"I(V\*"N˗OOOL&4Óivfbcc1dgg`p(mi]eG,dd4;$IJE@@AAA>Q*JJJ;;22wÓi; P\\\322T IDAT2222yA/##1!#####sK dddddd'#ܑ ޺r#嗩5û0f|Rh@ '7\Acq/Sk='oK|{!`yn+D1sᄉ ѕn|q-l)+NQ`@Pw30=ӥ.ȗklyv.:8l=hp !] jG5f5b6۾s)(@BopK@Vke08zH/ǖ w38l fg{ *G* 7qRa0`P7@jF2gŬM:Mn a0j$]lK[r,~vc(*77R݈s88=~uq4 n?~][wvHx?eH_6i#c1_> D.O>3r;T -&>C+~/,4V.y1YX/i=Z| 6e5JA)ם$3HPxPԺc#]ǟ+~+/Z8V/X oWBډOXDaUWn0CqZa ETnԖ~XxWra.+hUV7V߾b@$v8CBQؿ"xD N+:+޵%q*~ZՒGWJJ>%`DQHTwUZƓ vs?,j$Ns6kOJLl;ƅE5N$:`Mr =ؖ}\v!>^)뗰|2Ei?`$:b[cZ7 'u$oKV |?X0yfl=È3aCqKۖew'BL;F^bۏؑE"G(m˽]͋%eMcWf]M^;9b㈛o{F=>+ 'Z %8 *XB^]>3 .o/W'`BKTV'_$Gk(}cfW%ll] O,$^̪='q nˀGd_X%h=|*x\q'x!+`c8%* [cc{}:Ws`%~u->ܓI*zVbWAꪄvw#b%Εrl>/|]~>3^UlclByK;CCpZ7v+v/9+XOG{KrhZ?L,p+ (DUqjw'k1w ov1hġ}sut}K ʶ(reB7t7"wMwKw\ޟDz ,sI$]AGN!~L CBp9i_S5?+IPqcNLU^n6^Y$ɋy 8ي)\k ?y" 8y"" [&9t/CN-Ygc)c[|-:slNRs(Y'|&sU/s9s粵A#b|ek8zヷ}Y:o@懟B-\>v:#C̻*4P)I1qO?3I<{**3S3q꿘ȽUhbLϖu SOQqv"PebbGLa指n.̍ n3L{h0 !.^pX ftV qVoK6bђ0Eig}B@_FumdUKb c1zjv } =zG+Fb(3_x^x{jl:>  [Unk_%R!"սwwbE4}l36SgM:0f0} 6`q;`Sx Ǘ}Ϫe-\Mn'qRMI{1!۬GPYV7VOϫ -ɼr}g%o?٢E)Pl6`e]$Y6<;, _bZI7FOzM{Q fߏq<(G/ #8)if$emZ{"hwj%,pI)?ʡЫpT_clw ps% ],qLĕ-syoXǑ^]u }'=Bl ~;ǑCg?&*kDm69%MfLbAR*pFӝUCB4:_$۩5Õ,m b;L.,E (+3,&~s&f1aP *@gQ[jA6lLsD?u -m'&2  +rユL"'$Zفx^G\*Kqu|="`PP~hsf\ oswjᵐ7 b_kpnKV!(lR/H|\WF>}7-l#Ŗn;J~eչ`?ݮtn\~J]H9XdýS,)0])!iA}u~֎{_H;ZDx;SЇARPKXk߈etʠDm`<=ňP=s[u³&IRhFڇzb!VŸƫ͛U*%CbN$92=ZV`IIIBΰ'YV rEpVN.}iK+p]/.%,!8ŒND8\tY"AFhK PeOq8Zyo 1~}%J}hoі֢ޮb:-3~[^0ú?Gֱt7*=|L*{T_#xx!`(ΒQJ~U*x<J\yE@3H,u;vgn9V1"Qџ][s%98Ztj4+5 )([W[n-q 6ep}w/%ݻn5]"_,(m/7fԣ+ʵFJ@2e\,g/f 6;b.3HP:m `) 81Y*/ph6#k~ZsZ;w lѕ'~P*s\ZshgC ˾*K#Ln{w~*=E<}}ծ ^1=oLD8sIyXd՞&AFr xdɫŧf$,ė" $ԚxOWٷ,={. 6hlX˙bNXs'ƌjSE 8 2*("ps]"n4Fv)\aJ+BvR8vʼngD* u]Y(ۦ~i}uJZÚkzcTM״OvȠMKz&Hxjl)U *\[b딤 tYIY[*Ws"Js]6j/]c ^? k/wdlfN=wʲЅA [j-xY)(Էx( \;1&R7gۗIUȈzTs [hؗb 9HM3ӞI5|6:,_99Tƺ^b1/nwS[2vKteCw'og%ŗi1[rغ` cFTIa%.:)9[^~ۑ/߹_ů,XbN/}!f=5_o|xoφLi)~ώ^ /$c!FEc7}=ڙ*K gStp7I"QQJX!.#i.XJ#MڍI+btkK`ԔxT?g>G o;;o<@56$XVIǞVGRg&phC.YiIàTP`r?A~=L2Ww}D 2].V*~]$ IDAT=tq-;O!W =i- q c R!e֞V)жL+K:MH[&KٶO.s> 3gqprVWı$t2ʎѩ`0.VgS#<)_'\+5Wܜ$.鐜:'HKc9ϼAD(bۃ^s:"`Bo0rt]C޲ɃVMq͋ ~$:="etG DfqL& @73Eؗ#Ίқpd11o4>\=?0۷-ֲgnzNLD<%3278ڧ'Ft ~cA[N7pD឵+اU@$#N5Q=a;03 C =~(SMV"w2tqKj.Z\px:ù+ZDETo&q$qciw㈱_–%_} -!'3dT։,)pq8HhL uorlx+W D(71.VPmXjR!Cэ vANlLBCA>x t-dJ-ߺIEZ SLa?^v<8.R1 <K+䓕dXJQ+J䊻 UU܃E~R!76;f?DAvYbwO%0mMYUm}ǯMG RA.WvBQMe?:W3:u0i389:0_mާ4?& @~?h`%>R!E`kk hSkQucHi$ 5B  cD&tqT*H qDœ|/ymX p"Q=>4&s{9Uu*J< $ iG'Bm&>ҥOn4;ߵxN| g܌T>E('K_w|%>W"kq WڵN~A tKGlڲ-bߥ$eqD`KE!ʡK:Xb I>xB$qGlXRjJ\ &Wt1 $%-O@W?ŦQ3>aJ$ZTx$})l[͋W]jQė2)*Ʀ t>S:-S~%E`>{vxh9iLnsmE+C'u- ia!eR$29d^&^6e<5:,C(>Rذt7QcƮ zd1I{y_=?-_-[ ړ#"YG L_r%S;ZJ͘dlX 2Awǰd<>^Ș3CxYg8wiG|F.=ě@_6cY c?It l9;}֕z8$p还^>ďdƄx 4%=N~z 0k[lp q -]W)MVS:/&W΄PSHP"9pdIJ[\V:LͥK0r McF#^1(p OO=H[{0ql|~Pwp$m3z^.- YfY3jGZďߣtIоY-[w`ZQ*HTm䷞CO|b&C1⥩R!+ƏWXS@h0B_ HRl6W/?ue^OggL?~k*]Ckl oEI!x$#,Zufl\hQޙ|a[+YֱLM}6u]Vrrv!??r[!'8#`JbժU'MzsA׳~z|dDLC^/KVaJ?y.􈕝]}cccb-W(I;SOdY4$m ؇ym Jyơh4[8ְf4oCdY4$-QBeB;vT R!Lޞf,''{**} R!LBEHOOfS-:^l&==??jSdY44LBE<==c֭xyy퍳3JlB$nі$ Q+.EłNdgg燧'& o#dY44f ,m4&77Pa*SedAwwwd25z^Y2 A4[{MT-_,en-OҔiALCP\\\3222222yAO^Ó)Gx22222wf^'%%^hh4R\\ܤ6?o_W*Ņn,K@vx2AHJJٳ5*\nL*P|LՒCJJ $&&ޑgdY4$ÓivzRSS0`T*TRU6ʇ `0n:BBBkl6 ,e4+A --HŇz2JF DFF52e)țVdx{{Wh`04v6 ,e4+AbTNE(ύ RLbVo "OS/R!ꂤĆ?IqÈo(h4&s( 4 SLC@Brtjvۨ|{SLCS#<||ij}]Y=R>'.bٖ#n=Н@b|/TlO@ ?<•x]8~ %{?ggt{-&[ _EJƼn]Vڬ_H\Ӵ<Iw?g݁nw̃P$;<ŗxqD_5?;!R2+JYtf9q?ezǑ%3.R29@,\(r$H>6.׳[˿ٌ?'W&A@RY5ME?eU~Gz{kX\N#_ITQL2'vp ф_s^Xph.+%Qc*Q1`C|l0mcɢ? ^ WaΟE$<0|=o/;3pM&bunj HY)T+OS"ՋU)QwcK+ڌۿ=Sx~ȲD~,gJÛ3{an]߿]'Gh"u>r;21[θAԟa~Nėsӹ_Z~Cr ˉ(15^[XDGg3=?}o;;w[Iϴ{`g1פXg}SYքһ? EuO:F HXƋl7&̜~Bew`kԃ3pD}?C-1ykz{Z0 Ř]L'X> ~4 53fcZ/Ƅ&;J죓ӂ#?S 3kqb=:}ޛD__0kUc ǒ Oʏ+<<Բv%7hg>q>C]lKSc2Tl#3J]I+ +@ vx⮎*oEJz.&{?5 Q]i縛}365E)v=+-ofd{ⓤyGڏN#):9g)&{/==0sDj &,bL.ӳ +yil|C&B[zT*]Zwsi7-+6:Ŏ~oLeP[ ǎk+xq cnK=)9>~qƹUE #|k梅XD֑uHu(l1;vDŅRnE"5 s~O0um ΀tؑ|ʦ@#iXNW|ML_<ͬ'Ǔ:99beH^xyyI N$!]*TT@dZ+]$#y* O|g=dz|k2]`g21QC¹,=Y6dGvqRK")߇i8n>/cL/Ԁ@5JEd&-cIG:vk e֞V){Ρmb;[:e{S09tt_sDhsrO? pY]}x$!ZՅm+LNxFwSN<1~9WڌnN _'\+7' ] |*Ȑ*Ä`DFFBq ~89N'm:9>?Y4nMIlF3v}D~C,t>2]{&(XB<%3JU9QŴ$`C cNmC#IpĉeeUճ+~$`!uJcx׫:TyF:q8t-Z'QVo=^mfBb8<8/7.}d.CqѺk>zMӚyfJS++!R~]p(5H9~%etOɋO#\wT}xq::v{ZFv 5x,]=uqx~֞95^8ʞBu>nh[kBaaaoK wz`.>.I&x^(..fҥL:)KIkaX(.*l^G!&04vgdBQq^i(9끔5iN+S[+ z9#qƘfNg{N;8RDvgdBUi!BUN;*&I^^^tidv5OҮPUJZZZV9p:aZ;H,%\Ó+TU%88ʕ+ !44???z}:E[4TUTUUE,Zp84$!\7KvfU7BTY(v-LJ@BBBpyZ)KIkP-Aϔڣ9%e)iY Ҕ[dqbe:$D"iQD"H:#<'H$H I$S V$bvEqq1vNyyyP微bеkWvan 8,%4xv͛7sˆ߿ےk++(( '']vѵkW;-)KIk" Q\\ `0`0rںy:44={b_֭V-&HYJZi$ !.=]1!!==N526iE 44i?fPl6[[k e)iM+(R@wJUU;D~)KIk# ݡ( FC4*BOKYJZw.h[&pňP{hl>/<NlFQy^?,% ɋYjC.OUmTPެSR4s{my>^ҳR|6^]^XGQ4V{v7oռ7y3k}<Ώ-¯.g>';N* [_`IvUT^=,|i=Yw= !ҭ}V)Fڿ̇?gcydj?Fi fi //_c?խg IDATqztf>?,Ur31R.:y+/?!F|BkȲ)Yi)|6_[Io喩Sމ,ψVԯι<^~SuuI/|߿Eeoek)Ft8V~t唧똷Z1-Cim"I~|W?b>\En4}àQxn`S/\aqq9xiT~Y;Usl{ ՟+;|Q.4cc@#yIl:/D&nOӜ_9i1Y6%+8߿4f֋!lׇ<_ȡv8P=|gMʳ rkxq+ z?O:ȒM|GrKgb5ּc+rɵ67dr_S fss}#DY85u:o" ά;Y9K9d>h7y[R!oK'3FE ]]iy8 h&]Q YϦu{_`ݦ<G%|+ذ3n]vJv+칃 t-?Xx~/4!KG㲺͔]\ 2!\ݡYfȉ9 @CU&G:.zKPOtAH! 0y>ĄQrГcGu5^ @hዿ_, (/Bm*||pf.cN;|1;s+PTTLͤPF_|4k*sֈ""BrtC)IkSy%7<3z2gS9q8/wkPQ<>6k'`؄ȘW2'}*HQXm[Y2;n91ΣC,is`?-p-Y<_hO_ K5P)8$7<<#s?VcUp<]^{QAAxB ٴj'9P#Rl%>h4$X`,MFO<=Vࢵ.8`a(3?.&7Wl8{7u>;fr< iEa2nI?؋)ȟ@ 8 2g[WoX$[.Em7%d=?5ACgOeՒd*MNq 4f=#:|w_Iՙmi&1:9]^Ͱ9J7G Wf@0c>㛡eǏ" Tto5mٵRJ0o??ca4% (ӬQZRְN l{,",MU=O}ET}X ĀL管L4ffSeOяTzԒRM.;.yl9V '|x1g&cly(I'#+}YZW Z`z5q.^p\'p.ݗ< '>ΞD/b.Q\=0a +bovL <ƢQ?Kc[p:WhDqMJ$0GO$uJ~7C%һVxJNdgیڹ~5n:RAI\^ʴg_`Oz0a#ws_[Bbҵ/i] M%s_⛷Y]E+ypDBr+ꏌ'2sv헄yN)e@wlÎ2U_*CC#8:||BqMɞy/63Q1 gߗV>q2}|¡Ɍh^#4<՚rGx8LvxYy=q&/?p]MNij^>>HYJZm I-U=-/)KIRe䔦"56x-!H$I"4%D)ᥧe:$D"i"##9“H$I'AtÐ 7 .>oh__XY|0<6f0B-v^ғ!^ɴx@b󂅬ړ"#]q#ӈ>mNY@JK5llltyĈFʥ0/P 6Aocot(gQ >¤32qV[~O$23;&MgHW,baVe<1f\ cS2JaA334,eqL gղ53ga @m,U~˲4^h(PdzUv.bµ(F1eW}'~ :;Bwi%[Iz Ghvw[;:4s/;.I)|7 P)8zBMaN9x ۇz΁oH-Ay^V>\f-?OCL牟 #4MKcaǡeQPAޡu8 K1TuῘĕ> {.N>xjŜؽk1i qx>f`o-kWf#᭹+؝QjȧTIqq<ʕq~Bb,@a͍r Xٻ| 9e:<=r{U r̆>5@idƑ";S؟/H:M;3ۦc(. KZu`ح0s/}}ecm ۟=JZS@+<̡l'T UWlzA++Oz20Ū'xanRVop8$w3\Sөbh6lcw$Wt\M`cSa4>bC7~ySGQŀ㵫۰m77 4YjJ3\սy#E__}Z1ivN3`u29u(ihL|cJ[(!; fDxOYMJȵ}?S ɩL{pcth˹0o=ac*W%F#OȂwA'B#<4Gb| z tpzT՟]qG!<=138x8Cƒظ̀3= M;/>g؎6].)ѣ ErsW#}k5#.}9-$%E6WGqBC1n&psC&VJI „5aC{v/SC$@y {WtepkTo[}wꐵ?Byr_> b…^ӈш;.b:n{[`!‰9_]S&cI};b>\zTT@#2q!F:htrk$["DҘhxeٯ{)II8ʯq 7 CuRYQZFi/O&%ebY›FOf tSW?_H^\\MґH:2:t$NЧEa{mY-ݰN ITR_":m;֑y`<+=9 xprOE#yhnKRMȑ\4nŗ} * Tmk6=2#NTgUFe0u#ǐU 3n\ѝrDސM쨐z1Ul"+$֫x8wg37 Se MEJ$ Ll/҈̎'1>jXrRE֏~ qn*ϐx"8)#~õ|}(9/ss}D|nKÓ3EG@T$~T }kBW)gJ& IlYv|Y-"z^HSh `i Gf({9Mx$0eo|&_O?br*G(A^ ƒ`oOfH$4Zx{s0zp+I>[ͦn]$ÇwE/t#R'O/@ $!ΧfMwC̙6P%8w"hhi-f{w\H`=ٻ$^!t# 2|Q~6edcw@w7i4;evսr Al=PJ )&,a݈qr#Mh/GڡD9|D"iψ"H$I$22ByD"H:I$S D"H:nvUWK$D#[9Q@Lq;7 FZiWl@F1W=p2%R=}T%ya! =#T!?y]hEmE* Fg$2A={b~ |Z\'wqL8}&xxch77>?"l-MkX<\ӚzjEªTlE}o;G,!~#(/~{j*6#peI.?^%px+o0=z z@c-`x />sp<#4\c䔦D98b)ggoUzfWnYdK+egۧo0?7zk{VQ$]8>IS̓[kd_rwlkY!u#a~x NbO'?[bwb$8z 8nB #f bh|#7` $iAY˗7NRRIIcORE+&%IRvWf?>fzޫ|Kgt#\ˣ;2o_4ś"D['[^b!icn|?܋#@刭2}U==1 '*fxWW'5W:%in XaؤaI{'tJZR^GhLsw =b698v$*a f0Bo.RMApݸH|:+, K9gy{RMqka*V%'2gUHKu IDATNƟ| &NfRRO>cǎ=)M攦Ih{ӽfCFq1xxʵ/qS1N؊lu­XW诮#~=f=0^?F"i&=Z,!!'xMd3f̘FézzG%[N+=TvNIJʾC8y+t'RD'<rt[>~ϟuIpA0:F5Xxb45/'~a{ Su&LF(+G=e*^VFS.E .􊉑kxm3&&$tO<cnjq# 旴wI=z&'w,Joc0LJs~8RQ3_|hAJ4̞@9xQӦ3 ĎZ;qk.n=#vAu>$$$̘1NSIg)MM21e}AL<"2$#demsŮg98}coyqe\؛g3ͯGT1#T2bfȕW/Yp#k\[cAO^+LcmuF:O+cp?Yp6%3挾[D 6xM܇'B&?C,Z>9%(F_Be T!0޷I/wK?P=7ߺKf << ͽĈ-Fls^}͇=s_b͓И|}ʐqMǎ[g3)w./͖u 4UEUUWo$I# 4_? 2|&Mo[K҉ٽk'ݺukt:t:=+WbanoI$vbfifEQGzI[i-yܗ@ʙ yDgNgӚIkвS5Zq:1rDI6x`6QA1xB jyd: zdN"T^8N|||irP39٘L&HIg@ 6%mA!Qkg^H:u ^PP\PBBBCW߂n7KZM0kR4UAS5EFFVY%NBBFv;999b4zRo9)iI=zN?sVijҥKI$z+pj!I`ٚ=SϋSIY,LDRyxD"i^dW"H$އ~ؖ8hl}Rnʯ\YN3E{H;3N `;CHHvZ嬣j(JpMGMIIT>IH;s9Uiݺul6App^^^udOU/ VM(--%''Dyy9iii$ "u쐺wH"`رuzUJZ踫N*3! şnݺ|rBBBΖ'ԽsGHWb!wo:]mRΆI LE-_޷8MAWګJX=}}L)[&wR<y{<:ƥJn~nOfXFLmInwh6ݫ5Z7*GhL7{{%Z1{vF9s],_kroh&ͼ{SdXZM]0gyq*Kݫ4xh)Ms^ۋkGvY5=}I:[62Q0I iʝعɣwLaЁwqmeGٟ]SIC)!h jWpJ4p4wCg?_u8 8Zl@X < Q?gԽTZhJSxa.B)=7fYH?F]0Fݷ AbF]5Up||E[Hސ)A !ư2"q0&w!0F!GZ¦aUVg\KRx;Ť.brp3:Li.ݫ9(8N =]#5@sS?wnkW1g`|*':jKa$O5{n t5CHkiҹfz‹=䗽;5YXnV,;bVb(z@Df5zzg@#Rl fD]{L3)d DBJr?\9&ڵp~Rrnd?Sͥ{FHJ*_y9˖fGv_"岮:ʏo~bdzx/w8ʴ1,1ݍ#7miJM dDhA+ܔ|jj-s9;45]Uykh뇱?Ɔ-G 3)1paDMU4 R! ^-*ek!ۓ+=j,'D-?m\=^te 8,a$7ngTމ r)tMQ`yY3gYHo@F^꺐tLF,/6S-ߎޤUOzcOؙe'{r>{y}R4T{4xjNo~Qf+㍾XqI5Ғ2vec‡xGw=/NGpe2%ʢ"' .i.Gp#q|MDQ[H=IܡtO Oc1<ʑxkMׂx]4&L?T|h6\t#|6,HIX YT]^=rOMW]?FkBg.oLa*ž(|E6%)iaws` IFyyS MK08 _ {i}Z"HC^ݎ*#omIK\bչ~pѽ KgBKb 3!dƗ!(6tk&'u>զzV ([X唧i\1 }CֱC?g~^uOAY*#d{Ǩoacl-'3L QKb" x.7kIMNݖi*Zv~{gD=Gh^֯YUF': 44uD\R"AQIcR yT"Q!ͱ'utϚl޼f!X,tEUZ PԊrv; ٛ z̞HAsW[qQX\ݡތ(2b8½jGykBg@j4T_^=N &DO3ǂT!N3Yp5ũК4TMuu&=YNi(8RCSp:7uMSj/%RN4xt:N'B;OAV3IHk~Yz**&4MH;kMt::tq5#REZ8NfB:'e= $H;w548Nsr\ U$[4eUYBhdIk5RAp(,,$2"Abk X5nMӡ(Nً-Zrz;RG<\JWXXHpp0?/^Lxx8aa[,tz!y.:Eqr* jKy~A'39~F| 9-R{g4x!d2q1N<(Mr=4T&V5LvdS(R{g4xT{;:U&+QUr3@njR"i {gԽ3D"H:*EKS"H$)|D"H:.wy' I$ ^H/}xХe(H ~-Ho.nqq2uJ?׈oX]N)+Ex8z[5w](HZO3xlnI8偎a0QX2Z%B7_HڒS aЅ2,ңGrmwk. lk$gHw|v=`y|AErHPDF Ljj/$mb@LfC6GxG'il_;;*7 Oq#ޯ!>F4G)EY]9nKILYj/ޜNT3#Uڻ]WwV$RoQ b1:)E1SҘI-4vmL,@]8cnJy q\6c y?ޚtM&0_A^:%L-U1z. w7n/Y ,֒/:eaW|'0>F4rk|"F eGٽa)'J+ } n58!1z rv-+>+/;?/ZoTaglVW55*cPָ_푤rVO1~t%YxV!f]U9(? A… ~tS:-YUȤhB}K,soB>%S+jrP!O9ݸxF e 'UDDT&FWrx28T2xM1L`W+H=Kx!$\yB5TyzHݼv^T6 Y'2qƄb2w!Ԭ;,  ͜t@c TrB@VcplyR|4CMe8! ~E~Ϧlwˬ@SF_Xm31x4&'Pe_ ӟTE@}uu?Op G&K2ime#c~ ۽IsL 9yQV^:"d;=RbS/ذedRI|72_H 1}OQ>ww p?{QaV~KV,0-TImf~k\ws)vݥ/HϽv^>3Y 7'gj?-韨>j+2XIAyFUP9zp7cMCNLiZ)!xL uH2f1kF,IޙT)+L=OC̴Խ$ϳCO| 1qSUASځ_'8^-Jj֩Wr,n&mc, E|WU ;ٔP8/~vKx\L70B!R :nn y;`0^7> 2MPLn 乇uy1 j)%ߪ9ft /y?v@pPw.3\aȵ:4re=5|9jt9#x7UfÛ>GVP̔w-Nדq;$4 O2>:X0"2f~3C8 s,RVH&zg{(R\ɮCt?sM4~\i@[E'<"^F8Gg&ytg.%{$&L1x&~G VsW&r58LIDATN=m{s^= SZ&RGP׫3XcL{}jV˜o=z.f{Em|[@iW`[2 ۸Zo1ؐ|׌}t& wT#gڨ<\Cxw~Xmޅ6NxF&+LO|mĿa1X/lߟa9)!:7320X-M1eW5EB&`e7 NxT_#_U*a5 abK;n!OOW $])6by^6+?7kdQYStA:Gʡ,K_hW8xvil_3 I?5,jFZu'jGYzXh.ןi.?S >^v*vuӼpNElߚ͔+67YWX䫛bU>&xyfĺ9>{ɀ~7jwpGej8 r911r5-9^-=<9 ncYw\HGF~E1uNLv5cZl9"(_UN-IX"ȵb{>gDx3exxv[|?TkR!`+"\ѭ~ HU@,">>}U.@5Nj#&:^9O{-ɮVs@]!LU" MТŴ}=q^Sqz?ǫ{?䳌357މۧ0au|Y&&9<syV|uźQN W mѥ*NxiE"ٵz좪cn庆-}\/>!q=b``qx" [{ܢB-?`3A"68mtL9sP'?$I Bԙ400000بmi}k`)ĸIENDB`amdgpu-utils-2.6.0/docs/amdgpu-plot_scrshot.png000066400000000000000000011637521354600334600216110ustar00rootroot00000000000000PNG  IHDRc5 IDATxdU7V<{r C `@]W'LuwtwUW׼ʒ$ aLLOݕ sέnzD|sTξe91u@Q(mT= [R"wٮ^|v]q*?$ϛ[~Eu=TE|VG* +}+m1D?aOA6q6UUخcW먌tqj$Mk69P񋾊:+!~>6W^[׭BR߮~h? PQ]c;_PNʸ佪ZK2yeb3<(yY2Sr~ V1ϪJq$+r+k@Rڶ[aebgК_י2WjF6}*}FαV/] 5o\dzqG_-~s ]hǭ2b:nWyQ|Ρ2e>q;bn*squr|TG[[e.T&\_C"yƩ+{{՝J_ϭ%ю)_׼)Beb|_e?+躆m;VhW\n`rkx-O:tTr.9WT*E[b T~M>]G?LI"˂nr-{nT/9{l2_U>'γ7e.&UKX.ڢ]mGWOuŚ*{ruo"Sw=vZ~$L_0Wž$_5>u˦|Sd_S[\SS#UIKQ1CT&9)G2.\>{6n k,Ljvc]WV_2SV79S~w0CzSڙ}㙸=8'.DJHTg3m .[ d}oOis:}iN|Zy_;mqO6=ѷ =<0}p&;?Zjkxm:Վq{)S0cU^r0q{,gqT0gq?j_5sT]=>oL8_3S)㭹~X&IUۛkߛa> ?q&zSojϊk2E0C&Xkx;)|><918S/N,P*lz+"#;NWJ$\GP1t3Xms3l9>gxㅜֱ{>C3})?AmDi/cz<t| G22H3"#TVƄiFJ @eM#10nĢqiօm=bxDB:J KU??&}7=?fGGWRWfoxRuXR{o\tQRQc;B  @/EHLafŇ؜EbwięEU@X] MD">%xnp(uol"w^")Ye5 %k4"ҷq'} MY NJJl "sfrQo?%c)˔1D4W-LDॏ1t=ĂEhkm0Lfxd{344B]}]ӞedtM `"&aF^#iUxYlh#ejYn`8- "D5JtR6\^]@YĩF Efx"EW gz.[G?$kǸo30YM4 8/75&7&7|LQ?lo' ^)FFI8Sc E<dGDO^e*:d*5Qz8tb5pX~~ؿr{Y7t&tʅeMl4C\3DKC CU&Qϥ왨>L^ ris%\ODs3Yr2EgCG!WQ R$a7CKrƊwئcODbqQb.K6WvDOx2A-1:4cijL` 0Thj#y\$a9'Kx2оt /q7-ʮb22"JsX|˗pwA㼹4ƌ'@ 7&8S688T|A,aNZMlKCCJ.,HO;M =='Vd*9qo_S<)0/?&/KaВio!.oP*q@iZȀr/Pt?V0@/<%=>mqLft(c,x=H۬ ˎ -@-pd`7 x4t`$z< !f/!RȦdsI::GL8}Q0/C+ghX%Wɪ<$[H#n z%glx;6<:ןjź60[5NI Ħ4<'3߽|ڥ4t:'pX(H 300@H2_(fR(O<==hjjE;<~i_8~Өh|?[R'x!HH`gE#4yvfE50+%:sY>9  Ѵ7~d{omaM, U9Ifcau\#F gj>v4*F#-8l.{y%kni{|߶rGZLi4652<4$ޔWh;;gnZ_h=Oww7\^VpN(̂ڰMv$|8§sm }Ƈ:d&tn/1+񵇞_]ЅRGp @ B̴yS4R߱Kν>>z^cz꯲]_⽯otY~w|KqԪ02^>?v:XBc[N_wU^ŕF#PDYBx(KI4К*rg>/Ǘ|^V%m~+>y5[pH#? ߽eE]cVKv. %EFVJ%,ˢX,N)K*qi`(dbjȤBXE!lR(u1نe&Q[.c!5z;+5rIcapq޼||Q'%%贪*E[]ld[,MD'PdƋ.ᕫȧ=(êIt?`vMeCx'7O=\sY="پ9^?n] ч/f[lZ\R/ݥܲF^)]#X_Cկ)↷_yJL7_R =wvsEs,%EqyEo[$ϓo+wr{С}ܳse`Fu:#BodsR'*lۦ.E(4Kw^q*V]ǷV拽AyoB8W\82zC mc&T\\G%:)UzW/bC )oCWoKݏlSUVE1y͌bFTC=!/N/"Uʙ12f3 ^sTTۢϡ$fV,@8FU,ʼbe4&cqF<݇Moۥ(#sWbiO/nuR2ni*Di1Ja<5JC]Dֈx(,`;axTdQX,ƪU+ SjjR0&H$"?_t LiS.Kr{uFlM#aEWC9jq~s ~;7z{%&ǑY|Q/#` 'N#EV) ҍ:IFsq\xc#0I5TGk14C #W?Yf_tE)etFvRIgmwoLc{=[شȬNԁ]<Z&|)kfMȲyoV]Ǒ-@'Dz xޤEѤ\ST*,47S  @|CkmOWZBOՊϡ"#DO v @߿Zx蚬X _DgVa @81!*$J~t+t)o{ëgƤsv?  @8!"ABr¿|IB1{.149 @x@dn.t` \G-sKn宽9"/м⧳AN'. <Ѻ:^rP;yG̡"%2Mp\05ErQ4T[2qC%x>zyl$W]Z>qzDo?g>Ł/Q{vrzEkuʿ8oooeu|XWqc}B:Vx 0#p62Gyl9&˖-9=j?o:*K!V0Nfu}ͅ~v=_Sy_b Oop%~p3_(i"W8m߽Oo_7nH̍{'g _ߴGzk(vDx: 3Bj Ujus0@ 3߽_ r +(ٍњ?Bw!:;Tc,],i SeӾQ^274qG IDAT:"tIŌ>,JJsM2{rB|}#14Bړ{ٛ#K1Π06Ʀ#d)f1kv6k )\3դ)49[啗]W^7g%/(k!Z"v7vlW)uwmfK$i.5[R0xv M6𱍝|%'ȊS4zz)nҷi:KǗ7G?|9{椈UpRiu*vB[z2_YWH(VtcYwER !,We,hط0F8#{w632ZX<{ 4W˹nnZWo灛үx `( šx^ERdQWAY9@xfˬژc񛻷]RPluNa.~@OeAECC zb^qzpd5׼7̙'emEĹD*_ÿ~XTnkd~ :L<ݤk6hmuws`N`oxGp˖ +N^@xJv=ΚU]H<9stJaK71ر Kf|0en4q:_T$[w9oRgcrq^P+J".D{rCئHk(u{/Ms5nNzccݳO|N~akM˓ZyB0xMTk4%|^O0 "B+/Z-ݸ]E^S㜽n>m7=7{F7WpVqn~fwoV5kowl'IBnJhMW]K >YjeP r@ ܎; v;j-Q9W:骋Y( >jRC%RIy"7\{3\o T] ?'#͐Ic]X\ɓy rDUuT +6p?>*޴4)=ze|↏:~82)"lx!U4ME( k ?>`>ߞpli 6q>~cœwQ=$k:8 Jx=Zb}ƶȱ,~$.N[JjR.Jl!4ѳ{8Dq9l:%Pؾ2paSMCD g=RW9M+,\Eݷ#TIPUtH6(vps+qŜ۵oH:!?/nGw|ͼ}.Z'O/r]ihE=E ޼AZ4y]Hs}J2 -7V""*4Z/]'έtrњOዮ˒%G<_u!J:?ōWLW"vkkW>=C @ŷEgX[ʍ[ԯ^L, Wm=ֽ+6n`M婭챨vp# mD0T/QtCjHҸtj "Ya!t^ !HuAW~8Ex`H_nM|bhh f5  l,Ξ4c =ń;1o.6jl }!D*Fd12xjܝsp,]wB4, `nTg>ȝ[]^yj2:/O 2|h;R(e 5h$"#e,Q=\p0@a-b`*^>KBDԕ %XWQ]Sk Q̮=oT.+.(q]uWw$E⻧9 !ٱFٷۊ=ّ[ʺ0Q;o:[ܳW0)uy`AsV*u@aUq9=!Z! w(#5ےڄ:`u ޏ<9|]뙿1b(Uo:&޼2>ͨ/\q+U!ԾO]co{eɼu >Rs;"L%(3ɆM^r+r&,˒zSP5DqƸ\j\+S?=[7B4)Ôޗ d^k;57nŢ%+۷-!g_H+l\8\_`bo_kaa}r<=H1SOjᕐ>–L1TͱIg 1D̸#}P\b"ezG/X@ܽ+Mx;cjjM<'xC970)3 ]QMT/MW|G_SCFM75zz%S~z{pc߹U9gr>9dnj/kD@vix,߻ tDdla>o^;KicQd2Ѻywf,$(*h.}5-.<&ݐɜ6ks7%aBomԧRB8<§?@Aeb$]C5}m[f4SVMRah0k)/0VqΕ]: xD]2B"6l6ORcZSY}3"REVPPbR8rJr.\E# tEUkیd XAC2,g Ǭ KZHWf4+%ǯR \#dF[brE$HE ?,)OU\yd“fDЄ ߲on,U +YID4TZ~T$iLW1Ux*jf&^N#Ѩ57Uyk3G,f~lR__oO<ǓB)#D}]hk la'?{ET:f$JSJkws0 S= T"eNFT[vT.KPΟF4#V1C4VQ->De'Ǥ[J("4mձW3(TES[!Oik̵&O񛜶~g:/TƑ>/:KV]eFYDDu<;M1JKB 4K0  *^xAJ8Us B @Np3/W\jTKYO(sfZ~ 5t/7tN9l‡|Ě-שx;^++N٢hJŇ*su;IP-+:`>7ԾO2XU+HdO7#k6?Ђ / L-PO;_Z,c~Z|A2f8q\tQ07S5_ĩZTٽ|^+*õ, *Plٳ{vL8tJV,]J{}ߞV2zp8 ^%R Accl߳8+_:l(^p(lݻپ};ډZTD" X|uuuG_p":Ď8ttD,de4JBNM\6dB6Kغe'{{pliιXfR#'2M 򝢩 gǓcc+֯Avm nK\q*J*Eʞr9f"#d JcvˆKm|<}k.٣hB@)2w'SJFx:ϞϚ.c/^_Yr%ٸgn7o4<#hW.& YijldE,9|nxG% /R)_j,XU9xq e'V׭^b}l\S|.!B' 0wB]ʝ7[$ksyz[Yj',KU݊pȉ^ X!*̯E똻cw&MMQXbs懤w>Ĺ _РQphlRɞ;%"^̑XU˖Q|Iwwc2OWyUQ0QZ,`[eM6*JXnl6}Y3Ud2I{{;k׮ȑ#V*"sXx)ٵi,R&݊(rA Z[X1kVsv6ְy.Fg0kUɡOU.F2QTQʖzBX8+%D_}LfZ*dqIGIW2iRQjWg[ůd-)t çb:My\46Py q*=4.BDӗ,[@⍢a,'4#S$RJ8޳ 4~(ʅ8:P,LÛâx{HA(!dxF, dǏ9UG|2QA4uڻLQΌQpuQC\̓/(Ѱ>u'1 % GЧ(=6 6Á^xdvZ2+ڠ̓'`ąD4rSJrP*t۾ߥ3㳤,j TOn_ldJ>+SNZ4x"pGUqr9iJ6lѴ* sfp,I2K-:`dpUegR~G*A8ogNED+}r*] ^DCԓ91CxA8cde@ Q4zPȪ;SE*\/Q1#yD35,~Q#Eܵ9~~xeEa)k0E =T WP QTR-ӝQFfEZѮ3Z\A[bmtÜ &{߶ub\܉+ 1pfȌd"#l><++RJu|zD*ϱq0]N⬳NeͲĕthwX`P,\8 ZX4FM]s-=gsY'S)mx/1S4("L`3)oE<څp~#P>#kA\7Wփ,pЅ߇?jݤM?Uqgĩ\ g,쪮;\wOAABpH"H[QZZ(y"}.A N%;={{'d"@JBV)ؾlY{58=mrTBe'^9L2#wC]`5EVrY{c&5̚5M"ݶW:xTTDC7~?KJo[\} mWөP߼ WU1N.3j2[t{ B 3V+g1\z^ȲO33UU8ya:%N;N9cok%/Yr[{g&z.(k^J1^45|^/կK׿ʴ{84Mg9x۹uyϽ~9)FvXb^h61PwuG=A/i_G2ԭϾ-Iہ;EqiX ״L8#5W1$ k"Ba.k&D#'^~# ByͼU'^ʯNϗɃ/[ˡI+WV{d݁ɴvMU,ijGn*UommZ6irHUYYP{Эr<`챛zz7WY;ɦCz^&kl ~!T!\Ѵ!볆+ܣy:`Eʺ5:4+Cc+l( ug :%)2]E۶5D>nT,yVSk;>4f@ P~*)?vN…3۲F ˵ŦZ)*Oʺ^~J {џw3K:0v(+7pzm/Ζlʙr[[~hyZΞ_ɞ{FNcjvmh/\ ,;Y,@QZlnyx=n؅FI+* &)HiiYtShEa-Yp m[ ^M2{}>۶Z8JO\"J(@*^T?!KN<pIZ! yt/.,@[Idm[yj$) Iipi(P 9x]8Ģm[I< hFPkm7e< <L*-1!{ڱ,R=jɤ&I%2r1Uek_iN(RK\˭ kӎ&)ħme1:@Ӳa_!%c}6WaQyO\H7Am'Gjle,L7֢c >zIk)j z}{RY' kx4EQCx޿ %̼O⥷`C 0,<^a\wa@I7mUYc_'^NsQe7?4מϖ(i#t(ߋgƧ3`Ⱦ8R-|xi%lT˹?nYU^ѧ'Qk2D30`܁p!0 MQc&P mBȷC2̄;@M ~| h /`zu73F3{@/?D7ϴ<(ɿ,4Iz} [_qs=TG#O˱ ۞g|b7N^#ɿQF՛|-}dm78Fu@拻 &{;8暋ԯ3zd̾j?T>ǝQMuL䵢|XO'w 0/s'#O?%@3-inv%#_=+{8R)LwL{g9)< xJzW`S4N}07EdZ:Ʒ~4g|w7m`{dMIpaM;owTe8s 3kQ q ~~2ܜdLvPjS^[{b9)pX M*~3W}GpO~WQѕoqߕoː~OGKO%P] 5`Cw#RK(($sq7l[~4qcIP<߿vo8$zLn5uu*EC7>~h [0mtdJ3 ߟ.526Wgirte!_<2waFǒV11\=W~NU!CmYςɏqњz^ya(Q E箍Cb_ًzx/i:sqc4g3J1?-& -?£MHog?[ګ; _,OqV~G=r_ƏM˜~a_ޅy7N͙p;eVX%' 9 `sYى26p;#ǧV%p@9L-p$8][{Ab4e0FS?Nmxl, RC'^'09/JC78vM {%8^D!,{ϥ;~̥{܃~Cqxn 2u\߇;(ce'ɰr/a䃻ya{<Uh:;9_k$)u#S`8:tϞsupEgE™O(JyI`.3yQ|(<їW9›⦋!K~UҔ˛[/=U֗K1^lC?s{ p=Sf~5Cr1˖$[U27Kp],ݑ+dH1ܼƺ*4j4yqVϛGЄ~oo:kOϯbOJ>hR|9Ww+._尰6W̹g?Gy]|S|]Ћ.eX7ḾO-Xh`wPXz(]r+[CI$;%k[? F tc%XHbw*Y<3SN[QIFF%(_R^?Ξ|W7ނ /gO(8siL'gMQ6$vgkmXB.#D5̻J2J*K[kXOh‡;g%%JҸv+6ਠ0K80w?S+[Q֩WBȍFLg'W5B~.,J:fkv4 ln/ftMG|N=\b&ԇYoka:Vc}WE8|m,96: :gk`KUTLYg}0Oh ud1@t0iuVO&b֐ֆw4Z،Y@%їln#q:g0f~N#-} P̃riCdLZ!Ff2ꭲx5޾5dɋo"~}q`y|Ç5ͦ^eb{{=Wu}H=)w C/fanDBYS/q]d#?^~[6#FHu555D"8c8"7X PWUK\w`h~ ͝0UVLԱ_bcP߇pJ5-L5ѿ:y=[6 \\.DqӯwW2. meiSWYgx e͓֮#bsHְn*6^*7i仮KRa%L~LXIe=k2 |#Y7ނ0ϕ^;zHkP4N9{%AlWkڦ!G5?gR&Zdez"M")W<#&Gsx Mp<%S8lgsۦj)f7&1u($-RbD7"[eeI{TtT%ʗϖE#8qw\r=)>T"DEliA0XR}IlO$\kx.Ye%\{D)M2 IDAT @Td@ СĹ;E|͔i!AY(nZ—8ѯߠF7{^#]PSѥl֌<SUJ| :Z\k͌!̊a"AhHwZ,BZn#3ֳ~\]q*ߢN{YwCSVMb#M:t͇Y> Kd2yDen2u+*El nyq'ڮņiZ|v1 ,PS @LJ[v͵K8fJ*A_7;KU(J|mȼUpJPX~xpbdH>\ǜߥ[y)Y:m, r}#XWKT7Jf+HHBz>FB/;{C"!g%1fYLs'M ;xlVrf;Ocq3xrEHeW`]P2CHĐzTsF6 PDq%3pq) aNX 2}^b92$D:ʐ"&u;Euq9HKs aZBVy\r>8hZr9Z&WI.;c4Г23x/Md7R({ŶڙaZTm&Tp:T Ci=hYx܅ 8.x2)l;${x?uH$;(`*?} :#nj(+7+;`Ԑmn&Zj6m?N"Y Τ9ӿbh< b Z aT!ۄ u.D⥂|xouq`910SJD=_ig \px[%n\.ÜVo_䨖o|sO!p@kR6'2.$k(獗M̘.Ɗ_@+-Bq'실Q+ 2sfI#R_9]pkwL5s1jI/j(7#ueXsUCIS=Ki ^N4}> S^ ~,ǶLnyCԀ _'''I8anV̠j #Y=}ᘝұщ`p46D1Lru:V(&k*3|ZGIOHs{%}Ӿ(} !Edѥ[);=ƃWߛc 'Z)7k7ҟޥ* WwF CݖEa NWهnWH݌={iNp!v(ZЭ :eG⎓MLw$W+Az\݄pgH{')KP`4 l|0䬯QX3Z'}?S˓]<-_^ɎAP\y=cT&t ?95etf<4rkzɸ &Y+Bbk?n<**`ՔZ{ =G>Qr{f)LI&Y![s𚷘v w>}}/}-N^Myƞ!sKZ9Y {C*f>.>)9=[Ǟ3zt7zoAŨͬWΛqΛY3i]af"(Ö'8O;#οJ05O˷ 0ɢ xsW$G!q%Zh٩u*o/]pbcdYkxXѿBQ=>J`y7Rmf.U;ds!tvnD6>SgvUpԩQ[ҷߠ)$(;9ͮj3y~h^]OĀnv\vӡfӟ ןқC-Ef'1S#v~v|+~c&._wNm3Řq8 jt0=|LB'%E2)ndbfĊhdO_a7Ϛ⫩3y}Lyl+#1,|3~ Z5MtL6}9ܘf=ZO3+EvUcKgi5S,mV(pGŇٰd8C{WX`.6E|ǹfVEx,\#VϬwߥbYc7@jxQ %2WQg^ɋÇӻUUzZpYͻ?5 _fV̴0_bib\6Hz_L]ԁϥ6/cl_Py/ţ̅$XÂ6Jìzp{| ]=/aSBVy2#@lZ3I9H"ذ*UҎX7Aa*`tuH6G%^ZN'5iDQH>a %.Ah!5Vꛖ=8l^דND:*6T%ܣcNHI"A2?+< ѿ]<<8FKɩsP `4;:9;Rw{PWvyT8k$X,[]*t>>C ek/tZ9.%uӗ̺~C,|*̻a,TQ+v2o4uEPSQ«gPY.h}"{ Jpyz%EQQm /^ O> W%n. V6t#/0q{TRDWgٌz@l!EG⪫C3w>dyu+6o=}^w9 ok+P'q>Ͳbįċ: 甓Ќ""{͕^IDQtb™..֨?""F{==^ĆMuViVŕ 4ht=~k4kVC'@AY }iVl X.<<1o&8k:r2Qq r#w0Zk2qwS w{ڊA_moݜ;W?0kB`Zqנ|9B~dwj*gl<&;S腅\D>Fժ&'b+0h\^Q%-R$ƷCǒ(y ȔSbviOmؖ/[hj+xህÙc|VLB:Fwb{9,8#Y2}odiorvZk7dvzKrJf[bƿGO(1mY%O/ED5*رܤU'-|t0{m[;Y*n7Ǝ/faZ"-H+  }wCQr+.gH3uAR:R: S@BtMTRQ!kfKuOyWJ}62'ſym٧9P@4mZb7o=U-D߯/NeUT5|3cQxY]T&Zm$-jcm8 I%qz:E4#dSդDrIBG2LV>^i@']̈́c9< S[ߊ WPWik)\&=*&ħkH&Yc=ǒvM9Ta~3R@i:DQۢNNA>E^Qt;%Nq uv!d`:A[f] EZ fK- AlJ%JډSȂB&cYeE̎>Ri&Tg]ҔIFe"歺ȀhwQjPS1nY5:vH~*99’yb -[L4䤥ł+i<{]ɻ\4,kqms/mGN4HI4o5McvFݽc Z%^"ٙG=Id.˕ 8bnbi!ܸW؎DꍭNW,G"ƪuf'5{]#޴Yr^b*VLUa[RPiwo3׿JRmd۶fﷹv{QoO4zWъt&HmSHm;]mqi._ *-N~i|U#i%_o$P*CZzZ-FJkt:# )yt,JV1 ib&dD-ֻbLܶ{QZuZղN4;sN1Mܝ:WT$wdR̆TJbpdM5eی"lwv*}9V~% ;҅˅\ S__OII _@ܻuȅLRf,M ڞJK2$ 骽C:!8>Bԝąfc_*6V\zunF6/6y.h^DM47)^ϛG,в7'E&1fnڸhlߞMQP-#q3i"u!^z4DxYHc(BB"٘q#+,}Nn}TUV1i$HN\rEUc-E:YzKUUn{Q$ ̝;h4J/s#ݧEơkif\þs_/^@"ߠnV`ItΑl o(u#^55kWȾf$נw Q2FfGx(pFpc KW,`底r'.dMdqx\*x{{|;Yb57l: IDAT&?0GU]f?IϠ+"%._n 'xX<+V ]`2wC 7@D&96a3݉w֗_jRYC1a*~`qb%@mDhintJ/a&BfZ^b|/{@'C9ïUQYld:]MM 55,Y?eWѨqZ6S-4Ud?%m!T2NKk3NGvfv΍թ_xR6$yhYQB2EL[djamWyfVҥ۹ /?h}?ϝ͈~/eD@jbV,kO K|] qh~/$ VxH9?7gOK_~/? _'UR )(V7LV&H{G'A2c4Y;Ld*CToM؝*=hS.Te~2ݏj<Oe46C*ͤ+F"kMl2M;RKf{ ~aԍJВ4;&m5LBJ[j p2K$[Ev;^cW>+luvFw0`ul{`S"Z{ct&K0nU?P6H03Dnq2SdrʊҨM$uӉm>J%J.\1CŪ$%hD%1lf] A3 rY2I{$>$LmlNwE^)e`YN~m8:|ې˪(ix @uf2)[Tkk&}mI.53)"nGsK:n6Edf3bM?d C 0 I74}T)sb3 wfR4#j'Qe&2#O {;屳OvN>$xww|(bZI'Lܝ*pIG=nzdI/ 2do#JXh\+P\qo, 'gi).*Kqܘ0h:^XW7e~Y[,F"WO/ܥAnxVׁ7 L!  WbO$Onj!ְ)+DSvT5&z4Wkv#h\>\:\aץ3|TT],B&⨨]Q'ꓤp <;|z$a*mxTTѩS[Z1\x BZS!w>NpW 2̒X#a\9f!K2qp'cߕ, ++B5uZc*z2~HT,ʢyˤYԨu};/$NzWl wE„硳STM˖R4,Ual@EɴQˇKraU &+}ӬE,yc ?1[LBֈF6sv3[ =N뻞%'[H;\vIfGkP |djI%t-|)_YytQ)j&L'2{z`#_t)nF˯ē)\ V{w=I6vnd{Xr2N x0G=\Ԍ|n+h>~p_켥f LYkdFP8EiT[`İNti4)HS8gHِth2C: T9OҮ HXJ!Mi\vlIF7'Ӥ3(ܧ!k?W:.%il(D)Fed%mMKQ>$ai7]_Rp*as480?|,<Ɇ/DVojCs{v+"8SÖG9Mv7@B PT((EQ^.r-(z@$!$!g7w)}g6$4^.|gݙ=*f,Mhd2߃O2z~1DοFW>]rtױusc' g@Dj?9(o><g1Fr>m"!v߷'[b5-YE)>p_HL#OGͤjV2k\߄-lʯR&rJKJaery\/^W^ZKݍ6ٞ,}w\GV_^A"!8gfh#/%>TJ+KߚFLۅ M.+2BN,lOη̗/#ǜOLcH?6IlqH_ج /Ct%#ϠC @Gu e#VRo03E ʯSSX07Ppzƾ? %Ibwp5gD/T}fi0Gi;\G+uqFK' ?ޏcJgwpϟ S|M| 캑aNrz-m;78.DR _kNr\{#?xƻ%EtaOgćꙣPv5߲&ʯ"?0wȍٲ{[95~:Zo$^EN./I/3bvG蝂J8Wiz q^=tef^F\6FXj>>*W[2L_~?,&sa3NџQc~Avq 9m2Uh}s~?k4HC8۾Iw?z;{w+oc͖1/l~}~͎O؞un&d7i SŴȢz5x;xC0ӮD{wsD.֑`y!d Ũ_J0L{Ec7n۾5j; ?μZ){WBS?3Cl.;RpŹ937!7#Xuwy:?s3%R=>JSnPf!5ulN<è]F p1Jޒ#s+1w9pp0g'w1'{ J\udZеp5FLSpi=)O״V/5VO|+n3;(N$*Lh^ɾ9Șzi魮f1k= ":_YE2WIg0n3ɾ;Z&:9<+'֑faT\t1^'I5o\'M#&hFL1V}|)|HX\f7W6{?A,! 7}YwɐKOGd\ ?rJt1Ukzs!ѡa2=( ;{.2D(+Bh P}dJonJ2 9"3&к rpw-YIepKa_~6KZNR(0־5m:S ' 7RS=@c[}9B%r lOV_]KVmZDx8+&\MP9sB%EEM\r'Xõ[w~)%݀G?8.wi#ř==w?k5%qϯeğsH'!yg+Flʍ?Z6&2&7KpM -玥ƧQY۸? NAݖ)J xa|؝npDpCa`g,+y{09T^aݻ/bioۮE'_˓.eﱏq'|Lg~(MljNʉĈDw8$@F.`T7XWH۞ t7L#ksϡ42n.US=г_Ev>g9MWӼ"_Cٰ:w$~scOew0RV<Jf C%2^^u'y8ߠ!c0S!`eg狼%0cgRM{Qә?2_0ʹnB'xyi'Eͨ4F CnH>w9šWԟGSLgY|ͽь{P8/ρ@8ڴ x*7]lmt>ލK8JZ~= )hY\CBOH}aaG.f⊄E+S Ș}P׺|ŽjA9 B yFQ(}߭ݓrUQ!&;:B(ɵ4~$p跈4~tOy梈 WP).˟ЂǑ!KФlЄ)L\&T]%L!#{.T}ajY8s._VU-@zF(:T/dr>9e:~fX 'UUrdzPGvaY^f~S 3$v鍼NQrXɧ7+oUYm(JA*'[O2l`NvIgQ)jϙ,cTq[Aڷmxf"2BWh~I0EPaǮTT\nKL[_ΨۿJؿ1'z|3&W =D eV! F!aj$-|]M 'kb.dXŝwS /N0QV!M_,{%Fw1#~̲8+@Y^Wi9O>%qGtzg } Qa囱a\#ګdNA\SAdt|d| TFWѾϡ÷3$=/f$>V z芥Cw>.>2o(J"F{’c) B>C.:b<.3Xl\Q5Ep;1nZ=k,fCQ Ymɿ 1:T.6-YI$T'LcXSs|U!7[7q=+ZQ*j-廗ԣx[E"J:vofS9mڻtvܿU;SnE+t>)(KG0A4+$G|B*9nVp?M4]JjBÞ}M^*K]t>Nf>Aȗ$ni!iҧ^B/{$Ѻ62?sdylE2FM)g;Et:y>I>#IhACzӦqϼoϨh&Kv<6X,5>-灚*;Kn]V2ʼ?fd$9ֲ̆/ mN'k C r(|y1Ad.OѲ4kAL^Jca=h|p@%^ꄑg1 ?F)y}xb0[=.CRTJ-}X9 \*Vk.oEL_7zy%u.r>D*u{}Y{ ؞j2NSfvVȃY`ԞτOρXtz9:Z:jG3F:'n8p%7-M7,@ĺ, &,M2Rw3[gҏcv4Wl`4_4z(bɂZYwG8}bիysY=u7:Lж8nvO&gʅ"\]Q!ndzCHbLgL+u{2}x4vȴjuf GcBi^:_\>P~|"x+ ]d[kˡY)lMp,iK^}'L`s$:t4;"=Kb&v E];EmC-/!Ks܀6s}>5gzh;i=^L{hrۺPOQR ݏtt=Cbz֮|W^EJ7[/w* y:"ӦpIZ'Qo! k3tGؗx&Ԝ˼j>|maWt,ݑ1x/a: bOyNr+Df{uyJxTOǗ .ǥ Ga\* 2-mr;;hNv=k/8lSXUGO2oy8 >7o&5XМ:"طLg/lcU+\ytå, 7noO43h{ZGYujnB|P L}a'ҙ:iCGa|&E5pPӛvν&&* [է1c_rԑAZWHctpqJ/!ўYF]Q?P[ yqbMi ;?a޲ ?Z])h J {oѲFz+&c)~4u>c~r?c uά|{êl/coQSR(V{-ƻRQkxph8s*﹍-e%ZWѵAaCJ34-=ODycs9sg[/L:=2@b룫?9SD 5]Cg|^ME1<O~Keb?QGq,߱{z9gcg3e>CC"LJ)RMu{w^M]Ag=5݉2_tI0?&ӿf{3b5]tMdϟVe;Mǖe$m?, `-[`Nf=28/c6qosᙌ{%s])37o c;N~a-'E_ATWѻ G0H |fRW;6(D`&l0Ow+O-Ɠ+wml~'Wf8`lˢ\.<ؾm?k;F.`Ǿ6^\ ۻY2tb4B2g˖|WYj$RIw4t[;{[{#R,KF?/'wLa^,]C#tfq\<6Bׁ{Vtx=ɓ _ᮅN1s58!Lv 얞E} tx3 _d57KrV:}knىu0a=MF, (VҺp QImZE&qCHlD§iyn~S)D:5' "`&IXɖ>NBlΚopN#OD| Mvv_X'yN{e`Lw%2ցFz7l1CsUNQMnSS$Lc*b.KH<N<-m8^/vVw/|L*'[}ݽhTOggK4? Vk#l ( 2,j Ct%Mkt,ZM>zWn q? 3YD\s?%{z#RiT\[BKk'n)aȘY7q:k9xV6s9Bg5\:A1`\>еLݥ` "~C&HCYЍ6ԶI$2VE)=u>72T!H5ȐaDrQ{ >*\M' 9TҠAj NOq,mFM[g21IM׈Y{hg+٧{1K<6T 1KR?w >Aӯ/i1c_G+?oG V:7ޗy*YrBg9`^hIR"m"3J2H z]Č `^ zw H3M.J.9̬4ޘ me3g0=]D F0"*G@[O(([-.܍ej|j3Gf}ZhHڮ :%MW]KK!\2UL'qL't:̷ iCVxۖ\ǗBO$ HvLL{7+<2O+ұF n=QF5d2K&ӵϰ?U^F~; S:D wTJqy5)-AeRcV,F.qK6aGK0| h-k[9[Jl*v\J0ZH7\-9̹0KХ3dlW_>`JfjԆrD">~\3Jr^\ ;q3y'̜S7 -䅉$aכ\ (Vۖ̇{cpÜ8i_47yx>7ghLj>Jt*!&,gbLb&L ڢGiq.1?Gsm d! E(zM<EG/|-,XUWyT.<:W]z9 MOOamCC'#`Dz0J5Iir"3UDUQ:6T2޿qr ZcN$[V[;7!2:NjzPWo-RUC+c92Yuv:%[{U N!oHBs0F6\ chE CC%V "[}35F‡>v-\e5!@ucTTirYtEKxN[L( p5\9z&*9|Bi.nLGQAl,ژR9sBu0:$LbBilF5,;[_?Y>Ot[`7 W^R,$R5兲`ЙxԾ" ҕjy/()2b$Tɗ\cs4~5a+G7'¬*200E1s/OBT+&* mCny{|} ]EvB:RQٖeInbvcQh"[,giTDEQD*@ %:"C>/ֲ6lߋ"Ea&PaÆgv$C."(w~zGȫ RW#̉QJE*)]WbY@E!ƸS0:1_DEQD' EF5qtٝ>]8iyi&f.H#f&p4]/0sY0F>::עYrl(N8P5U4or ԋ(1x<~9("x@fSUbl6/8; IujӼ_U(ٻg}ݽFm噅KߕcȔ34",yY&X?sF;*DCZ0-\ Em4[CϮ&iQs/a8)/"0 ٲe(,"x@s&LNľ>$-b"{qlZ>Bg{R+ǟw>z;+.w2W_Ć5Է-cA/\%[}EK˸Ih"?0"lC=xdf'''{S73kt aqg먈@ 񼘤d*s裏JןJ("8qq8q sa̘1$ JNqr2^adzrJv_5<Kg1Ԏ/gWؽdGpLOwёNv%mQ50A/"s 3kWhf 1/CKk)Tei쑩*1]#lBu[m%5Tᆨl&{U/EG⥚qp7DZn&qw2vآģ< ikhv-y"9,"8Q 6ދi?ׅ@IA$*DT- L 7 P+sXX/W0IΞ7saџb$V:y#GcdG:gODM][K4qtv?a+xmT)=ӏF*žy#FSUVgT=b::c0BvqIQld"9,48H㭈"(c'|+,%*b&w9g2`>ʍ%*6e-FTdױ`C7h!VVaJr0a0j8ijػݝ&OZKN]{ٲHxI2?C)i&I:Uҽc-53dLv:[̲RĿ5āKsV~2*c ]/Bث%%I<>A%VA1%ǫ5g,$"5x1%Q i9Khk^&iJ.8X/mʤysl) ǯcF"fz vQקb7_:e銼x:iju3=-H{cTwޘ]\UT.,^UPY^}8[c@ͦR KƆ;hEtc.GÄE&m 5< zLerwQ}Q뗌X hrH^`vB[ձ.|1\J#|AaϧJYƄ2cDf0MyfIB}iG`VPeKT_8CT:q"cf$ gӠ:RŝdqTөˤHehW7+&Jc!p Ĭvq#,g~pSHwc;gXA,<3:j##/@<+)gCC6ג 3{,j}x&EIL~x%ii2^W"ة~)5Jˍ('ANObw{UfDɶt ҵeu$9Z<͗ڼ ݉Vxn.P9E0cC;XFe[Z7G u=2`4.w(-Ryn;sm'nbST;rWn-VClĺ20&?< ^3kiip~oBL1Uc+H#SrI|_P~AkSL~SBZ)=.E-,X֛]-](Pn-)nKb|4":H;1;O}x,\ {hޛ9T_(5Q MhNi9y }qh 4f>DΎ݉mDޥ"HCbY4v( ɄMp7c$I<ͱIzc"kv:ykC̥0?8UTe-|-$&q{#ycNINͿtk_ UW+f6* #$1\ᤈ"GZ0,=r Z|'y^؁b}J]ʿud (:"{|6g2 CݬY|6̿Yv)wr f1 )FZ9&~z-Ч$i86ز6!7gAڧ Hy`{dL3O 7٘YJk^K.35 /O9Ftf>\.W$اث1!VJa3L0X.aQi\z}9e'[RL^[Ư~JGkNJCGzV]Kٌ!Zfi=å؅ }& C5džU I4\7ĵ3ٶ)FG[L~X;DS/)CA:,\KJ^z(r vf "`f&rvP/15A%/,G>9e=T;h K#Ka3!APT@Ux 'adtj;C]:CܪM4 ~H&M)D6aQWkg ls2t*nԟKءXMhDakGr8ЙaA "ciTY)fZtnv~*e$^{+%1*svU^`QBjЯrl՜]i9~7d6nM(븛pTz$EW΢E(}׀JjD ffvp%~$ys&J:<$mUXivS=yRXY~whf}K]5:va'qKRr:5*u%o~PZLВl &Sh^Tk0/f®ͧdT픺ltz3|8Һv'Qj -gv %fWEMg'Bn@IJ WZ]}rL]"Zk^R8ZAvnzq뙄Iդt{gRݔ)YvTAk]l5}{ѻlwʎO'L6J#QbH r)P=Sar.)-$2Z";mR^&؛cflM"5>::%A|bJ+vaDAYFE8RBq(áPޠ)@0l`GSA &V SDt</zE҇ܞmDQnjS^4SqT)%l z5KAut)dMb&M u>[LN0,хD+ĢUIDdBc[; bp}=t -b! hmSr fߋ0TKbYdqL:l!4KYNǽc*Nww³wC.=E! UfޔBEaJm$qMjF /cO#8`3SنtD2t*LAwd%zk M"DLBO/Òܖt-Aa6a~5Gٴp1fqB2 V.8+;A#RpH'"(If<CAd k([pƖҊ%i" s=aiC87Y]2$N.QHV&q n7JDJ#jlTqY/ UadBac-D&Gc3.ޭɴ߰J{ip,0"GO9tܨa >'TSφy[JVF|j:In[<.+䦳ZJBuHڨenH.z%. Б+/$A2U9XPJpFrrr@U7y.RrtD8-&7 zڳ-r50Œ1NcqAx&~ےchp%5x0>}eL dgJJ}IE.Ũ\vFm*X xJXAǤ2gz;a^|C|̛^FЧnX.aѥ$gqfɔE0ʛN2ҌA5,=97>ݖ9Xsndʐekb6Ⱦf^LZ aw;ݥT**ipsD<(&3ִ)57.;t49yiRx}! w\tN')N_)f~.fQ͖jٲ(YdzA*l GfL0dxU+< %ؑ5z,i"*Ӆ]` FP둂~rd< vz^NhUE}^mE6lOSO)_LXz:S?qزv+ÃlGLC&1%)w!ቆ*MFo9v!.8 1vęM _ n6YIp`f(]* g.̳b*9z$6=zA:s|,U򪻌TA3[ϵL^t78OfpdenM9CR> {8h>=@SUFI!ߠӞZ.09m?,J1۸-r g^wLpb7&ݪEc@:ؒ1pSJ/z(ۅbKi;hx \cO^Ļ%*C] v'ZW>lK}$ (=>J>j]6qs5 wi1'c~T'cfWwGoas'lrX犒Um#zex@vיw}_猜@0 ڲ 籷zWκfʻUTy55-+SD$H9htz_7nsm~飂@twwSfꢍhA(52?%/ﺊ٤SҮUQh/c{z;0򐑅%wjǺ B '㟴ȋ2$o;Db 1h8#E=` Bҋĥ*_FW\9kW,a 4zuodis,\XDV9Î= !U^֦w#>H Mg}oŖx] _AohCfK#ZtIAsC7SI\IqȌ6<9 ^/h luy;zٛ;dK]@ȺZGHRP.wۖT/TIZ-/ o+*\(!!Y=)N,#!۸=ӏ؟*a`k>vb(k8o)8-FqWe!E;y?{paSq==ؑad:Fc؛pRBQ"k_ch{ 9κxBU(Q["v|ku ZT^2t$.\XScWDZ(aD A8k/99Jȏؼ]*-ws:psU;361;ЩHag9[ˣ8qZp 6.dave^']u3eQxEGBu,~3aE9=(}db}T\dAfl ^gNd%af5,TUt iB"v]8HY zq]Gq(g &}'֏V;4[UAs"hX:&a'Tqd,\frJJi'1*x>dZ`' ܊C=D,M>óSwC5"^V[kne[P.XBJPP, _)߆3qxo.2l=W.S%2s1LU.@ Ong׵PfQ*U|{Bقy=!:^ۑThn;1o1ҒCj0sQim³'I#eL&;T,"  F}kyH1a'+9 4H'}&d'JSq0Q5n5# W$DJˉ2]'ۑӆjIaN&^,N?տ? w cTj3Ωqn>Z7"J#ZT-6ZOEd.H ڝ*n U\6&jTqt[#x6@>`0N.rBM6 D$"W1 4OTqeB.wT2Ӹ׸v3ъ"&R*4)Iɹu# $[xh:DqD"1y kjvhe&J7SE~m œ3xxEobȥ-|+/1r(oFib*pUkU|Z:q"vR~ղSǎGPUs]U 9n&.:$:x)˵p7 ᢥCb!QV#u6EXdXXÈe+!рOQQtu($bS0ԵEd2u1Kp >YC<ل&455roLa Jp2F1<21M`cclijRHP%am;K$*᳅~|J06U0zSVݸH̡Xf5|riP^;EQ %Z#^[pБpJzē2DlBemAUm" ]SCq쏷h7>L+h8\\rNѻ.F+6ōR7D#h27 6eY{Z3:RMZa[ݜ$03 +Z;a`K ԃֈ նr8.ºP"\n"IK.z7~WabZ j#^|^c^7]C]pL=5/"t-Ym6,%f3o륐u06jacYWbGb*:][7܁&K)Cx!J× D"[&˚55{ߩ :z4$]!&YweE`T"S|]"@z;hqXce=㿺˿ݎjz+-vU|(1p~vVob;bx̂CY_$Ei'\KMU"7YQY(Kk7 LYYDzgt; c9f9:nN^SoRoJ5zɐ)e9,@Sң!~]`fQE(7'sZ8Ƶ41N7-uI@u暲i=Z$,#R֮/S2OFuHw4'[A4(DY@6e1p㥉X`qH3Di'v\j~ƀJdjX*9eܵ "yfKРZl6-N$gMSxeͽ3e;6 o|~ GнzcY?Z&eLե=4(|I w"ҙ nFjch$)H:#( W϶!i'٤nbA1?};zOPAؔwu3ۥ1,Æ鈈UiM]سdj)p: ,͔%_ADdv@Ɔ1F PA(qm@QUΞ:U>5 5VX },r\ S*N?#|y*?FD [1DeS01MQ.*] զʟVЃ$_@b3<]`leeۨM8×M^һVg¬:XrgjcF4ѹ=S8&2ME ̓1sDqD] ="g F!!!W>\ulT!1-]PzRUP &.Tg1rvSհxk[XB E!A9ԭ.czLNޢWtMmrɛq]nI,*gң&UqjZ3?vMOEz6s3s/IVqtٶMgOCOa%ʚGa-xDk\o~/q~uS˴4a"Gh"PL$+Y{׿Btg0J/ahFO~)z8r^Sx~>G{qbF84/Ovp&/Yc9#x\`":$أt(C#hnkG/ݍb*20"` zKdU{ĵz/YG@P~AF`͞d@FIIX?CذGS+aժkΗF:l# # D`:R:?mMγIfPA36yYJgXmv  2! Ing48銄Ed^U"vtDzEq;g@IxALƋz۠ =ha69({Dקا'PڹGm3&zr ?(Kp`분0$8vH4VǼnKF F$L2f4uc!PHQk7sgY`ŻP8)ҹ*|TŠX8&pXk2ǞoAs!dyӘs of]x_T+JIb* ‰)}7tqpe<%hQ2׷cfUh\)rlg}"x l۶[ԆO?@!!|y"`Ȍbm[e +|S.]PE b Go~[/Hk( "dAXس:D5DC]]ͮ0-rrr|µ086ܴ c WMbۭ"2dSREhr@O9}7&DPE44%g K1*#ea/'z3)NM60L'? _~'z Mb^_{6Àҭt*c%eaw]( ># *VCab D 箻8y̌p-IJLf9 L@/MIyl IDATHDĹQS*YUw 8邊(Lc Z Sh[QY>M^8>uˮ>:P(}9԰ivƓRz=*cd<Ә=;<`uhTdkMr GɉJxWzo02Bmn E2'nMAEk\^zf.Tj :=  ,x )w)ZV3+[ͮ WлF lr7mDHE< "`KӜBiψ MH+n+&p]PZ$MBjǰnL eE N9 ~!Iw,eN;I!Mc;YbFC@]Bg63)l*7fqu'j< aY :P)X[ ,j`=q;XM 1<:drE-UׂàV@”.{XZcS|Q 0J^[+q?h۹Y#|M;¬,kA-Z]>_dsgE:{uR3q0a+WxzbZN~NW%  q!\my_.X, _1Df0Jsa^첦+5<$EK)TBgy ,il_E@>ogļ8zF%lq.rtoi0gՃ7ZupgAбGWu9@1^)|?NXv=}`&m򵠪vZ$L~da~еbsHb0zez.U0xnx=ƜT7Źq΃jt= &lĝ&YCU8~>YC(+w2MswBR57~Svz{#o[p!p6~;VtS1L4ٍVN܋޺?p3BJK)" қUJ=Z8y|#lm;C9 7˱?!x#RJBԌP~0dl&MLX, U$}UB+zXm/z;)Y_,6y{B!f樐fE4BΌ7BVZs٩~qKA:(;\QUN \o21!&ThoPhsWk࠭KҮ2f&k&d^ s&asBBew.wvO|K-9,ؼ{Ȯ-4ǝWB^X>OU_=3Y^<Ռ`A%n =J%lrT56j"15\xE9L Kw׉OŰkNՅ $IFLJPRp#X[hw~ #z<(FaN|/&2ohBLsQ̠]OxG/he",dX`͔d"dHUm Vu)/3!o l]pkzN+D3 i0Ư}QoHәlέNZujNIU3' \yZ `0<,i)j^gBla`e̎=QNKHU4-2P0L$d|B2s=C'Os!ޱzֱ:k6pH[Dy9,e@FS+1㬺a:U s#sm*6)ヷC7(:B)c9nї nXaY_D)#n XS"x٧p0ׂǿÍšVs :B! 1) q+غr ?OKjtИ#0jW*cN:^n R}M\qat>`[}׼b!i dP= $U|>TCET-HVu=UگRk7&/PL$LjG*L AE}Ufq{2q^ N*"7`sCs+7WmT hFiVZl]rXSٽ:},);|c~!v6ܟ\}m; y7}fBrDUZH_{~+F1,,bjNt$#AWUDLYio )3cI"E\,bhmme@"1g0!gJz[!<MB:w#t &9CM0DԇRgļ=B M:~3. pU/= L}rl'Arb>մ=} R/}hiWLU eOH,tx#B7׷N&tȴZ҂Cs$N1 t<-H@1Ԃ3 K\M~zt "84e Mac+=ۍ2lvi,nt{w%5>ş3%0Kµ˨=܀b\ ҎX)^ c)И@z}d`PNU5$Ɛ0'A6m#->8$0y>[ka@| ux!: <*0VGtkIǛx›Re x4s^'PGI7/-s5!_.suW4;?ɯV&ir< y7HA 6̮資¦2zd5^'1|\n5/YU o<u^ҴbÊ? CZ=kfBp.9ѽHzDbj")I-(%MɇSE uW1 vwl4~Hr3%=ZȄ,=ݗBb|q"˱MjC'wt4JjVm^3+kL$;Ae']paDYm0Zn]tyg+cLD78Y8g{U=WĖe5Op! i𱄣Ht8Đd(n(] Y3?WoG<|jHdB:1p[CKVɉ%#]_.Qec秓+IgcZ,q7D7-xr,$jGVl,Oer,o!*aQ_WEy %⸖-|13CUq6yWeG5yhVMzukJ ,%*]/evқ|aCauM3]DSRCMy}Tb #-Մg ѯ'R1|H @LW9Yl |0qGץH:^WOw;5U&xL7!|:ƛ#@ȯn.y6$4pH;tҽM|8뤱ׄ@VTMSXn\,)%7&fZPeiI=_XB`S#s 'Zwa2:ϜCZٰF  1o@γ7ٰ:4ky$|_΂ϴqLLXS•nMz&~Pꥉ:sz/fl'ZD#&KWtfFc3XABön5zLGފɗ񓗏lPڶ'D[C<}0fCv}Zd+*do(-H.r|RÅez QEǻϽwhEΙ5#@@əg%Z*bD%vt! ^]YjDZׄŭcYB\:^ER.NILckٛ cL-mW]FH#Cm:!wqKmXrq+(Hq (#욮Baذ-޵!lf4J6yܢ)g/AZx_ <ѽEZ~R9 ! [wEq‚!uqGE4D,mV`6:EaU6U.[&7CeH, |%hRS\'Uvgc CKXGO}^o?zކC/K?78x|%Ea?_?`՗RZEE@"dp#˱5\T %D݅Ͼъ_{U{+ TE ?XyTA3G)MނWXBLV\&"WΊKH4)W[ל&+ȤmܼRr"Ks'*X\Wࣽǫ&.E lbfe E;9z ͿoVPͶ_Oi)#H.4M :uЧ H\wIt\B,!`0 쥂=#HO ZLolXfӜޣkzL =DP@%e Rx/zhA|mh 6l~aFP͈GT#mD[VJ.\)܀Ɩf+sйb%2Cq),r9pe Ѱgā C1GpezoBseVZ( I  R.]P mIǮ` GgubCWVC2s1%dػ=O݆tGwo'¢=o}(ܞȗ@ΝϹrmiQb]XjmӋ/4"=lb<PGvK;yl1׳}3y#@AdZ=)D׌ y97-&NL)Ub=$bzgҾawY]wDZzcpo2q.atcie\i " G %խOT+t"7]fZ5b2 IDAT0rg+;Y mjAm`kI Ðo}셝ehAowG!*cO܋/?#[]7P0޺ -1z5\*@HtgV蚆#G6'@{{UZaƟRA}K}Q|7FR8/﹧nBvN\Ywڞep9cj$о^Ȳxk?cye~A2O: xrM۫Xf IxKg*$8tkҟ{Ir' ꓼ([` ک28,,EA6~ Ois)!ie.NuWf-\MFkp&ߒr7="-; N4X<IEY,)1H &{1|Ԣ:RL.!IފOƦCPxgZ0E5w W'FV6 $r73ł=?v͈^Z.g M&D~> x8z1p< 7c#ѵч]qH?oE[@2ÍF7Hpipq Z&z׏R57~S~v3'GvxCHk/>{ O?>@$Z$iӱ-ގ@g<fvCJWn#vtExt] ̫3@)&GUb8wAw=\ȸ[t r/㉨Z%Va+L 2De%~WEȮˀl!?ӱHg,)6,XkD 3óGT@8:Vo0 2d +Cǐ`49H74zE}m~2K(?x3/n"٢WƠשT;Ќp?:lJdk2d"20<MqlՈsK64èPOV*Y qʂk*4ꖲ픊. M^KA)Op~]FEfXCFjt pULZ(o7`0sh[0M %IʻDĢ$1>[آD^ '+֡9Ğ{zVT2}+̙NfLO g PR7B;OesyHб<ÍE7~přo{q[69Jyq l)gzyQ)2DӔRR$E@[ztٌK3&J",u^Y.1x5sN*UfEqt?x2 \Bۛ6 Zv \>~x#HOeT*HiWFtdR:)!pHOɖ.(lӜ uTDs ѧ]I^* fA!.jg "5xC@e R016@Em>E[o**Y#P*Fضgld+X@I-:}ite/"*#'*J+7 U E-sFp8}NUl[KZ& 3C붘gMp UyW)`K1n1bMJƝTZA)_Ҵ[HL,ߘ`~dƄۥDD : x';nCtHedK$ÿC1hCCǵP]8X+qmZW.OApk_DעO%"}lƶ-!YתXŦ*b8L$ a؅U,!;f@ǡT !C6 EbRo~{D6M5B"!eɳ9qMzOѾblť3GPT޽d .<:*!:>aź"PP8xLFC J:NqWB:,}Џh\_—7F‘Tջq՛:lP"&Ts0izŎ[0е +W !,\I-(UfMt] c)4w!T!:p<32.3'w8sTYN^zVl9$1[̦:MO\BcV¬p x*OC>2@,-6k+P}JذU+ZPQqCIFp ]W'veKѠ}-c1 ]%Q"pYR 7ߕC2_o>KcaχH \P)k6jplJfupHY@8Rqy9Ae^٢J[p䃷0:<ϊ;׊-?蝜Pg1oa$@j (gN,V;\(7GeKU~1qIl6˓B'+\z,'.7\BSg1KhV(3V;MKmfe!*?w ʇoJ!TۃAC(!q(YJ"I X }'{6LrDȿw3z$ԕ>44w Z-AQkM`V1=xg&ȕ4[~Q%˝6pLq= u1;%;YYI '1#`պ. QƧO8}*]۬UK532[kȎ?EʛUUB., o{ lȧ_,!3TB"BŔ_e](Ru ܼm]?X7p7qqdՅP8R!wtdB I2/#xnH 5\0zif<'еG?CjUP.><7UhPo+u $ws*= 0~A$YESaVisd%AzC0k3p%JB%:kͽ}&6 E9} ^{o[@˦=xSY5ʘBRC ěoC/!|p'6߾Gz3(Ok]ضAٷ?S'4OC^y3';ì;bJ&ÞQP% 1%f!?[5cנ}}HoH'VhK=O*y d#Ӷ#5dFybwD J$tQf4M۸"^̞GbtMm=PBaTʅq΃Zȸ'8U&G[FGDEW{pR[x&( /fpZg*H-9HN8FD+G 3 1.Q7-L@=qfo?C* vߏ5ch49)I0j4l wCHCѦklX}-9{-2ʭ`+qTa+e߳JmQcPEe{ 6c0LXZⳞ_{Ydͳ5* 7W^PTB-ygZT;cOUJn{{L_*+ -&(%с+mDusWP4 ۙۑu|*d7Bb҇eG^Jو(KU=L'rdw-@22.|x#F k7tcUK'DJcpT{"Jp5㱇],:w}{vu|GQh߅GwF=9kVľ/XoH]ET=3V=4 P  {zȮ%nh8-[vܲU;Hb^ C0p"(zÇLe-e+98Sf\Ћ9.La!߸(@zp; *q ɯO" [4ia3؄:|~+80~hyz1ŞI}e9\L^ +P`|S _CC0kiסE;0WݎBb=, sXlrmD][fKFW~}&!6)ƛZE.SV =C~u "\d~j C ANH/D{ 58EAW!QzF@>m ZI_ӊ5? m PG+.HBetw!Q=@VpDO`ck'v>QpXzJj6U7/C꧿co#qſ.SBǣ= i5ٺk7#Ջ5Ԛi<jlimnÿzƩЗoǶUpڂB|@*Khlq]HUR]? 1R}z/MEUobKlApp/ ۠]N{Hڠe1@E)J5.'4,_CEz^ ZI.- B-ۄUױf16~téނ@UnFu!Be;8c [JVrᗡ92B2I3xpŻ4kNAl݁P P̥HAXtbwl~L)7AO ݑ=Mw1c)|F IDATk 5A .tlD}Q.J'`}Ղl-!o3 =V6CoԊGHE2g[:B}C6RH]%UV_3?x+!g,tϴu1\я^}U^v[Z#Hv=|א=^j_`~}KMPX 7ߙîbagk6m֫6bESv>f"|jms񞰽;h^|偛44$ _‡P0.?!B,D g]Ox{#|}ŋْD\HR& %KX؏`b;MA+B%{3gExrt0D3CAZ,V(K}~k8| { 飼i$wСkEI0 |QWˆ rOSY'4NP`ɩ[Y?9ӸB]@THx%P":kܯwͦ9*CSf]B*$cߥ: u? vW(Dόа .&P!jfY|27 Pc^ 4QiKlD>X57QQr) " AO\"}_?(bp !)ݿR@)<-'LINk|^*B1?f?BDLNA,9gSC-ٖ?Qȡ0T .)UKR+kA"-XK* =#x/v%\oӳscտ_L D2K:_x=%1zq>\ӭɥkK96v4w>=purQ~IcXT2dm*]u?oio%ᅬws}.Ƈ,+GD(a-x 0h-kb!*C3W3'Ff5nqDmMDžQT^p)] vbpb)ʩuh>叙yMXSfBzn KC L H;FO ".va-d򽿩JtRQMz^!ʈQ` ۟d`=3 ky/r KzĔN}4aj#xӜҩdKBie2^!Pd?\-xl,RP_x =UT䳣/E%æjls>3ljx 3B!UFWVh928$V} PK"QMvÌ,{?|7#Y?lGƚ2 vȫ n.~@*΅;],]ra@bƴ*5ǂVy:5v'9;E+() O pm.t)\̒{?(W@…^7 b,'1#҂brGr ~&v36T+U 1zb%2—9؉I;0,Lj,a yH1] !Jտ秦Aɝeh\K~?=}C=w Rv M!t$~ G;kS=J4T! q<Ƃ0~Z6\XSRC\9h&{ 0TPtRXz|XB#Ql3Z־xuNDUp5s_aoYggJ Qs0$'@K$͙Hg,SR<(h Lf싟-.>H!DYswFioF"B \?kF>dV;{A/k*v*& ߃bPeݡ)A^Vq5mD7aEY3jJz\M=$3Z7҄C.xUV#k>?}t _BՈ~zUWZ `H4˕Sn.ۊX.*R&PtBHd*FW#1p\BZH>LʝyLp!(n}"8=g - !'5@#a,]C#'ZGV!٤ /df'uظv:Jܪw \2B]A}P^Ήa_hņxjM/Z =짟 l [ HyT[ n>~Fֆl1[[ K%%  yGx# _O畟c3wΖWeVlgiT1P Ǜ4gɔ2m.L =!Ad}e #z7"u`37!$=4nD෸zu|EP׋\PyNoÈ,h𛣞NmۗNJAnF̡0Z:+ 1x5~Ai2 ͉IO RUD4\ k'lf+oENy`ͫna{%ȐDFgT.p 2lǩPK(4lF@|>stlL]c[2s\h*, @"HP;6t oC]O#HCu %QGJё8/\EL1п FSUm08Eo:^qy܆TF~;3^44MOK ƌ2dǕyyl`M |+k 1`qFѵXHԷ { Ģ\h ؒRq#Ba,`8ikd̓P2\tE #b5⫐Z\ KJ$_DҽCn'6{epW#{/~ÒV9{ZwWfQXJm$NSx}8e&@Rϱg$:(+܌Wů.<0>Ocq <.HUU8qܼ,u%B/"(2 kxDE 5QG U50.>3'اawaZ^I%P$2Ppg? ӕQ`I%p;Y)xI$|A8@$QB.rMEc0ËXOL]W|نmc?`.G Y[~ONV*@QGnn0Mrr:h|ΪP#BS uMepr~_ C@ 9fOV*İ59 k8օx=]*i?EIDZ=\faDXw-GkJ\( b U-`x,'sziedzq֣2#M1CIir6'14nbG~ر`DbdWZ8a%[aHKȌc@(4nGfG'cTT63Q.![B g)LH6\u9,m{L`4? 0_i̺ԧ %N/<]O+qiOzH+lb} #V}+>} ,U'Ǘ@ԯ<0?[&hT ភxAadlbYk#9D}m šd?~yUW;W>5 A]Q6tPךe i[Kya[)_7w`|a ;2; wcxgi4nG_Jžڠmp ܋a%Cf0yz@ePË^1Tgo3 wLf Pkr vns IV}%M7C2f[3rgx?V/#0p_h+k cGa1K y>kvq%~v+ɍCPS솙\\ˇa m[x>Y px&zr>FNت4+6}ގ|>k/F - '$p#3F eFP]%"A]Ȩ sCEtxJwټh_Z|7"O XDNüPqa#{&s 1B "x̐pxb-F,H= =iv9{=د {`^Oѓi9da !$/0T,^ނ~{e%tQPen]nf34Ӷ3Lb_X:6kDy"? ?E-T&,N SˬJ:GOZ㩯^ԉė@1r4aS, O k`d6:rkEcC`_d?g@;PӼV. *-`dV6-9y7IU⫑k[A{e<=<5y |,8qD[x7h|[.9 RjK>ΕVR`,g j#<&\2<ǵZeC u<#j)fM8Ϧx~+>_AX7ƅYG|n:ԡ =uiG0}XXzjY-ad_쇵pDOBĝH^W8,24O'wR;TD.I"LP%c"AH z1*9, L #r63Bϻ/wOe!)2 9[? ܹm)LaUQ(9|gdµqrFI|7vc?^K4l_$i襐s?p仰yvH"]w% _Rtk}{1nIBH_*>z[т.ėngƜj] AS߹%⛑ ϘyEn%<齀 +W2XSB>H22 FXx:0nA08v$wRlX:zf9w Q w/l[kjQY7V:QmCUH O|" } rڭ-߇? 7V("ݥBU%9pǣn(*@iR,De!?҃]^BVE,)*#CR$}2s 3@ ?QY4)@y=QvBlKB1XY;wm(%AFu-k"=hi.ƕY217ToWXdmd[GQwu #[gقQI,[~ӓXD1gɌ]]?QC-cgCU{S#vs#BM} +=O<@E{z}ی4i8bTw^U<ԖFWJ&)~jF&A$7xVoJ FfifVEsP.6!ߛeMRkfs#_lg?CS M[.~z'EV8,oތhf/| +8 )ő"Ddv, fc=Q9}i gE2ߦ\L*XFͦz^$&!iBi#K@-Գ+]QG,p"f BF|]' o8P| $!>-ۤ> eq/вg[A veP<"0pK,AZ\IAZ8 D3@2fBX#XlԲ˚IfIDO,>N%Ek,tH3ٸtmw\H%4\B}GZi݆ҢBb-xPuXɇ73&@H-2J)(U+KVo!_5k|>Pm~uFqN!yH="~nu۱}YX_ Bnr :\,surl~&skǩwT(%o;wHqfab ⓛOa6F/~6,׆l\ns+!npm< giZZ- !:w!)t;@dG5D^_*A9uXҺ˖. +l{k)+@_xmQh\y͵R #}<:2lflh¼@^fkOo5\ߌ7;+nƽ/G5O IDATfy'HbZn_ [ICD\U=Hg -lÆ?@)۱բn"||8Z(3A[ܹee%Q+P}u+HBtMK)17܊I#~bz26D[ԻC3`H *A.u_ل7:1^BZ5{Bt#+G`Օ^[Bۂc eq}WaXtjrCib":t}zFGM٧ز_74@TT^ Uf7c%pa'PӐ :lW3l(X8h%pfް-Wb ِUu[<@ndqÁI>xo ZpI23f" ^.G:2KlO(/@M(kY[Ʉ>WDj1=$$n΅ h!-XhQіuZ@G1_\ 6wݎ/aię1uֿ/3ohSħ~s+u&Q,FWPO~wR{]b![?`[: Ek"vq}V|%R`iJH65&j>-yC;^.-K*(2>V}4~͞o׼Q%6?'Ve.jVB7mwfM[[?WK/ނ/o0ӁCş==i,S܆P0]oOƪ?S;OCޏ;qi,+O>'ÊRl" ϻ'axQ>J`;Bm~tx_.08a}Y!,I &VJ9TSN#CzԪLT0 v4~JP>?a?>׋Qa/Mw ~ QȈkzUas4RtGN3j.6B.<1{'{=Xm2 yh b-thQ|,ݰL5E86Dܱ􆊧S1ӿ#Xv5tEؙ05d@ג+0֐8u5nzƀ,ExQ'-@)Hռe.7cTmD t*%y%p bKX^ YPAO0V43u:/mzgɒb_TYB-R1:^zΩ]]~$-[z!;GS;9s8IF';)mf'G{oZjBplWQ4$%isV 1sdd 4e4Wɰ64"V+SP|u/9aZӂ\cs- A-•>0BKpB-t݀ 'P蜹ʒ&b%CMBE1և4,Q7㖥Y:->5UjYߏn'O䊸sI;)-A=}Nan#Lz3?IL1e=ִ( i+\8#f9/tNiBЃ (~ʔX 8]9k{UU E.zJ$/=m`wk(\`BՉ'| ɏZ䥦q 1#nz$ kD E?oQ]](V"lK CW(T:}He^e-5qg6aǽ.0`5ex 51وwnP+:|CÊF=8 ȾucP-h^vZ ,57}!TX {s0_t ݆% Iz).h35{q{-JⴎR-,]ݥV2̱Pԇݿ_|W㦛vOރU˚:9 a^P58ՁUiȦa:2­q<]yWnoo/der^BgTBi`w B&,v> |?67}z)1SS }"  $9%t 5JXxC&Akf_pW0AhiE5&3lYzf}ARJ')0lj*-Ɇ:lgH|0d J:s! ن -3lL_%!TT]N6/Z/>=fDw@'v !;ΟRu7a:UY!JDib1`:PT%irfb|i^:ӖmSrDpiˮM by^~UK2==xoU4@̠J&Dܲ64 iCVE'9Y˅~ܵ ZGDc]g4*_Ժp >طy|$zQkaœU(S2rEXAE 4 R$hXs FDa=> ;ڎ/=y\y~w#^3EbuMoo=pѲh)V FX&a&rve^AvۿA_bju ǰfɞ fh; f9mNN fK 9*-xP:*e}*@88,f'y)sYwsOтJv2D0Ē`U&0U (ǡP٬W>߇EaH~X$A_ §XsHN"shMY@}CMUs͸3l\N n^APOA)X;M?|`Ru0}Xh3Ć'V!rI 9$E߆m,>Mw*`Ap0M8d}Q;"0Z;9x]FOG~L^Oܺ K[#Phm"GQGn 2ĞxꅝH-’%h]܂:TEUf 3m!$39D\+q5XrX0Y"3>g.\\aVs!.Hf|bS8v=tY ISqmqۖ<;@՘31V'Cp>u ins <=OJ{_r2>R0 l'izT5FfS2sK'[8fGT1M̡[ǯgxB5.ÀFY"KI9&0d`>VRQf-H+M '>Yf wRenW rk:EF ٦-&F~XjE9션9(C%?kqa=}ucq5.f *yǵXjf@Kc~B1O/<\P5l?u/GEsluYE9dɘz^k+[Sa= v%2*|cD/7pR(9O@I8N/e;M(ddP^_Kk&hiq@+Dujub$ ( òp8x1=-G7{Nkq<}4n^;K[ʔ%u"4_5AM ,g?/^ƪ߹ D"m۶qjz >S V%`i#:pAX=k:YH/p 1:~R6~쫸qev~ ,5J<1O#ٟ͐w I8#a VԱ/H)WpT;TA,NH 7 teVpbxƠO0Mc#FcS [XKLbN 4V#0L1DSdslP*{cTX~bu뜊.dVYc8풲rG` |^(} Q>hA)\APq^^Qt@V$Y c,<.W}D* ĚaR8!5E˶qF\uUX~= qv!@utwt!z=z4UѼsVv{қ)l 6i]#ʠӗ&JcRm9==5AXV>gfn!teBcq72&+zOOicdgX%){V.sc0B.2yh.N\UH,CCٵaA# XfYK)N+{a{85م_V p2FQL*Jn/D~DUH&bol/EH&&w. <Ј uWK/ae2m[Ivy PTxgwK#p ds&o)Tkg n AGSk3]'WհSSՂ6~:5!TzQJ# b!PE {7; '҈-]5b/߅'-7(b?pތ4ՊgY65aN_M|_}0S}МU+ bzYuOs8t$;#Ƴ/ ptg b!.p:}!Nb7n'>@%uȠNЄif8^n)L6M+K~tyyѶt ܇Թ(||J(P9,g* Ex=Ng)?ytψE#xU wY7^aR_n?x1:TTJ=)EXCjq].igs:/ق;Qů$yޕ~Uq>aO-,MނxɗP[`'o+xٝ \?XۿQfw_H?Ej[ T(,;lx7u5,KĢP\4ӅX4 bu"fD !FTx`g9 -gZČ3f)L@æ,B}CcJa V/xKޓ-]ltXT|=^\wju2sȩg nj"8{!TW0dpIc?֙eIi剽 ڥ CqsPwd21|B䂔ʞ e HieM5MiztB&vaEW׆##Q雰IY5:N;v;>?q)ll@=fyNBbq?%D㱧S?E) yfa뗪"S05V!g:P-0qϭm!LS8UN<|F413nLVƌw6[Z]sg(9/Qi;x! RcK)1iezȖf◸uf1uޢV&FRsք-Y|BJOL+]s9rij?1y {Xv-B%r=Am\ӧ! $Zp0T'G8*8 s G]qOuWknS3dzb<i۽2)ykV>q.|oa9;'͊j, qaB ൗAյ_߷|O<59@Jl @8<`ɕkWC9gz Y߂ 0כ\\M@`Ys8OjXδmLX33'c\PU~W*ơte학ñӳ=W()r!) IDAT1ZϔC^LX`E]Dj7-*vݩ`=wʂ']3X]f!\< id2(y;뺍57~)]O6㞫7!Wy/7v^oaDdGp:tXۨrLa:*| j?yfw|X!eEfPq _GzH@[ [ GFgx,B#S \|{@e4֣ymyub-6+FvlJn<_bj|hs dƯq\x/=4+b" J:TUeq3' |[DbRa؛"0fRzB}뱟ee_iiQ)7%"&LXS KUmZcK~~:y4^rr&8c{v94w1IX$*p5|ܥ,L; 1p,hu;- 9ǣEȁC|6NA1lU B P~h>ه`$$@]ئ ďlwY,]^LEkH&J;rih]X# c{_ȥG03C.% A?TI+ ^||޻_΀B/0!5Tp 669z#D!_SH 8.bkgM3LwJVqU9{<{Xt2pA't^ 6/7!:c>}EVsi aDÛoVT<0rjY9Lfu\)>iejiRPlHJ475GyC/E|PD2G 0[xdL&FLOTDP,EhtDCC};8{"nWL45ns$HG<1bF{ {z GGm} 9 /؄u"O&)>xp| Nٝ Q1fA*jSڙ$+FIP0w G\ s.=n$P'0GKhɬr ]yY[ [t+eY - H(q*@Tx@GQ"͡2+"-3eyӀtP4l#V NQT};T2 T:};t)CU_=Y6ږ^9Ԧ(W3Pm9N#^>w41bX$F?~?`BoK{2-`4-WB0) ="ϜaW%m: 1N4$:?ً^؁^̬ВhAH3lBFR|9057Rp-+uF gs0IufeOHTcVi,IR$LTJgl iԶ$$9FS=Fw\ k; c[cjo](a*j-y +bd8SFH#2kUS;Kvk7"DR8 l;GiHnBdV}!6#߷0BXiO38&9L¥u}WY)Fb$8 0B:ԞUQ*| 4|;9V!fB"ӧ2BN( DȻ#FmhM+pϟ}}'}Xv֝ ;=y~p/RpϡYL nVxt'nkw݈/woҗ7uh-.csO?RRM^ O*MƊ/⥡CI?J|] @͜?oBwr2}&fzOVL'\JƎfDTQdhf׎6kԷ<9J'ГiŬ\@1׉ڿtKhN'SSC z%dmH&_%1X~3,~mݍ2UL? !nfL ?; lEGU*F,=A@Mn!~mf(:~g4v6I ̺F7n: 34HEdM s53eUC-} BIqYW%SiYY~(I HQiL|P?"wT'tp|Eә d> r (6+9=Dxvކ 'Ł|iFBu;H;RM}wwwcŊ!7?\ {,[{> KF8A;H@J0-[ZSG8/n@.W-_#|&VllXxkQaX b^sItCMƒ֮K)%c;b11r.$Z[wrghͣ>LE jP4Y{p|f>|!M(F[M"/8yZDU4LjR1x_-9iVו<Y 3ILK§!%p}z/, wyh9-(a8W܅6 ,~Sx$ldNn||;ƚpq޺Gh&&}ĕHט!EV_ c{/łf;DSf'L_1'?DZ|?k/|=3}.l>w )r-iDCeV\74$ǝ>{OX93mHJD&Hr+ԾL}WL0g|-H53BINaLr I|܃d.fMը<.?1XXA"/ϡ|T9D8, Tr|U Di>pLt|9d0c$氪p(t|c|gRl^fӶğ\Vx "6=p/2)sHM+x7epkp˕gox` iu r28w≧^_CZ+EQ$ل4H55MgLj(l,-7}ʛ.“`49cc9Qz|>>@Qptf2O/p9,&D?F64+C/ IR}&#y#6VޣPH#N4fTt'1_D&y, .I'kYUHͫ2NvLsHIFO9x3,vE֑4Rz+)͉OdzEO4sf:G۱my't8د/UCoadyGt]M*T::LX=#/f-Zx@;9Nc8=!l㩗b 7cuK$*9 Od];/BØ ΉYٱ]L|ȋ97@Kh(474\7K, UO b]&, մR 8vه^HLκ`mYB6 h?onJ_džyp=WG1,V9`:^ׁ%"uR3MWOׁS1P,u$KI|wBd{B58vHޮ{:lہZ"Yօ!Be"&<]]c ){ nOko_yu배=8<IJM+ѽrΞ{BqmPg20( S|oIQH,­{ԒbMuG7,###" fq1Nh5E,f廐=bEȆiҤfYBw|}FRQ 755j݉LS- 0_S* ƀpl(rFP(ab"I67 THufdQ*i1[uwmSq|\ylC#y-\*3䞬&z-RnM}n'4:L~M-iv`X1ts`[E4eവs< I[itt!YLD@&Fk\H{WgGFf5!nB{s2AZhjj֦{\hM`{6z%8;5s5)ՌL{s"ѾS5u_&\c9pVSLA>ђ IɡG@P-vcڪ̌_Z8lzǸG>{%ƾdNDT. ":9b5n󠽽]V{>CڣL|Xg%z|GؽxE\~ ヘ]O߃ޜB*>۷˸q2::Jozr4o5ڳ቟?/iD K.]^+!r k 9Xc;,;>52z6Dx9 ߁z\~ b0╋7ӟ`]CBьf~~RԊXMhMD`cY5"AO\tR,^#(d͈IWK'YRX9A[nA00.hMځI>&ZBGR[1'ہ8sJ c@ˏ `Oa"`P1&X *">OVQz{{_}eϛ7O6gn|TT6a,0oKg@_%|Lʿ\" rS>|Œuw.Ix9֢ k[ XߴAtnӃ`'X=it_܉`,$r6Yz,,dr8s>iH.d>&B׆s̑R)0tj$؝ԃbsuJh\$Hyg'c#:ϗ,)S, >\CnGj]džG0o|{+"d._@.veA>'y=˅C%Qcܹs噼G.A b7/j"g/\P>n >uUsw|)w|6iU?){r+`WSvڍ'eBfƍEHfQH?>m0/`aowa y284\=V,_mwE{*CGȜff^ѕڔPMXsuc ;~g4sx8xsl#u0+/]\RyZц1pv^Gr-_P<C|Kj;zcmDzѤj܍:E֡O!H KqdA8YnX8'bUHpfFoEVo#SB*7Zct:8ccXv=N W,&ǀ7+ G486x bY } # EMvFs>zBq0=abaf)9C:ES^:G.bar|>%cر_{i̽p>o;(91?͡bXdhj8֟OG4wR,ķR^2i'ϛ;׭Bڹe#/P8$EYG/D [,7n~r*9ޤRgײ~rNPbJd2kYT|>g͹KJrRYݐ(zĂ #}O+;t)8m:'HߴB7V⾯ZW_v0LC Ԣ,c?)+S`O^AW`êhY׎WةY{9V,/vspaEhc3mqZ`ņ+ e8#䍢 :΅C%K"/4j ^l}E<~\f\{v?>Lᗏ==ǚ66 m4p:Qs +Kō65nF>=-gkPp@v$VǟY G[?@kE4ؗ?fX(F7cYأ9 |('޳Kp Wa # cS;jΎ`ypspC۞}'{p֚%0.VoɞᬳVuWòkL 8f]/|\PCϖ1bh0ރ8њ(,ݤ8^!MGS;=OS2C|&ޫpՊ,67 ΅iݲȩ[*ڜi,+& GЧ&&, RI6ihnC:/)~K@ ݺ!\|!J4%bǗ(ZfYNC5K;lNpaPLjBS-فV430 ɖ:XD}4cٜ ]|hB2-guH$߰'caS8dJ&122,QU,U-G҄ )8jq}Wij-׌Hw4#y-[ꫯʁV`N'|nZu-xZ3He{lV*1 c;ւ|/j˦\ݝjYKA5q7Ľ[S;ʿ]vZTsErڅpjf _U/ahkz_Š {F4^;#b.FqHe\sUXkg1LWG~żu[/nAkiY8Kxq~nTilBs~2FpoH!'pe)hC XaF #~%AjeǐzH ӑ9qͭ/ZrvCehݓ ' B+h^>yw 0;%*: ,E2ɉ܈ފ+0K_]r\YW)dVhѡISNAnp&!N}Rxeev&g)mIkds\_x۶mWGh+Lz8 X0xA;Atg(.{:(tRK Cq#ARS6F-/R ?Lc>{@wO0%OLĈqE~X}XeeМ~WƣfB uMC(ᥟ>ܑqaJ8Yd d00!sndYiشi,^4y?i^Ċ_$5q##e 0Q(\8*YACAy*:'}MUv^PU!5BvfGnF_NFy89<+p1zq<,HNƕ7\7k!a&+s0 5 S'19];1/+s d1bfFz?Бn| 1ۑk.Yb mt=5Kx!׬%Kqd+O0fV]B%2: .\4Iߧ}C ɮ%M,'$ru2|̒9MB25'-Q&4x!)3owJs(A/ ]De76=Jhh $/ij)˚GO/Dqj%zI  m,zӏUݧ.hjHM F1Ne* @YC1b@ޗ˜o{ #׋O;8/wxVMX$ lV](u\p0x,w\-tZN=&3i̐5@r!HNi;5D[2DPUScu(݌-]|E33}8K+N22G(i3EkZs55^& 3Ѯ[94&#xg^yZ?&djny^arկˆz(L݃bh+ƙq_f1&Ca X|; lp aVz9M$ 2I/pX~Q27߃-z\vce8V }US}C&& {(9%xndƌ6r!KC4e'( P!4Ӫ]|,_Ɉ+՗5G˵}YHs0DdcPu7͟*i JOP;E  n5L9evTfܓ*APqʂ_HM+Y~ίrkA"cŪBpHsH8dlUj Z(E]iEjk}5aZ_篅Xc" '5ǀi-GgM8F*Vv97#oDk15ތާ^cO.5kⰶmZ04BhV6vlj&WW_pL$܈i2a2Ss Th;kv9,Om?HQ"kYb7TO 9JC_Ɣբi~}*qTMtXƅW[O M мBՆkY1kw1`Zmo]lQ Yw5>w?{؞]{m_FL>L߬( Ej BR fyd~(:k4eHpj'UxUfz/܏.F4{)KI/8.eQ?|,jFR @|,KrLE:Ha1Ľՠp(N7c"jCؘ1+"o[Xw}XGg:`A2X"R`uʢKя41J{Lڧ#G-YU$?P{a59ӡpt2Qj4 C]awR:jUW@j:t7"W֦$e@Q_яUpyo1KO#ia PfÑ?LJƙyD͓H#L6q*jxHQ#PgYY"UYVOi#&òk-$5A?$X 3J$$()lXlZAh W|v Q0\4ah,ekedUz߫&ƂWbĨ 3I HH0u-a%RBf5󪵝tYcBF~_E0?0_}7*$rlNG jʬ' Ƭk 05feEhKFH).ǓibY ucehBRn^V\qqƅL# kds Sk~9: /6ʴAbI*5hV5xbĘ Fő-hNZ0uG!KG"6G>',[Δif ׄ,4[mӺLS 2b2ƴ1hHe,{EN|}ǞyG:\gn䝦708FmSXJYH? H u>[p pE+{0q 2ZE~qqI F7٭w0eDSSsPsuk>&2+;9} DļҊ<]`TK5Ɋl1?\rC5FSBKw)}kw '4\;owv=í^yIEgB .0g^2MqЭ$,go> ˿sדHZ LOP;2E\.܀op)rlM 3~D~<|Q`˔.%4NPh'OEԹZ:Bq*Jn]Ѡj&E}eD akL(VT*n~DG`xa *a9`IA-nX4C3A;.Bq azPn ;z4[|l;cHh:kO|9z7>9o/wFd;:MҥghYK[GO@Rm3((bĨDgg<ց Cxt+Rh6PWh:]D9Hk%|! EiǦu)TR̖@Hs(&. j:eP>ƈLNqF+3=K*/QώhGG"yPV F0jTMI|͂"X1R 1>1j ߙ;w駟3<~-(,xøsaAigaAWc-Jcoǒy  v[C! ˎ.l^̝F`<ޅh]7.V] RV'n ~gi)n6:ҐinF2fGQ$Dss,=@~,|FzʠITgSW ꑿ HR6̂(CI3g~AdbWeP|Q.c78*'ݘpsNu1 $l w\a(Ҭ\tSʚ=x-3/ֱN* ּT4qrP'|"cccXx(NJE)ǮWw}z]LU+H+%)|-4FA"tD_gf0T3Zi=L##>vُw{%"|-?Oʦa˵8YӏnHK"c+QDL$ /L5 %Q w%θVSU)N6紐rHAGxT2z ptsxli y$< ipCfcwຮ;wu.r attlnv +Ks8ԳruhAP{ ]S} E&L6nYvaO'y4ΙGVbӺ?/z Q(85_Xsa,+Vލ_-K{ĖY|@? g2ݻwF[[˲N;TYو^ٓ.+*U2ɂ3: 6O4'0 hNB!Mi-FmOF9Dy.~" pO8PkOJylD b$/RRYOs8S&0}[ S"-FBb' ON>|Vŷ~l꘿j hkM!1o=n2d ZZ`E0g쐬H L':_А=]ѱx/s3%6w۶ -FY|GX Oq߿.pPP@+đo`/Gvi"E cԺr99rD>GFFJ~!3 €&y_;n >ٕ:esFdS Չ2RHfF]pX.sz(Y](ݞV^߉wjkǾ-xUjd=P1,ȴkMfh<v}u E|b%¡?*Äp_B1ŃkcEryzKoN"B_a7[3̹ɒz*ׯ͛Ŭӟ>hgW`!_5-E1O@éEP;̶hH1 g ~ukUlat[NE_0 +?+c^V˾茼P, !nޡLϡ!ay|6=SD m yK7\;o .?p; s<:m5)؇^_w0p O-M'~Wpi5n_%ZwD*ԼљZDu2{d$Mf HQDkΪE9MQ*A]}~go$;2ǓByU|SQBn]0sWnpoxS9R<.D3\x"(H,G\ߵOY[[tTS[x*Q‚hVH7sX"Wf"!vL_~V(͢dh3g.v":32LMC(̺~q&e)85Q>_RV?ŐKyCss"&pfv)lzҡ. #"ZDz$1bԐ̶6t#m]38HY[~k;,N\tݸBˎ``NkBҜw`Z|v:r2)>.Pf5'Fp1Q@ dj|xAE"©ZpsrRi $FR1 ( d{ ~m(::`<7[`fW`40| H0ZH}u+F߬{bAvc0qyNcň:B޽1 9pwmgt) n}tن!`YZ֠FO-izB~ZBSH =7!FB,.ݙ0u 2 DԺ-WN5㵬ZdN F Sk X"Rn h(; '2y=HąJfH&ɐu0"$ZS1+oД憎g6D#F5p1 |DZII$oNZu#Έr"i M*ے-o.ahNK' s IDAT!+;6v+r^Ӝ"(" 6zR8txi .؅E5 GTU4[8afS!'gQ8WAguTFĈqzA{Fge%8?c9$̃b=x)0۴C0E%1ΜSBAF @]kIM$(QT&O2hڰFAxC*#nHH*$b\@ӑtGk2K1CYgc3RU{Vd4~`>V85CR*D}c8sa"sߏDSnc\ęD4fڐ޷ΨŢX7;F2_,1 ͟>\4l</  ' (Kg4DN&\cF- f"vE.7G0,MàFh$@2Th-hq?:* se3*M0bb1&Icݖ`#8"c3Tꄒ腔 .a6&%fR)GN9 L]$&ȔYy>E=7؟A$FAON~4~3 4F+,jl<^C3{enr|ج̇~?z1N xY~{"]D.Wߨ3qwIyu#p5uHeQFDlo)(0o]+63$4+NHfUlLEskB.:4+|=EeBh;!)t;$ 7c_5(F:,qF-HrmtfspeRhj(ȴ4 EU17]6D g\E9#cĨM|)  @VKU HIl) 4+n( @ Mur8WJ^ׂ-t7p feW9rOEJ1{pO`0gW4i¡{:%a)b ߇zе|6 χc֧pě .<s)hZx >aƋ'PrF Bf*g}1GIsd#5+sC ; %wM5=892Er*Z"VvJxi%5Ō69T)@Co)ч9pHfDQ9vZ=swS$y Ɓ}@Ǯc@|M!NO7#ē?{z$BBBJcĈq -mhC:x,&/&bA}I`ӏ2TP ˔U&{ EĊ2N.|Rcٱ"2XfeM+r.YQa>j+Hf1DdHwFQ}0B*xGqMwCs_x?;7 q^ ]r7`~;v퇣[3 $#LB7,XA;_xwF,lP0>%&()4+R<HΤ!وPQ39h]7DMs?$["0q:B5%aƚF4sQ$Z9%eЬ\R]ildQ?Pgy.pW`&Gw/-χvl.tթ#{d z| JBxT:'|%oàb"t:L&, cCٟ#x<<LY]V(N$B)܂C=t9!hѳf!d\"ꌛsnu!5r z")9n}Ŝ;46^R-pLE;">ȬLʊCq981~]]]eYwMȥ3Mxu@![K!m$ۚ`6t:@>ϢN{ MG0KLV(ji,X )(&F5`_ņ:v~ u\9şV1SR;1U dN%lfИhe" pESWLJ:4 XxDC<€gB`DHKÀ Csy9L#p` jܸ>S[e ""˅4S ހ/v8G^KһېO#\\j-_;^kHbW_/Z0ch NuՐ$0v=O}ȍ]{YL>CՏ㌀a"@C_.cŒ[o7xmmm8p~ !ʩX"sOHsEj#u{x u_Jb;(3tp)pFm~аVUcrcd]H@;[x5( ~9pm;5(9͋Bu.9QjS k0.^zit݌oO= yrU ބs/XF\N!?#6!zg<(8l.~1{?'O m> QRmLjQ)vE?rV{5i"OT~Y'fD[cጄwz1v({B)ﬖ$pF'xAa&] ٌ֏@cx%R)#D[GBs$z#}?yW4RdVG bC6<1ڎPAkWn/ىނhk0"ݙm=}"M1b-+?7hBف!=qW/h  v1|NhlfL BASN^+p>EM8ήX8!J}- \=1f-X*zu4{]) btts6o,+=}Ǒw{lk$2"`$#C!shoh i}1w@(mc^<@%ߟ8M!y10,m\ t IxOYn#ُT8fxV aX:p@hאfG+8a`D:d $ FnU`s{/z s3^NnQMxb.ǛЂ\FH1"6\~ \xM8kn N1fض-S)I!rm5}PGz欃RlDn(p]& z S `\2$p*O$ԼiEv 844$ 37b(Ah"FG_V EiCUJr1bĘ W44Wwv]~Mկ?'k*ºTgyߧFU>5v=Y;*SQT|Ogk;VcƲkyT]WT׀c֬ZXJGӧ ])( XֺuF}vсށLBqfg1NoIAL6=,_\6xZTT+{PR2~gkS*{삋ܳpaעc81-T'tѸ qYg /}sVZ.HW^y}\E>(,^XA΅n=܃fwsoë|+@8qeɦo>w-uay\~Xf,DO=l7tX_'6}KU^6r{1ro[ mf?wߏ~#\pظqԏѣGKsرc2|9cjv>;]d)v۶m¯կ~U5ɝYG>g,KYy<-/0,icυ xs|8#s]r%QEW5|ͱ<;?3爢O~"ses9צ#)!!@He+ła'\PXŇd@.r3) p\9g< +\xDFZ>35f(@>&(k 5#YO>T66n6|.u2x7ާ浪JCMs melsR͍e>}Y6HGa楞@ߩkX7: ),eoU7AaרWc;㽬O>C[]S9Ԝe]J!e|4sΫ9nޣƛsEfUs|ԜPWRxMX?^*!T l\{J[3yo JNՅS}k(̰N8w;2`> ڷo|{p{\xT@xs%l3O')_Ժak 59,}ƊUsBYT#h>r,^Dٗm:Vnn?]AR0|b|ZS{=r3.VFexJO232s)5*+PŜ//WJ8Tf82Gw.lQuS&,^Íe;JqT}UT,G[Q;D&KS9ߕ*"u-v*%a[YT]Ơln^T]~s5(3g?l;՟|2kfu2)*5޼P9Fr,x9k~(O5vQPeʭC5?,V2T}X9V+,>2V}޳VY;\5o>Gͫr|ju [>TYf{U(~j|TԻSV4r=0ե[9?\wF)O&8Tw*L ۸ksU{i5 $+=hN(8'_`w3zIjS>> Z^{JiԘA1JHu8Mc9jc=&巤r?Dhe~,[nFʲyMyT_:疗4jxTes~4j,+M-Хw-Rxyxoe+_[ mVB,[ ,| >GVV|SYS}ϕQn>GiRVf J[y[^6F5U YJ?맴jW_`/ee#5#|6Du$D ؛(%0M!HN~uJ71 Xp'Su&YPӐ(H8bp.[hak4iHC-t0eyC bA]ӐVGbmvDR!kY= D~꠸ލ|`IB㹢Nz=mKmH@,S>!Fm~=z{FG\]|qϝn RpBӴgͧ:Mtjz}w4ލnaqJg9ƻ'mv::4Zmr&>:8owיw0k{&^MsM4wOwt3iωϝ|ShtS4q㚉swϥ{|ɻg2^͏c/<3?s]7f3{53?3iYaPa RP(H1%C&8`0/zh .fw kDE՚`M4~&<j^8*sHD) TYtnv)ۉZ#D~HAvTLMx\qE~_L'~s,2jSZiOtikU\0!V i^M4umFP(Z* U$}CؘKn3h3 ~KDu.X a#]o0F M̈́FzuUׇ5B7N(s]>%>A)C:(,SH~^EEOTĘ*loĔ{ቶCF[q^&\qlJb(aMIDܫ(Ux6xj\S2*C،KCas&hC~H[ DOwy̗l IDATR=BNHķ_]F` 6㝕F "jMd)4?Vn쵿ObR%쿝 d)C(:TO~Ҷ,ϒ^q?DJ|hOzA+ҾQ-1WVP k8q0!/$}_bGT]*#FWr>nTDL>2ԧqJbLD#fTew(︇0H4*([B]ErDZ:E/ r C s'Ȝ>=CPW\ ^ѻl"WS]ʡT32VW@u[ڝ(A9r bpB%X y0R6T8JԞgϻ=EO,Dz F)u9$n&x] ]dc{11@;zh߷jo@ϴCX$ꁇh0;FOGagދH^(x_!!$eL+߆ A ݸJ<&w;IƔud6|ên$]x"܉j8'xUDsKS%wCI!F~j/5^$[FIO`GZA{0 c-Z %裶Sy'+,zuGD_Cx7Uo'wCTvOY(3JrG?]E?Z^j7V-"tM̕ aY6ށ\GbMObiΈ9mȃR覰VW{께|kHqbbbY2#86"KGI08a=\cdYC"o^J y3F&N9QK,KM4R"JYֿN" %zHHpR+-" o1|ݤKLL!ϿKʒJ=APxփUĺߒNruF9_9ڷ93bT n:/!/XG FaܾXWctrBe w1qW7`d'ʼ2fڇ3tڼa/^v{{ѥ0׾SGe4/) (-Y{+ZX@bh:)3eP'vy>W= ;6%K\B`Lj'ex{]N`Y*Jr}?ZpvxʷF7R.XGm\C͜!裸É?!Ѷ=ŭf}F9q/4|j܃7x7WɜyMl #p?%:E֡i((dލ<^[A JE\gf5Bp!CV9djƕnnGĩF䚨>԰0rs2^.f"Mk{9L5M4DsE䣘ђb#ٍ7hV+=nE1DQxF af,="})m(?H-c?Bu0745 )oOp-Ui%"}៑1APB1ZQMg?HpPyX݀0#}޵f%s VgVJt'ro!q/R|M Qܪ06e0\Ga $sSܵUX abҨv"-CMӺF"fM-O0Z,7C[#* rі(<~JZr-jda}I -wg+Jǯ> '2G)>8乂muFL4nyB*s0?~q~asʫf%)ɺT+P%[ZQq!mV&rj X5h!/RUavJy>-("tzj\Dr &wWȞTxw5Y*/!뿌ipK㯳#T'ns(8k@؝AO=Swg{Xq%"DM4đ!9FuǠc(i>='cu;|0!2)pKTG;zHt͟B3hT񞓢t fs:6}@5"G.AmHvL7)JԅC;u)ARG; GZ꒰6ҫOTbw &D^fPRSjMjwIwgq Z1c#d9ߧC7U5/p?nL>Г(Q]*,߉$b4iGSL"@i(^2zEʶ%b{DE$1µנǜb lnx@J,!Tgh}.=;N)'FTȽz6>8}) !j#T;1eFGWHUHm7bebSαD֙F}}ߴ9aȏD~zd[OwzD/C;F?DvJ)%UӤyJNrW%(徃&O`4z36a0n|Gos_و:4`&xA1݁$V.c>{ﻒZc#bzD݂۠'6`/k O6b*h_ҫÄJsGHvAی?X}dUV&;t/K0Wjأ]8POIT7p?5_ܼ@$O:ϗOۮL{e~QrᗶCJ%Yx:i-DQCQsqJYMG1)|8iWC Pсj(P;ˤ(FXތZ'}?cUXNV8.=hE9,ZTvG(BM0~1XmcͿ % ]q|}ѯ\87,܈zCoǷx6$iKav㏿ {0^y9^W%eF|QV# ,֋QA#;/ 7b4 9r(ތsxCHye#'hDd)`ڵ[&ˮV2i 6DM2PX I zd檾 zI_rvDׯ/C1AR,^ϵmwb{+y_\]B1coj왯{4: Ԝ$u|ZHt'T߅Fտu)n*"ylmCm&/(g)-yG6k,s|k.?Bm+. }$gmp =;'%S'2"B۹MKWi G?5}iͣ$ ܉0_OBI,Sv-liObF&r]Vec(=˸~=yV'&J]ŪPԶK?0 CIh#}Qgq_g?~7GToҔ_U}Hf H-?"ZI. $).aYj;ZfoHfgຝdV1v3ueo=nhlNQyG<3nf1nVq}g񛱺[~== ֍rvAJ;~_#Se ~ꖿ$XBTځ{aOAb4 I Ɵ_*˘5mKGiDaoVAj~]Q.D'1ky"q1ڠXޝ`N)Vy 8VPdJGon|(%lKa}_dOVtp+?Ay bP&,Cƿƫo֚7"Q=/>G{?l{\?*0ͧX%I gXr~9+\31.gUsT] t kj|EzwQNݤhn1.l2H3+9,[nĨNzӦ{ˣ|S ON/OW_CA+XB4hbmڴs9n19%ҽh%gOk[C _]a=5.%qo$iGxagdkLdl)U0VN v[}*ZO8q +!T 6x.+p]*LꁵEMRԄ2LOY}-Fb.]Rڻ E5cr $"eI&.$L=9kHQF*#$N`uQ%Hv^5VӎIqGPۯZEt7?XyG ǁ#*WE z*D>O!JYF,j]rP8>0]T֥{ǻa4C{Z'D2LF>Zԃ{(goϾH.l83"rGdRbV#BSC)%T*6h!o8x:vAnLoOȆ%! ljk}2t5 e3$Q2Pdº/qEIX$yZ?,mrhIm+ɱRjh?+Cm_S߇hg 랻>ṉc)ODݔ5c)루bL_t6]u9z`J}_̲"^z_󄷹QWUQ "oؕR_bLh:>=B&zǿW^1ًGľBjxl *FUU|⨚1y䙃?2Ϲx1ĩ adQ$^Nekyzeks7n*0yj}Ư c± ?9\;z%Sٞc5/ a=x܇RyYgS:}1` IDATi,Θ;+Ο+xX-15c.Q'nYl;,ʢ0HI}uAѯrͦr%u1Ƨ)"m3z?khjnH Riq@Y~jrϟ;s{er8ϼйn̶irtA %B٨֔P4IExdRۧ '&J.P"d^~ʷ6cZ6aضm7oqǎp.Α42YW _ )1RtmhCbzr!fV-5EExZ`tg0%4β# r3&]CWأ*F)>_8p0j8k>3Z^ٞG_ݯf麮muJj >uM-6Fg4JXE"PS!ɂHå(QsS.zM߉ЙdQDfDsldkC$N)3eǔDѮ:t]E'IPOnK2Ӯ;{i(AB* E>u=2V;طgϏX%=_>F3휳Q.pJyU WMk͸_~ݫ+%imkGF"-j[ R)񝀶s.N,pYd[s(=N O MšRfqE}[yoe?%ux#VZ9$?cdU(r:g]d߹!NmʃL+6Xs~ x4>t \Zm\Wfw*Zbว&G@͡:&BN8xi(KX݂Z-dǥ722rؖE4+r孻t.lE+ RJ X-rYgqEI}%62Zzɧ\O[CikvHg_;v׎ a^GvIoU7٭gTOm"-$,eUcW"w"bkj!{}Kwu B/*5u n\W$xGw s6Kq62?M/idjFv1iULl@㩀V,K[e XH{wx9H#j.Bxrv?^$d_]JdU*bav[&dɋE$W%ز;GcD>O5Xa'--g~V (Amj^kh)hbqgIՙYQ9Y$F{/HJXn +T>ċ^=yD A=E*$".iǫS8sE O>8ơ.q1-f\p *}}b/5R{U ~j10BJ kl YM TtHtzGLjL5ywyG*c dBUk"U+ XWxqXMe}73\s1bx ~6W NaBzR~mnADmR·HHL ut$N1\ؠtp͍l`Rj}~>6jn)D~jef_A¸ČG8#%=Ö9h4i+(HmC.L"y|0pC4/`^:`a3q9H"}a7sx:IٛU*5&{9IL̫v)ɸ@Yչ+Aw+xK+<ϛd'wZQkQz2p˵hQ?6ˠәO bMtCye1heG5?fMGq~DǮd?},^qe45a(b\"6[#Ll8MLk!'ReA@=4->ʥ4vͰfa. a0E_>3,[:$R̾ʞdM 2(vR[(T3yɫ Sͬlgtb Ȳ ۢ{YD~^4\l/WݸV!D$:qY25ƍQ \t66^~!-<Ѻ46T󲚡0/Un~5KŦO kEչrqS.* Sce(!H'__ؽ.#G[r3y( 6ZL^5H>VV6ޥ L:I[,Wgxh/TL]>S8~-wVͳj'NmMg4^BBeP6C.H$54CI G:P.r'SNl6X𼣲?>Ij ΡUNxam;Rh \wGN 1Mc>]=f}\PF1RFKNTI U~'pK {4?5;WB2~k{46-L]%=וmz2j>O_\?ZU5J{[Ȱc{ /G{Ywa#ܹSb(SiJ3edѥ:r(ę$rYxeJbTS0f8K5TYl,"YZ|[Cd{m̬lIC2S=MBݙQ: ymN"i6h30H$u3A)eb>|>gNZkZnIk ug1zV\su٨X" ѼƼ#'%:$by{VⰞ;=;,1.F)&:)BIy7Ov\Ea|gWA|#>8a ծAPcs%}83?cBIyAf[?IHtd0qpFp~ZITtCm6Tt(\_=L_K0ْ$MEEB~^RAŭtHlruu@zbPUu)AM^]Ab[A)Aܧj}F >ê7K^. qb<vBA kՐ.Ao9Lj< 8`1 @%t]!zAP cs݀fSӲ=-X2A+KnPV-'P?nw>%쉕tTy&!UXXidУ@C>T9A=ƣ V` řgY_wgu%4dۍ,m#Dɬ /,qN°CEPt:p&bCR6!ATvj$.*ی,2;̫T?Kȱ3%IT&NRUIN^/It+Ǭ'ȃNB(:B8^k%}ܗAvINb@A: |8 46JGx;`{GS&PI5"ߴ#oNK<( )tl !a/ ;̠1lIXdS)|ߗLCq$*aoz{?XR;ģ:/,[cqo#/Ï~Pm[]7S̝?B`n岷=n+/L!E9J iàԂaźя~hÈ 5$83B*Osm]L0ׅj'TyիeřnN囅T|Xprƫ`̬l3Tc/ *mPH!tuz@fD%dDG ~=͞t˝!n␞ǯ=_EU, )a<.ly[N$QfqO{Z 8$R'Of籧j ȥ{$㪉2UTjUiJ!jl/F,U0Q0_q"TB+:!ȗ}iЕPDDG-!$I>+L#Zaͱ!D͡V.;R" E,jc MG[nB\Qt {՗d_.eNdUu"8!L%PY{ ճkRJu3"!-)^TT58!RDkN$~dRgHJ 'iHUSU!T1NhL= lH>@JtiDw'zأb_]Q̱zi=i pY58;,5Њ{}A[49+#.e!YGA"}Ky~1͔I!iD x3#%I5-% }=xGy\ )dgP]AE[9pgAPf!(dlwmf3zQ~ٺ&t*~I]ar(וzfsh% B(/SB]\_e|Fu6.r˪/ 6[Zҧ_^PO9l]?=,+>p vm"NJ [FQHemlyyt='E :QQEϓ uɏ136:*33%7Sba|~B~|T:)U6ˏ3:6*;Y%2,aΤ]8l!0ULSTx cU|Ye363#m'V?-I {-DГ0̖ԼZDy&K"Iv}:X:V$'Bjh7Xhp;*IFNn*%`_= I(e*!#yEr"*V2*>%#ab#wz#M\e95GaD&K Ƞ#[<KK\g R-\pC_!a*ȡQl_EYvIrlzXǬ<gʡu e瀔 #-%$#6z@FJoTqX*[ H=:y_yT7B<2+X1$"usXEO:œG,dI*Rz)@IJfzp)kTH'-*cq ^A"JAP ]CcV,&pGW_*'wʃQKIaQcgܦIɴ iX4"=]bAt/$oZ9ܒ\dU: a1K gke:ڥ0B}ǦMgժU mwddifw ~7.e,ʰͤYԓ`=+t/}^ %EC0'z5$ASgl]u^5>{Y~YcP*xfBx"jO#S#lt{ NVvBJ)RTH6VDT_+$8{H9HE>\A[ork_5i)+rޤ^#8f2&*Xa BISAZd+!ϻ.gEtYc +VpgH_ 6G OA(tA׸0~nv. %S6Ⱦ;k]bVI PX'C"3(h~.QH Y|iNJo@q9s,p ,WCr[oO`kNɲ )5k}P$f?xOa~gUz__5mT,UavJcdhr(N&莨%=iO՜ļ IDAT4^^ 7F%E\$vl9m佗?罼^'7Y,Y)"NQI$sg@DH¢ fw﷿}هkoU99e7kA6h%h'u)JGe$m.|N(a;Jq+CN04ñUGx 50N46(}H)G,hRdd2M aUOfM(!\މM@ ` 3<bF"CO,36f2t({i ]&dCTfR K8'd<Ev/NI\ s]Ӽ #)@ Md@-:si422bFc|5|5\m2`ix񓆘hT9M`PTKҰ_-T " sq0-,;%~tě V 1΅ JSl2.P!"2'7eRTg郟 C}Xgh3A֎58xj- 1IR:; Mdu5sħpTei Û t\GU *yw0X/ZMk1"s]E6lڊ$8-݈%ET0݂ȦK|ƕ׊@r&eUG [O9A4k*ݛ*48DqRrŌdLG'<] Up\*"b ՊaQm 8D+m zpa;׊R‹T> \@ϟqcj$FxS+lt|i,)MzGnϟgh+b̎iVJR@ sъD,TuSI\<WGz c~T",q(t`m,e`i^L Y1s(VnUu(GPӜ\T)xF˽{ۼEK%mJ󨿚)_@ܡ_NfOxn| )СTr~|ML{.v Rpăho%h)rl|L1 JB &7[AVVi?ꃰxVG[ۙpT,& b {KI~(Sa3Q۫5X)2f/oBzv"|8w ՟ Nx${ gN3R 5pehcYm˂.$1`<*и5U\$MC~%ŒI 6*qwTHEs63]Uco28Jr h58z `vm(DŽ']f)S0 \Z:f<@?k 1r2^d3Q|B!\} L+"{i~ӰD*u?KX].chCE|4&ak:T"1G1o5a9DG?EQ!W`e+㓐5!߅Xkâ*Z9B!X ԢZ2h~?TXAu_~:tɠ ~FKK H:XyWt΂@lu >H>~hie0Na}L;^~ T.was/zgHiҒJͥIov90CE Yp/T=-W`& Pbt_I N ()Si2P<(-)jxK8E9<`#@ނ=n6*^7qhTL`arͷ5a *B} /ó%})€R;ޙ+`g/Fl )b b{ 4pÃ3-e:MbMpIy6F|.@ ޷0^8p;HhqЉ0($aގMoF1|#'z]ov0ѡmj L>9ɖT . TW'o׶DZƒ}R c\Qg'W5|RgGFCPF޸i\JK`ߋg}T~+Tdr׷]p  H ln>!7\]t͎;@?~|_jnI(*T,~˟㈶_'xKLN"?Rˆ =g"X9"(F(ofODž㝠G8H&Ň`(MR:凎 8&wѭaQt|R͇#! < !}Od ~)4dQ+N845YtApH/1H$֮ة#A==G  TYyn)c!NZ# xGI~ȟM̥ThE xFF]]+wu[))t՘+˩B 2z[u:~s=2{;T l|yH:Qm8Q=s X媃Ƕ!w܆%"r=p\X| 42Dc-1$lHlXS8RdLÜ$g{ ّyAY?fr~{'iL8},l?A,YJڭIqnPgeqg<^0{AFɤ5|1c(B+]`y:RB8eXbH >9)? NbQ\Ag@"W6id23Ͻߍ0a(*cF!gmM\LNEHxTx6z'B|+aA3'nEb u=ӷ,NƫYyi3t@ Z=$Y*-=uo2b"Ud$("TPo{!k~x?%1WP=VL^*J8?ZsbV$ 03KMl~-6ֽ {бYE6|>D"ÑRT^`SYxΝ P[=xc+?dMȢ ]&-ئXj}%6¢Bכז(-45M/hΉ$`+qpYt]j>Qd_t32ݯ PA{<iڧB΁jQ9HI #3R(#y4-?KcYA2OA4]"u rY5b^~:6< j3w$ Ag#Q={k׮ÇOմ܌FM'Am E!(](8 sH^n%+w` $XÅ$p(0s+Ò2ςRt^T2EC2/ޫ”Z.(#5~aJ5- B>ji5c cK#FsT$n1)Y.qDNEjexie~|i8oR{^?,EH]*j/DBy<|%P`l9PFkكW^|o5&ut~_ӱQ3&4}N-ް=-n*U_}pH!,ص !'91L:;HJKsq9jpLI5dQ(C +9m$yHB Գ:0[DL&`5;P|vg]R*fϓS=|#SPT9FU$^m=FCH"cx`dk37b䢸н!c4,E= X C&cMubDZlڣcp , ڴ/l>_CA2M)u;KpG,=6/}MɺA3qldKoßޤ oSO;)GP&ҙ<±x H(fpCke.kos 㣛 ce]ݢ梗ldrF:$R3* -6qjXȬ(:\݉KiM:tgyu&PUGF*k&{yS$Gix9wZg$˫U\2H뫍4"&@ץ {̂[%mW;t"eiSqbfS@ @7ʂ2_^ZcP(4$_w]pz& CT+HtC+U%8\)(=y;U!0ݴ(IPUm3zB/55RIX< X_1lW<wЭIZ0"#B }f1$ ]{ -SpBG"hTxZYjz^.cF܈ 6lUFǾMѡØ< k!1Q9)yA ,&1&3gSCm{hhI (?7r^Sō5(5;0!pg )1&WB0V 00Vh<h1J1Ă9WF4#!%#Tznj?<"*pXr P`D+FP) 8E%@>CUz>wa=0ujOG´>pEiE߷ץpS4S [(fki+zUD;j&u<"2u>spy_+g*Bų F9u06|SrݭȊ">8&mldRYW`:n~R`0Ҳ]&&N{h!a0ǡޜ]UGVKw]yKciBCio MfCEl,S̢]f'ppOf؜^ c6<1d2>32Ah;y]ZWd(IO+CiH:s͝&L2W:OACEF.wXpEʤul=N?}q#&M_J2AR܏ov"0s~gpTmƒ'ѯ X0VǺ 0qIJUQ>zg1 IDATY"w(8XëT!Q2ئ޴YAbj k6q`WfĀ }UȺCNeL|g1c}BG) |*Ifuba8N2'Ʃ>"Txy5RZ 7݁#6G1s[ е|[9~y| k!lC>.:%;caQLꭋd} !J"q#kd +435wkΣiȵ0E=X9a1 ҋ#ml|-R6l(iR2/ RRąCaG/wAOl@(Hlz#3pgsUҫ+dɫLe/ vu 8 v* .A:ϛhZd6!y, pE1Ecd;F&ٽ]&lˀ#b>C70}xky^ ͅ6l|c7"K>~(xd@ &|k~n5|̫^sO. S‚itWz"T8^|,CP-t2B~ q#xv_rE:4Ea9]U>Gii wuB@t t!!w7ސJ'wwX7# "ima9iDTkؽ-UrZܓV&pHFpsN)1 Vϝ51, O 1xUMЈN02%TF4~#خ1E>>4,wpy AiO•0l uރHl ^[Q!8 ^E udo5D9BŹ,~j\z/ɞ9xwcP4 h8tu# ^R_uqU?- ]1=o"vnL'w<A{+hS}}JnB#y˼sJ z>aSLa;Cx;Fj@>/ڦ=hR8k/DC88qUi!{3I 6 Ģrj:- 3ldU*yF[+HCc&V,7bCh?P 1V|| +X*gak?> 7a%JFGغywbEx?Cְp3 U7R-ӆ"' :Jm6= ϫF/ro[.[p4`g#Y*2"1s͂5qXS%Wol> ^xd8Ayy[#J0~aXHRULn:2 ,\rY'e0iHGBWC'0i4q47WNh+P4a CY*VBwAôMsF*@kKm؍܂-)Ԯ.M%(kBPt`sum;PnL'+jJQ)hwȄ Yc\eUT[7L1& dWμA9;wڇ {%'ׂ-j /q8G"qdF4,;Go Qtz!0ىD"ߋ]%=-/9-_}/Ǫlv8Y rܱmmwgV,\we<'k½φK#;̡uN+T+jABsV.}i &oȑ1ow4LӴ.IB(CyYT@t(!&Sy$3YcQ3-|>Q62Yb-N 5ȮTD>DW(xzX]=XRlϞێ9s`eBW͏܆?m{÷^9Kgg&h)>t,EUDǛ}]|*ܼ`e l\뇙axny 僦;vj mz9.z9(viuŧ!qr_]{&l <Xuͨ h= Ϯ=Ԁ߆i"oJn`ktIBt5zq֠F܈q!@RU.lo#<)UDtMm0l7 ǡ|Q|tVXNȭ(ƫq ~ԊKE5⁅˿}?ܓ.~g~2<{k𕹁>S@ZA |%]KfDyՂ|kg S÷v,))~bl݃7\HhŘ ~ m9@,.sO-Ecq1?^IH LF?tmJA{k0Rmo-Xp׭^XVX&ߋI+QZy9 8R#fbF܈p_ Z"x%?Kc 욏@FAC+v=UxyW$v)şR5PTZY<'`~~~.JPjnQEhJ?,sX-Ŀ܅/Ω6yx[_^?@Xcihh?ޛ%S1 9b$v+p+Γÿ{% %mØl1OaIv XV0p1|'p ,8۶Sç ,މ!<{?ޫ(EBncw-CXG:WcYvU6Si>guI/ WÑW%*5#LDsl1x!gp!6 :?mdfxc AKzx88n/qhϜCm\SGUqm7ᱠXgqXsh:;o92t`.J?c{q([3Q#mxc8g:ʃ**J+pKZoϏ:((:S =# o=v%|L[xMK"l7' Y祕m_``'8g{K+z[ L%3(9#oK"c zтX8a J:FqrgQf=8Y\ RlH$,۴P[G["6NìҞAi@H"- O LQ,wf~~ӄ 45p(l@֬K *OUQR/J_Q[D&iFH^*q-cz`^N#biX e)>ReGHѢ}vfE0utD^!p/?!'0d9]k#Gi\p׬߃m+7]t l8r6n>k@4SP2-yٚHNZC?E "i+P[ ks0D̼+4%yp_B7}rW"sgH" P2o0N- E!"3k dfbnT݊+n (*0S`u7/AEhfک6 ,5۰/P]v^.RrF 3v&#‰ug,BFiy a̪p౉n&mb,|3䷶ t|[+jK@TNlG 23|Zel2fr--!q7[ zaԔϐ>3g@CM uGse_XomY>K\9+bo<ܹ.LeNnى_|{(ɞB`͘u&Dii)pԩZiCwQ܊߇vY!SE#_6 [u3-o׹cVJI2HNzӯ񂔞p7'_/.D#Wy_cFI*:=㒚)yPss-*7 RbPei yp% ZD3 G.%CO@ΜE^C}@zmᨑ13(Al6ut;3HF32t2F]a^j,7ztvlBw(&(e ÕVn"8ٓҨod_qn8.dӲ%U~t?|}RW9b3FvYJZD$hcx4ېPn$빌+#HE0lyMВ v Or} ~~F8?ډ#gtOp vx171owR.nrq_D2pda'%ɿntXKQC̅`݇7`ߖCAr1*OGm6Wi#9~)5_Efÿ°!@OX:SFџn(FWn !x7ۧa"sX8o8?w:&WH{)r(Rv g:#?է>o 8f^PrIǑص-@?Qc8ۢ[H!犰u.2-)ԃ1DetO 4|n@nitDۛO/,0%v&^萘&E^:4eT Ia7W{ЩАOC]X91zG_cOYG8cG'vWCD1ir\ڄd´g᫙{/\ DxEHr8FdY94GfBt Si*iLҺ {=cxf4bG~=6;ǦAw غY/ܫa53N8RAd+U!x-$|A0K)ZP/-iaB̵5(Ov'GĠdff+F7)BH5/"~ E\гU #tut5}} V6ǎ;Ic F (J\l&;&N ]'J>: eHnQ=x*!W5gن9t|_E4#47 y۷![uD3sI__zk@xBh#o)fh2:/F*( U֡#ۖKj;6sPM%rzM` H^87oC/B"ߎZ|J\@EF%uXz:2,3 PMephD&. b(5=(=~8wO/fWTm?&K@we Z8s /Ĕ2#i~KY)M-_%30e Kɤ(.➭Z΀[:F[!U h)޸k*<\dp~}?MF,եGOMF8ϙ!_|?D$&?%}hҾ^0,*L#rytO$I(s!sGl_.&}F [To=s} Vʻv/P gwAp5uSoVzECR$Mĺ;ؤtyc5 z咿%n~s[dN,6DŜfKW != [ؿcb-XUԿK 煒<_Tcp%:ѕKм`I 1΄sz\ ۓ pL R"_84uBݯA+p~~T; @3Ť fd:[<ܡ;me\M35+0|7-ҾOƛ|lu3yRH~`d=n }idhL=Ͽ!>S}>$ô #&OʵC/E8sY@ #1]{{+;v"_w7kb 6z,(+sB:bW.AI8X0L%65v6] .Ė#6 rc֢^ގ|d l3[7C/fo{D*;=s^`+|N4\pw~`2Euiw*H׭BO"оي9ٸWVuABMkA/e{2L'z6Q7]@%{H[9YF|9 ji=^u1͛u.j͢`Sɓ > ̂g!pm܂YJPDiXMfNIB +yV ^h+Jwv| "$qk0`6BV7!*0|=B:sh FЯgJgadM^킆H,7ǩkN<G[ejҚ ByУq1VLF܈Qi]< ~!w{ͻϸ_zb ή}G&Y>>z(c`-^q1 a%BAr/H:-|)Duȱg =dt(:*L"ێ0#=G@Nf6^(m&Ƹ؜V`kM3 a[c-Z|?xZlf̌Hz"o3,2!1QVNUe!-›J:^]\F fBǟ-06AΞL{4rTuK=$Pi.9̆ ]+籡czH=dž/Gl`/NP"Ú~Sbm:t!0P&A"q:P.~!>/&rװ4; .4_l2D?EaG][S?Ea3k ҐY7d"piI|yG ;о s[(3Ar:7nl\1.?i/z \F 06 ) k*d@X;!U =ΝX$D/a>MҌ~ 3Z} l)PMws WŮټHr3|۶A>Is;GYLEZ.Fp7M d3` %yBKQv(4ǡ%uK$fEKgMf?w0 gHquq?ByMc%)1O/o "TMwl?yYqi"=4kOQFOpb@[rxsɽ)PiLkv+w}C!y 6{躮L;A7bIIudɖe9Lf޼MޛɬIV;Sl%.-^؋;)^@io} Q(ֺxq){Ƨ a LϞ$H_>g4RDdL|X8]$*UXXж'xv,Ni09j4L)꫞HQ.d`0(t4ɒ#qJhP1j:L+y0_kKx c9ԍw|%mن?؇8meH'rP4>(S+_UY$RY蹜(۝=~eӫr_CO[p*J?V=Ssx 5 Qx_wAB(--oFbC4wHb2;놕ctEId$DkPjaH+1t@-e!NER(5&9]&#m Q(}UXKYKTrBBeWP~oi%(zhH(5 NPdi1b"Z$Q땮ն'PK$ (F=Nvn!B`71{vI$R7e!?Co QJ$D11gK =<+q/jE,X>KX iQ%a eIuϊ{5H sqs+"1Bw>VT2vd`Cy! 0 ]@'67D$ ЕGjfM!_L/̙3C^ )A zj /c웼+l^B8d#!GR/!/G>C/m1&),oNqweᑕs#bd9Œ@܌u s*fYI=x,]իK/?Ρ5avS%hn#fL2[%1p`u4L_UK#r@j~=d>S7(]ę9İ`ev\rGn)<`9eX'rvrC.xHwqn&1)#z]`A 0Y"h1BUBӑ6t2U#}1ǂ(qNOskC󎙣O<+HW-G{"%HHMYZD]QձoMӿT2!6OQ\xaM1,c'jSJd|fBTT ~G6E$A]B*&gȅ *rD|RYYZ(Fp9S±8|"._?c*0&=!B0Ƈ7c}^Á~,ZyjKqx'xkňQ"VjL勭_] 3&b!Ԉ涌PsB>"#$?b܊h~m5?J fuu5C44446jjjٳzbBd Zm? ul=&ԍCݸ1(!9 ==A ܃w5`{;q.澀/]w1Ă r)6VWaps,{Ν.b؛+]#ꖲ1+,$3ztH<(67;B"Svq.Gh=&28׶#[>ӑԌd:3l$Z2d0Z|7'&lJ&f0[ܖ1D.n}hqϓNTRSQ g|% mjjGQ6ƶ^#1諌de !, W9qF el*bX;7FB=}eW=3 W6ez#1 *zG.' ˱lj8]aNW!˗:lٲeࡅ`%7>N0w2l;~h2IJ$) -"E,`;@rhх"*DZB+y&G7a ͸(HégZȀvI =rYI P\=)gqVٰMq`G3Lgo(3~XTX󨎟ZkJYq%qjrMX$a=z{'Nߗ[@7:Z-GaݔkJQ˩A1)" j,=]aPT9S:UBJ%ε&$ ̖N/~B紺QC$L`A҅Po8ȗ9r@B\Hʵ(<$D4b TT _zatHy1"^TZ6z qm@=+eKT_ ,.'N-e`3"$$K|+aRd9I&/T, us7oa2#?nsH'sxtq=ԭ1#nZT5K]-IV sq}/u倨QLNaAP;uK"иp Ir/eZB sD8]>cB4ETm:?u;`Un֛;[dfW4N /u5x-! R3ٿE[H]b۵ ⧡T;T8{5t?IʬQSG ˸B$[-z,HsZ& 7p牱SP3WIY5tR|Զd`񒼀Tln%+9,$nt-2Թ>$7'-VT׀l ovB4>{P ,ZM 299_g-5>ڈ;B+/!L-Y/#ýWoK`ߍ@@ґJ#UTMgU ?>?ο߂KKGW I T o2ŨCI#-sС.5< ,ZA>dO*6 IRJ @r!͚ԘIPdk !GGe{*}xAbLeuRDh GDM~x˚--ĽE{31D!QM]$1U *lNXN@Cv|"zf͚+t6L tPn5jrAGA'YqxצïʽFZ IDATMTaEF`Ƽ AJ\C94]Ĩ*T ota9u>fx_>شEVU|Wob?H*Y"tTfw7tH;@@MQ%]V6s,[4Dnc"DK]tQ2a/7emenT'QB*%ΈYIvg% |q8a0Ƥn>quKtқ&,ҡTTOR wY}̂~3/|fށL2ظ\ckKû@HEVg`XX7gL/1ŅA cҌba׽w lu[y P!٤kGf;V}=PHtª$dLXd "8m& )ĘC ~/ 7Ex- }2Wa*omQSUC"CO_ŧd/{sV>t2ndVmpb$9lcC, 4ڃ{ԆnmDKʏscr]-VDX5L$ludstذ Ke"t|Qw  {, r(@C4㹘5鑋&QwSw}_N\a?\H !3/¥Lk*{1.P=q}.lN]"Mp80A^PT ބo ں<5# dzucIrYҿ|'=xG0EEkD\υKqe@.$/^Zm^E肾Im!8K֬XZ ݏVZ ǑY@IsP4LpN:EfkZ.} FB C+.T1 dQ^#CC+gpct5UU;ucQ8yQ[:sʞd–4D2Nm!~v+Z-eceXR)yóNm:A5U;5-HոOjηXp)߽di~D.嘐iމ5,p@Sw:{o-r(j-ҽjgC؈Z=-0KqI=z 6'}1[+;u,/Ѓ^ "uf#~M(49V_>~񛟛94we0)gJ >h-EiAKs4"cWraEjlK$i'84,W؅AAe =a‚PU4Pjˁ|+N>F'j@+&8`MRO"g/G?4f~c:^_{v*4ouOAw2ݽ!"Х,;C\XRREK^FoLq܇%N=B(/$:Yج786ңcg]ܳ.{* G ;l2qt\50o~4۸e1@Jxaj((ElsYYAi} fQ9bup@H V&1&Rt1a@q7'z\ ;&VdD2r!2I۠ :!!/pBR \x >ypEAee>š#g.#!SP?ԃ] ),x^WM1XF$Xň󃢇%Ϻug(-Ӓ*Jbm1δ< Oi:'{(zL⋒@lGp;u=r8t$cPG|WhUa 2Ѓn!çYP>e>WٌD&])¤i1:"aX*ˀ؝k96PCd=e~fDmWV0u B9'lGJ*-Bį  p9!MH(\:mWD`dSH$0ө&d|+?a?5m&-ʾEh(IhNn+&$%K闾ǧ J#;1d-I {IX%+WЊ fbZVr&uY?pndֱwb)4Ԡf#olG5$wHSƍ8d0"m86;{ rYϿ> pcRU1T)+Ƕ`(4@ͦaX[ُa9O}jmB1(,ջ,ɬjZgPlxcdƮc {m͚ǘ4I烝 іO%3yȚ=w r 4HzN̡Vt#'-* Dzm*5,j'<%$KQX* c-=t6[>#W CstR3/! wkhh89o}v@эaGZXzSz>1gBCkU\8{҈o&V )=F#:R6y5+}!ĊD Rad$ZRn2sz0 !)FXSX<(Wp{R1\CO x{倪cՂzztgeӀbl9 &23l]JpC2[`\PEEE, d|^Eaʰ[q\aM _4*ǎCvw𧯞G&u{\Ø?Y_đh|VR|?>Xg4brCaEX9d|deXxdQ6ZoE)/y@ m<M*T}~ 3u[< sȊI.}Kq oZ996 G׍ޅi5;o}QO&~wf ג{Z"^~c]!t)4 @@p!&FzRArYQ:#$Q)Ȇr^ZvZl߾]Õ+WbĉHR0aG$G5ՃWv`ϡN"Q&< hi O!Xf'HK(QCbՋ_&˾<)I$2b0ҹ.oBО>ρ-ɶZarس}Z}fNdCi aGW"_@ЏqS?Ҧ Sa05vP9J_@L X /^g4l!fAvbȗ [">ClPg脢Ogr_)41zvckQA"l)dqw]䰫XΆ:%f9D'k )̈=xfG%CW +yXt)ZZZֆt:lŹGp\n8*P_kl p~TOغg#>i8ǢUm[V*}9T!B~>(  f6mR&t<*1[ŎLƆ8y=NZcf@ɵA|8w֯_/.8  4-#ç*gĴ1vL1"ˉX^]/ZV} Z2ؼc4؂+m2nF ccW芘 D"eo.--#D>t,Gmm RD!5s!~ޏ#A,;Z:0P^^G}TƮ^;w FC6 CBE<9m.Rqe\8wgě7C DQ3c1? 1UG:ze"/0m(}mr ckK0jJ)?k?jj?; Q;Va[B}CkٙF-YIqd3IyaxҊP~[P-~|˶I &$:AIKGxM!{vסFk/"aK `NReLe~KV 6PĞ]]C"/\]ׅϝz&gG+1aHL6i!lûq%nԣ"~g̤3LHI!Cް]#Or(rΜ0CY$NjJV0`XP!uy?~GH#<ټnHh9\U `w!er7_{ #s*Gґ ?.$2NcHM0yx0 3ǚ=i"zO݃ ԡI0<'l< 0>PZ]H|~w!`:TGSLy仼a*FMaA%ּMDJJe=YC7p_FjS_7Q 3x0-y}.t33{6n$ZuU}U$ye=x0s9()V<ÇOG<3NĤE0SI[Ra3L@ml#<<{o&(O<f0`7 키Ðd&Du ̉F< PnB]e|niQ ̥ؾ{,&L PޥWq%e0 8lC2ǂ5/%R3X-!bjac&9<5< gZ_7+02JϾyFN~+x?>lZL|B:o¼IƆiJULw.CCa + >+$lswtV]~?yNӗ3ptǽjj$Xhv%Ad!q&OD$Cل_u~!#7NB'=_\ʅ4cʞh=@fq\#*g=66"gsgSD\m=GqP#Fΰ )Un,e&`]|I9r{GWK\24i*++q1Ԏ7j񽎟'O1A-S}/$ۙ) a[p>ftIӊĝgs8Xms;#F~;|;EqI c8p@1cp]Lp ,ONiLJ;?̚5K|`ƍĆ@b8'\7?gĉx1cĽxx<.fqm_(yϹDdlܸq=D"!gwqs罴Z}pt>.9s&f̘!d>H$]:׮<%\0ؼq#fc~&\Kʈxo^Ar b|#m޳I6*zy |յ88n>1KhU ~&D{-Οn>p9@z4Iջ>_p444q3;vӧ- TN\L"u 'ŋ 7Iʕ+"DW2b\8ǎ+ ~=Ed֭pႰԸ .Jq"Z0ID {5ko]dS]p[+v}=~.)}d`ug 9c\kqcۗ{SS/_.lb|f a "quC RkB"^^ip9x/^"%ll+V_b>xgvZqlzqu5q;ommmb =Ν;bl/\P%F yg594'4 CX 4|l;ah@"Y4gwÖ1vt)@:cKMgr64D# N-X,Fm3-@T`X7hH t#Z8k>} r\84TrI]WpK]<'>y- IDAT@,<-s1* Oλ{ I4zA+F\x .R$4\@pxMQlW(tZm%ԌQˡmYH\6Hb\ƶu;}gϊs]ZXrgi%b?rPbr qCcV=Z/ϒ%KO>$ܹs1gїo񆸎:Av86l lgHvH8H88b8?"I V=~ZOSa5㽼b#\n @VnHhы!NDK$a1]Nž gm&1>[>xyLs?8-KmmhFq;CV/ xq1>#$',u7'_Ĺq,N~MQXBa*r8YgS-D"ɸg L |=A*%z)ZUt.*>jt<C7_0 h\!! "Fl;kb鈩ilv8_SX9Fhwaqu-cQ$r\PX\k'W̅:Csbxw1 )pUNp'aqcHx $j<_OnG.\PH@_z%ŎIōm=~v'm;?étFݾ/؃)bBDfPP`)N_5J\`Hc8_Oxl7̶gHn^xAD 'iIZ}1u$~\~s#XWٳg Dw)AlIhqqM"I?Z5IDz-nvx ,-S$l}W3Db³pErw%Ai5^77U$n<K\3$_338۝}B ݪ<73&(#<"ړS%%.1}oٲE3C8NH`9NP tCZ,yiwDqK˥;oO8.7.; >'55sد ۈO~3<ƌ*!)&68ُ%{w_Q7oΙՄWQ2q~~$6Њ1=xdSqY ‘2o ~l>m1S\Dk; 8s'g7xZ )Ilā2 C o)n "L @$`CrCB2N×K\IPx.ĮDs_$0<\ć8"501qnl^? #8y>zq.xc9V7Z!o;.|MAxO^/ml01DϐԑDcVC?{k`Ϟ=]1sq,kG/N^#7;:m IITyOK>13ڹ=ѧ36oDȡs9mwc*lK<.NoElJ~4RK,ڌͿ|A>x#FB]fl:Kqr|!Ӄ) 9n`P`yD=ƁlO֡`BX)#nӭ4ٺ\wBRleC&'!rb5?4 Eӝ kEv8ZY{\8閻bt {Ռ ? /\ܿGSFǵJB-@BVYf( /?я-!9]ą}nP7n/6l7ZlE6).\]X{u ?n|Z ^?→j\OqvYr$}7硵3z\={[q]lOm}y|u7PO/ۇؠǰ{!\n! , ! @HJ0灇aS5Amx&ads  Hs+y|N$bLP3}+tZ-kRq삉U1oE9='!y qro:kTGR^>O$]j> D9S=x0ӗD*BEs+ ܽeZћ3CxBnbPǡR݊c'/cq[Ø;qNI:Z > $ Ď.h\ޓKh}Op_|٧q啳HPi[9d­d+cՃ pj~n`H.\۵կr;q4Xsѓm< =HKNzmi힟}[ .ź߁2),^<օرe2cj߳4"ٓt3]_onlZiqJag7d/]ع."IΤT_HX2 _= zzި!ݿ 9,ʆO\b$݃ gK8 >@Ue0{60 ᪩X1q.Z\ 1:VQj̬B;/N.map3H# D}Yh.XVh*tIE:E:UUxUY;6}7!+Y=xUy @_ǩ'K§#EQj`Yms z2"h:~>Xb=xpAvdC9X ި!w2/CE/T#\{Q4*T Gp(t>Ox|\NQsꃚoη{Cs@cќq8x]8ڭ?.Y_lGn`ڊ9(RHJCe|S_eeEEv?Fc$\ea !+02%;g y0tḕGLW9u|5sWc Hf޴9KCXn#[f fJímTdV~X(0o~ Ę1"?&-Â,)¤mPYZ]8qODEO>sw[V|6w>S>FW]Dh\r,F{`:n6lɆe1's\#'jrʀIQQ<܅#Wt:<_ĕK1{b) AQ_t;ZJAڵ"+#(-+C8w ҙc8DEX)bex0\ t 9!c @*tD[[#f.C}'3,ytUB6D*Ìd0r)$I~HTV'g"7-=:vUÈN_nXַ՞NPe(Q9׆:?%0L0V6RKZ.Bպ -)G W/KE煊"\=Z=AM$2jmDҖY't| d I)%X gy^xazg@5MOK Xb\,\Y@d4d3I"1}6@.يU_/^IXad t3L^U;{&)-LW/DcbxhD_݄xr(H٬fខedasٟ̕ȑ L<c ma˲",mD>\TMC E* "D[]@KbM-:J"4K) ۉ*D ۀKjiH0|cIP. 63H㍗]uܐ#EH5M]Hh(-4^w: E7\(~0 *%' Em!0y x!6;l H1U{G Fy1a\T;ĶX[u̜I I2[a dKcpϏL*.Is TCP}!(HVn]H}"# gȡ !rvmI--߶ gYH dc77z~N}k(>\VMfgPre%-Z,~auPYB?qhG: ,߯"%Ēqd&?$~ďnz'SWŏG6CPw@ɘ˦+vX@roɲ:@, @C UF%y6+$" 1s!T = L1s6RDXLlaaOc8t($sb2읇B2,H_ĠD.ʟl= AaAdM.hNvuJ po N3]3Y* QOa82 !Qt\ Od- sY )VEZUH2>lWcur{Nƙŏ%u85 !%Zc P$[0 jTX(i'Ǟndf&[Z5n&ˡ _ JB̖g*-Q@FC 2-Jrz`I8?G.%zJ u0Va,Mˢ06;Ӏ];>+mCv|LS,heh,ܯa\}5>_y>l~8^SX5F޸]b rȘl*!q R!)ޘPɪ)8rȘ#S+9D*Ndt+a lI)Tϐf_pgL֎Wo=x /"`]<=_VO.F&3#WQa!.cM=m ͗"GQQe@s+Ka۷;v@,ٳg`CTEFR44DB"$'Dܐ%"yddo*4S P!\*dΉT|A(D>A&CR:%h2,#T: sr mF4JLЃ I&HJ#P6ȊPNwzx(ج.W~=#jQR6=q uU1wtIB&p„ ()qާ%qtAaKF9P}Vdx?= V*lILˡG ONTQUm5c7Z 0I^B!^H wqorlْm^F۝[O}߿=XIztgk2;*g@VȊAĄGI;,24l)mȚ)ߋ܃uXtu8{N8zf]> KιKWNS<&q!9}nCxyS'*f;jl|Ut+npP(hp1/}x=?Ə|5 ֵ`ي!ܲy_ ԋ'~_74V~[vEXiy3] CCCHRGGnЪ7;9{Q-ʑ5v<$̡p;s fb*l;$ nhLZʘ+k()r\oٖ|MgTBׁe+1\;j(3Eq%n^|t&6=(qs'V :6=7g[_)=. +7s)9aG T{nMxg“=.}\}XCxYC3!9& -NRjz2х0!]m))H;&u׻8PtoCIwA :lYñv 1zI0s)UV~ƫ4* 'Uclpb0 crCPQpdp8,Mznb)TygBߦإV!׹ U|,Pc߮8`y˱*6:vlD+pgm~k+:Vqu-mflі3?Y|&%ٹ:ZAܲBkO>,V4cq e1 CH@!$^cߩ$HV%,CJ d d%2L8ZBDG< IDATHN& 38OB¶-UA8 !C(bI0$ј ` #by"Lw}7qkk NqbZE9Y/ G;m ` f`B|^F8edQV΄ nEY::Mҋr5$* A`bY18U bo20x C2shۼϼbq"A$eUD(q8@6-cW$XM4chL"rLe3)^^0AB#2Up #jՆY-UJt V .87-EԆ}]'sf~\=tDق2 uuŘ={PBPJ颬 V^DTG4DyTG_<))^hnCȨL:AYXM!RCf`ԄDԅ;vrzzҌuN*3s437yׄ%WbY1kJ V NN H#Q׆c&L: JܨG6ۛzBؘ7GE|WP]jHp;38?9BBJ'IŊB/d C r>d3 5GX@NExגIGd̂uT2xmgPڐY> S+е#YK{w``s2(Ì/G˼)n||p̙XbcHqC5SX+[6P-uRO?Eհ3[fbY3|.|w+f7Ӗ1E \=Тp΂:T(?@JۊC2W~$ӁDAӏE9j61lגCvy#ND6 U Gn0@I2m(Zr*l*+'6|*X_AWy+V9@XCB`+cWaq-ްư\J !^Mͤ3,H3.MB!F&U3{b(}>FS٭\ǔ6 ~,>?p=Vfh%cua]mV!3Wɹ;|:H]a 8 [:FC $u%K,YnT j [=E-d'O>۰aaadrp 6\yӆjhk^ǦG3p>?j9P45a2p*v ,$ex ١ ;+)?<~IEk daYz ο w~뛸gt(rD"6mEB\1`Za]u; 8hted^qF/kBrYJ1i%VfخDUMB'jJy:]8jhWIʣPY 3"U.d>V PxNubRrC!`H*dѽwj ,B6YyMe[[~!z"}A%˩c_!OMo@\ہN&3[@q;k!^{ !՘:uR+"t0'+w20Hyz&ݘY6YA]C- ͆oyc" W IU7! VA;@"rv1HtB+Ȃ*b,OF9 EBPy]l:Ph\6Uh 30i#q>>t>ڄPysrZiq Fm-Suط0|kQSi 4E,XMӄTa3@eX62{}:C#5S/zt׾W\{= 8[lgdk<"YlP aK QQ+$tu`p%5An1#l/lfl,$օrT7… O\ SuH)V'v!AuvôOXHKGX*  #YS'& ӿ"pZ=̮+|B IBr Bglp1V|LU;d/2kS$E,,OV-x忞Ga Q!y;aVI7ևfU۞sF@n>qʮoiB 7xjmzeC5w6i6%u(mE|dq^r$!=cQP!d@. 5}P(,PCD!=p\\G.A3S[B)[gNGu]5,k YLi2UpfT˂af-8G`Ko"yqX'Bι){POy9Mq:2CbӒ5kCMj2gl9 }0#[vs( 8 At!Bu@U*?IYԮ]uVaӦMk"ިH"=$u/ `ql/zL,gs(Y9s!9 rSpoyD]fXq1a ddT2C4f Jb7}H&DH.E~CCػTqt! )` ҍ Whl) FyȔ6jA<<.J9;G㸁0@_17T _oҥKq碢s~qGW'NɩVJU5t{|29 lEk:Z便˦聦K -;k’jpeӏ6h=R,j4JTӢ.N#S' ES ܘT-TlqܤK ÉLL20NUpQJϳX:K bX<-p-`:24!܄ @*|'؎1~Ga˦ѫJu] zLruXaЙ+V!,s-K\/S.nL*CI4\]DN4qmb(Y<յX~#&zKӌVXh- gtvK42}<4~ڻBm:+ckc){4zcOXLdGc'jgӌ6 E4c 6:4G=܀+@\7pJu~\ȏ -O3|W>چsdSdz '~D9ֺfd>ixpҜ1{,t|gcA~dHGtp2O? !~z\x{PSO=Sbbmmm" %T O>$V^zәi><ꪫFqJXMy7p 7 ~+:}뭷~\y"_ͲsωS9#hooNj/;?r,_\Hmۆ 6m/;;:كo|^q}3DKK / yW²?¿$fY,&I+҆ ̙ٳg 'WW.2FCᬳ”)S#wIcNEkVSSS#ٷo%\"ҰO3-|_.Dzkkkb wɲ?r7,X@/СC>0l,kiy9FzՉ]/"Aql21M_NM@M/3Ljegq7?kafYw`%Z9v .^8s"Et…b"J ;nF\|p܌͜9S0*s%"_.p##Śpg\̓iX6p1ׅìYdܹSlL<7@.|,#sJ?e3)&͍!A+7zI2",IЛH҆ +i͘1Cԏbc]d2Is23|/|IzW~b9}ɺlm$Y6+7۹s状5Annۄ$yb{-ӓ &͙ctd 3 1v3 `ҧCcceƬ?J̟u!&͟%X6Ifn޽O;4q;{l7g}X6~F緛$C:8{'U֗g|67dxpaHc2d"I#DZ׏遼MsN^>MZp n>#˲Y?ι˱4WJswo4o~~׏(-ye߾?n_߬OOlWJsOÿ~iӒ1?vɟ~QΗw,~s_OҲ}}Z<1/!Kq&~,~5˟~/trL~'QR3 &8&:)纐^~^X#:}l"2l ލIfG;)W D>y[K.rb0O> \J/]L/%|}JO>vS*"8%GSJ|Ƈu7J$҇ WZ/7//RM^Cz Em`|ߙ?i3ߤ9+3 g"3MZ~kF҆eli3L6Y]Js>#Y6ߣ4iK9#S(c{uleIs~|7 (.7W,?hMezgo֏txt)˟L˲|Ɵu&X?Qdp9wq1qDZ/t?&gMzBopF1\qWa*ʒft?猏9t]$zXo'\!`x/氩I38Lַcra|f;\,#hQ$e.hL.ѻ.brUDٙSnnyx롢*#ʎŷEM \m̛\+d ѲuO$< Pȓ: A<ݙ(ueD3_:e4g|%w_BW 0M.cY:Ƭ<gx2=| B>364tx'}.BHs])Q(v8ߘkF9ۗ4g| 2+Ƨ#{yHOdYp4*p*"%;"Eo o>;(seG"bd [yl\D<79wdsl$K 1b1o8w]oJ}Yzz͜?~攜ChTk]*m,,|ǚ%-17lۛc(ӈ9Rzq7l4_a(+KZyb:z,z<6XryGFTN0 ]r].WAh2ZsiIir?k{Iԏ(i:fX:~8M~D>#QvI}ˎM({xm?J(e#NQvIԈe<{ײB=Xh^Rs,4ߣ,6%F}zFsq3XB|pcG#.p&H쒲Fs8ڼ8?J٣6Q2n&cc8F;O ǣI<4i I #l?,W=7Qa pj",;#kz @oU,W|Nv,X=TI CUmv-zV3!2T$d%diVpMvق.Fo*X]rH[>ͪmyN.:v!Ox k^Tj{wi!2šiIhB^cPy[o9'D  @IL0~2s1s-ᴩYIlنoAW.>d- uReH Uqj'0Y0ᇴSeȚ MlӂIDmz0s&\J=C4]t s eª`\$tBc؎ byuW"5n3̼ՇW[i.XGe4 $au-Âk E1XfDI94L u.s61Vиc)AS{#Q:9pD$Gu]}i Tͫ`iprSl2ǀ!W .CCxє@Yt[F( e+XR[cqBk1d#ĺp IDATpj`Zwێ W9zH[ht^=>6 M:ݭVB4TX*\ЀGPR;6f^#d̙ڈo.D$;vk-@ V3:t_6S[g⯦ǰq|qK?$*XhT~|uot] ,>=7^ޏSS`u1y 8 _m|xJ=Φ.r#( tw/`tA)Ts\ < ::#+ā{vV,\}l`J[ViKrEKFz; QA =2 0 .H&.prFv<]X 2:>w|}asqYe?l 5g(Y Huu~~n'^*pam lg>نSXpw:CHҺ(֫=x% i^'Vbb~ˡ6+=R! + 6%{QRRаP,pG t2\6 |b%43tvZ nX6s_9~?pI,D W6'P?Htev`PgHC+xyL!}Y3T;)k /[ !6LXYSGeY.4#*!R7[⏯2݂=KKd5;_h,Ҹ6Kø=xTCX1Yр%!`P?¶ Kښ*ܾ 3=;.Lx eng7 'gK-E㏺ Gwb^8g Kuzz< ܗVF89$Ǹ  EKUH"J`G14pNٞ^V%$ieq\ѐllN,>I@cU+U8ֵcmWU(L 8[ĔҲVoP p \X݁p#@׿fnm q߾<R+.nuY P Q\:xi_']\eR+``fזB0zpwg0%TTӒhm1G:04cÑ4YUe!(lwg9cDP(<l( DG526w) #giz HPLJq"HPl [u8'C QjCXk+X^Z,qC!` Ֆ1}`^1Q^ h2[x;/Mdq~2$q28y[K6)=2J44KZ;(˳狧m{5.`],Y4kԑ%/ճgS=3n,bn|8c{̆ yX:rlz6YW8(wW6== nl X@޴LՕhBd19w\Ԋ3 |ٝ7o?\;` R;.ˇiS)W+cUK]8wV>YnC—weqF|gI6݌:3onAjI\S!'[۱-2T=L>` pz8\N8Тt^ @S_؍| Ёv(uN FqWaX}u>yTnxf/u&X%Vp`?1@2L)üeuXMt%,eď^ۏ{\$}eׯa[Azh^2-L[h2I\W x?d 0둽xXK8}v#<- +=[߂OnƕZSvCڭ br|%!\T+7>pTK&PPqՂ&\t7/Oa+ɉiU3a}|[W^J%&lEF9B n7/ b*+Mڭ{0l§#B.0/ۋG!i1|x^ߤd.а;9>5 ҡ %YEw,Mo07#vu )b$*:=xP/dR@P>Kسci}7νhHnB*U.#bvAAmA!eIU 䲸kѩ0=cz"+cb UF$Kh/Yr[;f$pm /F[W%I` ݋ʰ.ZgU)@n@ ?e@:_U1h)=67J1Tحi|##c&#yWd@X{D9.ʨ" ch?u\ QWyN^=؍0*X^Q_8 NHB'Ҳ't @'y D;u,M,Lk+[ ,ρp/Tq5U۳,-=#\Xh)k|r'! <kvHᆺvwm@$ 1a8:>bnNJ0m 7W7cû*oۻ( ᮃi|`n6 fO,êGX{yB0iB@CJ,'S%ϗ5Gkf],?}y+Bsa.MdK̢~-ޝgWݍﶙšy{p] M0Fd$Bby0Hw5qϊ3oÿ dDy=K)2"avia'=MTe|zT`>Ht]iwcpSΛ"HUXCȵ=i"]`Wah8GUG5]t`!mymƋ v5|G$SYb1:tf|Ab64t ^[z: >]7Ϯ[\&]2 ErxP^7Mͽ*Œ"U Jư\G_ ɣ3h#_΂]X[8Ɔii !3=НQW9>^l֩S@3@7=?B5i҈.dH5׈lAdCژ87?zl#?_9ڌڃ`ǐce œ$f`vC` DP!qMCw' `aUSP,Ӷ ɶ.\ژ܈D1̎*clSQV;enIz2|N;QPw&|b mDA}Cњ@q`$ 2x"q,Q[M4QQW?_րWr4$5y Q ,E$RdRuKX(Ϋ#7{ؒQ nC*=00 !+ÞGv}tYN&I]6h3p9X0?f[w`!4F^ V]:aE\H{7Op$|\G}gUF̬tJJsjC.~ wPM˨.Zja_X҈mRrY=hpߦNj[Uոla#>?t:pÇ5]C?kvwIrwAtOgz9k&#]C6ke7TV o?_0<ri*UrW/0<}&겘\.:c_~A[ϗ hz^xE%~|2⪁ݍ'#`_[gUcKcZJa3, M8j;VS:"v1*aݞ.;BHypW!$xӛU5)<u3 mi\l7gO¹3[z,⇛{`7Kc!aQm9 ͌8Ed\u^cVk 2ݸ17G1"*6ٶ,4Dp]k=+xtqLX0˒d㾍n4 W:6R:UhW!mݸ^%[\I~hkn5n#UlюQٹXێ#.ou3c7_l=ݻg$$4 ɷ(ŭ-ޜpoNܶ!V?[mdsx =^eu|Z9\x}q_NH ztS؛35] ˉa g6VjavX#!:ܹ8@Dڲ&qQ-kow%:6ڏ}Xӣi2d͡42ps2vb;h*2Yl2كy9^d N1ݘM?J`d~||c`A]}X?_W5⢺>>ˆ:d;E@k4,}+z^ݰզsp:\ >z7rzmkU&\VC63\?PbbCueX bfg!|aCRP}ÓpnJ+'e5":q3g(#D# 7ŋq-_;J&҈OU` b+ 6$MCUD5yuK9&4Td!cH!F)8[(%ire$b*TI1mgLGde! S3Jf)^x3jUETئ 2 %& 9u!aF{BkyY_v,"7m"#@ ᷯ~ :+]ɥ͸4fn_=$au)!oHg!|*]B0ѕ!/즸J*X\g\VU!^.h ͵ѝ` (trH,s1$=YFUX.޵a8.,Iŵqs_X_Ho;x 8<Wu+ځuYŋXIŶk: dds%*j:bpЙ. ^xFYA. zt LtlaG"$5MA>*MDd/o QabY$pЕ. H"L(.B\Ewf-Q.uW`.l"òН1`J8N< Gjg?ꆷQ^Hp[Ra:6z2zASaZU\BPM&Kz;SwmRG_UC8)`o[GG*Xo8?jHeu%HW}'砽95x!o` ktcuБ (d TMpU /SڙըnqԖ,<& zM\j.yWa9z9%8NwA;RAdMBSHs~SdVrlsj:>2KeRjl^׆uCTJ.(5defϞTl;N]?=J.i` Gйd yDZُq,]=<>nLӀ]}ilc`חb~9N#5* 5QZ꾿GL:b+28p J!h,}rڲ;@}G'`L( Eǽ m ٪*F0c dxRXqk5i.pt:-> @O0Mx\H1+%K JMQK}1mI!^9^Os8 t?yX23xK\- :13G Q&x W*'qy =+(P<Ppdxh G@?r=C2J `9-(*> @gz7CSo2>Ǯ@([8 /1 COA_Y'5MFH(<H7WUh~- (d;i~8ѹkIaՁys) pyKR141p2/DO6!Y։ ʲi@"c"⃞' jXCc+[ٲV\ Uv~O3h.ډ5~ Z՚cΞd-  @S"2"TĢU5عEjH3љkv"T˲0Un|38ma&-$-Ʈ'k[Au.h3eHfvt*nrԅ-@ |^:aʢUh*7`qXā$]Y-x`^6>| LȑH^W8,>m v>P))v\OjbZ8wmb2!itgs۲\X1 u$]@b=:J3%u^XtdL X_O(~af'9ܚCY?UoJ䥽T\]ۡΡyV.H\\: % cXZ8UP6m @^Xp^yY䦜33e6aP-}5;_²Oqaa߾}9ܶm0L9KX&PQ\lV&y*#[@fW7YD[hKMQ[IkEص߱A֏BBTvRmJəT녢dd Ɇ:HAEMQ3^t6' @[f5ueʡ^_.!K 2LC}vjVqX\ W.9E\D̵a_ МZ(aiCeSA]X ]\, QHS)!8Zɛ<{2(2聆KFܵ1FIXC|~q|0k9I9EGsG8>$zw^YIE%LX!9 Gx7wU8 {/ݥ`,$L*3 N`Kl8<3ezZw_c?d}D NL$eUEvm!3NcJI'HC)ݓ'V/'\",&)c|+ 2!_YmV+(PV.|?rRɘ%)A?{ם ~/ʨB!I"H*'[vw8xfw=c9ޝ=;>>nVKjVT(A̙DF{_D. ^~߽{!JH.a1eaM_@Z ꁤJ@9ǓëS)Te$][":c$`k1+›6CaD TI7LRfBP$ ZQ&:`ܸP 'WB.FkIb_$5|/L&m]K0o1iagP%ڇ(®S~x.,Ckg#J=P=0Z@{lE]kM?#_ ˈE`w`0U^/;q"hxtSCY=g $Dݨ}?MC*Xm+>%82G_Kp:`f O\#Zgݮ4N|Yg`EIp`2qazD @ 72ʞoD 2_kV4GʐD$U>֏\ʂ4!ǜ.Y& z-%:|D;!5 VʪhT"]1C*v |a|r[{$*kPC| gcN486Eط*C8ގBzmAaG7[ T;PXO(-[Qt K!x!A [Sİ#-LƃR!m/k:Xqf;>thBݙn6DJX)B'H\MNK<Do )ao'0􉠱B,h <.xȈ*BpTt&eQb2F.`FDVf |zzsc̠_,pLCs\ss-+q ;u}9͎^n _2‹>K#'سL_p=_[y 5hFO| x(eΥZH^NE(K*~vK01* ݀E{Rijxҥ3 {I\UC薍oJB0^@H܉CN|}4m^k!VKEQ.EA<^xe4հ+@\ɧm *幺+B -F@&A=<:R :Y$(xԇyBx+ٌaQ ~GZ'0,!lt1C al֛Ҥf9H$Upp>dE8Gé̿ 'lSLD]oN{B~lI3nDҺle48e%"z.,uo "vFc! {2V‚QDO1ƅ,RCEΕTJ#b R ֻel-7.|c깓^EQ_iA8eUo=X&\`n3%j?UGϙ-VkZqH"ZN˰*lbTD5p3_jmhB=HXAOh"[K(`CUx<HS8\N8ּ߰zT4Rq ;vWp,}$]&#E0H}̘PVAcԾIybzUn 7#4v2C$t*;zRbX.*H$pF `H-bXev6*P'ĖEH*%Nt܊#0(aI۝~ׅm ;xϿx] PÌ TqRSO6xTu"UFtzK!U5>_MzZ4tJ Esf Na<+d @b|͊KV%2+ RHn19Dh1L }yI3M9F{2ԁ_)=3x!MἿāxP%M&R>%֥}r`1Deehhp `TR4c2L 3FH ^ZTb}M&-/aEDT{guIaPTT⸫Jۧ§ԇG\pNz*Kpb,95kj^XaR8%`o {!"3E 1G0MߪOUae>uk4Vâ^ͭҔ"$ ৫x" 7he"`96p4h:S+r`L10|)wΓ B)e 4R2{Z`%P .A("D2W ۥ<[HDl2Ysy~R j#+hNDu# 8&>sA[yt9* p|TPF)x4 Kx l:Uˤ&BKIUI=^8tK9QN k (1r(V³=Rg -2GzV#Ic֋3LM`9f' y<8smW)&riQa$h 쩸pPc N*aE Sq\ q@a`"<Id~uH4/$E([v,aEe'8P1O8"ɜA5$gz7FթHb {.L8҄|lFo 2Evs5 "qFa؂РkJ5;l7=tv P (oׅ d' xOoݥ>TbHIJZ]^5z#иk(3W"8$Gtj ]rebt2xOTQmckƟi-YL8'+Vl6F@?bwXvY8j5Xxx4b]_c>_pq_;\[ Ww.>0D9D5J(ކtH3F!Cb1:ZK I0i RqO_>Ko3z< kY % lHAo/q[T"D_~Exyү9FK;Qt@+By#ߊ`'^}иңgǔ-D>k㟊@H]*R':6ijXLᰟ'W js)Ira/H#0>i $`JEzV[L͑.B,G8sӶ3ӸFYY:_ZHG4)UB~?[|&y>*>e䰣ZYyH%r!H`n1OaD#9@z+?ʟi9xr~60cLO.96:x1ȯ½@跚FJڳZ*fG5}5p ~bCeŗrA|'y{'5E&1Bg-quȼz!AJUC LABt[I-Ӈlk?p99~>*LVO霌*(3'y%d3FnǚRɅQr9Iㆎj^sX}9b?8c??xnT[ IrC&A ϧSn|Ga|7:(O_")7߄DkWdͿ6.F-VΜ6yU ̈G0<4N)}C-1K/4.Ҹ\/8qsKE 2rqF8PIGb/ BQ\U1 "O=vĐZY|7QWT%Tj%UflAX?3.jm6 ݇ptAvcn oBsLb-IPd =OI "8<HG!p4۶n JV?ytLMa`QW5*%${>(%x{_v ilbLG ȿq< %XǺa'XWZ`^: >s ,_ -Q y2)tk'ʾnl'ȏRXFNgR*Efr֒y_-1%<]H adZsPTb¾FQH:&,.Z'">l2tvv2!rʸ{sanŲ:Ɩcͧ_Bw W:, y?=g~U.V6 $Xk)qڣmx{ u7E)pXz"_6`mA!Tʗ2F90!Ҋh -9CR@xig#A8 ^,7mP.3[|`vd[U@E÷ӘڑĕpLB9k&ǹXQ-r8{!SQjV08Ify:[[.tZYT"c 3%y'o]c6CDbQ 1-k`~_o@S`bgۓ{"G oMxIhm{23]2-B! .J BP#*:ÃQ;H*EUxvQEe7e }hJ3 FcYEM:]G>GOCp9T悪HJ!*~՟HaǣWDQx2,l>x &^,keCmل[VDb ǟzB /oFʣ0_+^_vN@@ѱPpT Y ?,]aȏO8s)u/MJ(7{h_7l^brmۈo[Ca=قq;L|NKd=0.г՛6~͡ 6vX)+A.F%Dh juTLmL2'V:[P5:j0 ᨌ -b 'C*9A]Rzwҩb.5hjv% cUކﯽmZ"tv3 &PIH,"ˮCEϸhjkC,? mhP,7W4dIAƈxjjeоo?"oش$ +s)t'N{:5!( ҅ C2簝LBM~ u* )wze:ftA$S)0X9 hMvC悞 i'k׻J۴؜ `Q;C@$sJ I8*E /ۂ mς4Y({'pRQ鱢]%|.VB9ηR8+ܳJZ)oq mrHi'"JUV~U!p> )Uz%qQSW28 +*: voYdѱ 4 X߆dF,@ ֣seM0y1/e\uĞ ' u4قaAfIߴS_;Y7?Iه}9~^Dy/SGՎ2I"nJB'?LEx>LIֺPTĉsȠ*S"daN "URhpZTh9" )Sx ՓOc'kZlئ7dhT tMH1̌Z,VJ\W\)ӏY.J4)8vMm"tB{ݻ# )(sYfXUoᔖDqc~&wm_d* ~w1-mR}T]E~83LD;B[@FټkaR0&5x@QiAD>*4"e"xܭ iAbnTeH4 U` UCF]l *f9Ҵ_q|%dV`,7EY@LKU|U wS8.9H!yNW9ɡOQU0Y;51Pw"1:y~&e#1pD>39ׁ (זLϸjMIQ.)LA3Ts)gr+2 -;Rx7PJ:Xyfr|0wv,>CHLGD-ؼ~.܈HV QU+ʩ HZ"!Ra}h:- u.˱u۵h 8+/BwEubxOP,ö6#0gBJ %ӓoxsDѼW_> UŬuƕFŨ\O:ȳ<WQoHv06iPp2R~I2kc jdW,6=ZA2*ftt`PNOJןdtlk xy$ɻWeCM4gfD8/A 7fĤW(t۶D.z c&DytZ6pvƘv%Woj0|kl. Nbi'ӝP}N]%whj+6+*,/<ṅzD7J?gS_EI8Ζ-}7jq9j6 |qFMTTM~׊q=cLęB@@#d:N^4LH3K~g |S*"~1JUEtZ'(#᚜GWUebNQ\KZ7 uJDMT+pIm0tE/:*[g`,>o}MF. -V;LI \` _^w-:a*(| Wh'2L'`4H,|s4]ql?8r e!hBYbB>s86)cMϑ!uVaj~}%FYL5ۥVZkٸBJDvq^N+A*MdrMy.*WeZ-\_u\2-t Qi19dHN[ -OITAy>> Ṷ܃DHB2{ϵ7"ؓ,o6YV>|PDZ02n~^\wOO|;V0<N`YւnWC E1aٍ`c?cZ 6E`Æe,J3,^`"CS,CoOFqw~ ;E(%C~oXҥKL&;)}509L*(V')VtΆjH+D`#I~.lTL@빾ax)RD(;O˼@9T|B!MBA­ølQMTtbO(4EO SWӘuB Z\@2VΫby~W;;]chhGb2+m㔩jhm80\v]bjJT9dh '_OqHC={zI婡iN=NC8t~'G`99>މCN?ƀ䎼??H>izxۻ`7@bH^c-f kɧOIIHdՓ*L" {^S&2ɑRyΧ,T5Ï$'<m :D^Xm'2+VTRޯL v>P?%S(/g͒Vڅ-[`:&癌*_ŬQ7lPD{uaPX7(2Na]B` < ۅe )w߹@WR jLRSPb1j֕"J._q V} ]}BBfKk&sNJeLbyax0 &­߻r$&AxjQB20/Rzf|g-P$r,[ E|4 x7BtLr9/ϡ&o5ɛ*)+wHjǃ6ۧ?~?)$,׌Rk7(0 ż3%]*e7"uQmGHѿEBQ}za{;*=ir[ĵػ/L8:&8tBQ.81EMoP"("bur0P*+q}ٜWVJ,M1+r4O⯎ǚ&HrFr5,ϪXDUBzt1Y5J+\ԉSQsG/7|P%49$"J7G3V d("C>VJ~U2CCwMDzzjH/ qBF9Ԑ^֨r:Ež5A Y7:kaj GDY).IG!p'n%Kuɋ< pf3 )W'22WU|d.aeFrsS&/BLuqp/e tE:_+sմ{Z=S),iƣJ2h_ὣ7W&|{Pw*]-Z-8|jT㭟h7(c0Wb(b]{rיЩ-q? JvU/MB3y 3zk+jdn!Դ?r=B 2(Cxy塖y5S. ,DKnCKGd@=PsNJ!2*#)TY{xo Rϻ&+M2bvfNBy X}o ʯ#oRo+p&Nf u//s򸳰 scY_uв$_PC gC x<.mK!e0ry܏ru)JlR$Ó_]RfoG m\EzPjNzV˜F0!Ie5DR} Ǫ=gj;hLaIfy&-""lbD8])H_Pnmu+uba,x iMt!ST-Ƃ bېQӏ/k[([ye=ʙ lJQ5xðC †Z5 IDATcS8{8\\MJ7zs7Jz(XsiN`K[C _u2<V|V A*pAW TfY2.lWDjUׅҮNp̪M~S9$9SʯA. !U+z/3W5Lt]͆m!M"M=晄MtO)w;$|T̊!ڿ-!Ę] )vh"jm/B,"+b|֭UP}QžvAZybzgJA,mKB4`" qlFcb(w$`2DV eǽ|kɞ(PA"GB ЅihMȞ"y:-#{܇&iu{TR~"gx&en{IWl(z}9JU ߣ{/e8/֫,ٔl: ~y'br8*\d*Ȉ* {r.x&5uH&Z]i@u{?3,^XuծpׯNJ+ؖ,H0/买m*j-D5W8zNF[ѻ \} ]L5q se?a"+מ*509pCŒkn?SbG{mE2QL=Du6s0gMc=cbGA 9~x?ǓNP*M 3XiU~:LzѽXv8,N2!s<1TO}vZr%n݊L&pyyB"`L:3%nbg0RФ;XTO V }x{zGᅮB2Tu9c 5$HbvG`l֏ر'0:|}ۍX@d\VBa Z*jRUikshC<'6S3T+l1DkmF$Ɲ ,JsQ )xxmig yl{VhQo]Gc[[o<ˁ޺ Y&? >moF̣0BIkPe A,[;P/lAlrl*P,Oj]#& Cz(HHc@V=h$5`\)Ӆ]YSXٛ'b5(-N =Rp΋.x [бF<.ȶ O Ag1Db#@ _G 7<ز-z iMm8Y%롇}&pSb%s^l8S7Y%x 5L v$"QD* Q碢#DWOȺBAg(V`kTHO#y nv¢Q2h"ǖ8?s7NSͅ1ont -A}C#렉PmmmW;:9HIgl x#{lhq<9buolLn=|=&|k/DoWBA%?EY:|[ٛװr 5,Uric~yt_}D 4$3 OcO!ݯ<CyjaR$C t{: 'Ҋkߊ֠s^;5԰P@#ǰoWP79 @+/rf%P(uؙvLWPUé0_X4ρu9( !~Ve'p2-dUP3.8piAW~ѝ>&-| }vp_lVJ`0ËQXt+jr;>C HUVgޡV)<>R}l@&ry&%E˛jQ!bJ~m G:|*:&Jɫyw #ZZ&hcGcҦebd0 ~ +0c+~Go ˈEUWHFkىϘ`#x7݌p>#R 5ބZO7Mdpk֬ .Ncxxҝ,SD;{;ة.,ykl`Ê6 Re7W EIG>FfooV|&\-KKsHyOFUCxi7͒&ylO\D`$B&(%2NS#5ۅb#k[Y3)QؑS8&L\J!{Qo` \*>)_C oc $}Ÿ=1&JV(׭fr8ۘARQJS d LΕ GNxNZ h'\w;b L?NRr!:ڼ#]uDϤxi;rѓ" Μ~!I~oeN@% q6dȲDyYId2۷{ΪԪUj\&3)vu!aӭỏ?x|㞛ѓqQgS(~?cR"zR{:0FY򉡟gaW<3.Shg&&w8w N$ZЙ74u+"$H%":Y3y! iuG~ SL%59Le.pt9)R|WV~!8Ыh 9OFV'&aEw@K2aIdRxʹ4ixx\u&6w:z!@IH$E Unْ%׍IvSff7w})&[-[*TDQ")W(}ιw@DH~ Cw[=wϒDppFe8ز8GehnOpZqKBၟ Tr}'lgmO7a[61g ?J ̏ lnvߘ+/ ,hj:LhLýhq#2=e ;::cR<,FD>xkf!-Ť / w_qQy8Ľ ݁鷐Q 9&gCH8_"Ђa- fy2)D1ש2`}!862%soeغd9cJW)=[xX=Ȕu4vx]pD'ػJ@Ϡ klν<%Aꀦ2U30Po܀돢¤rpڸkN|!i|CS_ ]E#+L; 28բs&0tfoh]SC|g8{9- "Nmy vf֕qF-2QZ޾L=8(mGf^Xg,pK&͋  g?cHid\2ϋyVrFhp-/mGȁ%Ƀp0@5(-X1nF?H Jw,iZ}O !SB#8r, s (HJ}u^Qo\PP*Zl%09:J$Y/88d9p m;Qβnǻ0iB՜]?ӹ.g|o_rC\w-#g`cQjvL031Qb[^YYPDnktL&?ZiW"AY QF't-2(@#\O r(I%EM^$&f[wVo ,jP O9IA V+i:C4LS Yzd !' `mqX9Ó)ǟ>zc:#K/;b< ]?S\RNޮu+`[z7Q;;qIws'[5K &Oh;h$aCysC5$nD']y*-ʦCV4p)[ĝݾqz>>p5g)!v(n^PD:~=?8KW,C'=g?fzL;e:zޟw3޵A OhDqsxD]y ;w@UK=٭0(*[y1(HiE vnξUy zM"{}Xt]h>[?ނŇoCnL( ͋gTpܭ<6t;A )3pgbonP*tv$aYV]v/߱*L62A^E Qrl^:U p<%qXBßٱP'߀n}/$#ίQ;I!Te1Qŕ"Mz%ó!}=gmPH .9tPZؒ / m+"]J43\:.GR*en :qɐs};p\7C5߾gdٲs;u2`1K(8,t+h/|3n( a t@sBZ=Xx:?JC6/5$I_,|cB}'I/v`z{KLd.8du2>(F7#XG{vvobdyLRxQ75_4\.ȎB8#ۡ|7wx}n֔LDZw.[{J݀s$ZCOuWE`u"ߑ:V@;Hll62Ǣ~ D24:}c!Md>,x BIqZ)E%P% 6=$ζ&/(AaPslh4Lŏᦃ? D=sE.jNI!+UA/س<!O~F q(E64AȎ9 kΡG.g U]E^ȅ8XR=P_::,Kv}$ l` w9–`%[0pЙss>?֣}Xngo^2Res(˖+r5b`z^& `g¨KdJ©Nr KPֈ)"g|2ħ4;ѵBߑ]cֲK܊_E(&R|1/[& n/7 I۷?8|[>B0BI=UFұLv/I;l9 \ss-_[t{O<7aq'"Rj/" gGh`$7# 9r3È΂meɑrci%=%ֻ %1yϢPg۽,nnX)]>V ^/q\)>/f?oR.`/9 $iXȒ[hSo% tlS^'x.I㎲ukK+3b6GdPھ(( 2c9_P^ @57t (Q@;(8K{as{QLsN:\xUrM.;Hrn6(VuS ձLXɚՈH[5 XJ%p}sCy3m(HRy~]0vx6_|1gZ!$ċDbj>ZOA§q\&/~[b>x&]+uUlF]ZolYw~@-jlāLVc0e))ю^xlى3qf`7c(LnxD"Sy3,; eJNLmPp(ү5Xw|  S6,(H t =;}*R/0BK̒F:p@?)q|>j;@9geKy tŹ |Yc%. ܥf'93AQ8;~* \׻ko{Fڕ{/riqJg c8hQ{se59F"5͘*#lWxi:0þqgC~bϠL$ ce }͆~__p͚5hhh@2t3{BȒ|䦞~ۆea݄ &T@ax?NڇgMLBA$ %ض4Z2Ɠ^,"r[G[q5 0mb%|V dÝ!n)K$/#^@.@>D=|O Rؽm(XW-\zEޕn=nN̡B?SbGx&t*P,S?eA½EC|7x" e K9v8$ `*]"A:[9l's)n|= Ԙ\g\`E7iq0S%7Mu [4ʥ(c3ܲ/c~"y'koC/qG*e( ID?Mx,O.(6zeu{58e 8K򃎅XI'*Ђ7E IX\vu,3Nn2=%{%3~tSc5А_GYНl]v:|sf$oƗသp(U{ںYba eānaO* s>}c]s??Cb'݈2ڷi~ "6f͚SUqq1۟*I%s2=~jT''O)^k"Ղˑ9!pCӡCߘ 6϶ sr/";3< i Vbα_ K䃬#='#d$~U44hen.X_+P"{wρ;G}Q.5F723=z7I5# wVb.cb&3|efjJ!4A.J /JLZnCY4Z[ eYy^#^aXOj۞:2]en!^2c+KIp޿(P)-)sq #G_j甇>YWqv]bW9Iw|]$k(q0~8o쯃:w#7h?D|ʃOL3̜3}gǥt8{D(`ȕy9F9Ce% ;PǮsh ;:G"8wϫ S.r=}gslie3b?îPBA-̃M܈%Ol@# ϱg ̍$beHw*. )ǵ^dBeeiG @>?d't91.ҁֿ7$N7'Z"ʠzT :}5 g;l-9(*~h-{bV$HT,^ܲdvpm=O̚6y<FJ)5f^hiG bk0̇tFwQOqdZl$ /=/߄3)3ނ3+8p }G 0.,Q&܌"u c@}/z+.R3…~Zd.BgEv[\ +`'=1/_w/wLg~~TfX]fyZt$rdaAs'gg: HsOx}ܴ@3|uN)W8My̖k*ryZ78c7˟ٳ6m&fFDbYPׅf xd0-a֣}qVM ΅4t"sP^mf=u;#-&V_/:?K@}In\߮{{|Q :?: Gc՝ ғHuD:6= ,qJ6=u Yd[r\ayD2yy 1n6`\Yv&Lfn%R}/+?3+oc U]ܺ7PPf*O;@ P(B&: tJ#Xì'.-C:$%Q5vn'.ѿ3O5y^m}]zlXQÅӕɓ^4zQ`J͉;:3b!:<ζ qr\KPjBԆ> a$Rtr籩zi#FgfA=53wT53 4Яi<̰!xZa̓]=x'QV[#Sᓀh; w c!X(:}HX&LQńxt-L@A̹&5HTVANǡNW昍j8D|8C eQ )JP䞇$S$fq9i+ŗF"gQrloCg" HY(tmWWy\Z80u R6ӧt,)ˮOm ҉ُ^viXi&cv̭G&;v @4Ů]<<& :Nc+h #?xLe=E ~j($zeDZ|9IL0) t; >Q;p'@DC<LO8åЙMiSH1̻,<~AL9h'f[Xl4\1z<UKe\i-P35Ný(*w'uHXrbXFBcnYWuTM$(& AE"e Ah& -A&@!&N.& בNaue2477sFd z/m9^y`;]bZj&ҹ9r9HHّᖔ{d߸( B0~!Qp7<}^dߧ>sZ"d }6`#>˂K\.׵ȍ 91y߲1Cp99L IrlQ,ıeAa7Ega\X~ˈ ' IPN|&ܴu"NXtu99lʜniyyqU@D u{ޏ_BKs|#W $Ru(+N݈-(5(6,Њ6sծ1I!L2 EEExqayzr/K T~mK~7-ʂ4m#k(N 6LD$$n3P _4d,#ڱmƬ@ K~2L\ʳ^pa-$.P Eeu y:15O\@ڎ,cC%QdԀuL)mlvF7|嫷 'o3l3|\-Jf{sMQG<5B$P%uwyq٩S@A4#َ( QWun&j_#8 yBLBtV!xGh\B|.VM)6a?\/TpeM}<.v%z JB^}H *R`Gg]6| wp/ٯGΧl/veǹ:+zr2yK3 ?=&:p2e45 ]4y3Ή@U|M2%#RP8B6die;0-ە XVUl mI(g5^E<>pk( +pb'صg,y,&- ~7#L/q W+އر+qj"ׯXǒA\?o}4ܝ 2n.gzȖ 9dIaev% a8 Ϟqx^#Q{;[.{b"  CK{@(T'Z @>_?辚:5`ؾA!e-_UUd#%<~8'+3gQʘ8w z&0[wg^vr,O ^r<<"2mGu.lD*&P[W)́t:5XU;l:ATv͘-ȤRbm4 ^N<]!߱gxNR9O?sT, ių%{~QKVrR6yz_ *EuL9Xi#ZK%3ql~^g!:@=ܧN>K>N}M_JhV42S) RϾW9nH{hg(C1ڰ7` Vb~?`@J-xx+ DD/ȋ{x \ X RrPETTpA'ZY(ll<$S_5!(>CVFv!4>% ƻnCZ78{f?lڋL_wNCEaf6L& ssBWI!2w"{K +P(س""t CnOWSfDţmv;@_!?9K٧h5^uMMlH<7wF?rI%Nc1ZFn c$ҽv-iFC$@I. :nx/62 щD mg;l6/M z0q;Dy^C=*y8琚[ؙd$˺ЯgAH wAHõDUO0ƣ XSdDZxeUu P\A((xA3Sf~elZC8C2PO&`EeذaCW ;-æ  T2xef *so m͟l`Rm{*wWWLIk[S;)`:s :бqGX?>sp # [ɋq:i7WHU2Mm@y" ;C>.+ ,6p|wApIFG#ցL$%_M2+kydž,{#E&=3ȑضeP\Vj LFUicvRBr][RXܤL$àe$KY]GMM u}îyY=s7c֭xw# Ze@d;!m>I.^L6>I,Z>hEJ/*q]>O2sDvZvڌP`8}@%ռ?3W.8ⶂ/T+ЂD_,B!%,h@C.K~(uq &󧇝`!`9+"z5!H>0cL$,:0}ŐΫՊagUi=EJsl4ؽm%+PjX?omG-3P*Яg%ˀ[Y'8ơpp( F G"ؼܦZ~@T Km PFN;Ն`P^i"."V 9R4CV&g^Yy rn31!.!ɍӭ$N]Eq*׀%vϚRWz2@vo-'ql'1#Mճkne.xw8^'ű}yx,وকғȌOO2QYYB:GV s=ӷZ?RJO{]Ij[y(!eɘA,U'1.}pYk(חċe2g3ܭ KU,R1(weYA&=0i"a:0-K9sOf IDATjC,-EZYD^E lu e_ f8tGA0x6d TbeEaغɧ@=e~*%ܞEA=tRd*OKPG,ʧzAh9'QB:сt⼗/ rcc)c-c-`֝xg҉sqtҙ+GfV'y:c#)0%?1L`y\Uܲ*7*դkIbr`w5G qIXu,C862oo컾{N;omL[nÍ"s}tM]wހҫטtnVL-sE0,F}Z^`ϭ{CKMB%JI8 -nٗT@x CUHxL@3ѧBlHn:R[yr;6ͱIP$6ړه筗˧UT~c ,lgRB>>wR/5 XU .p8 ĜB:yKcGc xd|)@jngHE&r]W W) FH]zǶiXt׃p⋍-+&!i|Ս7񧷅x [Ԣ}Nj|[c qORD6ƒ5k()`_ۄŒzM $"`XV|Z||$ݴPT^ʠM Sؽ5~}F`gX3RY3E#;B}J !~k vHpK6= /8fR"ܬ#Z:,itFgyok֬a.}2t E!D_!>݆и(ΜAc6ڪ"82LqFQDDB!֖`۞hM/1He'~h>: Èڻƪ$Ҹxe%&!ң0C˴K1cQJ6 gW (&a})A֦*-;L܆\9Fɚlm1usLlۯ>_*zߵP8QT:sOxkKU|bPpxGx| 7$8/T8@Q@GX7k"̳xշY5xn(*}J駬ry)N99C_nR[y3~`Qs#\M,Y <ڠL!,X+Kvl&]]AD 軿="n~z*{=>O;gEꩵx:R̺v &*?;;bXt˭Hd%T,{UvmN߰H")?+g;"BxCØn̋oFˡW!"ïQXS3M]΂(((.MOvGv*EaԂjY; [;Xb2LZwO|ݧ`xZf4|3I=/{ 9u>^K{#-(H9$˶ӇW080U7H"%sg~dLC9َr݀RrRtz3wko<,H"-?u+!IXؒKVq4 HO0sAgg'k0ӏu" ZIQP} ynױ_*tʤ$ʠ`Tp d̙h<'<afhb<A-;8~׬ 3ҖSadD4))•^O_@o">;7җE*5Ɠ? ̋!]-c#~t;Ӯ[#9z\"W"?:&(,G3xtrNu~KhC Xs1MP_ɢ?_Zg;;QcIfp>͐S$p|xwri$/zΙ E 0< dM!_ؕ๤P:cA e sͼ(vWnq+-Kq<0[6'o ^=n?~VM <*/A)Mw.@HO!+@6=(KT&$8K1,rA5+ !Lquسuv؍ BW+&Q @N/~$:joﯚ !bQE?7 @,&qt4QLm)u, ʤMC&!,⻿:^Ÿk8j߅ގ6=@ Zw2yd;,,,ěoW_}wu|D% -NY%H<Q :}'`KX ~]+j~LY ap}/`Y:/5Dpb}xlWCЊ!Mw?qJPYK͒[cU $uRG:qemjg`cLH"LUh+7Եs1P9M)nGIy§8Fγ¯3?)N7F'b3ĽG P8'E)ca4>ߥ G,[`m$E>3OBq@vF6i,[ҿ 6'LGCd7ᵗ~7RŪ)%0-?CC59ǐ~ftqi ŞU3J M2W*9#2fhpPRP\UlJ$n8fʮTUYj  s0,%!tl iB +QW:J[PW ǶkJIJ vk<2ۀfxCd\`p`:.l1 *itxP`*?i"$79x5Hs(pKN,xq]I El9mvMv= }u\j2ƽaSmkxM[l@%QtN!n HvvpjTdب#/Ūۗ_@r:`P̣5;>wx{}G6[0ټyD39#<Izd/g8 Qrp sp͌z,EX %%RomO7U4?Yy\"ؐ6us-ca GO`q2<"aʄ19(4́)Y.nHql#<<9-yBԐŽ(G̗zTFO$Gy1g=kY -⠁qɥĆ2o%.ͻ8^z!kĒ :^&~.By"w;0Lu5HO=]3aO͗7©$}~D{gq Sf2qXrq{u~MA@Kf/uݔkd2Y-ΨC@U<>ՠMe@\h, ;xqoE* 6N8u#2OAI;,LZ9{dΡΡ?߭Gy 9g /E'Nq|( ]eEA:)ۿ㫫Q[[ }?}*}x˨ހY 0AB),FQXT+M$+^ݝ(WVJy `\EX 2ntt&  PHŐ@%$J7ΉEv-%aL4>GW*\C[ v{ j98y$?~n<̇]yGG_o_<=ՆƖ%հc'lQTnn.toHm Y8͢,B pW1S&VGbjt` HP}Zl–vdt@aL,~$MtfJ @uzZ]"$UD|UGy x1 FD*Cme~~';ހkh۞ڃcz]^  ?_\|u%UJ, \T+ٳ!9s3!QXBt8$pd(p@CG[BA؏җe Ўoo~ zL([;h"^Jpy3̡.q #<X:'9ܛF:uh'x{W3Wބ#e6X2Fqeʪ !_r5laȩrV|2&DwGa"A5-~ªzCӀ>f|﹏3 s 䍘Jk: B>(b^ZhlAb߾P&wv@w!zU]{q&Ҿ w9?uss "^ӽ\ؗs޽0wҭ8 JTq|wЭ 3Z㻜s~2 .IbZ$YW8zoOϵ\:UHp0'܄{2TD~~y)O_E$q&=Vwqmys$ʿK&ʐ$7~s==lo.doG9f+42nO+i( hnlۛgHmCF4U⋫Pz/,4L(q Ժ8*yX'N8 ߀CGT@*$?IOloELWPV^ K "31`l -% Cva(|d26yG囜O4=eYCE~;fH<,^c9r)Eм#1NDΛs:Fs:L&T*ſ;NsJc͍/7f94rckƑh~K?ܵ=+w%cFPDf^' ӂ-\`{Pq(Bcc#Z[[L&c됏۴q6lW_FC0 Qg䶀N4p~EdIů ;2% (8ӔD EAfH6SdPA)tBǸ9?+p}O5aK+QF2 K7 ēҺŜBCYa=F,MJmuNbHLD*Â> 0A HhO0  $,3!c+* 2 YUQZ-@,ERyBfPA3;DeߠӥD~e|^LP2I(_L"# 8B <==M< 'ëf(_?H[J6uuuHwbdaa!~?8?HǕGX"(#MY6D&MBqq1/Z9B2ɓ'bX8TK/ӧ+o \WVV@+iN4 ---|4wƍc<={;e~?PP2Agm& (//rykRN:Hs ;}s}>}]t_xC3gй⹡rܗ)&-` e!g[_G7'4~i.HSrpHǼ{׎;&`#cr5 q`Ad|"T~A(2D9dN ;}om=w}-`pp;xe&݋GxyGM&^;xװ) d"n6L+8>ҕP)XZzA 6>ݏc ?s͟SP藐uݏcY5Rs+0:q psRB̎[zYIr#-b86P5-Aa׮CX K@]Y~N#)L] q Z,53EPT'bؼ06 }FqY,+f݂R.sfG[ )*dEfwɧB<;6m_.SK… 1}tޤ1-[x%,(//XZ7K %stE)9U ;sHDKb]ړhLaҼ&_w;XYC*Vpރ?5Óv7>׷+o؎A,_8^u8RWD|2n oS'-%idY-ǗW_o,8|&? Pw~ x=?ko}TX_-^رC0 dH j? MS>#lyuOiĈq.6`isbR5خ-M'Iڒfp$}N^q\IG貄ڤ9wLɄr,V`><>{̱F?i925ȫh2EP(i{͍GJCU053v(Gȝ)%/@5Cjݺu}3gi8fۇ fׇ!Ɉwd^1ߧ~V<Ø>}`PzEE*(jɫ*xE34ǘj!?5>wځQCn~&"^_:MakO|r90{,>6:Dόڶf+r.SKd s-lʼn!#Og1?܆9 GjX|1FmS{^7`>yxfQXzH0GmnǴj kWխI|1o$|n'CAc G;Q5w.n}/p`t:tD6vvGarzxRqp.F7_c`/RnHxh)IEyflٲ$[\(˙rH _1WKVb҃z#ںҽL=A˹T3Am{퍂idlϵ nd8ɐJ2C!8ܤ3ȌjYel??W0yQӜsT)f}bq`~dw+ut*օk 7 ! WMT"B*d,}۶m99ǚ;,%lW bMz 0PljLgE#`aU!UthFO/˱Z{^C30P  #'~&g !]-1^}\r6) T8Q5ՃE|XS;ENzL^YY(Held x6. =z 4N`7Pxsਗ਼,dfs_+[fE܂Ck`._ZfR< Be!?\@|Yg XH0\.\(!JExQ@vWQ]3m`RL(xTH^.Md&:1g2ܿr)Vyea؀Bb*Xɭ{az"$?|>'ҚWTC+vbO^īE+f`? w%GnDzo3ßo14,exF(ܱr6f˱{LW;($d7s=EC"ǎ-eMM#nyW#*Ocq1ܳ~ Cxw 0"Z{4`q0I}>$xq`@cEؑ9.R]8 `Tq?ê$1TX:OJ_Z9e-J lLW1i ),,M g@Gub[T"ZJAơZYd!y1X1 B4l t|w>"tdڻ6})kb Mkb>*VWV5ؾ|*O$+k^!aZ벵SQI߳ahaωuŇlU9Alۨ >*0qLa?7)wg١o[[`%쬻9&\= = }fTYP-d9=2)CszPĊ?))QT͛_u+JhE;n@w6Dw_^V{o%yͤfHp;3e*$6/tTUZ)B\\6q>]> &Ŀ}s(#a_ Dr:Ճ]L,҄?za`OO7?~~lf8DZcD{{ sc'HZH\mӗ!;(l9Eど X0EO:ɢpIJ2vZ b55#n _EQ7 sXFDUaOKK5l_XF\b4丱\ oDMmg?܊V *˙p`4L%p՟bpv(ųVH;.TU\8ym!NRd K )[Eۆ0KQ›w 4^{7:p,_ &]8 Gο.uHePeȀ  6v鲌b?đ}'1NkŎ(ܷZhyBpz:;áI[HJ8S/ &VoAE@#^cͫoaHFTĴ۰Ǟ]^{4-EEm] ~*nM]4 _LmƷ!:u &C儑Vh;ArH%뿿瞏 ?I0&bM y o˭3'O_((L {?~9h=ia!,[O+G1# "tB]mh>lD{uBK=1&MQᨚ{} Pʊ.uw3،Q3JZj!!|bҗU* o^i{f5d+ T(./9&&6mىы0qhiPR8vv4(ܻ W6~ ]p`zJ)ߍ>vӈ ( -37H({j#{X^%UXEw_==Ӆfϗpi,W"Bw=N1 +: ?c̖Mu,{l@6RR l<ﵗ԰  s>99ӇS)-phey GU]#2g0Ym@lj%S^##Y=DU_Pu]4|.w`{#ي̡ #@| B|P+> uRDKXp | Nl;>{34F!ӍcŧAupͺ^1iwҀ{wx#EUJzS#pTCX>@)'xc8O71G׆` 0'#Y;+E\љtfѲ˞_+i݆BQGV5@0YҭHl=л+[\PYدNRBw, 5 ,;GF0}gz WJ,|Ի8뺍kn1AM\a|P4r)}H>z%@bZC{+ .6%y'e7>ԦLv| uqsy lU؋><h993eO=?^VJ½f|Ngmcף0-ÔBT L W0 aF2l*p5pMz:ъK<3M='PQ3ԗ@zuUsy@o!h]' @Bp)W2`V/2L0UPoh6.nˆ00oF^~`g@ߐAǎ6#UaӐ"݊'Aص-Ct- õ/Hr(|fiapC\+6%m?A例RT^`m%Ig,ْpqyXȦ}#@LPB^98yFL\/|;:A9墧'+y:F$xx̡'A^XڮٻO [)*ŁN@GuE2gA$. PZYxzo$ #҅|с'E !pUO'R6 ESt P0ų .ԷTmҕVxM<{u7>0Fx՟Z08Nb ie^nnw#69~J.b NN=,L"OA)ºr˂anbǖ_BHAeX@R*K랋b6z94 ~$rNB^u0 G/1Ir̽^WJI $W30|4|ǏÛ>^f^{Mh=ܫ0r88NãE/⽑0 lX݉`+)ilX҈O19*M6 %{x->~xL2E\ طoUsfWht!W4VKE?S׃TJX B*xZ6xDZ7B9$`˲ڮ8n&c("xBG-5 qA{\ſ/!:J9gټ`Nxeod g%^2Õ?-@Z졸oD3h"ى. 7aڛѶw;m)T]9 nFlx~BFR_+D#yp~sGM\ YBVY#EAԭ*e(9qѶo%048.9Ƙ&B+|cv#܎XFD>p`g8kFC˛_img IDAT.ŠۧSsT}Y=B>̮兓hDBPRS YK fRb+NWʃT/rG"^8θ~dUT|2+G2ebSR~ֈ si̡䒸&bݨQJ螉\wJ8hC̞ L%xeN4 :u*jjjC^gիźCa˜WC)*>F,؎P0C` UH=-:YmrYZhb=f:n<9rdQ9‰J$,$UH摶\G"o[^KK v-6Z9+Gt|U|V0 F8eԍ" pNUu U0~`IN^bbQSnM衈uTwN fT(^c5.)UObo߆QYyPtvaTQ7m#mx TΜ#x?Eljvq+*z뭘6ms7@xu5*ba+*P J :JLHm|i&ad&qdlm. )8Sũ^ #_Հ/NoU0.7׼eap W̖}] A0K6r9fėgގ4x"v77:G8P ձ#!;- EOC I+&k"8'a{Z"a nl$rw 7&xuba%8 K2x!>9F+ſy,I@fE=tEһ5"w5 _/({vcW f{v>h8C4oh*#&#o1cƠG\+#nPo؃7 ~ e },~mRPFńaP7Gx=h<0u&cE>bsQeF\tׯCvnF8\tk0)oIoߋ] Í'v _| P;z.rh> +oATUOg%0X $NVGOp'").9yA>gy<Qaܢ+rYq5d{8W˸t^!r1e0-"j'D"܃^bl -(h0u| 4 p^(΃c"6˒Ug`zxy.ϏR%> ׶yCG8ԃ/<)PLY=讘%,<_"R=ap\:JX &Y먡PNl.'>(H$<ǝe8(}PWQSZCEleޫdJUO| ŸehDgiUIoJٞNT[cf~x̉8>9 Ʊ]h3p `dLsß"q\,Y^e]Gά(b|Sd @Oކ#a1sQ3j*&Oi 4SEdt~9pc)LNJ4dtvâE fa1"2C}]DF$$Eě|[B+M%7֊1.ߞCLwjoܲ Wm<1KLus}`@2<ihĄ{Tx*6ȧF⎯A( d{ L - P=Kᶩ錕hl8B1a]&+R34T` d\ě38 *^VS5+jо g8:v".rORAʣ(;FBQGE.&m.9G'<,"vkѾ3`q+tquNjS4aep5a7lFبv"!QzdpB8>-Q ?cX:9 1@ƠYʌ 2 h^ beK)B:TCC ]1`; aY9SLiL(7jHTW"pDpR ApmNG oF˶f6t2fD.LiUZu%! Jz 7  YA. BWH ʆb@u Zj( VmqKTCN,kv4a"}%C,{|˙Mȴ"Qӆ#L_yAx8m(*4&ВhʆI2] 2k 2~ @J4ؠCX62~e d\4"J8*"d{:kV3|&_AM}\(:P5ƪZ @*†|I4tQ 6ZX2Nd鏌.*k K8Q|.},=OT A!>SzZ(9 vA 2]zETMD~ ҵrQ@a/LEMKpE_飆Rbŵr+;A&2B)=^nZg_q!>SqlN)!Ypp4&|a0Gq}ɡ4 Un5cm|NC]KJ휟!)U(0Z8p\G X4)ե`  VĒOGR!M`꧷E>4Ba񾈞 78_>!mGѭaږ:B BhmmEKK p1,^}*xİ3U\fҭA:LAB.#6B~eibA6 5}q@JUu= -jJR<%@NPD"hnnƫd2)EJի>.DϘGtID;_7z 'CA ^ :%3\|X 9H娘J)rT!\9 |$M5Pao6 OpT*9s[nAuu5{9G?]dp5b-?f`k"+pu׬!,dz:Xz\ypu ϤMuBCrɣbt rɰ!&+!]2lW(mzPi\pxWV{ADQ5tx/G*<Nh1 /wk.jg.ŜհlBXBX!#nlנF)H ƹ= &2@@C0j5׉萱XrRL XnRntį_]mF^La1RsQOI bWVDÔxqۦ ׆r JU †[}*05ц#WBhʝoN^;WY^ۻڡ~XTȚR`{:4B cJzpN2J$w0G\\- V=q1)-XP;  @gwQ䅊Ţ)ΫdBա3a"/P,1c0{wxKb:L}M=Ҍ!P`^^2 a)BE1M(Ɖ.$kLL vX[z @8< D! \p6q!$3Yi~Gw3Hw:iΖ@.Os9_/#z-߹Pzl~h%=Fu>[{rr}1c[+Qu}9P_&e>2ǮƺQf]lˑygfr9ew1BG[^?_q3QJ|dٲ~"LZ4WnFIL֏-%mU|?˲Ȳѷ~wyd4WURvy l<[vS(N'-Z9YoF7Jcf]!|4)ߒrI]Is߹p+}z&(?}$cX oFwx,?2_K֯q.z]5|?w:[_ȚuQVh@xbtvv d\!lq;46SưIl~ n%bԈF64Ppd I w^Z%#ڜ2 k~8vڅo],جӺu0|pLSL>={`ٲeªU0f=Za;mclOCeo߾]sѢE/m۶ e,~Ah4*hoG)|… EY>0sL֊¿9$M YfHF@2#F Íe1?2l7).l}ndDaܸYŲp-byG_2N2\\.˖mظqجtJD@2̛ BKڒ~7u2+"o֏%yw~bȘag=e_,mdw=i Mfd^lʕ+E9L#͕}I4g7|S0=h3&vs#e̋|{/Ҕ4'c"F ڰ?77~Ҏ{m`{8l77}+LH?֏dAC֗emaxx!8NWẆed.=C :~8"#cd]Y6?lݎ;ܕ4&Y:~/iN&qp 0 e̋e0 K}# ֙u4ixF{òo989w4呞id|}KsAc0iN8߹q<x_҅yi#q1\p= yuQ?i#iNp2O%JZs$ H %ȏ|m6P G0gTL^Y+FpҩŴf0N<߁='m6}&FT(5{PNq"va1\ =׉YcvuQCHD(C#HTsj ]K/łDz0p<n\7.|Ś ʿ|ϙo.9w.y񯼎"gdjwy./LgN7˖2(/vnB pQ/W^qmaPJ/2X_4ܠ/2%=$Vnn M-7^#-i/JrKƔiɰȲ&܌%=,i^y_NYoIOaαHm"-e3L#)~d]9$mǤ wX߾m{~b}X,Oa}i$MdR?|0|_uu4YY?ַ2_gr9`H/CαG2f>s| ;AօOdm.߲/K ,[^[GO9m/r5K^s2?5KJ1/[.%z\#h L52 w!,yֲMcf("wJ2"B(u%`F̲ܽ@8_Gn\׭Bsd"f6wiBL3f[G$P ' $(+W\|xbIWz\,PRbB)씒`H=%ΧvQrkwEmdPߘtw>DRd|.eK#a,[^ϰMϘz[L>ROJ֏il%- ֏cl7iwdl7c9,OM {l [^6òY.? H}+M+77F~gyǑL|+kro%Y)cz-i|˖l.KG4LmbRL5ٗ5RWMsY64ye-ǰo&Ί IDAT4g,Oz~eZ#i.$i8vX+cL'u;eI/W>놤kY~7ӕӼ|ݐ-ZyWe|Y6-e˾ׁUᮀi$>b!/@q}a:.5-GJ'Nկm"P&.2V6O? `3O⏞/u7qhܧmhK>=W}{X`ʹ*-DRo$@+ .L!c|WZEWWBO4ōb.dkqn<5Sﺦ!*s)Y.΅4Ŝu@rBΓ\PLV2ۤsD$|-F\>/M|JJ21&żo9˲)iJ.ݲlaDI&W*Xʗ(;[2 4/m|r46+t|lIs&%b Yv6+~e=pؗh^>d_J鋤9[^4]JgoEUeG"%!X7i#.9˖O\l4;ZyO6b~%XΟ\0 yY-Wr3 J{l4!Yis7EP8hR_ʹ+-h^b,_M~rvKKZ|Gs(FX9/@5Km~d8o͒e{-i.оsmR"&No?a{;QL:E3zڄyF5Kφޱfq1Xx"кc܏#(N r5@k ݎc:p-tO>Nϳt&'MWۙi]eѦ~-O&:[_vv[>-S/z4/T?K[\z@OO_-׷S)4}i>6] ~9}ͳO9:)Wz~9cSh_v>Wv㼟9֗9lA1M@ɔ0_. sC'/Œ1Q8 |.~=g!VL#\jzl>J# :Pv  bkn'Ψ΢T[+M>0x6 9ߏa0a#€[!ʀg61è PG޹@S\d dtCkn PrBBZ賅>?g[ȥN*utre"ހ1  U/fЕϢฌ׉h(Ha͏tQd# pzp f77HoўI!kӸ)xU^'׍/ԍ¨&P24P  AΆ[hO X TmB4&=nt.:Gh{"EAW!"ʺklõБ@顲bjGQ5؅nϤ`{)#NυTQA4 if3"^H*ULzL F(x*F-͡!D-?L3l1ƒXȢEWT TCPT-\xuB{CW]( ]!ȍ#ga?+pn>BE.^nmv ~7ċ/o\y,.p"MԲcnul/v~GVϱPPc?PD8 -o݌-Y&[O'?zg-MEG5bW"EO⹟Ń|g~g'Zk"pƣ+yCǡj˾K,3[ø30 mxUؚQ58vi/{+tyn逦>V1ʆ[is0D3a{B"3[7@}1"?MzvU 'VJmP2J5˛j޲O V\swA_ï!g/-7U=܊cVqZ*'&Ld 1x#hHTEֆ*xE #bW^"*t c%mX'w~HYHB5J5v].0J/`77탡:0*PU(Bbs7ҊdB1\l8i3!YرǾ7|CXVA:Tmb|$[%ְ7L/{M1w W`ׅ<g| 1ϣ9Fn>~sD`Gv❜g"R3_S+"sp-,˄Z)F8VR[M(=A_MsGvM8. :8X )X=|udDý85t=t,3{WǷcPbUs[Ɛ?gʮ7~EX檈F$hS@O.KK*1D5U\1e⻊XtR2UC؈"aHgCu Fk& -\TE]4}%͞sOE__7NBơ??U|cѱ?o>c0iJ'%/_?{0d}~*W;*<B<ÿOE>6QTӆLZz po⫵cwbł;n=Q CYl".9C`^]쀩(4h[gAgFMp,;՚'bGghEe`P걘SU 3{>+H.rp|6 5xAlR;G?o348E\ f1zW8CP ǰ7"r%+dW7-7]ifu>vF'HŦǐvc⊵rfUAM8ΣvuvB6a葨 (Yt a[PĶGiGCŦ:TN`GG',@LӡׄHOcZo|[o[^=}]\yuz٦U]: 0418Nb;qK$vql 24I l3?̬>jg-} i2*>#aj{j\\qڍ|tK|ty 3B3^Gr4q$Y_..z=wn~ƒϰ-:۹k >44ћ9z>_H x^cYvv>|86z`(ןq?ˋȉSM5z~{ `bŝ?Ŭmw`?|)?o|蟸1>O'OOg^Kϐc?jn{ 8Ǫ"czkV{[zcN0֡mIGFbFy‹B j*Ơڳ'1{R=Wݻ:(sZ VZk5MW> KmkݼK?ʗ>}Lᡧ۟y_|{}Ggǣm)>=e(V"n7XԑPx?0v},o;M p:ImM^1B  ;Y.MR>rOKf^v_;&.) 7 |Wpqihb6ڞK^+>MnrM\~9lZ#>M{Ʀ^㶟}ǺJTmǦ~:WAϳ|w63MڇXے%ؤz؃?k, WYc0sO?@ߋ|wXl)s[LC-u-Ƨsٵ 8kLƼk7 %Xib/']SAF'+ҭxjaܶI }c54/J딇$kD>|p]p3T7[f'Fc,Iu8Au H@KmޗO}/*@>ZrSUWg+`^һ$1ܾy돏rOQ"Gx M @,L[OtS"It9`JUOó1I3)2P5n y1 C$7?Tʾ WMt֥ߧO8Z+: V?\%ǟx|-lͼo{ŝ|;3($"v=_-d۩c(Qc'J5ϊw>g.R9 ><>?.{ⳏ'?>-k~p,-aq?}~n"Q&?H6yksѲQV/+@3U.ya~A^V}JõO4$S65;1-/J"9.7䦊bhu##ɠ]DpazHG0UZV3rhå]e;9WlfOh 7TFvl)0l4f T"D<(>?&Q|o-{'@]L`҄U#Me&>g_fǿd c[xg[Q+٭XÇ!ƒHܔ! E*\)z_]«-ޱ-PP(V/>vX#7u>grc)Y]i4S+|Y-;Ot9^mvOM|g=nc<צ*`` =}mNW=l(|NRϱb*^,0sԍحxz{ G1=[X{#˻lOe 54D_z^^&A'kױ};._PG2KN! kYں-%d(BNm䇋_?s^g\Cן]~7MfL(NfVvЁ7,z@.U,WUSd%r{K .snE+ ӥۑ4FUW>M*^6}w<|ykV%t7C !q[yr͋,ںVL}߸N>$(3_nsTC98U DS|B?WtFJRGa)A v _}L݂%s/vŤjb f8]ٕ8lNDE4ϖdO2L5IaQr=g"͔d拋ԓrz!PP`"_F^pCGEi[cws>JDIr!ΌR#ޜ|pq Im[V<ϠdA\%y8 QUL3${ߝۺ\ej>æq\hNs<~g=Q~n=Pj',ƍ=fmGuϿ8#,Vl,ܺ+ _$/~d_ jT(Ǚ ?V?o1z}J){v .Č!CKϽcRlaCGkpڰr}D7>h<\=c\퓚2tgs>t4ȯ0t܍Ü2iJZ䱵J슳??f~~#J(H1ߍ8{?$ \vБijgf#m _ǣ\՛'dmX)iMeI Aɥ): TF7?\t#ԗǎUëxg϶linNчYS@afZ9@ +%_,ɼo9+c w :1ebjR)ӢhujO H|JPUɃ˞4~WyqO3vx$6x| &aP= VQ)*;I6?ɂYM|0f F1A^ ZF] D %6"ԝ3U#TٴAB>cwV?g_E 0;+跼Ga׻_|.>]>4 JpxeӼ8g:D4{_ᡝҿrظkMא̭Cw;J -NwZZ3usA4m_qמcǙS9+s3gLي,:[<\y33C$ ֽsm-UsĂs7| MFˏ`+ټMyyE`m:qwڼ +1fQKw%}̘0拜p:,gIs\8EQe}/Xǩmk9K6كճx?Ӯ.Uj렯 _4ä_-s|bȌʇؙȏBP(Ȋտu5gsJc?ᱎ"U(1GaC"je';>|+4pט`|z4ϣsur6pUB$%(-_4#I}k^UIعmcߢڏq1m\c7Ve\;uJK W֞Źcqؒ XPWŗLK^)X.[mxN^5,WttX$qSu'r@`9/089{^{]LC' '_sgrSͽνa IDAT 4YU(IIzZ3g[. f = βRÌ5t19g 歏%ↈG8W>̏ ?K'DŽ0R#ǓhVTLD}KziKG}i'ݽAcn'L]5DSFm9_IJF4e|Uޮ*F'neUW>M]&$k mjCdQ'1|d]EeW:@`3GPe(#E[_7a:6^N]iniT_%0F0kHjE;"[ОꢻdyRnc ϶!ivvK LMձCta(}jD\@DjZE6l RkZj8ͺ=-{A&5ed4gv۬fQDKio':( ^WW\ICR䚑zM?|8 BJ?v`垟  4mZ;7զBJR2FwR,GD *&(ʲr JnDe/Z=t=L"w`b!vXGw *Hx6,z\8AowP505[ְ~&PxEұ:YvjRKbiWDC1Jnnmo".h#N//A۽A~n3zbٶeXC"D ]V"d}Pshͯ}5kv:$Ihi=,܈%kzh-VFcNY K ~рN.ykWCusZ+ac0c5|fb |U(Ӝ%gz,$]j-B)z*`B?n؅0 $Kӝ6P!:rw`"Wlg7.o'w]y6TE* k+[rM'P].V6ˮ1ꋂx(&ME/hݴ[:0P8<ᕹX (B߭~j|!B-NUhzal_ʣv13cUeWy`FPӳ*.*kI"R=H^>_7` Bp=`StKX0Op|7~Yqn0,9x+IB߿ǩkc{N%b,fsSUCUӃT {ɇQ(mW7P. =#DU8ASGό:i߳myoY(eqW@rߒBCC9:ǩq?G4Xԁj#D ^$4rQTT;OO_?C71J)?~S9]쯍|{bRV*jeKx*K],l.bh:Ab498NEF]y`rXr)!%Ç1RWP4+u R(D%B:|_I}s519²?th\2JZ-@ͽ]d29>}Ç," rB/9SE%{mn~ӲRa(oߓԷqAB4ѴiÇ>|i@*NJ{++m Y\/JXѦquSVT-obԐ ]%KtzS9 }z)I RWh|8A( JF Ç'Tz&5$Q)5&%+S _G̬a&BDZQ_ wq$͓'~ZNjǩaꫯd#>|xRuho ijE9i InI&ɔwD@.HQýz-;},biaıi6Db!zi $̀B!acc ۵IM|?qa[[DQT >|8qOO$q>N baDbk~xه>$X%xɒEKolz,m>Əƻ[]`y ǞhgS9Zx_ȮKgWsI#Iƺ q% \aN|8Q CrO"\|q3BzpZSŜѝ,~xayj-Fq[,ԇRVrxD8P/W<\D ˡ8$7== 0(aXaLDDeoYauoՎÚPqrZrё̘:Znȇ>XE!\~2=R1ӆ0fo2|D˶MiogѦ#ؽ+&椹r&kE uB$=CGi Bon"^O~y );HH?[BSh7!gD.qœP%9%r E#uun)Kxc489y+_߾rvt-z,k;(Wf.=xD 踕*̹v&fsWE̾vNљ1I5g6W/5#t}*BDEpFT,i*9LpB܇<|3 $XLaEqϲ-+Y/=C7Ϸy-gNejR)[&#*'mx$JP.!{17vAiR_My#7BQJQrv+%U3K\~6#بTv>⤸B$*)ժb=6,e}ˊ')eR(D.rzH>}b **zx"^9ۘ FضOU8T7^ˮ &TLnNeu#Hgg( bA%x;z@6U9ԍ2zc"ց[!#7yቾY^hظ$G4?ueJ8Pryh*x#=y Xα)&-C=\>|imM{g]hՃ̸TwɶmFUDՌ]mbhZRᑌS(Twңdx0 'b\]TȲcC:뷉Ŵ*,o7KwQDa|PPs+٨-Lw-G35B!`=\-{A֋QI.^ёn 2Rh堽EǥX.*sw,PWU 9r㰷F!Tb]UMŕMs.{6L spUˑwP2@.eQPo=pRX 1rþRQ/Fk9TʦAm{DS9I=0`7(\w) m^Ͳ!b X3& Ů!X$1yՉ$S=ĮH .=Du{m1<$Ӥ4X x[aNӢwd~vH%iZ2Pq !r(;2Xœ\ϑD.]ۊo9+Ęx$t`.FoW~tM4qhOAUV˾lGi}:d!!'|ơV5DڮPڻ-y\꠱4@F55yS8܁cǣR*W}V!qc>|8> 3gIu,nrbKο |/)!/OF*R(t'Сi"ɡ ɑ'ǩ:L30 e@XP$Œ Hy E{ r{4 (\AӉ ѧ7^Up>M/Rѓ?j]^÷"8QS*3R/uyZAto"MM]qH' ""=U8eb;sűER]V|"Qւ{HYuY/d.Y|Y4 4uRbɑ@`M8ˆ&|#)blWOW5O9V 99qX|ԥ.'%cϦsT.Kx$tMǖM.gPD>VyC~թM6eY,?MN;7e.a baؾ.[w -}P3\!H]~;^ !eUޢQUkȅEAc?"Z ~^ 7<P[v,Eku9nê͇~(1Rxrq~1@Qz8_n9DV05MY)/r$e2+j?y]BPU^;R1=P Z.:q->#Gr8V@^wxfpn\U-ehߛce¹ =Vs*78=˚{ٳ2]7#CV@<_~l2P5տkf]RT{n{D^U$9x~7,C;HsyEv<^2Sef37{#lEc=(X=Cl3a$ p 9 h$D8euV6w<`"AxP|]d~]9`1xv!6>{y7҃d́zAtlەE'a|>/DAtEU SP-Ǔ fXa{v =A̶.ѓ0zLkT:gHә9t:rpzz6$W}8$ I+;ocWs%LBA[CJ1V.TR!֐C 1 [HT{"6'T5&'Q-h61FTPT4"L5Ń\9{uLdc6BsH'ku5g3AwU/xGz&lkDnȽC'mגHAފCAHsO{ZR!уC(QHAs9D$ Ͳ*%6dq u*9N#R+Cp8)ԂG.eA>G_:wصkht<*a;@5K965cTo- \- FWvROR F]r^㔀 F|G@As+(* ! Z {,,Ap!3z: QtW*ʵq ̽i(Tx;KQby*;:5*-S9e{Pf6gFBx}{D(R'S&1| R, U([ lk(B9Ǔ\h{vAm |I"h\}nPQU H%ల[疃rI䰐s1d@%B$Ǔ(]!xS Ó*P^r|P u袋>}n%d TH2A,lIFvf5<Ϊow_a:*7Cwʣ:R=1wvwbFShQ'J<Uct }8-Wژ}0od;̓‡|/@9JǛ*R6{ad"gTi.N/vCҪG߉>E0B;yt EC=ƭq’(@nVL'sRU?+fm9~aMtyʢ>6\NqNsԷ﫪bСD"iA6ZV  /䱗of09oz?{r.N'cdKUh:a# l|9^P99TY'a-+kP-떟n zh1|e\\hmCm~JCT$ ?\ )V? wGqiZF#!2obx$4!N^n;ǃ ,g0gj2PP*JqD)DN6OVG‚2IuB=s T(!܌Elv-&f3_bhB?GQ5ir$KS4"M]l0, qm9n>X/ 8!'%v7~Z5Jlq9#\@Ǯ?EBr4=E]. B Q%-x;()EG:aP$୊Ŋ Bmtݖ ~QMb3nٓخazɬXTeP9H!goVBA˲$.\t840PǎEaNˤ2g\5ul349= vs;U2qD\ S,YaAŠ%/ȣq5sX&(n |%B*B|/҂± b"eg1]E9H׹.ռeϼb|qP/lvŪ±I,^!)^/`$]GQD]zLYr_^CO+ˌ0?C!d`y M{S7"% mFCxɨ:4!ϖFl)Xo$6j`]aY)ڵac{ƹaiWQMk"݊" ! Stw$!ݞ,/KjWŒΊĂ@kܳ `j-`M! *ŹgVym{Tƴ`[dQ")I]6CEP$q;Q$B؛jeIe.̜$q\B>OQN3h&єh$5 '/⪓qdʡT{eW@.qpSS.xe~n?1BGsi_W6lu8}-td4,q%I\wՌ *Ó H(.=f[@< J<m9-:3ɕivi"GHFYi~+-.5 +c'be`xWs=Ya*ᶲVKfɡ BMmgYHegd=p!v'tNQ-W @ F{?2A%9(('Q좇햋WX ب2}mYzB| umVRq?*I"!ej8C8)S bdz(+vm'YmjLM5 y{z? AI֑s".*Y"=Y^Vչ>X=Zf ۯ(;yO5P愢-TFz*7?+3\*ĕpYa- HPq$r _FĹs2-d3xkXKB?h+wWz+sA$. dxғuFc$9(@') 4T@Ip)KG3TF b>K`jDF%D3Dc4H:(> #v1O6W99!" k(/.(bY=& -HH;C̳d> >%T%FޮG۴;TwG¸rLyBJCH0BrEZ3I{g%T(߸\ڑJa M/BܼF'jUR=w]^ CRՕE$bJ\N=H[ ueo[F,OЂ YGa6XƙfY^YY{Evf\-  v[px2\&z1!ķ1,jLHycLU9Z\MxcD^!*Ayj_:ؖ b,-Hi߽\΍T9[œY3>)v$eNe,6ʕޣ 3,׫p-"("QYBB1DIgkpb-'aBegCLDԁ./Ry*{jRމ軳ۉ.)}lU'Ya}y+~W]wSk*cʊU`ᅤ &Wf~hǟ 52mlҤsO)E!Wʫl0(۱cÙ8x@4iO{ pFU^/%R([e> T!SbҘQP\tB-ĕn@{L)4y^ 3=Wu|04ۍ$PG "i$"A"NL$yK$:qXn^ IK86w^F^5 qBRG6DXVj Ud9"#x!8D.UM ?2R^7}f&/*[H8%Yrmv},N^rSv$9İ)|xsWFc|u}iv2|m^Xlp1=.`%Ib 狠%ޠ)c7I6NT:g:n|v/K_8M}{cL ZdJPÐ?@񮄢 ⥅K[)"%ive\qP1"lxu1kj哟cAN@S(+ - IW? ^\3zz\wѣr_W]zdI{@CРfRZ_^%}L暹ER)[#o2Y)و +g$el̯+ųz:=d6hcFҶJoQc_2GdHB$C1X'Cb@.$ ۥ*;Q^\h\+EFɿ eh6K,)Lf3.Qn֔24(lhט-YrU5i>npi54J3_憎_1!V=*JE1P2<٧x2%6F89 DoSW HB|MUcwZcjUI^֗"6]t.T.y-uŃ8bJɂ j2+P "/TW*Z!=~ۦGFrJUrr-@(e.pϱ*REP\]31q:C:.Olbcrm(YxX1'EHP v-`ffGzx%ʭ_$yӘF8 rX(MNtTl9de%Y%sTGk7I,DHV(vlljbU䣉\31a bLJ3ۥ:&ªuOR7nHEŠE1ͳ)0NZ٣߫51{(]*4-<΍ ei'XiͪC4,)vLA:<[~&6:1PЦzb l0R*V6WUl#9rȉ) ; { / Ӎݬ0^<(;?g[gx-TtiF!Hw]9%qʕ]Iwla"CR**P;/+lti95pIxWpmPDSH7ЗX,R]Z"FpnW gy)Yw㗅#Z@B8з( ۙ!;c&?HqR=D#r4=]4;ί] /.I4HP#Ku%fsl/82J@Ln'ɇ!Xh (*Q'd8Yt`?T)uTEty"Fe˖/J3fٺO=PB6K=30kV9!ALw(,SDxO `%KDA^R}w|; -tOm"-+qJ:*vuA F0I3HlYekr<>yѻ<=Vkٲ:JEI3g9 {:wzުL  tn>g9&0bj $˽JOTdb pjok-د 5t !4G  $c6jzfDTa%v:Ǧb DJcAhTgYm ٢TnN{/اULS=8:(Tâ&FZ #$ۖ^(uE!m=mX,/gd+}m^ivI>)sRȈj3\>ɛA)a6ESht{dd!ԁ~/ C.sBc7qP7ߪBu?_ZTY8CR9I z̊<]?y[FsʌǕ:ԌBP 2662T[S9=qrF+,T Z[Bi [YAg{dxwETpIs#%h +WF|| 4|گ~"0nwݸRyWl۾7g*eYEvM[Z[[bߏ#G`0k~ WXEh@GG#.݉7/7%R”b!i1'>Ɠ}ͫƒkPڳaZB2 mmmkL&( +QI]beyq|"EJv1 A9<}b?S7 H?6*~ ս%/5$j,,ߓU=ΤϑMdU3Hiֈˍ4ɱjmZxY>XrLntsKu\b1*\sU͡*Y"H*C(V/ cQ^Tf`J҇B}%BLAIizbT~JiQHy&G]a%cGJdU0P8 t8 ŎgA nyTyHclfiLGSQ³Հa%xc/jQlC<_ObF0 v)u|/& ᡭYzN45YWN5<a[R Q| (vcVSJoFbbOl&fp$sx`k3[Pt,X1Flĵqscx%Y@2I4ѝC+^BC,$#R)/Z1ȡHz`c##uJKi.zD}tLmEhkɳt? q )ScYpш c$C iH$G`IƂFHdiCmeZԘZ\AFEDg7^y)< xS⭏L`b GϱVm %a2G{s.]X$@MMMꪫi&,\pE|t6ƌ%i |b)CjcyA. = P9*Ɗ 3 u:BH9^(Fi@bq;9:-8?Ȗhv ڴ_J,}TGbjJ@6ېf:%1AAP 8מ1V:}Y0xY+bJ~/q*HA'5N& @AHi "fbT_hUND4x&ZB#5deˆbo`c4KtukmjKxW45I8jpc5VW@=eÃ|!Y:8E~x V&@)Yd!tFb )VR>S(Q(cb*fTr3dp_ij!H=ۋ^%CMhlVjˬR/Rht->fU59h0" z?on'vi;8V[Ijm*q;= /=fAjE?d QlG9=[: +J\ FjVɬ[ ]])²Cǯ?0P>?f|6\f?Ω.N`Ā̳; PI@ ;$.3Ӝ֤f"$+3Adr?qN~(@ێ1@*ψqHԀѣ'vF;,-]|ayIwD{4(i>#%!IJRz-lSȣ.mPsA#rl<͑\S. @Qv'٨ =Clc$*btVc96//$Q"m ?VY'%OpL6iz I޶ (2P1qB`qxPd1L]F_TЭI\]w$.RTn]ulSPRЈ`X-JS廩 IDATʖ ϴYG .5xjm4g1=d @(,"7)EK8'0z|B:dgƒ& V<?DYyC]X [^=)z}o[xƎ@o2 #xZnFE]'q Z>ͬTrHVj\툃Px"yVzMzHF< F)C%,t/.٬5J (9(E-p& ĆlVm-Xk[abe ¤#'L2Ķ$|uiYí0(^RB,ٍ #0^'N# ̡^ &3vj&q̼lCe7s\-,62da-̡ ZUf{'u&~.D*0$܈,G,ēb;zuq ]j!x<k-u9 NdD-){wINRSuԥ$Sdx2mf3JcDSわgVF>w&DyخX£nGz3=ƒ@/`dhCit{ )G140L[rxa,Y} 7JA*K;":lAw}\bׯnA]ǡ^0Ȧ:hTM5M@W|IcwSQZ,K5\ b;ϯ#7oNjVGjzkYSZ %hޑ(qT&0EbG1ZJbĐQ]|`-=l9Qk=)NȘxFb\>d#)3̙"< ypх LDb RЊ2 y"76'$'.$% MF8s@vN,dNT$Dۯı*LPy9c!-xH!㩬pc(,2^zx>#1==K7b@2w6{ F"i(] X^ZpDhSf>Z 64>\R_E/nyh $Qكn{x \qo?+zqZZbJ*``[xᅭp^[hl1.i_D'3D&Ǖ())^*ObH=~,/bRR=]ċ:2⦜~|b @∀QŃҪkl!RwW-$M,+s)gBu 4O:gr8~X!14fs,k9t=k 8Q =dcQf hr\z]fH-\UrC3N^6:;I<iREn*y|C ^gvuyL5)˞ߩ]ٛ4 AZ+t U5Np7_g}|=#1T ZJइ,\~ca~9$"v-pp!Acq>%99JϒKQ|@m ]^O KpopzVes.]-1l$v_7b{5Ճ3b *6k3ϫE-j(܁O/ #|L&؃egods蹰ΔXm9pɼljAj.ҳ=(yc>K"-^CRRtZ l9 *\HG5ѡ= $씢qK+ 41Q?M}: 0 3j)5IP%VÖqm*u8_ 8e;frR &&(^HD<= qcb͕T+@djb YmnSN]d{s}<,Ϝkàh%dȖjDU^΂;:Jx?^熲A鶫tߓ"{` @,$E^B&KQdj4#,KMH,XX/xYnK$}ZZbLޱz v0Seih|ۿ=(30eXPz|h kە3v\_H♴#AHhA "u źMcy Az8B, )ZSM2/,C!XV31'?HJeW@rE.yFl!!,cW)_ z9Jמ|HqUQ!p;g0Ȍ6f`xJf$γx>UQ\NJZ5(O@HnÉ3(&-SZXD4泇TOfT d(nOMV T۸ᓬ(:/5zMk嶙ԊL[yÚu*pEјLRNd#|¿aG5݊]Iؖ1G܃{[p6 >|:acզqh(G/mh\ 7] !b3 ߦ #E-jAֳZ!i"EN`Eۿ`8ېX )vhrjvc0yHfWǀ.U?CJAidbH꺳@ lJF=C{75Ru"HG&S2 BECK׆2ZJɾ"Tӵl=!0Ťʹ3}c|b3?a9L,]_ M߁ _1 qinW 6a+?&R"Zie`@k``g.Ic(f0ǟwQA%2늈.R]]cG6q"ƐX,zBipZaPQdy ;Zc&.S{x hL}! (JY{A݊jgYk y{4|bF,,_eVV:;H9ϝ:b I4Rߨ2wR .#K4LTwdT.sfKW6X5p 8PL[~j@"<ԬվjA?F:F>իmCx]0O s\h!'#u嶫a܍XAsGG!ruxk`~Oٍ^,qwG OBsM WC{e{ !d Xx#\(@|B1"n{ l @NH8bo!C;K(>癢So{KVyHKex*cd1H+|4䣹H~X?j8Kqu$6R]7K"w{"ؾ%XMTJflTcRN!p`l\SnX"DI1 o}2K|?gT!k\d u*F("" ayjT"JF /E&,kQZLA,;Ͽ.[; ::W&AZO ,yP+p ѰQ,P. # Ct _:˟IA;, GXrCzM kbD&f(kDMdqR6%rWo1 nL,xd>ad;(AV${̀ lM6}|8Mna ^RzG\:]>5f"\K1DTC'V6wm?fR&(=!›')`H\J}VH AP9]!as fԎr+O! B+_AV YEy=БRzf|8-nJ-ApVW>KؕOa XԒŮߋ}%,޴Mr:@,SaAI-jQ=y9qm5@DȡQc%)THƃ! Fk.|'H&8tpM ]Kuzr-ͤuWMr(Yx."~?r f˖w n9P*\Qnض ",k[`Uw~yV#FhtttF2} fXZ\ ]%8$$ 3 W f IO3*7]\]ss-5+ڂP(<1nټ_89 pt5iƘj *(*4cxCJ}ZRp8BfWYPu^(t̎?A* =P  f4VUv zʜp>iCz[kFFW;o UB28{J5“XE2߱Ӂ93 Fl{3ӡcZꪃdG>y L,\9t$`˧ߩԢ}8$,mƖom cXQF!_nj%UCw;>qr2g wasxg]ްͷ^7Dq73Q|C7Y8J=nj<D?N[QX.( Ƈ``Ê"΍kGkZx0i4spF:oi'kpXpBu9_ڔ^ h#}n,25 ;5wA!Xϫs>\On5#r]J-FWA!E_ExC(^ݜpw~4LƨU`:a5 aa_sW[|? z}*D[x)~ ;ځR&D 3ͬ$#ɟB(Êw!2H,Ut@_GF,~֛Ap8z,Xy 22ik.AOyywd@$P IDATojP]q|,kÌ/R- N ne0<8LJGFzz^ fdbVa^#H|$4R?J-W"~yq!PLNN*?r\e3+ cFn8!8F1@u`eρZQziԭ`'wr0Fj+[50!xıR1Yn܈Ծ1"N kj8 A`1EV'YMsF4k ,Lթ|<VtbbiK`5ugpGf~?*` ͈$9g\iq4aEv濠!ݯ^DAj_~7ޞ#+niY7EA,#+9SA.Z\P!"o,4cVcj\ymْ U2`ϊ!p0G^$=iLRkUC\Na&)Zf*c@iJ,\웒ZtL R3y\16,adv,bH$ ԌheuUc,TAUNJ[n9Ǟe?U@crgR#VD7: ;Hf再2bq8$ϠVv-kMj?`8 @~U΁rU"S_$B<=&](Ubh AS#C)d\nNQ5q;ń?q'< xWď;rf zbֲRuP '|A@e?}T<w ߩ{Ȋv n\˃ qͬT: ;BߍLdAL]X4f0K`k)Dބ 1E#L9t+k1X{l LORRj)3IFatz:*A@Fn r,{w!- G2hu +ib5ih[AZ1⋠R1˄+QdpY\Jfa!=R, P^0T3**X'0Wh#[{Wx$ԉuܲG-4 1X`)zIALKH<ʱT :/Jρ\4 P~=-lȴ,]"=,@N,:LcH.\H`5r,(W] 7K,v4Y? (S 6g4u-& ~q^ܙY /r! )|OUƏd%9y߭ǤOy2wʖz<ۂzgk2'cC'O9ڌ7 02??!{k\a$)[\GEP {#BXϠ,G;q@KY llj,a-.'Nz?+c4.i}m>{f!N e~߱*gr&ϩ\߰{wކƝ98,s˵ZJ= -HALX.uID ގ`4n@i#/TOr /^hC2kI~H Ɣь-D݁yNG~/1p-|Ƙ@ Y]ĠObƩ6kG}&@kp91 ."LFM =)ĈuIU0ȫ݋R>Bfl3ϓ̡Qk⚿X; J➱{ɤ2 }TD b;Tb]BU`{Ln3)=|Rn](&=o(`f5}6P5z$]XB G|gy'(>0ز+7C7ۅo$A!x4ω@H1Fw݅-4{֫Qn>7q\Zwu kQt)[ȉXlc.3Z$dvmDE-6:;# ]ԶNlnF[5tޢ>TgNmR'έh6ﴱq" 2˾?bӭ,:L? pw#F?v6^(U R|#Fx~STgV׷e>]Pw߁Z8艷i]QaSg7q艷TR(aQ 7?:,"fbx>%~H!㓃:Xs捦޿d\WL!L}Ѿ-)}I`ìKF!cL[yAf}oy;ogQ+6@Xo%FOF-= y!RmW +G㽭a0D+ـ͗o$WUϧh8E]} E Zb Z;_߻lY[k[;}i=mT|UM6~Y&rK@OOIW,0!"v:[DI.-y i$ /i*7_S>"$+Dwl ?eEa7 _K-VDZl7*xb7W`-w#ذf M]6XLgzIGt\2_E- ד 2Vȡ(bG#,@\.:`Ax`asg#FaC!`baM`ԯF5٣7TڱXYV*j_RJ*64S&+NnN|p[Ig> T6k pټ[<^mAPMDf:B@XT51=: pKJ{׎ S-~yV`_~kf*mQE8\'.3Щ,D/`(ؒS-|u,|bj$phWOg 'SS1|?Fž :6g$R"mϬ!)DH%l"zvѽA90\ n(PPJ/e?(MuiZ. d*,:7܇LhooB,*0|Y-+\QSƑD;ђTa&F0 Ɩt,Y( %7#Dl]e ;pEt]z5?'b 5ٓŵ l Y=C8br1nAR41r!9j7``e)]C nTo L$:a9&FZ\GYQ*k͗.wTD̙]Ucĭo=Coyr"+t+v'}o3V]lD({g=ۣ%6(ŕx<~X9=Ӛ]w)hA.2 ̳g*XhtnFˇW`Vn_]qs(ä<σd&i|N&A dwC.|O`>v}g*qWN ;kJӽ2K "Y(,7+Q(SEqu bɚN"HCV~ T.DD:J#hf K0‰4~߰`@bЧvxAS7V+ ~ZR n-!"2N~c u64+SEݲgͭ?0[_kwc=[8m+vd`9V\n7kP2m(mqK-|X$;|Ju1-|$Q9X.X6\aԺC7m$R+)uME\ZLNcʯp?ÌWlB~!Ew'꫱3+׃_zGa\vXeɦQJOkF˩=;sS\NADڮHjV:sJ'(ά_TBjR.w}k7ПIc ==4弉Lz?obJ}]T -cu3TElAAer> xC-oUwզyoCoXކt 9565qn6& 71pTF'1\]^|ѹ<WT|07^AoȯQAP%pbߋ}%M! Q3ixmdG`=}a^??Y)=u'xpXM^(7\ #7H=\.7^%{?p64qɉvzd $j8nj<⋍D:D;i|`i뾑$s1",AV@"Ԯ5%0Sw9jB+Εp.:lWR6)0mnhjA?͋Տ}qضo:q o z#%$(d ^zy6n@km87q LT{(sb&hQ { k5ꛚWPʎ"KXPH<X~h~ /<Z8s/,e#xz>,M0m@ H&4$xҸr:pU -%R9#;Ī^ +C}n=xVӬ$P!BʼnflXfC'[6z\OC*oǛ(jhe+lQ$ۮ;bH% J"Z/C,w;OH[q ͠ ѣ܂sgq KqMU*/bM`%Y0']MkkBڑ$jSkoH6ҿzVj(Xf!0nͮ/oAcB w0|[e. sK?S^oB4~Xhzo_L^>FG:܊gPy812zrZ^`X,6s XB cP}al~+w]Л" F:A=4x xJ6\s >;FQ ~dPBTz''[K+ע`ï@^z%wA3Fb-hoR~ZwE Rݢ:DBHԢ_[nE"@oo/CQ| hg, Ԫʡaߠ~=%Q\JMG0u8 e26wVpkx~꾪rpRW x¯ZO0ɞg]Aa/‰j\/`4)l-BF%Xy)] wO:kRgV<%' 03sn'<IR5цsPŽ-Dh>1| P&x6kZK'ׯaErҼA6 H EÓJP(L䑧 Ru%qf/C-3qVG7TKpn = Z 6mB&a`HM@Nmq}BA"QR1a0V@g=p8ԫUX(c1[#W)fΝǒо?>+bIgmT.+N90V)5&(")7pVѾp1ʎuy r 2@" H1$lٲlw}^׶vϲ-=e3 FPA$@ AD"7W}{0 3g}7/&RS91fƗX?_33V.r^t>t{2rL6MBXj?a Jf):/iCћ::UF) 3sNWDЗ%VJ܊)r>#'VAK(9OǓj*?߈W d];R,hM¹r:{[i+2Fߨ$8F"D2' M+N]t!$IB*#ֵ ] DzITU z<b"S?wѴq-$q'Js.ah^z, lɄa:uXWe:Yg-}h wR}|A*Faz5V !,JB=>7@蕟=/ܺwV=c%)̨k3a װU_;4L\2vzɬ}.RBc-ҏc )Wפax#^qQ5~)d@<9lyK"Dv̤;-)PH41at:f-CFP[M2ǶG3z6=(ōLL -UK)xˏFX9n?2Wp TEU[Y8};.z,nYC!qXF7l4* 40l1NWI4Un-90rcnauyN9~b"L`V[2}M3HvnٕpI4^Q2Ar2R:ȪwwTN2 jǪ]->!}OT-ϤaBXsX%WTJC:qeL _ƤzխLZd8 VTQ5K{^D`dev{d}3u)(7ULZV,ui7i)tʈxb=-]ڒ#qO6 F8-;4M?۱m+?w2nא(Zu*M\gJLS1w[ˎPn:יRib@0'w!)&#noH|Z1r"Av**qU~ I#(abU5zxê>o&t%Q̋Xc/X IV^%NZ2F2qKN2Q{l< 0XS3$tY39XT$1V/cRy o/} C4d>IQz=UQbf/k+ L`@HuD#H~뜸E`_{c j\.R`C%Yk:.V!Z+V0$CSt{8nnvixqq,au{ROy`b]z”ڌ|sX.Gh4'm:9w/ڲ8 \ŊWM?nP>L-B.KPab%:]J(I `I,Jal]-k ^|C)Rf5; b9r+ sBa"mŁ:_ @8xݘZ60ȔSRwz?{ʾːrOCn'Kޠ(#h}RU$?$NEWg^5y?N oa[z5\nIj \3xvoQ6IqbUc/z}|.B^_a%H'~\ۼU(Přwk ƶhrxRtou>NJJx7^}vվp`qmoȏ_;Dz|y- l5 `h@EpSI,Q^##bxFE Չ:*1]RBL^:JxҖC!"ʬzXt:۵U%E^p$B/.K: ݵf@2t2ƀUHBˡVPy^5TO )ɡY9 m> iSr,N"wJʼnۆ.bs'eΜ! Gw;~'}z KGa^"FƟL6'9?sҐL  )D~v>F?O12kVpi>\3u: S yftC~9Ifp$LCV: 8lSlt90tfP@:-7 1|&9wb7"|S*Z;|%?~zv^/F8В=6wX[. (ТW#1jǎX2LW#"-iTK UʴIy !}Ւ>'JP4lbYCHrb9aě5yZ Bd@}lfMmyo|1xR& >CXY'c;#mt#O1z96'Bv6n{X:$bWΎ3#;@/6c}Q^(ȿrlgyXs>;;iNeaܢI'A,nS-HǠP(!%00dQG-5]:n"C܂rχ*]JK)(H&YNTא׿d xP9_TH8Q%'pYUSZJ߈nZ;߹;@|y_c͋yo8FV>p$Epއ^/-oyw}% )VdQu' eUzƄtJS7_3S2N˫CM8mϡW-gW(:ճ^1⥗^Ţ3_/^|+FӘq994,2Cm.Җ5q$#m-VZZfj?6&o6+RIsL h=U~N<_üQ2I>{HT m%,Ýc>sשּׁ#Q :ωA [xa֟b?QY2뎇0$zD>j\e9c` 22&g~A$͟_JS(a4 nLjE{\U3^;/X3~9~~ԔR.u`}dpApNU=/$vr@|ήQ6zxo'~Gٯ6II 3pV >Zf͚-:tHE pCS,S42dLEܫkbOVƒ$4vnSo>T u1|gM{))s_!RƤ.bϰC`X̍S) ";S66-,A5WsL{Y]`& >Ob,/ &V5 nnã"J6əSFW"t\`Nsxc/l&6t!zuOIvXꧼ`UٽiCk'!i Y:s%M@kjkR!%KFB.(maM Ь(H\˽eX$[ѮJm]:FU^ĺ%.)*^w=NfZT+cr\v-9te>\%<#\\5F<1ݏ!V0kpۗ~ 7vh j+EO E43.`ǡlx"A>:ΔY#Iy~:Flϥy׳pBR>rk֬㻴阚85\Z=?.7R.GeM0Gޯ`ڵzJ&y3n/ǧlM^$/HS`[I)5l&R1nyKg's^߸oL=0S(b829|9g*FxĞ]*?| MMl1?F]#Z3cr%tQp4K_ҡ!rmb<;g?MLNK1LcS?䃣^1;vªWؕM3]SD..}ğClIRQN5T]b$:NuWK9 M%Jt|Gtaix-\]HX}Kwq9E_l%Z7K6ZE"d=DWÜ72rD=\[YCCg$M5>c]XDznz d&igFId+L;ؖQ|P`ltwM|+;w+:Nm' Ju!ۥ<1}fdSHwW>t#+'ug˷ٺij.:El"sKJ:=JTȡ*49s) xf" (^I&6 Xk|عvIVjJ,: Aa<<+I@5=][GM¢FVZ [/l90\ͤ⸥<\Ox V8V>0T:wP<§>K̰<[)Sɗ_j5762E~E~l!HVF+h(D2_/K)*ֱ<| ]^g];ʊ?ɇCk[rR ;!m*Ũ5h-d2:qmMRQԠbiM.eb"j=)gRTW!Jiĭ,$,ع.VV>%3g뢖6TQ~3(ֆc6<Uy\9U>[?{;b4gkېpiKVphdٺI^ٴ+f+H:4U}I_]J KR'?̨F`S.Z..| iXya1 m~?é+>:}2 bƂf%;\f/6v0\}eSk`ZW@&߆*v@"(lLho ^cmlJ [-(o8ĠAZ*pJe ,?=!_YVX$gM:K9N%Ij0, dbRÔRC2u]kYGbrŜfP*xdtl!Nh9&U-/9(83B% "j1}FPJI󳛗OA+Fn"䑘8\quɤʹ! zW:uxI1z LN24551|pٹsFq.l0+WɆQAahY݉gVU!xDTխ,i3ϼBf|#rLod9<:02˶mw:ﺨDBi.[bͫCXt4 G[ Op{xo{7|[nn&oٳm:'1n)w=w;y8d*Ve)#!aP].~$Ul6{SNAuOx_ɶIpJˇ2>흽8&.В+r=^)ʠ-rV]Ylsч_nIvys\0xqfppׇy3;>ȶw^rOOe֜V%mgbVhF־:GqrbF0;q֭eGpnZՙN MG+JsᒂVj%KY(a\Pgn1BHu}b|'BʖZt;v.n9l] OO$G 6k.57]Ϩ4@J0>7 p)dX [sEtՓjӘD0#9I]-JkV-;MHa%)^s)Gg' lC'Bp(CFҦ]v /ְ31%~? 4i1Wnמ{L6X9cuSk?mE&_=HI&Fnl\8 tDTW$Q 4 )RN<$ڷ ֌ʵYI0lh lar@3z$"Ta`*W7Z1LHy@ΡEZ,"EDVf%N,jMikFIqnJ2\K G:>o #+IM1~Jj+бo/& y>M%w\JWsrW7eշtp*&X,EmlKX`,q߯ ^_r.g\XjbGp@i#Y6M/[<*}8^4iFaCWю 1-|d MK/(P\̡Hb'0gBL";s2grLĎ E9Eg^qý'n1S#KM3X3q|%fԜ%1sؕ dl:2vl~la뎽l0}Κ̐\y ]nQ-E-3Kcv{"F:R3iW}nvSo2f FpCCv[yX7bx($|UEg:B`.n峠r:0qM[AJ̡FirxYUB:> Q^iturmϤl"򝔺#ǽB aY2z KW:{ew~,|" r#/brwynzRˡUOJi !BV)78D^bJ9"z=0Xn:PA i[1зV;,a** $h^%k]wΆ l( q9uCQ[#D( Cw'g2Zl{_UeK_"r!B7гD8I])C!{n2+ h VbϾO$nLl\m9TZKѷguʆKIx\M/G'UBmd"9C/^CS} #GWɓ2dN4`x<2e4B!)wvQl{MC0s^['t.ye%Yq+U.|_ ҋT*ҁ^Ft$|H:G/Wfb(\VV_q)O2-!YieˁǶgb[kk\_J$Ӌ\bz|P 1R'" X*:?O4316J!S2L7S.NIgĭ"q4AdDw,|OʳfV+l2#שgĈݻl6c( W/O*:~!7}ssJ]Iݶ}xi|OU{x?R&~w5/B;r>W=o'! d2 :T}ݷRLRʈ[xsT8CuJ>˞dGfJinY[AZ ,=yOOwזɻ-sr^;OzLd<6g.R`/d2Tb̋TO)jQ"bkCXvVmFd_$: _RJHwąY ;~xɓ2O` =O:UwvBdbI|ZSNY dbYf*۷oׂuqkJۄ 3}t}wy6(I@N4I?\B2c嘰a%9CGGuuuHyK!˽g  [u _ߌa)_:"}-ca<GW^yܷنE#7ͦ;'vɘB//\w}W \Fohh+א;v,?p|aO[CPiӾ19(VCM*=L>R4^l1J)O6_WFTu%eLj۶1kB(<f.W8U޿lRutm~x= nmdL TǧvUxi5M \s,̽j?zL}PGWg{ 'xϞ_c#izY a%m;o^ʑ7l,瑟pnڡ%[#sle~Gn΀ʸ)/\S,2΅\X (OGP(וqdNM ̚BZ<[]2ndVa݋hEvmzvIYG^^s5 :YwVF 8/sM H'% ϬHԍgstvqNU1@uarnym(7p 3IٳFdK*Ħx3A_]h[|ٙ;>LH *N>k9vo?7 #0{+J~7L`!OYw}TvQ 2.1jDx?rb!&%\Pö&Esڷ=-"„4ɢf<<>FVR8y[ IDAT߽= }]; {B'Hyz#ߞc07\nvz^T&'w{Q%i^S麺LBW\I9oQGŷr,|`FYʟ>zM5Y+__Oٓ/2s4K@+6q #Dxaxl];+#7[JQ)z4.t+1d7Mf6|<Ž){7= W_w ~})̚Hgy3IFOwA^x81BBU'2tAHPaٲ5O404ulye5;>:kn+w6p)vCd'r͊DC5kŨ!BE-t99WC)yHQV\[wc{M7'Ojgh Wj['L$0yY^rdRKϜ)B&r6\7[õ@<{jkNg}@W~!XJF]b/98 Ɗ-V`vp￵#yYdlbێrci&&^9eb$3cVK } _]$agy-b!'_*]ȕpm.a|ԩ2+#DؠD++L*CqKK!X_}3%k0;|gxnr7e-[osqp_@9Ԑ״dy:=񥂐@p 3ϲWD’ 0Ÿb0U-5NvpܠmLj٦Vːjrg1F+Y]N &XLJP׾W !qؤkBEeBe-ZD9p#}CXBvxf*&鎫 8$榛nIOb"rN!,G}w"=g%9XK]l3]$mǑt<-ir9!y<\Kt:H΋L:LSP/I=1v 1eZ8>NͰ1 oHR)O[N\Ёn$!s>Р5|:ɻcĄ)›xl3orF7JxI\ȠvND!U}QxgƷJgΌQ۴\o6\HIӈ1R눲P"hJ5eޓ pLcW/kg іCCHQ*KcY!Q[DLXqL'w$N1aS+a4(<#b0*ן70ӿK'aT:ٶ5zUsKFLWxb;k>}-(ӏ=GffnCmAThG:Pi~Te'~-mel:>xM5{n~_! R!Z< d`XZJ${(rʬ0@kJ+2mJG:tr[y0Kϩ?v4n C t&%1㘝80iHȸQ)6EQ #1?ȱKf8'|$_̡Xi=RK2JaSd RX,Xs%BK "j3abo.gd󇇙~.W6B "5)-dDoѰ(*?,'@a2er~`)q/V$Yƌ+8VasHtHӝTG_5Uǿ 3WU0.WN6xOO4V-Ak]`҉t+rF[೿ken#һcp H#B`ʮi7N&%!%Z-}`TP(C GiVN{'^+ɢX#x㍺X%qH~[br׏GJ*oiTh{>WbĭcfkΏZ12:y!Z;",ԎCbE Bg{;9_E/Q@Kٸf۴ Wk尊@Gq,dC)= r($3-|ﴳfL@* Vac9ȭB(}b=RͷX6^Jydz?e1Sid9Gllo E}SJk$)Hڄd*FZ6L#aRw®RU=u8֭-3V|"XB*X12[9>塄5t̗7 Jb(x[__[UhSS|'J;BʻRKq<Q>TD M t#<-؝A>P4b(|P`6n$rغi#ڗg3k_Z(Z~Fp@bׄM̱uk ')k)+O[}+գj̙ZJd^ZǑƠ$Ex}{Px2VZǽ>m=iLH)&n']tiT)B>!t%3NB2MDzyUCN'gCSgWGpKSNCS˚XmnT?g, k`_0jta!c0v\k$&HL1n=0<ә-Rd2X"j(x\պ$nZ4b,zZ%l&Nw$Bibx.t%C T.+.cמ˘&2$ر}JD28]v$u< ;mY:~T:#_,t໴$HM B $FfLm S>UjFAZ=k*X^#ˎv^a,V(Yci:Ͼ֢ą7|XJ)".ZpW4-*f<Pe¬iĒ8gth_K;,D^+\]r ťЁg'jb:u-Ԧ(v P7۴:H:XÇZuRIaN15N6Dz^ F"D1 B6ش9pBeabss_"W6ܳpN>*jM<zyݟ#fB]mMM S#ᒃXEŊkkb [j̡C)7rxI)AGŮA B̡ h?cw0t.] ۾ooۍSWpͷ`73Z\ybH MH${@3MMx[Y?\w( 5 4Ē1<^y_0ڎ?XoW]I$ |~>H54D"=ļ.B}g9}8Ƽ'BX?o;M|_9ӣ8?p.I~ŔsR1ss.Y/FSSq<'}U^ƕ0PyCwb^n28%Lf*"/6#X_nT}yQKg,ImDxL5xuZNi~h/#fD'%jW[NނdQ4cHM=nug_7ZRG/Dtq+Jmca@f̕1Ԡ?pQ*0k,_y [Wh*?*kѪ9?f4ܾ<kyH>|7j]+;ق!{8w$XV)x M?c7T=P 6hnD,:yCJE 3NX#:G`&"\=2< z8z 1F$^7zо*jF`DLnz ovŐ9,3=lo&iϱi8m[vX sRy:#Vf5+i% p-4p4 h=F75z hvQɹ)X| r^3PjGAls2M/8uoap,DĄZCD'}xJfkhz;^ x.\"zKƔ#>`{;k J cu 8`Vntk&@ q2 @;k2M@QL8Q)a̘ q"RϠXz4|xvB0PI׫tn:L 0]x5B1M1v ŢnEa|% #U@\5!h7MҖD#8knMˢp3\L9 loؗ-jXScCӐg8Ŭ9ssĚg I.,d\5`l]W+֠!RJĜ"W߸ү=ónnƆ{}OJ7$9KNyLs*du]p=)\15D v|s6tTۗo0L2 PW-A3 hƩYfWzY!ߓ?Uu:#zz8zB jJVY(B 5WfƲ(,Hͣb W± *H e&'"K$8̳ƟMx7;ܩe6z$=]H=8Rh62i4=T}= l 3YWT" A:̄3ޕ~*f@=> Wܴ^ꚓhHooG5ph&읁o +z3y4x%9≠!)+[@9tUnZ:+f]d^z&!kbW FU㘈sؓFvT@Q邛D1;K]4f5n G[ΡX2~F6G[-I~NTey`xz1A5P( #ǥh$?݇0fM 㘽w5T0lfp.Ƀ=FE1bA昜 ^ B̖R:@Hz spRَyp {o,b%M^sy'Kbٴz 5cՊو;il{ W iPJ ͕C9\5u,.!Z׈X;6,Oc#0P},Tc+N:y&cذajHСZ!MO+WUPLP<9T=QZOowqՒ`ͨ*E70T:tjxJX~ =FuJɫtoJǫ9eC2 xax Aq4 wО;^qHґd$g:tǮIz:,>}>j-֠:v~BR>)඲1,\zTN`[p#IɄ8qxBqN4׿!%I^%҂+`q0)aEt7y9L:z1~१6 5.?؎}zܴv*'Y˥A$Vs mkk΀r Q+3fwܡ~'7HVݛJ[o_ 7߬rV0Jx5klA*:o=r9sOqc…jt0`݉9]JF!0cL:W]uUUEf#;2HUY~晧{&/Geu+DhDI;PBX5 ۮw1ޓ&ՠ( @Ĺ:|W]y3j:-/UŰK"Q|SG&2W:vW#'d72>vP,z$>81rkYkBnإ*^dcj5w\#3cwppo ֮ŕW{MnoGlrճ 6]F^CA1(gtnm cՅmbRT=;qƪyuц^SRI/6i*ǭO}aTEch0 IDATL)EC4)dG-sQ&5C.wU5a'ꀺF`ĪqwO FQ f"R1|Xq| NtFxٽ5A:TKu u;LW:tެ* B''+\08; E  );%tv؅l&h2 CsP̕Dޒ/LDbżISZ0CGƋ/;]wu8뇹Q N< %㭮e&w2bkА; +PF uF6OЛG4`_N̹.n6jfO>z+c~ٶ 򹮚5DZ|ޑoTⱆgW :3Tp7A jp<iħ]"u5.)н )ruTF#F -nY6L+'CT.`$k:GӿĎl"UPM{Xu*?F,\RqPf]u&)ދCrB4M^{#"F e˖kܬOt5Ɇ1$ѐNhc6fNkűWzѓ<єiC[W$r J uAMK8v7nsci*]]]K<~'Og`ƅ9q̷amg͚NGdo ÙúuРPY/r9p\9b֠590 R3fa}J5Oj[Yk;.,x>>!\J1pj6`6Ffd/vkК?I{9uz` } =da%?m#xwd[pՊ31gZ<=8n/> #q!ES򎹙'J͔_m"C0,-ۛAwi!nJȗ]#!c`S\Eq$iӼc,qjmm V\90p;`F'#G#X:%`B 'XJ؇46z,8tS!7;VUtaTQʎø::^l߰OߏK`߾y5|+vIH&> ~ ===j1H4bh/f{1t2࢏~ K^Zb _K솋0Vӛk挩(#ݯ^=Z9>y{ )J=^;@AT{ e4aT"Pco a#Gfq4cWsA/kb &hJq}vdAC8j m(uUC7gGruScH-)ظ;}EEdzP&7veTg Ǭ9W߆KsB16x"(!N#[BӓX&8=HgČG`3IgQ8㹘j uـڳgDK ٛvWmuSE- >:$3}{3cU3(V@T(ػ)l|sr)kA~"f(uc ͝S00 H 90IDxq1L^W]v.X+sȌ86g1tYav㭧u!-GGvюH`;1qF+\ԑ9҆-o;e6GCP泸afz1ZZ14zCwۣyX3)҂j%q 0ғR`~d:\]p:r䈺Lt2+j3MZjkژHܤ [0vt&jgC#Ww뮇nurܦ2m+b3`za<î(e0I4͙ga]=]Iq%H8 1\~,^P}*Kf0eLLo}jAZ2ý* E5J##8Rv;3PH}]䄻kW']- qy]5k6:,a*` Jj;yTcCYfyb[3H8X_m{i5bJ|vмTs)4=yx?%ђ(=duE6#7 q\LlEnӛ}2Nnr.^3OlDct̝kB~^le)hƚ0SC?)މ\6b^O:^xJV7tߖcOl .\D;hıx4 @Sq5:_&4`YرyT*A_4ra$҆'c^>.Ӡ'K-oq~ױ=gFC7E /|U;2Q:16_ s9tgNq`Aq5$SJYoáiX:R ı"<yX]Ԡ5pTҍk"!q_5&WiS$HTGزͳgVқ' ͬǘ=tG'zYtУqu`Lj){Ot]_M؟.-xcҬӰy<9lYOX> Ngt @]φ"Vr_B܄bg*Si2'Y@~ jio4뭆7R2x$>dGgs$ N/K0,v\ n3pMWcj|~ 1"3zv+/|?BubP;s֌ȼ Fdj#ch^yn4YFBəO"{co=X"z˵ffOD5? sf7 ߹E2bXeIE.ن!. \$6@NzY)1^-mo_m*񫤻wn~mImL~Q; >o4]` c mI(%yXWB/~V\Ryux0@mȒLX"K.z$mK=le*JEv,4Gx.muR7iyޙ.c#w%?Y,GOayK=aEϤJ= \w y &a?a= ʳ*e7\t6~#p6/a@$L*AqϧQI9-Dv!K(YeD!*Pb3qE1AC4[EWX}#4*%8ceXywU3& T o&?طo.]۷3gT8$T1,3|U 18 ;#O?]S~.Ev=F[*59sT{2;w‘$X/ MwVƇV'8x :,U/ixUʩSz;q$~1$o}O4I}g;sŊ/S]ڵKM^/~'ݤvT_m۶v!I2mٲ .T!ߑ;urXret ːmmm^+J3ydkRLEXܹSɛHÎ;_>c;J^09q#?+ʊp!%OxG>};ɶY2`nݪFy ?ٶOG\n4_J)4S߈/yNy晁I}={@}d{˖- #'of2ia>6|`5M` wd@=OId>WxN~AYQG".inns~k'v+T:M]@$)\w͕=lܴM ~qvTv#1"~orG= \WC$BTlv]Xr׿4FW7Lx{8Vpgxz 1uF3_tX(4Z24l6lwܡ& ѽޫ\qʠwOjxY\ *,CLK#??bƌU;xYEe9ۿLZ5X G!p``F׿2ʷz-n5PQWWF_O?}sȓ_s@!n̾+Cn:5x@|EݻwzO~RA7M6+/">OOիWcժUa|I7myǂD?я}MNs=뮻FٳoHys)9 q;9M#O(:Xuw}?d >c;\hKyөG?~W_u%\xζ|I q7pC7yöȿَlV ,CD' c/C:MOK&l_~FL} #aPXg?᧴G/o% ćuHbAc|{b[DHYa+*LS0ˉl'oa;'alpq˹9Waiض}DŽ8TY$v WI>`CcM#Y@8#猙9Xr6MCg|@<r4\]G2^1f;to㖘b9 契I#MYmN+:em'm]L[%I#qWP#.\N[Y͕Mzdg"KGyNX7"o m[4Jۖ|.mwM' <˛ .;O:,eDެzmIxH " ,YKwd氞/W5ބy.E?y#V[ۧRD[9frc %c2r4,o luI]ٶ\Y4\ ߢ,m\ؒLi[46M$Bt-pJyx.9a=g=4Q9Rm瑈G(ԉRRl{0M*ٍEOjUQG[Z']WІ/GWA~~?QЋLۉttډOCi- "JZ}@O'Oŀi 28>~{0Év5'SO:TMI ؎ W@OTn(x FCOH6#(~;~ o{η&3MQgL$ض}'^<2\AZٌ|p7 ڮ[F#3k uh,v"1ʤ y:iPsFAr[:#7Эr 2/Jg~{o6d>sy_Qȃ?p8Z`d]Q>Urp*WBx^ʩu4wdc%}ISor;%=҉~ TI&R&bu_qgn*!1P j˦haE3 #N/t@BZDl x-eJMq2=:Mq}ڔ dwRSv|nN`د A=u2BO Ky\,% ;]+77|ɋmlEX+Njh}5dRv=t?W2 ău 9䢮tl$BOg!#,$Am/r;-:o+^| [y`; e{+_97T@~8e?k//* FЃ 鿲l]&Dyr}ObqFBgMVN:OtPt$lxmT7C{ -L8bcp<ה_6DIj>-n/zvDIЪmnxSA;ԟKok;>ϥke'8辍Q!]ɩuRǖ\C-#G+>y]2@;g,1 ]DyA4T V}4q8`hl&<8 R>/ VhBYa ͤT:q,@gDC+e0L @] eO|#C۟yf_u,!eH]oX& 4ueztyjzӽɺ<0N0:!qG0V\8Z^mIqq Vd xFȹ FrukQ' €o-#c9o7T2n, O=ut_.?]F mׂժ`4q0Ns(v׷ٞ>q@"䧼k~ZﴺjcKX!޹frGC M#c2-@?r M>[tzA !aMMH{ 9Ğ-Q lQvBvU" ;!!nW!S(&_=G׶yGGcf"I$v48ׁ|z_P\|\[5튅ZIENDB`amdgpu-utils-2.6.0/icons/000077500000000000000000000000001354600334600152515ustar00rootroot00000000000000amdgpu-utils-2.6.0/icons/amdgpu-monitor.icon.png000066400000000000000000000222311354600334600216500ustar00rootroot00000000000000PNG  IHDRddpT IDATx]{Uu_߹'{ܼnP` y(0DATkETLV"2VB@!<$@^7{o[g}ǿgΜskZk|׮]osN۳gOeY~wuuώ;lwOO!m۶-6l=Fʍ92ټyu0aBjVو#R[nM6 >|xg6m۷2cǎ5|ӸqR?yyn[l)zxPu1!Nm"3g<9rhNnjcOBxO}>%~Č3lѢE >upB3g\2 HA[ ƪURrHCB:Sl 6zmԩbŊ]tE>y'9ck׮5k$=\;J=# /L}< yHOק@x(N6.҄ a !H6/ 6(|$K~)w/( }SG}4P҈\r9Q&,"q1 03e+`,azQ$E~S&((Ʉ2%ܨ AO{6 qH$̤Irp8mҤI/\8@S83r/g@"oQG2#@H@6g*lh,ꑹX3}`P`AYhF[]`G&%zzzhqPHt?ie!D2(8NeLkab}.̶0`z-DvPd}|€PQI`f FRN||2M2{\CC)MBQT?%2elIzl sI;g!R fZT)="tmXOgVq9>/91"Ɨ>t0*){)K},ˎ1~@U{M?5e<4=zQ+B0Ed5=S]V!Dv.݌Nieh'J"gbml%~z ?~| V*VuG4-FDӀA>$\, qAs6u@08’B] 0o eI,] \à`(: Bk~A=0:( N2%ʀY^y啒 0 Zq/i-/MFC\SxYLE0i&f?~|C=4BGhʒT{K){]y4HxA˅&gUyf.Ӆ,``?CqfOz`<'UәRVx%@* ^]""K*sy+7`˕.|$ďy E~ CLF$C8K!Xa~Չ6S tjlCv4>|Ν[FGaͽ":̭QTECO׌FT<¢0pQ`QHxnUQ`Jo -Ȉ:Bt񁜣{:CWV)M*E9Y/"jJ{]Ů H|8VbR<k"74*[,;xcqɯCTy57|*2ġ[XUVUxXdWXMIeh⢊0њA&m2p}E#SY2kliܰR|EQ't wɥ)fM}6Dh`;"NTGmDH5裾6H|osCΥDgzae!!rݹT*ǩ8M~o5mlݺa+g mW>fm-[>n8jWihg?uw"vХt5klW/JLE27p ìE㕋".Y'ԂvG~o'lD;M'ۮ4[t؎zHS؜>gM?]#14?{ U.^efnoC`[¾dPY1CTT1etcy >45ew5޾E_in;}p3i2A>w!v݃|8aw::ek37W[ouY D2pyxa>-%֜ARWPnW0ZW-m5_,"CFؒ?mz{>ڹ5i/bf=% gBsZ]uP\yv2`CLIRŽ|Qkz3Ttb1Y-VZ `A.>i-˨{?pCgQ@թ]ҼQړN췞AV) b±CDq(Jz#]q-̠@# Ԇ͙o lz==-aq/'ۿ|5`<;m//YۮwUPG}Q:s,&WB*.&TW"\|²k"6HN*uv?U.ZE[~衇ZbEAM3S3d6ofҥKmfo̟x*U4<{|EWcUD)UV\3^~lŵ^A#H]do.Cf4c $h{i]=d΋gjHOu/'y7.;]Jkv˭c[{@"4Ug- wB*3fL5c]`)0`qJ˝kj=o?c]eo)QnvDs9eHIGy3$`>G!%+w{ ژ˥~^G{DC8Hw(׉= MMg]0s7TL\0b%Fh0q8`=A"v"B6L8\jà\Cq3 Ӷ_uϱ Lfj$xWٍ)/3T!طi{bNQ@3=c\fCTԙĵfr~' p$zrc;>BX4eB r[&%Y vmBayΩC! UzH{h*UeMLs"=u5_rrЭkN"BG\ ۼUfpDq{CsZ֭o"8;yOB4?KxƏ D<=q!2#I upJO8/#b-T}{BFNj[sUkdwWrZea^]H͛xcH&(:60H}Te-"FmOf?23Z.]*!"jï]U)EK !/j ^̯ ގ)h "ND\_*pw'SgNWFY%FhT$kUҽj$r<ieF*=˝`Wx6jH܁D!,TfiD m=`B}N_Eg}E g7J_'gl?'/}~¨ءV"8#ɕ\S>;[nCg ßL'Ew;;jBIi /U̓+MGD0 !7`h F B|Ѹlٲ1jyW,yd&.D~g@;ѓA>]|(W7XQ*w nv,~@I^:?yc9m1N]8`>кW!0o/343w!CM(ޔeIII"z?.r` ;J_ZWKV MfO]-]V '=uaR_{fY=Bk c xߨGb%wRʻ@̊l&GmNc)2?ڊUsv,@j'؆6x&.pE[2٦4/,&*- 20J@vCAN6- ~]=;,t?X? W a"tlK7 6k架yjPpxp0EE&JTJgiF7k ͻ 써ү+럹[ƄcF0Ez|Ekq̻Nj4D_ 9 8ؚND;%w5i=*a-V2 %B;Mfnsdr5TQt Q+P:.YtΎo׍wxׂ (TkxF_VgGCǯ2P QZ [|Ĉn]v/F鉕u#vþn}uY\.Ty~G1MLWַmRF ʨqM.b-yncTb#]/1fߪgX=*ߎNbqSs;̉ zΊ 5!*rM㥐 ~(e(܌QWvU!GYrXB^7cŋ6ft\j;& %^YB[|t(^zBD`D\ :=|lOw뛻8+pN\WѮ" eQH"q>3kJAU"vUv&TYJsy$g}[3X`>m`| oŠТzAq*s/91Y7?pID^o(W#^d28ՏPQnz=y7N-?*Q*#SH:FW:Zg5Lg2gs+$M *QXey]* qPX40np+UF'UL2UzCyE3܌}_.Hx>ږ3 $x<.0C6#:%dk4DG憌B$s["2Merg15ꉖ5_ 1_bhY֤TIDAT*,3wk0謬SJȜO 1U*y("+E7Eu*S5NCSŴuFیbD\+2!HFb,sTetΆ*4}ŽEޖd%^圫joվ SE-enPCUyzt4I{+Z|ND 7I̽!{vǷw>7tk39k5\s5\s=vmpp0ۺuk ɓc˖-}wV===^m۶ihh(/7nܸ8qbf^n„ yW^y%FL:5v]ף7iӦ?`ʠ_͛7evi@psN;sG>YūZC Pu>!a"~3eH?F3~^xכ0ap}N4)ve r)^{#ꀠ@B@#Q! mQFX(~& N $~/||#`_mPHKvvN_p|\{(!t BDoePH8e k档hjm/h&,tp7F>TYo@;C u hN*`d m, sShr?(5,?T;dUs(%*'l$J& *F;@\?sI;G!a)O?O3Е˩{K(˲aJWyd.øFKǣ}KڥU V>uԠ.?jNmYiG:i~3(H8t^AzG!2?qB6eʔ'x;C{LU!ă '4-FBӁA>$,ğ iAw !{{gI.I: `b|l4d PaP0l BfJ{E Θ1#@XR 88Ɨ4Ti懞f=ATBK@Y<(&kz0L2%CH~BCDFRPzdHSÌμLMQ D#BB \bt" .cohQglFuu&}8oLQO^ CTʠĒrNPHF@ u9eLP$@Vӹ&(ro L8 (Q4c&L2 !*^늎q-D0NhHb6wuW|lkZ+ S^\Eu:c\T? hhI (C+.:' fDV 5 tWMh##D3izqzi7XZ=Jz_$6%5.*.]uC9/h|:V bRy,2U 0"i4,zIMS];Y,hy ;wn2U=Vð<dUV5zBXt,]1 uQŘԜA&'nVʰ;q2H}dAҸ`J GD_&H:\]wݵ4ĢeaADD:ґTͤ?#E0idFj+wW :)x酗@%rTi8E~J8}k:=cqoW\ŇI⁴q)q_)u0~zկo0kH4.hM̛>8#T-jWAp'81V]T?^(%et ];,>6us%Q߱w4+7zH3|%U񯗼1~rI\[Jn`{|ȥ!GDC4)}!CG+hg4c] ~ f:ҟX̟0Bo ۊ.6'gPܬ!TW*ØMS2ļCԹ5[nE[oY%޲`s|Q-&e|}_}ҵ1sƦ o{Qn1(۲2CHdQy!\Ph¨(3[LMSGu˞)չ]⢯Lmm3z{?=o}.raNZ;U[{r!Ľ^TLfO͍w!xK6{ア`pso~2 R^bC+zr5VŔL*5}w/{qU-5e4v⃨w}wo.6C<@AU.h(Yn8kXVD#OFg ޺-)mKf߀9gmH8%s״_N|ob))'G"&P;<`MѴӆ4I3\E,Ê9*jsb\,8ݩ޻)sJF9 2W}qϸЯ)&YG㬽6w^38@ _xu}58Sq_1#Ɏ H{HGj/ t^>TbDTx6N$uU|6lWcئ >WJjUmQL5TD[w59¦_5~D\Is0S%_K?4\LΎ.iy|ͷLoՒg'|`cu7t0-d.FA];J#YTQL }g8G+ c4!%~/}?viAϹq;U+u@kf{n;4-`b\w# ~yZ@C(\/!1E~CzhӢ0޺bUO;9.j'ڵ=_Վc^*w'cv3YC6)u ĽYdV*t{}fm)z|L Y );G %eCnK# Lĝwwpž|#N;IkSGn78]/w6#CY\UzMyiG,Tj&MjIXEpc}srpq qJ,4R5a3UpOlE4Z)Bp8blڒL!=w c!Wfk L;ckMYҍqQq't6FpQIKm+:)gcP:|yu8پa ÕS/D71YgHݘ FTtFpbNS6?L$FnSJKlq2Kh: pUQTcJb(aڄBFmK?#5"`ɾ֚sfqDNx¤AR/61s݋B:#\ֹI!$7þt[0h\rFX"t2.M[-Y SC|P)WJDUZH ؍j\e6bnR#8ŸikCZ2[U_zD!B]'[ ˹n6II2ד\z]L٩*f3*nD 8Z3z@$jHqoh# T|vWŪ'x8T%<@/[#5Py.﷿mSN(%?pg<}ه R)V3VˤԡJ@\|^O|w/v(6!Ŭ<" E*$-SEw3Ћ/c3M ܟ?_Y"|¸cx`f&[nA|5H:CIb|JFi) ifb #jG׭} )>JRNtTJ5֫!k!Քq$hzYLTVH=FbWx5e߁C&QPu05CunD ~;b)zKz7bZӶR&Jg5>3ߟb}IT57E}MKJZ )VLzBp#Uw5{Q-wtY餇o8#7.4.|TFI h wz)~)?3MO_0)q{`ܑ+^)Z݈EHW\\8.޾ q֟'H85YF9|c vW)sxRW>~#;sO7J,j.qvƷyy&3Gq>8ӶYtbJ}۷(( @X) 2-g[jwH[MB)Oۼm=C`p5pPiuK;iRvzHUiqўrNs8> &Rk +Z1=3!6i:<1Q5G/|v3 !΁ƗNѣ+qK?g~JqROp(݌^&:QKچj+0o=9R3gU3uߚ Ou#DG#rJ#X\#ǛrބCOCژǎZR=㷗C+*j,Q;cRf=\] oJp-Mf'7dx 8z6B&/#ᕱu9GntׇGmy#ן,o0Z{ּ|l5㶟-WTw[ {:r$.kq5%ON]dm& twg(q\2krC5ݧh d7~޲8oYg>xwᆵ7>k$~='I'CGЎ-g`Tu=J6z.Cz#D2N SX}o^RtO$& g>?>nm|ehrR!qlRuu_v-aUe x(7u['Q0yZ~T\qՄR?<W^]f}u7?_Z_|Knuز/?/ Y]6Xo2é5D  t=DbSxex>VGk_f" B,8tmhZ'xjm9LҫK)Z&'o:8h6c?/L694Դ;. dF/%Wˤ;UTyPɈ-wqNd8R:U/Y3[F075&!"܆8g#G+UJ62F6j67N-'P3r:$g]Lʤ)&r)灉 e ?ȤvaR [+S rTN15 "1S/ /jz|;N %+pnƐ3-*@MzAb|cx|/'E> 8g\cP kh -ҥC a9eU%D%LDbÍWybo4*/[0։11T}ҮDK8'%Vzl:OL%rMq gN&=B<1YA&l4y{1hw8J,}IU'Flbj%fGk6IIU3?ߥUgj,˼+)x;MnͶDAp+\:|6E~D&:=_y#;r4<.IDAT6U RPM.hSd53iuZ// bYpdj)2JWz3sSV.AGeRi;J$`S{F)F!PJvt{ne:mthv5^)zTz1BRRJ*r!Dq|Sj,Xʁ杍5 Ui^7ӓy%L*8WGXKlscr8)չ±*g`H7ң:#iGUwtcRJSXz*y6cԹ nR밻yKGڙŠRy[(ncٛƥR N_>w&aU mG.09ܐc员^.l}C8 z.ĭۛ׍ sO^2g< F "ñ;8SbQ=мd .0v^3;8GޢEx9Cɟ]"ZdIA]$5| ;|\7>㕮(7o޼h,n]B_W _g#^˸ 9rɘ;wngG/^\4Hbe">% Rr1)@d2;e˶um./Saw"'> IF.Bj|Μ9Eǃ:W p4Fؒoto|eo]~dGp/[NXx8eDd{x ` IDATx}ydWy-ں{nEFBHhFBĘMH y3Yb8c2!@b 'NXebdHBi4Ff?J[߻u_rUoGEUl6jmh`ss@Q<}a&8 @m~gϞlVS<σeYhۨj HZm`uunm>,ˊYTT_u]۶ `0@`0ض nH$2 :6j)? \.`u07Lbmm gΜA.O~?~BA Hu]R)\ry"P:u3"' dYdYXD"8j)NdnM&JJXG߇HR(H$eSZmt:iz=,//+lh4v1;;su](. @q Cu`6\UF#Ja0(%Q>,>2 >Z(}KHGJ) t:J%qꋒ.ͦRl(b{Jn׃hZH&D"s]nLFt:= PבL&!\ׅ8X__GUzy$|߇8 HRjvrpzfa*/^+[zrZM!e2t](fj~_I3r]tnz]ycIVTV6ETv0ut:d2XfLiV#ic @Q)dkff& @q )?4 EU9vJ+(Pܩ7ř4lG8J?%ضȜ3N)m[Ǿ$t8aA/+U,ašz!@gz}J.~48gS}yŵ3Cix]V+ꝙ&8 DN`YO ,'Vr %\~&„XH ~_yrI".#on+' 8DN\.# CJ%}4Mm$ItQ%V8HG4YW2Mƶmy, qAw_wl0 fk.I}w}bfNN$0bQ$ ٶ Ez+hX'ϣhjᢋ.m8qvڅygϢh D!*Hj)/%& %7󏞗y3hqӒ1$QRL<sT*nR ^z)azaaa!Gr9 U᝱Vw ,J"m瓑1ƹ|4o}'O3n9楱.=@]k7/Ȕ`0z*@>+wBU}<ĴA#W+6޹֏ JCi$;dcm-ryhk2ADmQ9hGrYBtN2K}(S dZ wNH@0U/mF~௧#@I\duDeYc /ֱ~$rf3-k;g؟>GW-qdAn)  '#Ϩvo&`YQ)2!P  j$p-7eF9E 2c<`4D₻(%613j|a\mfj+X"%$&y#P$$oXm <74/c5펠G=z0'sQRr$.HT*!)$ąˆߔNh4l6t;|0hj>b۷}}S=涕$>ld ZU[.~avvVחqlΝj0b `޽{FkiW\OS\ve8ravj;D R^VL9G݆s^X+՟>u޽;wc=%jcn ĉrqr\cjsLem|_E\ғa4fx?GF^~nCde}gE:%]Ɂ~P³&q"i |5Ls@J%9r>(iCʠL\T.bE).wU+H ey z4[_ÏƐ5l rGh#їHҸS(RYm W^pG§"BV`r;mnžlej}^^o![](%7pAJ%zc_x"jɑ(rYjjoHS6ƏyE"Yk[OUpMH0WtrL >1]B[߭G<:}-Rk_ώ*wH1"UhPsRZ8(!r@?xؾ(ϴ^{31|n^S3%Y[d%4>cƃ,˔bw{ȚRߥx ΑC>}O5c "1 슃GKGR$Ž?$:1WٸPo> WZ5{ek_/f7m,4Β˥Jw2n6Uq CMX\\LLz_Rd{:Ƒ#Gp9El߾]ORǕIVqD>KO4K^ֵmgϞEV< u6 C%(U*XӧOCHm K@R޲,ulO\QuDK 7APeɱLm=.)tY3|&+=aؐ؈;Ofb~4MVN.:$B'r͜:'$T]RHO- Dܘ]-)-]鈋욐2I5!zX(|&AJnwtg}e\ 5 t$O$&#U&GX$J~6mCK<.&˽h نO&Y K$ a~FNH8 q3q}ub">7˲T qי}e6S"inI#δqmUIv*P& 6n+Fʵ!;н-((wӧhHՑL$k"D(_CpWTQ2fg}_Sى(uNJ8A&:D_{xͫƃJyqo &J R"䩬0 ʗcA$Y[[SR$Axeee%dgD"^VqP:Rqup\}z(%Q$bYo}}?!%֓1T׎H{ `:OFgrun9`/ 06d 32S?Rv7779dYرCVذl6rm0??idYuAwפ*r8|0* Up$'cu`dLLvC2@|y>:ݳg&}m;m61fO]鎁8InuBy:z&Bb7h%lk(," ;?IBaDN$MHHޤLmLn|K}ߙ^3|9@Sj'0-Yݎmr7'eڙdt螡4z[ ܙ)(!^\Gg |Dj/ҏMZO(q'nRߴ#&JBrm&%"MjP{?ao5HDqٱ\5&\hu$Erw#"loGйBvɺ&B˱Rqg?3q^_SMfqɵIUс4d[3%>}kI6wI$j2BL| uJOHeJ?5Ɏ}^rq..FǍeb8 GwhL9/pAٿIR,!adŒT7!0NaBKcRWC$Vn-5!7V}LuEZmѕDBAHzS'p=‏7ÁGB? >RXEy n6;} ^{D'?QJcOwg ~h!>0evG>89g0K Y>4zck9 p-ߊ@ߨGb[%lT7!;fJ^Jvнy7ޕE'"]39;oqޑ\ظ9\KMuڎwޟĥ/*#u.}Q x~Ǎa&yy3ReYH]E" 7KM,c]zXuoOOx軩HWҏ%DG~O_A2B kD}za7#PB#zTJ\%׵Tj, ;ѽޏɻaãKWX(w=P}ݓMB=brb߫3C$-Bl~B&3a$z0nщ~˝d?wbd`|z|ۢ.ÏDm 4 %KW_3)/m]utwP[$Tw3q7m,#=\qHBZ- DFqHxy~7ⓧ|(&wmh^qHǭwA%r[+S߁\RJ"0BxAvЯ|u0Ry}27₏?ku!N"k~CY|鯜X*Kv0' DZ65EIDAT,b]D D~iVS-, A;B0 -Kfv$M oK27ڒJs*J"6}t03)hSo2b 'OEjYS`gnyTC'Oo<z PRVDV1y)&8>ƙvmLRyA=suXA[z)UB cKuQZPkc"Or8U*׿^Ϥ`uut'GN#~:>֟K.3ySTz{^dL a(M 8c RgP#Yz@6.SW/~mSMa+Lkt0HSS&wjEI\ YyRG踢{F&Bc],uUsMWMY< m-l&|T)jSʅ{^3Us`&yg[ITu٘78N7rb+&`<$a*r ه)sd=v\88'pHI:ҤG'MBʅ}zID2qt:iq ڜ1mȤOشIn+Qx8RW>5Hض7b[Me3W$wJX/+X~Bz= !kDV7F譞TclM5/rpl$x0P.UTJݘwJl6ž}P.qy J%e/VWW>pעX,4݋l6J 033}P(ٳ1==3g LMM Ο?|H&8{,\.kA:: @T 7󰺺 a޽HJRJ _f՝YLsssy㫽*ֹ9:[m=etWꪫp 7(޽W^y>??l^lY677h4g9U|L&T*!+m9#P?mZvu"ֲ3ٖQY\۪:ٳG)NꫯVE/HTdŐ?~\}Hx v~ZsrSzuu룗Dz=s sΩqYAVSP:3eXYYAZw{[Μ9fn4ӧ#vÇ+ukYsǎCVSs?z(|[I-k_RR籸;LbMcDsssvt:)x6FR)J%E58eYerJT|>Yy&܅%Bv[9~ %%a8L'.&jZժY#|GVS=.#f{Ν;9jPN.H vIAѫJ +ѽ,2y6&/+eY[zOVY\eC9