You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1457 lines
104 KiB
1457 lines
104 KiB
-- MageFire.lua
|
|
-- June 2018
|
|
|
|
local addon, ns = ...
|
|
local Hekili = _G[ addon ]
|
|
|
|
local class = Hekili.Class
|
|
local state = Hekili.State
|
|
|
|
local PTR = ns.PTR
|
|
|
|
|
|
-- Conduits
|
|
-- [-] controlled_destruction
|
|
-- [-] flame_accretion -- adds to "fireball" buff
|
|
-- [-] master_flame
|
|
-- [x] infernal_cascade
|
|
|
|
|
|
if UnitClassBase( "player" ) == "MAGE" then
|
|
local spec = Hekili:NewSpecialization( 63, true )
|
|
|
|
-- spec:RegisterResource( Enum.PowerType.ArcaneCharges )
|
|
spec:RegisterResource( Enum.PowerType.Mana )
|
|
|
|
-- Talents
|
|
spec:RegisterTalents( {
|
|
firestarter = 22456, -- 205026
|
|
pyromaniac = 22459, -- 205020
|
|
searing_touch = 22462, -- 269644
|
|
|
|
blazing_soul = 23071, -- 235365
|
|
shimmer = 22443, -- 212653
|
|
blast_wave = 23074, -- 157981
|
|
|
|
incanters_flow = 22444, -- 1463
|
|
focus_magic = 22445, -- 321358
|
|
rune_of_power = 22447, -- 116011
|
|
|
|
flame_on = 22450, -- 205029
|
|
alexstraszas_fury = 22465, -- 235870
|
|
from_the_ashes = 22468, -- 342344
|
|
|
|
frenetic_speed = 22904, -- 236058
|
|
ice_ward = 22448, -- 205036
|
|
ring_of_frost = 22471, -- 113724
|
|
|
|
flame_patch = 22451, -- 205037
|
|
conflagration = 23362, -- 205023
|
|
living_bomb = 22472, -- 44457
|
|
|
|
kindling = 21631, -- 155148
|
|
pyroclasm = 22220, -- 269650
|
|
meteor = 21633, -- 153561
|
|
} )
|
|
|
|
-- PvP Talents
|
|
spec:RegisterPvpTalents( {
|
|
controlled_burn = 645, -- 280450
|
|
flamecannon = 647, -- 203284
|
|
greater_pyroblast = 648, -- 203286
|
|
netherwind_armor = 53, -- 198062
|
|
prismatic_cloak = 828, -- 198064
|
|
pyrokinesis = 646, -- 203283
|
|
ring_of_fire = 5389, -- 353082
|
|
tinder = 643, -- 203275
|
|
world_in_flames = 644, -- 203280
|
|
} )
|
|
|
|
-- Auras
|
|
spec:RegisterAuras( {
|
|
alexstraszas_fury = {
|
|
id = 334277,
|
|
duration = 15,
|
|
max_stack = 1,
|
|
},
|
|
alter_time = {
|
|
id = 110909,
|
|
duration = 10,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
},
|
|
arcane_intellect = {
|
|
id = 1459,
|
|
duration = 3600,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
shared = "player", -- use anyone's buff on the player, not just player's.
|
|
},
|
|
blast_wave = {
|
|
id = 157981,
|
|
duration = 6,
|
|
max_stack = 1,
|
|
},
|
|
blazing_barrier = {
|
|
id = 235313,
|
|
duration = 60,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
},
|
|
blink = {
|
|
id = 1953,
|
|
},
|
|
cauterize = {
|
|
id = 86949,
|
|
},
|
|
chilled = {
|
|
id = 205708,
|
|
duration = 8,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
},
|
|
combustion = {
|
|
id = 190319,
|
|
duration = function () return level > 55 and 12 or 10 end,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
},
|
|
conflagration = {
|
|
id = 226757,
|
|
duration = 8,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
},
|
|
critical_mass = {
|
|
id = 117216,
|
|
},
|
|
dragons_breath = {
|
|
id = 31661,
|
|
duration = 4,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
},
|
|
fireball = {
|
|
id = 157644,
|
|
duration = 15,
|
|
type = "Magic",
|
|
max_stack = 10,
|
|
},
|
|
flamestrike = {
|
|
id = 2120,
|
|
duration = 8,
|
|
max_stack = 1,
|
|
},
|
|
frenetic_speed = {
|
|
id = 236060,
|
|
duration = 3,
|
|
max_stack = 1,
|
|
},
|
|
frost_nova = {
|
|
id = 122,
|
|
duration = 8,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
},
|
|
frostbolt = {
|
|
id = 59638,
|
|
duration = 4,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
},
|
|
heating_up = {
|
|
id = 48107,
|
|
duration = 10,
|
|
max_stack = 1,
|
|
},
|
|
hot_streak = {
|
|
id = 48108,
|
|
duration = 15,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
},
|
|
hypothermia = {
|
|
id = 41425,
|
|
duration = 30,
|
|
max_stack = 1,
|
|
},
|
|
ice_block = {
|
|
id = 45438,
|
|
duration = 10,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
},
|
|
ignite = {
|
|
id = 12654,
|
|
duration = 9,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
meta = {
|
|
tick_dmg = function( t )
|
|
return t.v1
|
|
end,
|
|
}
|
|
},
|
|
incanters_flow = {
|
|
id = 116267,
|
|
duration = 3600,
|
|
max_stack = 5,
|
|
},
|
|
preinvisibility = {
|
|
id = 66,
|
|
duration = 3,
|
|
max_stack = 1,
|
|
},
|
|
invisibility = {
|
|
id = 32612,
|
|
duration = 20,
|
|
max_stack = 1
|
|
},
|
|
living_bomb = {
|
|
id = 217694,
|
|
duration = 4,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
},
|
|
living_bomb_spread = {
|
|
id = 244813,
|
|
duration = 4,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
},
|
|
meteor_burn = {
|
|
id = 155158,
|
|
duration = 3600,
|
|
max_stack = 1,
|
|
},
|
|
mirror_image = {
|
|
id = 55342,
|
|
duration = 40,
|
|
max_stack = 3,
|
|
generate = function ()
|
|
local mi = buff.mirror_image
|
|
|
|
if action.mirror_image.lastCast > 0 and query_time < action.mirror_image.lastCast + 40 then
|
|
mi.count = 1
|
|
mi.applied = action.mirror_image.lastCast
|
|
mi.expires = mi.applied + 40
|
|
mi.caster = "player"
|
|
return
|
|
end
|
|
|
|
mi.count = 0
|
|
mi.applied = 0
|
|
mi.expires = 0
|
|
mi.caster = "nobody"
|
|
end,
|
|
},
|
|
pyroblast = {
|
|
id = 321712,
|
|
duration = 6,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
},
|
|
pyroclasm = {
|
|
id = 269651,
|
|
duration = 15,
|
|
max_stack = 2,
|
|
},
|
|
ring_of_frost = {
|
|
id = 321329,
|
|
duration = 4,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
},
|
|
rune_of_power = {
|
|
id = 116014,
|
|
duration = 12,
|
|
max_stack = 1,
|
|
},
|
|
shimmer = {
|
|
id = 212653,
|
|
},
|
|
slow_fall = {
|
|
id = 130,
|
|
duration = 30,
|
|
max_stack = 1,
|
|
},
|
|
temporal_displacement = {
|
|
id = 80354,
|
|
duration = 600,
|
|
max_stack = 1,
|
|
},
|
|
|
|
-- Azerite Powers
|
|
blaster_master = {
|
|
id = 274598,
|
|
duration = 3,
|
|
max_stack = 3,
|
|
},
|
|
|
|
wildfire = {
|
|
id = 288800,
|
|
duration = 10,
|
|
max_stack = 1,
|
|
},
|
|
|
|
|
|
-- Legendaries
|
|
fevered_incantation = {
|
|
id = 333049,
|
|
duration = 6,
|
|
max_stack = 5
|
|
},
|
|
|
|
firestorm = {
|
|
id = 333100,
|
|
duration = 4,
|
|
max_stack = 1
|
|
},
|
|
|
|
molten_skyfall = {
|
|
id = 333170,
|
|
duration = 30,
|
|
max_stack = 18
|
|
},
|
|
|
|
molten_skyfall_ready = {
|
|
id = 333182,
|
|
duration = 30,
|
|
max_stack = 1
|
|
},
|
|
|
|
sun_kings_blessing = {
|
|
id = 333314,
|
|
duration = 30,
|
|
max_stack =8
|
|
},
|
|
|
|
sun_kings_blessing_ready = {
|
|
id = 333315,
|
|
duration = 15,
|
|
max_stack = 5
|
|
},
|
|
|
|
} )
|
|
|
|
|
|
spec:RegisterStateTable( "firestarter", setmetatable( {}, {
|
|
__index = setfenv( function( t, k )
|
|
if k == "active" then return talent.firestarter.enabled and target.health.pct > 90
|
|
elseif k == "remains" then
|
|
if not talent.firestarter.enabled or target.health.pct <= 90 then return 0 end
|
|
return target.time_to_pct_90
|
|
end
|
|
end, state )
|
|
} ) )
|
|
|
|
spec:RegisterStateTable( "searing_touch", setmetatable( {}, {
|
|
__index = setfenv( function( t, k )
|
|
if k == "active" then return talent.searing_touch.enabled and target.health.pct < 30
|
|
elseif k == "remains" then
|
|
if not talent.searing_touch.enabled or target.health.pct < 30 then return 0 end
|
|
return target.time_to_die
|
|
end
|
|
end, state )
|
|
} ) )
|
|
|
|
spec:RegisterTotem( "rune_of_power", 609815 )
|
|
|
|
|
|
spec:RegisterHook( "reset_precast", function ()
|
|
if pet.rune_of_power.up then applyBuff( "rune_of_power", pet.rune_of_power.remains )
|
|
else removeBuff( "rune_of_power" ) end
|
|
|
|
incanters_flow.reset()
|
|
end )
|
|
|
|
spec:RegisterHook( "advance", function ( time )
|
|
if Hekili.ActiveDebug then Hekili:Debug( "\n*** Hot Streak (Advance) ***\n Heating Up: %.2f\n Hot Streak: %.2f\n", state.buff.heating_up.remains, state.buff.hot_streak.remains ) end
|
|
end )
|
|
|
|
spec:RegisterStateFunction( "hot_streak", function( willCrit )
|
|
willCrit = willCrit or buff.combustion.up or stat.crit >= 100
|
|
|
|
if Hekili.ActiveDebug then Hekili:Debug( "*** HOT STREAK (Cast/Impact) ***\n Heating Up: %s, %.2f\n Hot Streak: %s, %.2f\n Crit: %s, %.2f", buff.heating_up.up and "Yes" or "No", buff.heating_up.remains, buff.hot_streak.up and "Yes" or "No", buff.hot_streak.remains, willCrit and "Yes" or "No", stat.crit ) end
|
|
|
|
if willCrit then
|
|
if buff.heating_up.up then removeBuff( "heating_up" ); applyBuff( "hot_streak" )
|
|
elseif buff.hot_streak.down then applyBuff( "heating_up" ) end
|
|
|
|
if Hekili.ActiveDebug then Hekili:Debug( "*** HOT STREAK END ***\nHeating Up: %s, %.2f\nHot Streak: %s, %.2f", buff.heating_up.up and "Yes" or "No", buff.heating_up.remains, buff.hot_streak.up and "Yes" or "No", buff.hot_streak.remains ) end
|
|
return true
|
|
end
|
|
|
|
-- Apparently it's safe to not crit within 0.2 seconds.
|
|
if buff.heating_up.up then
|
|
if query_time - buff.heating_up.applied > 0.2 then
|
|
if Hekili.ActiveDebug then Hekili:Debug( "May not crit; Heating Up was applied %.2f ago, so removing Heating Up..", query_time - buff.heating_up.applied ) end
|
|
removeBuff( "heating_up" )
|
|
else
|
|
if Hekili.ActiveDebug then Hekili:Debug( "May not crit; Heating Up was applied %.2f ago, so ignoring the non-crit impact.", query_time - buff.heating_up.applied ) end
|
|
end
|
|
end
|
|
|
|
if Hekili.ActiveDebug then Hekili:Debug( "*** HOT STREAK END ***\nHeating Up: %s, %.2f\nHot Streak: %s, %.2f\n***", buff.heating_up.up and "Yes" or "No", buff.heating_up.remains, buff.hot_streak.up and "Yes" or "No", buff.hot_streak.remains ) end
|
|
end )
|
|
|
|
|
|
local hot_streak_spells = {
|
|
-- "dragons_breath",
|
|
"fireball",
|
|
-- "fire_blast",
|
|
"phoenix_flames",
|
|
"pyroblast",
|
|
-- "scorch",
|
|
}
|
|
spec:RegisterStateExpr( "hot_streak_spells_in_flight", function ()
|
|
local count = 0
|
|
|
|
for i, spell in ipairs( hot_streak_spells ) do
|
|
if state:IsInFlight( spell ) then count = count + 1 end
|
|
end
|
|
|
|
return count
|
|
end )
|
|
|
|
spec:RegisterStateExpr( "expected_kindling_reduction", function ()
|
|
-- This only really works well in combat; we'll use the old APL value instead of dynamically updating for now.
|
|
return 0.4
|
|
end )
|
|
|
|
|
|
Hekili:EmbedDisciplinaryCommand( spec )
|
|
|
|
|
|
-- # APL Variable Option: This variable specifies whether Combustion should be used during Firestarter.
|
|
-- actions.precombat+=/variable,name=firestarter_combustion,op=set,if=!talent.pyroclasm,value=1,value_else=0
|
|
spec:RegisterVariable( "firestarter_combustion", function ()
|
|
if not talent.pyroclasm.enabled then return 1 end
|
|
return -1
|
|
end )
|
|
|
|
-- # APL Variable Option: This variable specifies the number of targets at which Hot Streak Flamestrikes outside of Combustion should be used.
|
|
-- actions.precombat+=/variable,name=hot_streak_flamestrike,op=set,if=talent.flame_patch,value=2,value_else=3
|
|
spec:RegisterVariable( "hot_streak_flamestrike", function ()
|
|
if talent.flame_patch.enabled then return 2 end
|
|
return 3
|
|
end )
|
|
|
|
-- # APL Variable Option: This variable specifies the number of targets at which Hard Cast Flamestrikes outside of Combustion should be used as filler.
|
|
-- actions.precombat+=/variable,name=hard_cast_flamestrike,op=set,if=talent.flame_patch,value=2,value_else=3
|
|
spec:RegisterVariable( "hard_cast_flamestrike", function ()
|
|
if talent.flame_patch.enabled then return 2 end
|
|
return 3
|
|
end )
|
|
|
|
-- # APL Variable Option: This variable specifies the number of targets at which Hot Streak Flamestrikes are used during Combustion.
|
|
-- actions.precombat+=/variable,name=combustion_flamestrike,op=set,if=talent.flame_patch,value=3,value_else=6
|
|
spec:RegisterVariable( "combustion_flamestrike", function ()
|
|
if talent.flame_patch.enabled then return 3 end
|
|
return 6
|
|
end )
|
|
|
|
-- # APL Variable Option: This variable specifies the number of targets at which Arcane Explosion outside of Combustion should be used.
|
|
-- actions.precombat+=/variable,name=arcane_explosion,op=set,if=talent.flame_patch,value=99,value_else=2
|
|
spec:RegisterVariable( "arcane_explosion", function ()
|
|
if talent.flame_patch.enabled then return 99 end
|
|
return 2
|
|
end )
|
|
|
|
-- # APL Variable Option: This variable specifies the percentage of mana below which Arcane Explosion will not be used.
|
|
-- actions.precombat+=/variable,name=arcane_explosion_mana,default=40,op=reset
|
|
spec:RegisterVariable( "arcane_explosion_mana", function ()
|
|
return 40
|
|
end )
|
|
|
|
-- # APL Variable Option: The number of targets Shifting Power should be used on during Combustion.
|
|
-- actions.precombat+=/variable,name=combustion_shifting_power,default=2,op=reset
|
|
spec:RegisterVariable( "combustion_shifting_power", function ()
|
|
return 2
|
|
end )
|
|
|
|
-- # APL Variable Option: The time remaining on a cast when Combustion can be used in seconds.
|
|
-- actions.precombat+=/variable,name=combustion_cast_remains,default=0.7,op=reset
|
|
spec:RegisterVariable( "combustion_cast_remains", function ()
|
|
return 0.7
|
|
end )
|
|
|
|
-- # APL Variable Option: This variable specifies the number of seconds of Fire Blast that should be pooled past the default amount.
|
|
-- actions.precombat+=/variable,name=overpool_fire_blasts,default=0,op=reset
|
|
spec:RegisterVariable( "overpool_fire_blasts", function ()
|
|
return 0
|
|
end )
|
|
|
|
-- # APL Variable Option: How long before Combustion should Empyreal Ordnance be used?
|
|
-- actions.precombat+=/variable,name=empyreal_ordnance_delay,default=18,op=reset
|
|
spec:RegisterVariable( "empyreal_ordnance_delay", function ()
|
|
return 18
|
|
end )
|
|
|
|
-- # If Combustion is disabled, schedule the first Combustion far after the fight ends.
|
|
-- actions.precombat+=/variable,name=time_to_combustion,value=fight_remains+100,if=variable.disable_combustion
|
|
-- # Finally, convert from absolute time and store the relative time in variable.time_to_combustion. Unlike the rest of the calculations, which happen less frequently to speed up the simulation, this happens off-GCD and while casting.
|
|
-- actions.combustion_timing+=/variable,use_off_gcd=1,use_while_casting=1,name=time_to_combustion,value=(variable.combustion_time-time)*buff.combustion.down
|
|
spec:RegisterVariable( "time_to_combustion", function ()
|
|
if buff.combustion.down then return variable.combustion_time end
|
|
return 0
|
|
end )
|
|
|
|
-- # The duration of a Sun King's Blessing Combustion.
|
|
-- actions.precombat+=/variable,name=skb_duration,op=set,value=5
|
|
spec:RegisterVariable( "skb_duration", function ()
|
|
return 5
|
|
end )
|
|
|
|
-- # Whether a usable item used to buff Combustion is equipped.
|
|
-- actions.precombat+=/variable,name=combustion_on_use,value=equipped.gladiators_badge|equipped.macabre_sheet_music|equipped.inscrutable_quantum_device|equipped.sunblood_amethyst|equipped.empyreal_ordnance|equipped.flame_of_battle|equipped.wakeners_frond|equipped.instructors_divine_bell|equipped.shadowed_orb_of_torment
|
|
spec:RegisterVariable( "combustion_on_use", function ()
|
|
return equipped.gladiators_badge or equipped.macabre_sheet_music or equipped.inscrutable_quantum_device or equipped.sunblood_amethyst or equipped.empyreal_ordnance or equipped.flame_of_battle or equipped.wakeners_frond or equipped.instructors_divine_bell or equipped.shadowed_orb_of_torment
|
|
end )
|
|
|
|
-- # How long before Combustion should trinkets that trigger a shared category cooldown on other trinkets not be used?
|
|
-- actions.precombat+=/variable,name=on_use_cutoff,op=set,value=20,if=variable.combustion_on_use
|
|
-- actions.precombat+=/variable,name=on_use_cutoff,op=set,value=25,if=equipped.macabre_sheet_music
|
|
-- actions.precombat+=/variable,name=on_use_cutoff,op=set,value=20+variable.empyreal_ordnance_delay,if=equipped.empyreal_ordnance
|
|
spec:RegisterVariable( "on_use_cutoff", function ()
|
|
if equipped.empyreal_ordnance then return 20 + variable.empyreal_ordnance_delay end
|
|
if equipped.macabre_sheet_music then return 25 end
|
|
if variable.combustion_on_use then return 20 end
|
|
return 0
|
|
end )
|
|
|
|
-- # Variable that estimates whether Shifting Power will be used before Combustion is ready.
|
|
-- actions+=/variable,name=shifting_power_before_combustion,op=set,value=(active_enemies<variable.combustion_shifting_power|active_enemies<variable.combustion_flamestrike|variable.time_to_combustion-action.shifting_power.full_reduction>cooldown.shifting_power.duration)&variable.time_to_combustion-cooldown.shifting_power.remains>action.shifting_power.full_reduction&(cooldown.rune_of_power.remains-cooldown.shifting_power.remains>5|!talent.rune_of_power)
|
|
spec:RegisterVariable( "shifting_power_before_combustion", function ()
|
|
return ( active_enemies < variable.combustion_shifting_power or active_enemies < variable.combustion_flamestrike or variable.time_to_combustion - action.shifting_power.full_reduction > cooldown.shifting_power.duration ) and variable.time_to_combustion - cooldown.shifting_power.remains > action.shifting_power.full_reduction and ( cooldown.rune_of_power.remains - cooldown.shifting_power.remains > 5 or not talent.rune_of_power.enabled )
|
|
end )
|
|
|
|
-- fire_blast_pooling relies on the flow of the APL for differing values before/after rop_phase.
|
|
|
|
-- # Variable that controls Phoenix Flames usage to ensure its charges are pooled for Combustion. Only use Phoenix Flames outside of Combustion when full charges can be obtained during the next Combustion.
|
|
-- actions+=/variable,name=phoenix_pooling,if=active_enemies<variable.combustion_flamestrike,value=variable.time_to_combustion+buff.combustion.duration-5<action.phoenix_flames.full_recharge_time+cooldown.phoenix_flames.duration-action.shifting_power.full_reduction*variable.shifting_power_before_combustion&variable.time_to_combustion<fight_remains|runeforge.sun_kings_blessing|time<5
|
|
-- # When using Flamestrike in Combustion, save as many charges as possible for Combustion without capping.
|
|
-- actions+=/variable,name=phoenix_pooling,if=active_enemies>=variable.combustion_flamestrike,value=variable.time_to_combustion<action.phoenix_flames.full_recharge_time-action.shifting_power.full_reduction*variable.shifting_power_before_combustion&variable.time_to_combustion<fight_remains|runeforge.sun_kings_blessing|time<5
|
|
spec:RegisterVariable( "phoenix_pooling", function ()
|
|
if active_enemies < variable.combustion_flamestrike then
|
|
return variable.time_to_combustion + buff.combustion.duration - 5 < action.phoenix_flames.full_recharge_time + cooldown.phoenix_flames.duration - ( variable.shifting_power_before_combustion and action.shifting_power.full_reduction or 0 ) and variable.time_to_combustion < fight_remains or runeforge.sun_kings_blessing.enabled or time < 5
|
|
end
|
|
return variable.time_to_combustion < action.phoenix_flames.full_recharge_time - ( variable.shifting_power_before_combustion and action.shifting_power.full_reduction or 0 ) and variable.time_to_combustion < fight_remains or runeforge.sun_kings_blessing.enabled or time < 5
|
|
end )
|
|
|
|
-- # Estimate how long Combustion will last thanks to Sun King's Blessing to determine how Fire Blasts should be used.
|
|
-- actions.combustion_phase+=/variable,use_off_gcd=1,use_while_casting=1,name=extended_combustion_remains,op=set,value=buff.combustion.remains+buff.combustion.duration*(cooldown.combustion.remains<buff.combustion.remains),if=conduit.infernal_cascade
|
|
-- # Adds the duration of the Sun King's Blessing Combustion to the end of the current Combustion if the cast would complete during this Combustion.
|
|
-- actions.combustion_phase+=/variable,use_off_gcd=1,use_while_casting=1,name=extended_combustion_remains,op=add,value=variable.skb_duration,if=conduit.infernal_cascade&(buff.sun_kings_blessing_ready.up|variable.extended_combustion_remains>1.5*gcd.max*(buff.sun_kings_blessing.max_stack-buff.sun_kings_blessing.stack))
|
|
spec:RegisterVariable( "extended_combustion_remains", function ()
|
|
local value = 0
|
|
if conduit.infernal_cascade.enabled then
|
|
value = buff.combustion.remains
|
|
if cooldown.combustion.remains < buff.combustion.remains then value = value + buff.combustion.duration end
|
|
end
|
|
if conduit.infernal_cascade.enabled and ( buff.sun_kings_blessing_ready.up or value > 1.5 * gcd.max * ( buff.sun_kings_blessing.max_stack - buff.sun_kings_blessing.stack ) ) then
|
|
value = value + variable.skb_duration
|
|
end
|
|
return value
|
|
end )
|
|
|
|
-- # With Infernal Cascade, Fire Blast use should be additionally constrained so that it is not be used unless Infernal Cascade is about to expire or there are more than enough Fire Blasts to extend Infernal Cascade to the end of Combustion.
|
|
-- actions.combustion_phase+=/variable,use_off_gcd=1,use_while_casting=1,name=expected_fire_blasts,op=set,value=action.fire_blast.charges_fractional+(variable.extended_combustion_remains-buff.infernal_cascade.duration)%cooldown.fire_blast.duration,if=conduit.infernal_cascade
|
|
spec:RegisterVariable( "expected_fire_blasts", function ()
|
|
if not conduit.infernal_cascade.enabled then return 0 end
|
|
return action.fire_blast.charges_fractional + ( variable.extended_combustion_remains - buff.infernal_cascade.duration ) / cooldown.fire_blast.duration
|
|
end )
|
|
-- actions.combustion_phase+=/variable,use_off_gcd=1,use_while_casting=1,name=needed_fire_blasts,op=set,value=ceil(variable.extended_combustion_remains%(buff.infernal_cascade.duration-gcd.max)),if=conduit.infernal_cascade
|
|
spec:RegisterVariable( "needed_fire_blasts", function ()
|
|
if not conduit.infernal_cascade.enabled then return 0 end
|
|
return ceil( variable.extended_combustion_remains / ( buff.infernal_cascade.duration - gcd.max ) )
|
|
end )
|
|
|
|
-- # Helper variable that contains the actual estimated time that the next Combustion will be ready.
|
|
-- actions.combustion_timing=variable,name=combustion_ready_time,value=cooldown.combustion.remains*expected_kindling_reduction
|
|
spec:RegisterVariable( "combustion_ready_time", function ()
|
|
return cooldown.combustion.remains * expected_kindling_reduction
|
|
end )
|
|
|
|
-- # The cast time of the spell that will be precast into Combustion.
|
|
-- actions.combustion_timing+=/variable,name=combustion_precast_time,value=(action.fireball.cast_time*!conduit.flame_accretion+action.scorch.cast_time+conduit.flame_accretion)*(active_enemies<variable.combustion_flamestrike)+action.flamestrike.cast_time*(active_enemies>=variable.combustion_flamestrike)-variable.combustion_cast_remains
|
|
spec:RegisterVariable( "combustion_precast_time", function ()
|
|
return ( ( not conduit.flame_accretion.enabled and action.fireball.cast_time or 0 ) + action.scorch.cast_time + ( conduit.flame_accretion.enabled and 1 or 0 ) ) * ( ( active_enemies < variable.combustion_flamestrike ) and 1 or 0 ) + ( ( active_enemies >= variable.combustion_flamestrike ) and action.flamestrike.cast_time or 0 ) - variable.combustion_cast_remains
|
|
end )
|
|
|
|
spec:RegisterVariable( "combustion_time", function ()
|
|
-- 20210628: Final value is 0 if combustion is up (see last comment in function), so we can shortcut here.
|
|
if buff.combustion.up then return 0 end
|
|
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,value=variable.combustion_ready_time
|
|
local value = variable.combustion_ready_time
|
|
|
|
-- # Delay Combustion for after Firestarter unless variable.firestarter_combustion is set.
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,op=max,value=firestarter.remains,if=talent.firestarter&!variable.firestarter_combustion
|
|
if talent.firestarter.enabled and not variable.firestarter_combustion then
|
|
value = max( value, firestarter.remains )
|
|
end
|
|
|
|
-- # Delay Combustion for Radiant Spark if it will come off cooldown soon.
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,op=max,value=cooldown.radiant_spark.remains,if=covenant.kyrian&cooldown.radiant_spark.remains-10<variable.combustion_time
|
|
if covenant.kyrian and cooldown.radiant_spark.remains - 10 < value then
|
|
value = max( value, cooldown.radiant_spark.remains )
|
|
end
|
|
|
|
-- # Delay Combustion for Mirrors of Torment
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,op=max,value=cooldown.mirrors_of_torment.remains,if=covenant.venthyr&cooldown.mirrors_of_torment.remains-25<variable.combustion_time
|
|
if covenant.venthyr and cooldown.mirrors_of_torment.remains - 25 < value then
|
|
value = max( value, cooldown.mirrors_of_torment.remains )
|
|
end
|
|
|
|
-- # Delay Combustion for Deathborne.
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,op=max,value=cooldown.deathborne.remains+(buff.deathborne.duration-buff.combustion.duration)*runeforge.deaths_fathom,if=covenant.necrolord&cooldown.deathborne.remains-10<variable.combustion_time
|
|
if covenant.necrolord and cooldown.deathborne.remains - 10 < value then
|
|
value = max( value, cooldown.deathborne.remains + ( buff.deathborne.duration - buff.combustion.duration ) * ( runeforge.deaths_fathom.enabled and 1 or 0 ) )
|
|
end
|
|
|
|
-- # Delay Combustion for Death's Fathom stacks if there are at least two targets.
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,op=max,value=buff.deathborne.remains-buff.combustion.duration,if=runeforge.deaths_fathom&buff.deathborne.up&active_enemies>=2
|
|
if runeforge.deaths_fathom.enabled and buff.deathborne.up and active_enemies >= 2 then
|
|
value = max( value, buff.deathborne.remains - buff.combustion.duration )
|
|
end
|
|
|
|
-- # Delay Combustion for the Empyreal Ordnance buff if the player is using that trinket.
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,op=max,value=variable.empyreal_ordnance_delay-(cooldown.empyreal_ordnance.duration-cooldown.empyreal_ordnance.remains)*!cooldown.empyreal_ordnance.ready,if=equipped.empyreal_ordnance
|
|
if equipped.empyreal_ordnance then
|
|
value = max( value, variable.empyreal_ordnance_delay - ( not cooldown.empyreal_ordnance.ready and ( cooldown.empyreal_ordnance.duration - cooldown.empyreal_ordnance.remains ) or 0 ) )
|
|
end
|
|
|
|
-- # Delay Combustion for Gladiators Badge, unless it would be delayed longer than 20 seconds.
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,op=max,value=cooldown.gladiators_badge_345228.remains,if=equipped.gladiators_badge&cooldown.gladiators_badge_345228.remains-20<variable.combustion_time
|
|
if equipped.gladiators_badge and cooldown.gladiators_badge.remains - 20 < value then
|
|
value = max( value, cooldown.gladiators_badge.remains)
|
|
end
|
|
|
|
-- # Delay Combustion until RoP expires if it's up.
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,op=max,value=buff.rune_of_power.remains,if=talent.rune_of_power&buff.combustion.down
|
|
if talent.rune_of_power.enabled and buff.combustion.down then
|
|
value = max( value, buff.rune_of_power.remains )
|
|
end
|
|
|
|
-- # Delay Combustion for an extra Rune of Power if the Rune of Power would come off cooldown at least 5 seconds before Combustion would.
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,op=max,value=cooldown.rune_of_power.remains+buff.rune_of_power.duration,if=talent.rune_of_power&buff.combustion.down&cooldown.rune_of_power.remains+5<variable.combustion_time
|
|
if talent.rune_of_power.enabled and buff.combustion.down and cooldown.rune_of_power.remains + 5 < value then
|
|
value = max( value, cooldown.rune_of_power.remains )
|
|
end
|
|
|
|
-- # Delay Combustion if Disciplinary Command would not be ready for it yet.
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,op=max,value=cooldown.buff_disciplinary_command.remains,if=runeforge.disciplinary_command&buff.disciplinary_command.down
|
|
if runeforge.disciplinary_command.enabled and buff.disciplinary_command.down then
|
|
value = max( value, cooldown.buff_disciplinary_command.remains )
|
|
end
|
|
|
|
-- # Raid Events: Delay Combustion for add spawns of 3 or more adds that will last longer than 15 seconds. These values aren't necessarily optimal in all cases.
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,op=max,value=raid_event.adds.in,if=raid_event.adds.exists&raid_event.adds.count>=3&raid_event.adds.duration>15
|
|
-- Unsupported, don't bother.
|
|
|
|
-- # Raid Events: Always use Combustion with vulnerability raid events, override any delays listed above to make sure it gets used here.
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,value=raid_event.vulnerable.in*!raid_event.vulnerable.up,if=raid_event.vulnerable.exists&variable.combustion_ready_time<raid_event.vulnerable.in
|
|
-- Unsupported, don't bother.
|
|
|
|
-- # Use the next Combustion on cooldown if it would not be expected to delay the scheduled one or the scheduled one would happen less than 20 seconds before the fight ends.
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,value=variable.combustion_ready_time,if=variable.combustion_ready_time+cooldown.combustion.duration*(1-(0.6+0.2*talent.firestarter)*talent.kindling)<=variable.combustion_time|variable.combustion_time>fight_remains-20
|
|
if variable.combustion_ready_time + cooldown.combustion.duration * ( 1 - ( 0.6 + 0.2 * ( talent.firestarter.enabled and 1 or 0 ) ) * ( talent.kindling.enabled and 1 or 0 ) ) <= value or value > fight_remains - 20 then
|
|
value = variable.combustion_ready_time
|
|
end
|
|
|
|
-- # Add the current time to the scheduled Combustion to put it in absolute time so that it is still accurate after a little time passes.
|
|
-- actions.combustion_timing+=/variable,name=combustion_time,op=add,value=time
|
|
-- value = value + time
|
|
-- Skipping this because it ultimately gets used with time subtracted again.
|
|
|
|
-- # Finally, convert from absolute time and store the relative time in variable.time_to_combustion. Unlike the rest of the calculations, which happen less frequently to speed up the simulation, this happens off-GCD and while casting.
|
|
-- actions.combustion_timing+=/variable,use_off_gcd=1,use_while_casting=1,name=time_to_combustion,value=(variable.combustion_time-time)*buff.combustion.down
|
|
-- No need to check that Combustion is down because we shortcut this at the top of the function.
|
|
return value
|
|
end )
|
|
|
|
|
|
|
|
-- Abilities
|
|
spec:RegisterAbilities( {
|
|
alter_time = {
|
|
id = function () return buff.alter_time.down and 342247 or 342245 end,
|
|
cast = 0,
|
|
cooldown = function () return talent.master_of_time.enabled and 30 or 60 end,
|
|
gcd = "spell",
|
|
|
|
spend = 0.01,
|
|
spendType = "mana",
|
|
|
|
toggle = "cooldowns",
|
|
|
|
startsCombat = true,
|
|
texture = 609811,
|
|
|
|
handler = function ()
|
|
if buff.alter_time.down then
|
|
applyBuff( "alter_time" )
|
|
else
|
|
removeBuff( "alter_time" )
|
|
if talent.master_of_time.enabled then setCooldown( "blink", 0 ) end
|
|
end
|
|
end,
|
|
|
|
copy = 342247,
|
|
},
|
|
|
|
|
|
arcane_intellect = {
|
|
id = 1459,
|
|
cast = 0,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
spend = 0.04,
|
|
spendType = "mana",
|
|
|
|
nobuff = "arcane_intellect",
|
|
essential = true,
|
|
|
|
startsCombat = false,
|
|
texture = 135932,
|
|
|
|
handler = function ()
|
|
applyBuff( "arcane_intellect" )
|
|
end,
|
|
},
|
|
|
|
|
|
blast_wave = {
|
|
id = 157981,
|
|
cast = 0,
|
|
cooldown = 25,
|
|
gcd = "spell",
|
|
|
|
startsCombat = true,
|
|
texture = 135903,
|
|
|
|
talent = "blast_wave",
|
|
|
|
usable = function () return target.distance < 8 end,
|
|
handler = function ()
|
|
applyDebuff( "target", "blast_wave" )
|
|
end,
|
|
},
|
|
|
|
|
|
blazing_barrier = {
|
|
id = 235313,
|
|
cast = 0,
|
|
cooldown = 25,
|
|
gcd = "spell",
|
|
|
|
defensive = true,
|
|
|
|
spend = 0.03,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 132221,
|
|
|
|
handler = function ()
|
|
applyBuff( "blazing_barrier" )
|
|
if legendary.triune_ward.enabled then
|
|
applyBuff( "ice_barrier" )
|
|
applyBuff( "prismatic_barrier" )
|
|
end
|
|
end,
|
|
},
|
|
|
|
|
|
blink = {
|
|
id = function () return talent.shimmer.enabled and 212653 or 1953 end,
|
|
cast = 0,
|
|
charges = function () return talent.shimmer.enabled and 2 or nil end,
|
|
cooldown = function () return ( talent.shimmer.enabled and 20 or 15 ) - conduit.flow_of_time.mod * 0.001 end,
|
|
recharge = function () return ( talent.shimmer.enabled and ( 20 - conduit.flow_of_time.mod * 0.001 ) or nil ) end,
|
|
gcd = "off",
|
|
|
|
spend = function () return 0.02 * ( buff.arcane_power.up and ( talent.overpowered.enabled and 0.4 or 0.7 ) or 1 ) end,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = function () return talent.shimmer.enabled and 135739 or 135736 end,
|
|
|
|
handler = function ()
|
|
if talent.displacement.enabled then applyBuff( "displacement_beacon" ) end
|
|
if talent.blazing_soul.enabled then applyBuff( "blazing_barrier" ) end
|
|
end,
|
|
|
|
copy = { 212653, 1953, "shimmer" }
|
|
},
|
|
|
|
|
|
combustion = {
|
|
id = 190319,
|
|
cast = 0,
|
|
cooldown = function () return ( essence.vision_of_perfection.enabled and 0.87 or 1 ) * 120 end,
|
|
gcd = "off",
|
|
castableWhileCasting = true,
|
|
|
|
spend = 0.1,
|
|
spendType = "mana",
|
|
|
|
toggle = "cooldowns",
|
|
|
|
startsCombat = true,
|
|
texture = 135824,
|
|
|
|
usable = function () return time > 0, "must already be in combat" end,
|
|
handler = function ()
|
|
applyBuff( "combustion" )
|
|
stat.crit = stat.crit + 100
|
|
|
|
if azerite.wildfire.enabled then applyBuff( "wildfire" ) end
|
|
if talent.rune_of_power.enabled then applyBuff( "rune_of_power" ) end
|
|
end,
|
|
},
|
|
|
|
|
|
--[[ conjure_refreshment = {
|
|
id = 190336,
|
|
cast = 3,
|
|
cooldown = 15,
|
|
gcd = "spell",
|
|
|
|
spend = 0.03,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 134029,
|
|
|
|
handler = function ()
|
|
end,
|
|
}, ]]
|
|
|
|
|
|
counterspell = {
|
|
id = 2139,
|
|
cast = 0,
|
|
cooldown = function () return 24 - ( conduit.grounding_surge.mod * 0.1 ) end,
|
|
gcd = "off",
|
|
|
|
discipline = "arcane",
|
|
|
|
interrupt = true,
|
|
toggle = "interrupts",
|
|
|
|
spend = 0.02,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 135856,
|
|
|
|
debuff = function () return not runeforge.disciplinary_command.enabled and "casting" or nil end,
|
|
readyTime = function () if debuff.casting.up then return state.timeToInterrupt() end end,
|
|
|
|
handler = function ()
|
|
interrupt()
|
|
end,
|
|
},
|
|
|
|
|
|
dragons_breath = {
|
|
id = 31661,
|
|
cast = 0,
|
|
cooldown = 20,
|
|
gcd = "spell",
|
|
|
|
spend = 0.04,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 134153,
|
|
|
|
usable = function () return target.within12, "target must be within 12 yds" end,
|
|
|
|
handler = function ()
|
|
hot_streak( talent.alexstraszas_fury.enabled )
|
|
applyDebuff( "target", "dragons_breath" )
|
|
if talent.alexstraszas_fury.enabled then applyBuff( "alexstraszas_fury" ) end
|
|
end,
|
|
},
|
|
|
|
|
|
fire_blast = {
|
|
id = 108853,
|
|
cast = 0,
|
|
charges = function () return ( talent.flame_on.enabled and 3 or 2 ) end,
|
|
cooldown = function () return ( talent.flame_on.enabled and 10 or 12 ) * ( buff.memory_of_lucid_dreams.up and 0.5 or 1 ) * haste end,
|
|
recharge = function () return ( talent.flame_on.enabled and 10 or 12 ) * ( buff.memory_of_lucid_dreams.up and 0.5 or 1 ) * haste end,
|
|
icd = 0.5,
|
|
gcd = "off",
|
|
castableWhileCasting = true,
|
|
|
|
spend = 0.01,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 135807,
|
|
|
|
usable = function ()
|
|
if time == 0 then return false, "no fire_blast out of combat" end
|
|
end,
|
|
|
|
handler = function ()
|
|
hot_streak( true )
|
|
applyDebuff( "target", "ignite" )
|
|
|
|
if talent.kindling.enabled then setCooldown( "combustion", max( 0, cooldown.combustion.remains - 1 ) ) end
|
|
if azerite.blaster_master.enabled then addStack( "blaster_master", nil, 1 ) end
|
|
if conduit.infernal_cascade.enabled and buff.combustion.up then addStack( "infernal_cascade" ) end
|
|
if legendary.sinful_delight.enabled then gainChargeTime( "mirrors_of_torment", 4 ) end
|
|
end,
|
|
|
|
auras = {
|
|
-- Conduit
|
|
infernal_cascade = {
|
|
id = 336832,
|
|
duration = 5,
|
|
max_stack = 3
|
|
}
|
|
}
|
|
},
|
|
|
|
|
|
fireball = {
|
|
id = 133,
|
|
cast = 2.25,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
spend = 0.02,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 135812,
|
|
|
|
velocity = 45,
|
|
usable = function ()
|
|
if moving and settings.prevent_hardcasts then return false, "prevent_hardcasts is checked and player is moving" end
|
|
return true
|
|
end,
|
|
|
|
handler = function ()
|
|
removeBuff( "molten_skyfall_ready" )
|
|
end,
|
|
|
|
impact = function ()
|
|
if hot_streak( firestarter.active or stat.crit + buff.fireball.stack * 10 >= 100 ) then
|
|
removeBuff( "fireball" )
|
|
if talent.kindling.enabled then setCooldown( "combustion", max( 0, cooldown.combustion.remains - 1 ) ) end
|
|
else
|
|
addStack( "fireball", nil, 1 )
|
|
if conduit.flame_accretion.enabled then addStack( "flame_accretion" ) end
|
|
end
|
|
|
|
if legendary.molten_skyfall.enabled and buff.molten_skyfall_ready.down then
|
|
addStack( "molten_skyfall" )
|
|
if buff.molten_skyfall.stack == 18 then
|
|
removeBuff( "molten_skyfall" )
|
|
applyBuff( "molten_skyfall_ready" )
|
|
end
|
|
end
|
|
|
|
applyDebuff( "target", "ignite" )
|
|
end,
|
|
},
|
|
|
|
|
|
flamestrike = {
|
|
id = 2120,
|
|
cast = function () return ( buff.hot_streak.up or buff.firestorm.up ) and 0 or 4 * haste end,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
spend = 0.02,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 135826,
|
|
|
|
handler = function ()
|
|
if not hardcast then
|
|
if buff.expanded_potential.up then removeBuff( "expanded_potential" )
|
|
else removeBuff( "hot_streak" ) end
|
|
|
|
if legendary.sun_kings_blessing.enabled then
|
|
addStack( "sun_kings_blessing", nil, 1 )
|
|
if buff.sun_kings_blessing.stack == 8 then
|
|
removeBuff( "sun_kings_blessing" )
|
|
applyBuff( "sun_kings_blessing_ready" )
|
|
end
|
|
end
|
|
end
|
|
|
|
applyDebuff( "target", "ignite" )
|
|
applyDebuff( "target", "flamestrike" )
|
|
removeBuff( "alexstraszas_fury" )
|
|
end,
|
|
},
|
|
|
|
|
|
focus_magic = {
|
|
id = 321358,
|
|
cast = 0,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
discipline = "arcane",
|
|
|
|
spend = 0.02,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 135754,
|
|
|
|
talent = "focus_magic",
|
|
|
|
usable = function () return active_dot.focus_magic == 0 and group, "can apply one in a group" end,
|
|
handler = function ()
|
|
applyBuff( "focus_magic" )
|
|
end,
|
|
},
|
|
|
|
|
|
frost_nova = {
|
|
id = 122,
|
|
cast = 0,
|
|
charges = function () return talent.ice_ward.enabled and 2 or nil end,
|
|
cooldown = 30,
|
|
recharge = function () return talent.ice_ward.enabled and 30 or nil end,
|
|
gcd = "spell",
|
|
|
|
discipline = "frost",
|
|
|
|
defensive = true,
|
|
|
|
spend = 0.02,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 135848,
|
|
|
|
handler = function ()
|
|
applyDebuff( "target", "frost_nova" )
|
|
if legendary.grisly_icicle.enabled then applyDebuff( "target", "grisly_icicle" ) end
|
|
end,
|
|
},
|
|
|
|
|
|
ice_block = {
|
|
id = 45438,
|
|
cast = 0,
|
|
cooldown = function () return 240 + ( conduit.winters_protection.mod * 0.001 ) end,
|
|
gcd = "spell",
|
|
|
|
discipline = "frost",
|
|
|
|
toggle = "defensives",
|
|
defensive = true,
|
|
|
|
startsCombat = false,
|
|
texture = 135841,
|
|
|
|
handler = function ()
|
|
applyBuff( "ice_block" )
|
|
applyDebuff( "player", "hypothermia" )
|
|
end,
|
|
},
|
|
|
|
|
|
invisibility = {
|
|
id = 66,
|
|
cast = 0,
|
|
cooldown = 300,
|
|
gcd = "spell",
|
|
|
|
discipline = "arcane",
|
|
|
|
spend = 0.03,
|
|
spendType = "mana",
|
|
|
|
toggle = "defensives",
|
|
defensive = true,
|
|
|
|
startsCombat = false,
|
|
texture = 132220,
|
|
|
|
handler = function ()
|
|
applyBuff( "preinvisibility" )
|
|
applyBuff( "invisibility", 23 )
|
|
if conduit.incantation_of_swiftness.enabled then applyBuff( "incantation_of_swiftness" ) end
|
|
end,
|
|
},
|
|
|
|
|
|
living_bomb = {
|
|
id = 44457,
|
|
cast = 0,
|
|
cooldown = 12,
|
|
gcd = "spell",
|
|
|
|
spend = 0.02,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 236220,
|
|
|
|
handler = function ()
|
|
applyDebuff( "target", "living_bomb" )
|
|
end,
|
|
},
|
|
|
|
|
|
meteor = {
|
|
id = 153561,
|
|
cast = 0,
|
|
cooldown = 45,
|
|
gcd = "spell",
|
|
|
|
spend = 0.01,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 1033911,
|
|
|
|
flightTime = 1,
|
|
|
|
impact = function ()
|
|
applyDebuff( "target", "meteor_burn" )
|
|
end,
|
|
},
|
|
|
|
|
|
mirror_image = {
|
|
id = 55342,
|
|
cast = 0,
|
|
cooldown = 120,
|
|
gcd = "spell",
|
|
|
|
discipline = "arcane",
|
|
|
|
spend = 0.02,
|
|
spendType = "mana",
|
|
|
|
toggle = "cooldowns",
|
|
|
|
startsCombat = false,
|
|
texture = 135994,
|
|
|
|
handler = function ()
|
|
applyBuff( "mirror_image" )
|
|
end,
|
|
},
|
|
|
|
|
|
phoenix_flames = {
|
|
id = 257541,
|
|
cast = 0,
|
|
charges = 3,
|
|
cooldown = 25,
|
|
recharge = 25,
|
|
gcd = "spell",
|
|
|
|
startsCombat = true,
|
|
texture = 1392549,
|
|
|
|
velocity = 50,
|
|
|
|
impact = function ()
|
|
if hot_streak( firestarter.active ) and talent.kindling.enabled then
|
|
setCooldown( "combustion", max( 0, cooldown.combustion.remains - 1 ) )
|
|
end
|
|
|
|
applyDebuff( "target", "ignite" )
|
|
if active_dot.ignite < active_enemies then active_dot.ignite = active_enemies end
|
|
end,
|
|
},
|
|
|
|
|
|
polymorph = {
|
|
id = 118,
|
|
cast = 1.7,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
discipline = "arcane",
|
|
|
|
spend = 0.04,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 136071,
|
|
|
|
handler = function ()
|
|
applyDebuff( "target", "polymorph" )
|
|
end,
|
|
},
|
|
|
|
|
|
pyroblast = {
|
|
id = 11366,
|
|
cast = function () return ( buff.hot_streak.up or buff.firestorm.up ) and 0 or 4.5 * haste end,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
spend = 0.02,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 135808,
|
|
|
|
usable = function ()
|
|
if action.pyroblast.cast > 0 then
|
|
if moving and settings.prevent_hardcasts then return false, "prevent_hardcasts is checked and player is moving" end
|
|
if combat == 0 and not boss and not settings.pyroblast_pull then return false, "opener pyroblast disabled and/or target is not a boss" end
|
|
end
|
|
return true
|
|
end,
|
|
|
|
handler = function ()
|
|
if hardcast then
|
|
removeStack( "pyroclasm" )
|
|
if buff.sun_kings_blessing_ready.up then
|
|
applyBuff( "combustion", 6 )
|
|
removeBuff( "sun_kings_blessing_ready" )
|
|
end
|
|
else
|
|
if buff.hot_streak.up then
|
|
if buff.expanded_potential.up then removeBuff( "expanded_potential" )
|
|
else removeBuff( "hot_streak" ) end
|
|
if legendary.sun_kings_blessing.enabled then
|
|
addStack( "sun_kings_blessing", nil, 1 )
|
|
if buff.sun_kings_blessing.stack == 12 then
|
|
removeBuff( "sun_kings_blessing" )
|
|
applyBuff( "sun_kings_blessing_ready" )
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
removeBuff( "molten_skyfall_ready" )
|
|
end,
|
|
|
|
velocity = 35,
|
|
|
|
impact = function ()
|
|
if hot_streak( firestarter.active or buff.firestorm.up ) then
|
|
if talent.kindling.enabled then
|
|
setCooldown( "combustion", max( 0, cooldown.combustion.remains - 1 ) )
|
|
end
|
|
|
|
end
|
|
|
|
if legendary.molten_skyfall.enabled and buff.molten_skyfall_ready.down then
|
|
addStack( "molten_skyfall" )
|
|
if buff.molten_skyfall.stack == 18 then
|
|
removeBuff( "molten_skyfall" )
|
|
applyBuff( "molten_skyfall_ready" )
|
|
end
|
|
end
|
|
|
|
applyDebuff( "target", "ignite" )
|
|
removeBuff( "alexstraszas_fury" )
|
|
end,
|
|
},
|
|
|
|
|
|
remove_curse = {
|
|
id = 475,
|
|
cast = 0,
|
|
cooldown = 8,
|
|
gcd = "spell",
|
|
|
|
discipline = "arcane",
|
|
|
|
spend = 0.01,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 136082,
|
|
|
|
debuff = "dispellable_curse",
|
|
handler = function ()
|
|
removeDebuff( "player", "dispellable_curse" )
|
|
end,
|
|
},
|
|
|
|
|
|
ring_of_frost = {
|
|
id = 113724,
|
|
cast = 2,
|
|
cooldown = 45,
|
|
gcd = "spell",
|
|
|
|
discipline = "frost",
|
|
|
|
spend = 0.08,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 464484,
|
|
|
|
talent = "ring_of_frost",
|
|
|
|
handler = function ()
|
|
end,
|
|
},
|
|
|
|
|
|
rune_of_power = {
|
|
id = 116011,
|
|
cast = 1.5,
|
|
cooldown = 45,
|
|
gcd = "spell",
|
|
|
|
discipline = "arcane",
|
|
|
|
startsCombat = false,
|
|
texture = 609815,
|
|
|
|
nobuff = "rune_of_power",
|
|
talent = "rune_of_power",
|
|
|
|
handler = function ()
|
|
applyBuff( "rune_of_power" )
|
|
end,
|
|
},
|
|
|
|
|
|
scorch = {
|
|
id = 2948,
|
|
cast = 1.5,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
spend = 0.01,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 135827,
|
|
|
|
handler = function ()
|
|
if talent.frenetic_speed.enabled then applyBuff( "frenetic_speed" ) end
|
|
hot_streak( talent.searing_touch.enabled and target.health_pct < 30 )
|
|
applyDebuff( "target", "ignite" )
|
|
end,
|
|
},
|
|
|
|
|
|
slow_fall = {
|
|
id = 130,
|
|
cast = 0,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
discipline = "arcane",
|
|
|
|
spend = 0.01,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 135992,
|
|
|
|
handler = function ()
|
|
applyBuff( "slow_fall" )
|
|
end,
|
|
},
|
|
|
|
|
|
spellsteal = {
|
|
id = 30449,
|
|
cast = 0,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
discipline = "arcane",
|
|
|
|
spend = function () return 0.21 * ( buff.arcane_power.up and ( talent.overpowered.enabled and 0.5 or 0.7 ) or 1 ) end,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 135729,
|
|
|
|
debuff = "stealable_magic",
|
|
handler = function ()
|
|
removeDebuff( "target", "stealable_magic" )
|
|
end,
|
|
},
|
|
|
|
|
|
time_warp = {
|
|
id = 80353,
|
|
cast = 0,
|
|
cooldown = 300,
|
|
gcd = "off",
|
|
|
|
discipline = "arcane",
|
|
|
|
spend = 0.04,
|
|
spendType = "mana",
|
|
|
|
toggle = "cooldowns",
|
|
|
|
startsCombat = true,
|
|
texture = 458224,
|
|
|
|
handler = function ()
|
|
applyBuff( "time_warp" )
|
|
applyDebuff( "player", "temporal_displacement" )
|
|
end,
|
|
},
|
|
} )
|
|
|
|
|
|
spec:RegisterOptions( {
|
|
enabled = true,
|
|
|
|
aoe = 3,
|
|
gcdSync = false,
|
|
-- canCastWhileCasting = true,
|
|
|
|
nameplates = false,
|
|
nameplateRange = 8,
|
|
|
|
damage = true,
|
|
damageExpiration = 6,
|
|
|
|
potion = "spectral_intellect",
|
|
|
|
package = "Fire",
|
|
} )
|
|
|
|
|
|
--[[ spec:RegisterSetting( "fire_at_will", false, {
|
|
name = "Accept Fire Disclaimer",
|
|
desc = "The Fire Mage module is disabled by default, as it tends to require *much* more CPU usage than any other specialization module. If you wish to use the Fire module, " ..
|
|
"can check this box and reload your UI (|cFFFFD100/reload|r) and the module will be available again.",
|
|
type = "toggle",
|
|
width = "full"
|
|
} ) ]]
|
|
|
|
spec:RegisterSetting( "pyroblast_pull", false, {
|
|
name = "Allow |T135808:0|t Pyroblast Hardcast Pre-Pull",
|
|
desc = "If checked, the addon will recommend an opener |T135808:0|t Pyroblast against bosses, if included in the current priority.",
|
|
type = "toggle",
|
|
width = "full"
|
|
} )
|
|
|
|
spec:RegisterSetting( "prevent_hardcasts", false, {
|
|
name = "Prevent |T135808:0|t Pyroblast and |T135812:0|t Fireball Hardcasts While Moving",
|
|
desc = "If checked, the addon will not recommend |T135808:0|t Pyroblast or |T135812:0|t Fireball if they have a cast time and you are moving.\n\n" ..
|
|
"Instant |T135808:0|t Pyroblasts will not be affected.",
|
|
type = "toggle",
|
|
width = "full"
|
|
} )
|
|
|
|
|
|
spec:RegisterPack( "Fire", 20210629, [[deLtYdqiuKEKQkDjfePnPQ0NGs1OGcDkOGvPQc1Ruv0Suv1TOkv2LGFbf1WGQIJPGAzki9muuQPHIICnfe2guK03Okf14uqeNdkszDuLQMhuvDpQI9bvP)PGOQdIIclekLhIIQjIIsUikkQncvL(ivPiJekICsQsHvIc9sOivMPQk4Mkik7efXpHIGHQQISuOiQNcIPcvXvvvHSvOi0xHIeJLQuAVO0FLyWkDyslwspgvtguxgzZk6ZG0OvOttSAOiv9AQsMnvUTQSBv(TOHtvDCvvulhYZbMoLRl02HkFxbgVQcNhkz9kiQmFuW(LA2HzXdley1iwMmu8zOdJpyQdftlGpyA4dM2qhMfIHLpXcXx5EPqjwiN(iwi4RGiwi(kwUuHzXdleqgrCIfYOz(aVhZygQyJXAGNpmdKx0PMKhhPtdZa5XXmlKAuCM34yRSqGvJyzYqXNHom(GPoumTa(GPHpyAdpeSq0OnMiwiqKhZzHmkWW0XwzHataole8vquVdzkuQzC0mFG3JzmdvSXynWZhMbYl6utYJJ0PHzG84yUzKX4r9oumT)9ou8zOd3m2mY8r9GsaVVz0769hbOENc0rRGONkhOxKAJeQxBuVEnfbLSGjpQyzbwOENjQxNcmVdq88G7vRItmS6ncuOei0m6D9(dzcORxUcSEr0phfe9OZa9otuVmpF1iWK86fJsGc)7fopSB9oMo4EfR3zI6v7DIiWyVdzKrjQxUcmmeAg9UEzMpT6OEbgs4wV8rI7LCq7nVE1EN0GENjYlqVY1Rns9Ym(PFOxl7frWro17Ge5Llv4qZO31lZagtFey9Q9(tyHYQtbwV0ziS61gvRx4Ka9EP17lHjxVdiNRx58oO6J6fJa51RraJG7vTEVSxGa9KPW1Z6Lz9tq6vE(k3WqOz076L55HJqwVQZ1BnoNbVnGiLB9sNHec0RL9wJZzWBdr))9QxVQ7LaRx5ac0tMcxpRxM1pbPxOQC9kxVa5bcnJExV)ia17OIG5jmb3lofjA1rGETSxebh5uVm)N(r9oirE5sfoWcXjadWIhwi88vJatYRWZ0bNdoalEyzYWS4HfIYnjpwi(Pj5XcHoT6iywSXASmzOS4HfIYnjpwivxMWLzeHfle60QJGzXgRXYeMnlEyHqNwDeml2yHWrIrirzHuJZzGNVAeysEHOpleLBsESqQecqiVKdkRXYeMjw8Wcr5MKhlKPGOQltywi0PvhbZInwJLjdblEyHOCtYJfIECcyi1v4QZXcHoT6iywSXASmbtLfpSqOtRocMfBSq4iXiKOSqqXJMjckfm65Ni1vgOi)aDA1rW9(T3ACod0hJAeysEHOpleLBsESqm5rLbkYN1yzI3mlEyHqNwDeml2yHOCtYJfcuNclQLiqPQWqjwi0CsCRC6JyHa1PWIAjcuQkmuI1yzYqclEyHqNwDeml2yHC6JyHihGJIMwDu5NJ6zXxbMWjCIfIYnjpwiYb4OOPvhv(5OEw8vGjCcNynwMGPXIhwi0PvhbZInwiN(iwitN(Osolv1mhXcr5MKhlKPtFujNLQAMJynwMmm(WIhwi0PvhbZInwiN(iwiduVOJqGYeLhmleLBsESqgOErhHaLjkpywJLjdpmlEyHqNwDeml2yHC6JyHihWqrULiqbwWjhvQKZXcr5MKhle5agkYTebkWco5OsLCowJLjdpuw8WcHoT6iywSXc50hXcbeVQlt4I(iBelGXcr5MKhleq8QUmHl6JSrSagRXYKHz2S4HfIYnjpwiraveJEawi0PvhbZInwJ1yHattn6mw8WYKHzXdle60QJGzXgleosmcjkleM2lkE0mrqPaSa4IVtofHvHNVNEWb60QJGzHOCtYJfcpJNriGp5CSgltgklEyHqNwDeml2yHOCtYJfcyuMMCql(5acXcbMaCK4BsESqWevKOvh1RnQwVeWKNAeO3bJKnsOEHmkttoO9(t5ac17aX56Ts9gbeCVvAMiQxMNVAeysE9kGErKcJvGfchjgHeLfsnoNbE(QrGj5fGZbxVF7v5MKxykiQuDkWc8rfbLa9IFp9oCVF7LP9IXERX5mi3KqN6kCfWvyke979BV14CggtRamePEfqKYTEXqVF7fNIeT6OayuMMCql(5acvQ0mruHNVAeysESglty2S4HfcDA1rWSyJfchjgHeLfsnoNbE(QrGj5fGZbxVF7fJ9ItrIwDuWKhvSSWZxncmjVEXFV4uKOvhf45RgbMKxXhrCfyftEuVF2l9bXJgvm5r9Yad9ItrIwDuWKhvSSWZxncmjVEXBVk3K8k8mDW5GRxVR3HXNEXaleLBsESqqkSONva(kYlwJLjmtS4HfcDA1rWSyJfchjgHeLfsnoNbE(QrGj5fGZbxVF7TgNZakEujNf)CaHcW5GR3V9ItrIwDuWKhvSSWZxncmjVEXFV4uKOvhf45RgbMKxXhrCfyftEuVF2l9bXJgvm5r9(zVyS3ACodWKAJ1eDuaoIutYRxVR3ACod88vJatYlahrQj51lg69h3lkE0mrqPamP2iOmvBmFb60QJGzHOCtYJfcmP2ynrhXASmziyXdle60QJGzXgleosmcjkleCks0QJcM8OILfE(QrGj51l(7fNIeT6OapF1iWK8k(iIRaRyYJ69ZEPpiE0OIjpQ3V9wJZzGNVAeysEb4CWXcr5MKhlKNGqjcuYzXs0JoJ1yzcMklEyHqNwDeml2yHebuzWO4OcxbMCqzzYWSqGjahj(MKhle8nr9IjsNnIf6FVra1R2l(kiQxS5uG1lFurqPEHJi5G27qMGqjc0Bo7fpj6rN1lxbwVw2RIlf4E5QVVCq7LpQiOeiWcr5MKhlKPGOs1PaJfchjgHeLfIYnjVWtqOebk5Syj6rNfOpiE0KdAVF7DgDUcI4Jkckvm5r96D9QCtYl8eekrGsolwIE0zb6dIhnQGONkhOx83lZuVF7LP9oMwbyis9Qa8jNduKRmDc0rR3V9Y0ERX5mmMwbyis9ke9znwM4nZIhwi0PvhbZInwik3K8yHa1PWIAjcuQkmuIfchjgHeLfcofjA1rbtEuXYcpF1iWK86fV9QCtYRWZ0bNdUE9UEhcwi0CsCRC6JyHa1PWIAjcuQkmuI1yzYqclEyHqNwDeml2yHOCtYJfc98XcrQRKi4tpoXcHJeJqIYcbNIeT6OGjpQyzHNVAeysE9IFp9ItrIwDuGE(yHi1vse8PhNkWKtXQ3V9ItrIwDuWKhvSSWZxncmjVEXBV4uKOvhfONpwisDLebF6XPcm5uS6176DiyHC6JyHqpFSqK6kjc(0JtSgltW0yXdle60QJGzXgleLBsESqaJkCoGGljQwYzXs0JoJfchjgHeLfcg7fNIeT6OGjpQyzHNVAeysE9IFp9ItrIwDuGNVAeysEfFeXvGvm5r9(zVdTxgyO3PaD0ki6PYb6f)9ItrIwDuWKhvSSWZxncmjVEXqVF7TgNZapF1iWK8cW5GJfYPpIfcyuHZbeCjr1solwIE0zSgltggFyXdle60QJGzXgleLBsESqG6WYFSKZIcaYtCQj5XcHJeJqIYcbNIeT6OGjpQyzHNVAeysE9Ixp9ItrIwDuiVseqfE0Y5KfYPpIfcuhw(JLCwuaqEItnjpwJLjdpmlEyHqNwDeml2yHOCtYJfYt5AfrfWirw5fbcNfchjgHeLfcofjA1rbtEuXYcpF1iWK86f)E6DiyHC6JyH8uUwrubmsKvErGWznwMm8qzXdle60QJGzXgleycWrIVj5XcXBm7ncKdAVAVaJqPa3BEExeq9kg9(3R6gOyb6ncOEzwisHNcI6ftKaaY1BgnGat9MZEzE(QrGj5f6ftWgj0abq)71hjjsmzih1Beih0EzwisHNcI6ftKaaY17aXg7L55RgbMKxV55WQxz2R34Me6uxVmxbCfM6va9sNwDeCV6b3R2BeOqPEhKh2TERuVUey9M4iuV2i1lCePMKxV5SxBK6DkqhTqV4zua9QWWGE1Ebp156fN6IuVw2Rns9YZ0bNdUEZzVmlePWtbr9Ijsaa56DWiD9cNYbTxBua9Yvhp6utYR3kX1iG6vSEfqVXdrQdycVxl7vbG4J61gvRxX6DG4C9wPEJacUxFcnjU5WQ386LNPdohCbwiN(iwiWisHNcIk4iaGCSq4iXiKOSqWPirRokyYJkww45RgbMKxV41tV4uKOvhfYRebuHhTCo79BVyS3ACodYnj0PUcxbCfMcat5E1RNERX5mi3KqN6kCfWvyk80pkat5E1ldm0lt7LNhCuSGCtcDQRWvaxHPaDA1rW9Yad9ItrIwDuGNVAeysEL8kra1ldm0lofjA1rbtEuXYcpF1iWK86fV9kNri)0PgbxMc0rRGONkhO3H0E7fJ9QCtYRWZ0bNdUE)S3HXNEXqVyGfIYnjpwiWisHNcIk4iaGCSgltgMzZIhwi0PvhbZInwik3K8yHaYORiqpXieleosmcjklem2lofjA1rbtEuXYcpF1iWK86fVE6LzJp9(J7fJ9ItrIwDuiVseqfE0Y5Sx82l(0lg6Lbg6fJ9Y0EnKCErwWgoiGaiJUIa9eJq9(TxdjNxKfSHdrGwDuVF71qY5fzbB4apthCo4ci6PYb6Lbg6LP9Ai58ISGn0GacGm6kc0tmc173EnKCErwWgAic0QJ69BVgsoVilydnWZ0bNdUaIEQCGEXqVyO3V9IXEzAV0phfFFcoaJifEkiQGJaaY1ldm0lpthCo4cWisHNcIk4iaGCbe9u5a9I3EhIEXalKtFeleqgDfb6jgHynwMmmZelEyHqNwDeml2yHOCtYJfcxpo5k14CYcHJeJqIYcHP9YZdokwqUjHo1v4kGRWuGoT6i4E)2RjpQx837q0ldm0BnoNb5Me6uxHRaUctbGPCV61tV14CgKBsOtDfUc4kmfE6hfGPCVyHuJZz50hXcbKrxrGEIj5XcbMaCK4BsESqWdsGcLq9cjJUE9gqpXiuVKICy17aXg71BCtcDQRxMRaUct9MOEhmsxVI17af0RpI4kWcSgltgEiyXdle60QJGzXgleycWrIVj5XcXBy0d0RnQwVWzVxA9wPJMI1lZZxncmjVEbJz0b3lM(iW6Ts9gbeCVz0acm1Bo7L55RgbMKxVQ1liFuV(PCwGfYPpIfICaokAA1rLFoQNfFfycNWjwiCKyesuwi0phfFFcoa1PWIAjcuQkmuQ3V9ItrIwDuWKhvSSWZxncmjVEXRNEXPirRokKxjcOcpA5CYcr5MKhle5aCu00QJk)Cupl(kWeoHtSgltggtLfpSqOtRocMfBSquUj5Xcz60hvYzPQM5iwiCKyesuwi0phfFFcoa1PWIAjcuQkmuQ3V9ItrIwDuWKhvSSWZxncmjVEXRNEXPirRokKxjcOcpA5CYc50hXcz60hvYzPQM5iwJLjd7nZIhwi0PvhbZInwik3K8yHmq9IocbktuEWSq4iXiKOSqOFok((eCaQtHf1seOuvyOuVF7fNIeT6OGjpQyzHNVAeysE9Ixp9ItrIwDuiVseqfE0Y5KfYPpIfYa1l6ieOmr5bZASmz4Hew8WcHoT6iywSXcr5MKhle5agkYTebkWco5OsLCowiCKyesuwi0phfFFcoa1PWIAjcuQkmuQ3V9ItrIwDuWKhvSSWZxncmjVEXRNEXPirRokKxjcOcpA5CYc50hXcroGHIClrGcSGtoQujNJ1yzYWyAS4HfcDA1rWSyJfIYnjpwiG4vDzcx0hzJybmwiCKyesuwi0phfFFcoa1PWIAjcuQkmuQ3V9ItrIwDuWKhvSSWZxncmjVEXRNEXPirRokKxjcOcpA5CYc50hXcbeVQlt4I(iBelGXASmzO4dlEyHqNwDeml2yHWrIrirzHGtrIwDuWKhvSSWZxncmjVEXRNEXPirRokKxjcOcpA5CYcr5MKhlKiGkIrpaRXYKHomlEyHqNwDeml2yHOCtYJfYeLaRCjoLfcmb4iX3K8yH8JauV4lkbwVmjXP9AzVgsGcLq96nHeGdRE9gCH7Oaleosmcjkleu8OzIGsbOib4WQiCH7OaDA1rW9(T3ACod88vJatYlaNdUE)2lg7fNIeT6OGjpQyzHNVAeysE9I3EvUj5v4z6GZbxVmWqV4uKOvhfm5rfll88vJatYRx83lofjA1rbE(QrGj5v8rexbwXKh17N9sFq8OrftEuVyG1yzYqhklEyHqNwDeml2yHOCtYJfcpJNriGp5CSqGjahj(MKhleVjY61gPEzwcGl(o5uew9Y8890dU3ACo7n6)V345iaOxE(QrGj51Ra6fK5fyHWrIrirzHGIhnteukalaU47Ktryv457PhCGoT6i4E)2lpthCo4c14CwGfax8DYPiSk8890doGifgRE)2BnoNbybWfFNCkcRcpFp9GlkIRhfGZbxVF7LP9wJZzawaCX3jNIWQWZ3tp4q0V3V9IXEXPirRokyYJkww45RgbMKxVF2RYnjVWeLaRMolWvGvm5r9I3E5z6GZbxOgNZcSa4IVtofHvHNVNEWb4isnjVEzGHEXPirRokyYJkww45RgbMKxV4V3HOxmWASmzOmBw8WcHoT6iywSXcHJeJqIYcbfpAMiOuawaCX3jNIWQWZ3tp4aDA1rW9(TxEMo4CWfQX5SalaU47Ktryv457PhCarkmw9(T3ACodWcGl(o5uewfE(E6bxuexpkaNdUE)2lt7TgNZaSa4IVtofHvHNVNEWHOFVF7fJ9ItrIwDuWKhvSSWZxncmjVE)Sx6dIhnQyYJ69ZEvUj5fMOey10zbUcSIjpQx82lpthCo4c14CwGfax8DYPiSk8890doahrQj51ldm0lofjA1rbtEuXYcpF1iWK86f)9oe9(TxM2RPo6SakEujNf)CaHc0Pvhb3lgyHOCtYJfII46rf6dFxcK8ynwMmuMjw8WcHoT6iywSXcHJeJqIYcbfpAMiOuawaCX3jNIWQWZ3tp4aDA1rW9(TxEMo4CWfQX5SalaU47Ktryv457PhCarpvoqV4VxUcSIjpQ3V9wJZzawaCX3jNIWQWZ3tp4YeLalaNdUE)2lt7TgNZaSa4IVtofHvHNVNEWHOFVF7fJ9ItrIwDuWKhvSSWZxncmjVE)SxUcSIjpQx82lpthCo4c14CwGfax8DYPiSk8890doahrQj51ldm0lofjA1rbtEuXYcpF1iWK86f)9oe9Ibwik3K8yHmrjWQPZynwMm0HGfpSqOtRocMfBSq4iXiKOSqqXJMjckfGfax8DYPiSk8890doqNwDeCVF7LNPdohCHAColWcGl(o5uewfE(E6bhqKcJvVF7TgNZaSa4IVtofHvHNVNEWLjkbwaohC9(TxM2BnoNbybWfFNCkcRcpFp9Gdr)E)2lg7fNIeT6OGjpQyzHNVAeysE9I3E5z6GZbxOgNZcSa4IVtofHvHNVNEWb4isnjVEzGHEXPirRokyYJkww45RgbMKxV4V3HOxmWcr5MKhlKjkbw5sCkRXYKHIPYIhwi0PvhbZInwiCKyesuwi4uKOvhfm5rfll88vJatYRx87Px8PxgyOxCks0QJcM8OILfE(QrGj51l(7fNIeT6OapF1iWK8k(iIRaRyYJ69BV8mDW5GlWZxncmjVaIEQCGEXFV4uKOvhf45RgbMKxXhrCfyftEeleLBsESq4QZvuUj5vCcWyH4eGvo9rSq45RgbMKxXFubeRXYKH6nZIhwi0PvhbZInwiCKyesuwi14CgqXJk5S4NdiuaohC9(TxM2BnoNHPGiGLOxi6373EXyV4uKOvhfm5rfll88vJatYRx86P3ACodO4rLCw8ZbekahrQj5173EXPirRokyYJkww45RgbMKxV4TxLBsEHPGOs1PalmJoxbr8rfbLkM8OEzGHEXPirRokyYJkww45RgbMKxV4T3PaD0ki6PYb6fdSquUj5XcbfpQKZIFoGqSgltg6qclEyHqNwDeml2yHataos8njpwiykJ01Beih0EXxN(iGHeVOELRxMNVAeysE)7fO4OEvqVp9WQx(OIGsGEvqV(jaivh17mr9Y88vJatYR3bInMrRxU67lh0aleLBsESq4QZvuUj5vCcWyHamKWnwMmmleosmcjklKACodO4rLCw8Zbeke979BV4uKOvhfm5rfll88vJatYRx82l(WcXjaRC6JyHGs)I)OciwJLjdftJfpSqOtRocMfBSqIaQmyuCuHRatoOSmzywiCKyesuwimTxCks0QJctbrLQtbwXptNCq79BV4uKOvhfm5rfll88vJatYRx82l(073EvUj4OcD0tiqV41tV4uKOvhfgveCHRaRmD6Jags8I69BVmT3PGiGPiJqbLBcoQ3V9Y0ERX5mmMwbyis9ke979BVyS3ACodJKAYbTe9dr)E)2RYnjVW0PpcyiXlkqFq8Orfe9u5a9I)EXNWq0ldm0lFurqjqzIuUj5PUEXRNEhAVyGfseqLColq5WSmzywik3K8yHmfevQofySqGjahj(MKhlemLr66ftsrWCfyYbTx81PpQxigs8I(3l(kiQxS5uGb6fmMrhCVvQ3iGG71YEHshHuJ6ftkTEHyis9c0REW9AzV0hgDW9InNcmc17qMcmcfynwMWSXhw8WcHoT6iywSXcjcOYGrXrfUcm5GYYKHzHWrIrirzHmfebmfzekOCtWr9(Tx(OIGsGEXRNEhU3V9Y0EXPirRokmfevQofyf)mDYbT3V9IXEzAVk3K8ctbrv15c0hepAYbT3V9Y0EvUj5f8XcLvNcSGCLPtGoA9(T3ACodJKAYbTe9dr)EzGHEvUj5fMcIQQZfOpiE0KdAVF7LP9wJZzymTcWqK6vi63ldm0RYnjVGpwOS6uGfKRmDc0rR3V9wJZzyKutoOLOFi6373EzAV14CggtRamePEfI(9IbwiravY5SaLdZYKHzHOCtYJfYuquP6uGXcbMaCK4BsESqywrKCq7fFfebmfze6FV4RGOEXMtbgOxfr9gbeCVa5jof5WQxl7foIKdAVmpF1iWK8c96nrhHuNdR)9AJew9QiQ3iGG71YEHshHuJ6ftkTEHyis9c07Gr66LJed07aX569sR3k17afyeCV6b37aXg7fBofyeQ3Hmfye6FV2iHvVGXm6G7Ts9c8rKc3BgTETS3NkNPY1Rns9InNcmc17qMcmc1BnoNbwJLjm7HzXdle60QJGzXglKiGkdgfhv4kWKdkltgMfcmb4iX3K8yHWmWLcCVC13xoO9IVcI6fBofy9Yhveuc07GrXr9Yh17iNCq7fYOmn5G27pLdieleLBsESqMcIkvNcmwiCKyesuwik3K8cGrzAYbT4NdiuG(G4rtoO9(T3z05kiIpQiOuXKh1l(7v5MKxamkttoOf)CaHcMW9QGi4i3K869BV14CggtRamePEfGZbxVF71Kh1lE7Dy8H1yzcZEOS4HfcDA1rWSyJfchjgHeLfcofjA1rbtEuXYcpF1iWK86fV9Ip9(T3ACodO4rLCw8ZbekaNdowik3K8yHWvNROCtYR4eGXcXjaRC6JyHam9GveCbLMAsESglty2mBw8Wcr5MKhleapr8rwi0PvhbZInwJ1yHGs)I)Ociw8WYKHzXdle60QJGzXgleLBsESqMo9radjErSqGjahj(MKhle8vo15W6FV88WriR3jkF9Qvq6Ig1RjpQx9G7fyjI61gPErKtnbh1RjpQx56fNIeT6OGjpQyzHNVAeysEHE)rNt8I61gPEreW6nN9AJuVC1XJo1K8a)7DWOWh7Du99PRxhba9or0phPZCy1RL9c8jcU3OFV2i1lqErNAsE)71gfqVJQVpDGEZ5078MyoZQx9G7DWO4OE5kWKdAGfchjgHeLfIYnbhvOJEcb6fVE6fNIeT6OWyAfGHi1RY0PpcyiXlQ3V9IXERX5mmMwbyis9ke97Lbg6TgNZWuqeWs0le97fdSgltgklEyHqNwDeml2yHWrIrirzHuJZzaMuBSMOJcr)E)2lkE0mrqPamP2iOmvBmFb60QJG79BV4uKOvhfm5rfll88vJatYRx83BnoNbysTXAIokGONkhO3V9QCtWrf6ONqGEXRNEhkleLBsESqMcIQQZXASmHzZIhwi0PvhbZInwiCKyesuwi14CgaXR4LCqbLQJaa5GwqKcJvi6373ERX5maIxXl5GckvhbaYbTGifgRaIEQCGEXBVCfyftEeleLBsESq8XcLvNcmwJLjmtS4HfcDA1rWSyJfchjgHeLfsnoNHPGiGLOxi6Zcr5MKhleFSqz1PaJ1yzYqWIhwi0PvhbZInwiCKyesuwi14CggtRamePEfI(SquUj5XcXhluwDkWynwMGPYIhwi0PvhbZInwiravgmkoQWvGjhuwMmmleosmcjkleM2lofjA1rHPGOs1PaR4NPtoO9(T3ACodG4v8soOGs1raGCqlisHXkaNdUE)2RYnbhvOJEcb6f)9ItrIwDuyurWfUcSY0PpcyiXlQ3V9Y0ENcIaMImcfuUj4OE)2lg7LP9wJZzyKutoOLOFi6373EzAV14CggtRamePEfI(9(TxM2RpIWvY5SaLdhMcIkvNcSE)2lg7v5MKxykiQuDkWc8rfbLa9Ixp9o0EzGHEXyVM6OZcQJ(ayifmKtbLzeHvGoT6i4E)2lpthCo4cWifAEGsfrQngqKcJvVyOxgyOxaPi5GwSmYhdk3eCuVyOxmWcjcOsoNfOCywMmmleLBsESqMcIkvNcmwiWeGJeFtYJfYpcq9Mh1l(kiQxS5uG1lPihw9kxVyY5p1Rm7fRm2lCEy36DuXr9sInsOEXKi1KdAV)i)EtuVysP1ledrQx9Ifz9QhCVKyJeY77fJkg6DuXr9(se1RnQxV2GSx1HifgR)9IXkg6DuXr9YmC0hadPGHCk2b9IVrew9IifgRETS3iG(3BI6fJCm0lesrYbTx8Kr(yVcOxLBcok0lZkpSB9cN9AJcO3bJIJ6DurW9YvGjh0EXxN(iGHeViqVjQ3bJ01lK41lMo5GIDqVyZraGCq7va9IifgRaRXYeVzw8WcHoT6iywSXcjcOYGrXrfUcm5GYYKHzHWrIrirzHW0EXPirRokmfevQofyf)mDYbT3V9Y0ENcIaMImcfuUj4OE)2lg7fJ9IXEvUj5fMcIQQZfOpiE0KdAVF7fJ9QCtYlmfevvNlqFq8Orfe9u5a9I)EXNWq0ldm0lt7ffpAMiOuykicyj6fOtRocUxm0ldm0RYnjVGpwOS6uGfOpiE0KdAVF7fJ9QCtYl4JfkRofyb6dIhnQGONkhOx83l(egIEzGHEzAVO4rZebLctbralrVaDA1rW9IHEXqVF7TgNZWiPMCqlr)q0Vxm0ldm0lg7fqksoOflJ8XGYnbh173EXyV14Cggj1KdAj6hI(9(TxM2RYnjVaGNi(yG(G4rtoO9Yad9Y0ERX5mmMwbyis9ke979BVmT3ACodJKAYbTe9dr)E)2RYnjVaGNi(yG(G4rtoO9(TxM27yAfGHi1RcWNCoqrUY0jqhTEXqVyOxmWcjcOsoNfOCywMmmleLBsESqMcIkvNcmwiWeGJeFtYJfYpcq9IVcI6fBofy9sInsOEHJi5G2R2l(kiQQohM)jSqz1PaRxUcSEhmsxVysKAYbT3FKFVcOxLBcoQ3e1lCejh0EPpiE0OEhi2yVqifjh0EXtg5JbwJLjdjS4HfcDA1rWSyJfIYnjpwiC15kk3K8kobySqCcWkN(iwik3eCuXuhDgG1yzcMglEyHqNwDeml2yHWrIrirzHuJZzWhluYDk4fI(9(TxUcSIjpQx83BnoNbFSqj3PGxarpvoqVF7LRaRyYJ6f)9wJZzafpQKZIFoGqbe9u5aSquUj5XcXhluwDkWynwMmm(WIhwi0PvhbZInwiCKyesuwi14CggtRamePEfI(9(TxaPi5GwSmYhdk3eCuVF7v5MGJk0rpHa9I)EXPirRokmMwbyis9QmD6Jags8IyHOCtYJfIpwOS6uGXASmz4HzXdle60QJGzXgleosmcjkleM2lofjA1rb)XKo5JIFMo5G273ERX5mmsQjh0s0pe979BVmT3ACodJPvagIuVcr)E)2lg7v5MGJkWPfeONyuV4V3H2ldm0RYnbhvOJEcb6fVE6fNIeT6OWOIGlCfyLPtFeWqIxuVmWqVk3eCuHo6jeOx86PxCks0QJcJPvagIuVktN(iGHeVOEXaleLBsESq8ht6KpktN(iaRXYKHhklEyHqNwDeml2yHWrIrirzHaifjh0ILr(yq5MGJyHOCtYJfcGNi(iRXYKHz2S4HfcDA1rWSyJfchjgHeLfIYnbhvOJEcb6fV9ouwik3K8yHaJuO5bkveP2iRXYKHzMyXdle60QJGzXgleosmcjkleLBcoQqh9ec0lE90lofjA1rbfX1Jk0h(Uei5173EF6PbFU1lE90lofjA1rbfX1Jk0h(Uei5vE6P9(TxtrqjlmqSr5ggFyHOCtYJfII46rf6dFxcK8ynwMm8qWIhwi0PvhbZInwik3K8yHmD6Jags8IyHataos8njpwiykIn2lDze6yVMIGsg4FVI1Ra6v7fQkxVw2lxbwV4RtFeWqIxuVkO3P4CeQx5agPW9MZEXxbrv15cSq4iXiKOSquUj4OcD0tiqV41tV4uKOvhfgveCHRaRmD6Jags8IynwMmmMklEyHOCtYJfYuquvDowi0PvhbZInwJ1yHWZxncmjVI)Ociw8WYKHzXdle60QJGzXgleosmcjklKACod88vJatYlaNdowik3K8yH4eOJgOGPpcd9rNXASmzOS4HfcDA1rWSyJfIYnjpwivfAjNfdjCVaSqGjahj(MKhleMbmmOxBK6foIutYR3C2Rns9cjE9IPtoOyh0l2Ceaih0EzE(QrGj51RL9AJuV0b3Bo71gPE5reIoRxMNVAeysE9kZETrQxUcSEhKrhCV8857iJ6foIKdAV2Oa6L55RgbMKxGfchjgHeLfsnoNbE(QrGj5fGZbhRXYeMnlEyHqNwDeml2yHWrIrirzHOCtWrf6ONqGEXBVd373ERX5mWZxncmjVaCo4yHOCtYJfItWjh0snFvwJLjmtS4HfcDA1rWSyJfseqLbJIJkCfyYbLLjdZcHJeJqIYcHP9YZdokwqUjHo1v4kGRWuGoT6i4E)2lFurqjqV41tVd373ERX5mWZxncmjVq0V3V9Y0ERX5mmfebSe9cr)E)2lt7TgNZWyAfGHi1Rq0V3V9oMwbyis9Qa8jNduKRmDc0rR3p7TgNZWiPMCqlr)q0Vx837qzHebujNZcuomltgMfIYnjpwitbrLQtbgleycWrIVj5XcbtrSXmA96nUjHo11lZvaxHP)9IPpcSEJaQx8vquVyZPad07Gr661gjS6DqEy369fp(yVCKyGE1dU3bJ01l(kicyj61Ra6fohCbwJLjdblEyHqNwDeml2yHebuzWO4OcxbMCqzzYWSq4iXiKOSq45bhfli3KqN6kCfWvyQ3V9Yhveuc0lE907W9(Txm2lofjA1rb6dFIBeCzkiQuDkWa9Ixp9ItrIwDu4icMGltbrLQtbgOxgyOxCks0QJc0hgDWeCHNVAeysEfe9u5a9IFp9wJZzqUjHo1v4kGRWuaoIutYRxgyO3ACodYnj0PUcxbCfMcat5E1l(7DO9Yad9wJZzqUjHo1v4kGRWuarpvoqV4VxOC4Wt)OxgyOxEMo4CWfaJY0KdAXphqOaIuyS69BVk3eCuHo6jeOx86PxCks0QJc88vJatYRagLPjh0IFoGq9(TxEIJo9SWjqhTYuPEXqVF7TgNZapF1iWK8cr)E)2lg7LP9wJZzykicyj6fI(9Yad9wJZzqUjHo1v4kGRWuarpvoqV4Vx8jme9IHE)2lt7TgNZWyAfGHi1Rq0V3V9oMwbyis9Qa8jNduKRmDc0rR3p7TgNZWiPMCqlr)q0Vx837qzHebujNZcuomltgMfIYnjpwitbrLQtbgleycWrIVj5XcbtrSXE9g3KqN66L5kGRW0)EXxbr9InNcSEJaQxWygDW9wPEvyyXK8uNdRE55bmKkhb3li71gvRxX6va9EP1BL6nci4EJNJaGE9g3KqN66L5kGRWuVcOxTMrRxl7L(WxquVjQxBKquVkI69LiQxBuVEPlJqh7fFfe1l2CkWa9AzV0hgDW96nUjHo11lZvaxHPETSxBK6Lo4EZzVmpF1iWK8cSgltWuzXdle60QJGzXgleLBsESq4QZvuUj5vCcWyH4eGvo9rSquUj4OIPo6maRXYeVzw8WcHoT6iywSXcjcOYGrXrfUcm5GYYKHzHWrIrirzHuJZzGNVAeysEb4CW173EXPirRokyYJkww45RgbMKxV43tV4tVF7fJ9Y0ErXJMjckfGfax8DYPiSk8890doqNwDeCVmWqV14CgGfax8DYPiSk8890doe97Lbg6TgNZaSa4IVtofHvHNVNEWLjkbwi6373En1rNfqXJk5S4NdiuGoT6i4E)2lpthCo4c14CwGfax8DYPiSk8890doGifgREXqVF7fJ9Y0ErXJMjckfGIeGdRIWfUJc0Pvhb3ldm0lmvJZzaksaoSkcx4oke97fd9(Txm2lt7LN4OtplCehLUeb3ldm0lpthCo4cWKAJ1eDuarpvoqVmWqV14CgGj1gRj6Oq0Vxm073EXyVmTxEIJo9Sao6SrSq9Yad9YZ0bNdUWtqOebk5Syj6rNfq0tLd0lg69BVySxLBsEHhzuIcYvMob6O173EvUj5fEKrjkixz6eOJwbrpvoqV43tV4uKOvhf45RgbMKxHRaRGONkhOxgyOxLBsEbapr8Xa9bXJMCq79BVk3K8caEI4Jb6dIhnQGONkhOx83lofjA1rbE(QrGj5v4kWki6PYb6Lbg6v5MKxykiQQoxG(G4rtoO9(TxLBsEHPGOQ6Cb6dIhnQGONkhOx83lofjA1rbE(QrGj5v4kWki6PYb6Lbg6v5MKxWhluwDkWc0hepAYbT3V9QCtYl4JfkRofyb6dIhnQGONkhOx83lofjA1rbE(QrGj5v4kWki6PYb6Lbg6v5MKxy60hbmK4ffOpiE0KdAVF7v5MKxy60hbmK4ffOpiE0OcIEQCGEXFV4uKOvhf45RgbMKxHRaRGONkhOxmWcjcOsoNfOCywMmmleLBsESq45RgbMKhRXYKHew8WcHoT6iywSXcbMaCK4BsESqWeSrc1lpthCo4a9AJQ1lymJo4ERuVrab37aXg7L55RgbMKxVGXm6G7nphw9wPEJacU3bIn2RE9QClQUEzE(QrGj51lxbwV6b37LwVdeBSxTxiXRxmDYbf7GEXMJaa5G2Rpk5bwik3K8yHWvNROCtYR4eGXcHJeJqIYcPgNZapF1iWK8ci6PYb6fV9oK0ldm0lpthCo4c88vJatYlGONkhOx837qWcXjaRC6JyHWZxncmjVcpthCo4aSgltW0yXdle60QJGzXgleosmcjklem2BnoNHX0kadrQxHOFVF7v5MGJk0rpHa9Ixp9ItrIwDuGNVAeysELPtFeWqIxuVyOxgyOxm2BnoNHPGiGLOxi6373EvUj4OcD0tiqV41tV4uKOvhf45RgbMKxz60hbmK4f1R31lkE0mrqPWuqeWs0lqNwDeCVyGfIYnjpwitN(iGHeViwJLjdJpS4HfcDA1rWSyJfchjgHeLfsnoNbq8kEjhuqP6iaqoOfePWyfI(9(T3ACodG4v8soOGs1raGCqlisHXkGONkhOx82lxbwXKhXcr5MKhleFSqz1PaJ1yzYWdZIhwi0PvhbZInwiCKyesuwi14CgMcIawIEHOpleLBsESq8XcLvNcmwJLjdpuw8WcHoT6iywSXcHJeJqIYcPgNZGpwOK7uWle979BV14Cg8XcLCNcEbe9u5a9I3E5kWkM8OE)2lg7TgNZapF1iWK8ci6PYb6fV9YvGvm5r9Yad9wJZzGNVAeysEb4CW1lg69BVk3eCuHo6jeOx83lofjA1rbE(QrGj5vMo9radjErSquUj5XcXhluwDkWynwMmmZMfpSqOtRocMfBSq4iXiKOSqQX5mmMwbyis9ke979BV14Cg45RgbMKxi6Zcr5MKhleFSqz1PaJ1yzYWmtS4HfcDA1rWSyJfchjgHeLfIpIWvGYHddha8eXh79BV14Cggj1KdAj6hI(9(TxLBcoQqh9ec0l(7fNIeT6OapF1iWK8ktN(iGHeVOE)2BnoNbE(QrGj5fI(SquUj5XcXhluwDkWynwMm8qWIhwi0PvhbZInwik3K8yHagLPjh0IFoGqSqKZiek6BfzYcr5MKxykiQuDkWc8rfbLaEuUj5fMcIkvNcSWt)OWhveucWcHJeJqIYcPgNZapF1iWK8cr)E)2lt7v5MKxykiQuDkWc8rfbLa9(TxLBcoQqh9ec0lE90lofjA1rbE(QrGj5vaJY0KdAXphqOE)2RYnjVG)ysN8rz60hbcZOZvqeFurqPIjpQx827m6Cfebh5MKhleycWrIVj5Xc5hbKdAVqgLPjh0E)PCaH6foIKdAVmpF1iWK861YEreWse1l(kiQxS5uG1REW9(tJjDYh9IVo9r9Yhveuc0lxVERuVv6OPWf19V3A06ncIQZHvV55WQ386LzKmZbwJLjdJPYIhwi0PvhbZInwiCKyesuwi14Cg45RgbMKxi6373EnKIJCftEuV4V3ACod88vJatYlGONkhO3V9IXEXyVk3K8ctbrLQtbwGpQiOeOx837W9(TxtD0zbFSqj3PGxGoT6i4E)2RYnbhvOJEcb61tVd3lg6Lbg6LP9AQJol4Jfk5of8c0Pvhb3ldm0RYnbhvOJEcb6fV9oCVyO3V9wJZzyKutoOLOFi637N9oMwbyis9Qa8jNduKRmDc0rRx837qzHOCtYJfI)ysN8rz60hbynwMmS3mlEyHqNwDeml2yHWrIrirzHuJZzGNVAeysEb4CW173E5z6GZbxGNVAeysEbe9u5a9I)E5kWkM8OE)2RYnbhvOJEcb6fVE6fNIeT6OapF1iWK8ktN(iGHeViwik3K8yHmD6Jags8IynwMm8qclEyHqNwDeml2yHWrIrirzHuJZzGNVAeysEb4CW173E5z6GZbxGNVAeysEbe9u5a9I)E5kWkM8OE)2lt7LNhCuSW0PpQOCoImjVaDA1rWSquUj5XczkiQQohRXYKHX0yXdle60QJGzXgleosmcjklKACod88vJatYlGONkhOx82lxbwXKh173ERX5mWZxncmjVq0VxgyO3ACod88vJatYlaNdUE)2lpthCo4c88vJatYlGONkhOx83lxbwXKhXcr5MKhleapr8rwJLjdfFyXdle60QJGzXgleosmcjklKACod88vJatYlGONkhOx83luoC4PF073EvUj4OcD0tiqV4T3HzHOCtYJfItWjh0snFvwJLjdDyw8WcHoT6iywSXcHJeJqIYcPgNZapF1iWK8ci6PYb6f)9cLdhE6h9(T3ACod88vJatYle9zHOCtYJfcmsHMhOurKAJSgRXcr5MGJkM6OZaS4HLjdZIhwi0PvhbZInwiCKyesuwik3eCuHo6jeOx827W9(T3ACod88vJatYlaNdUE)2lg7fNIeT6OGjpQyzHNVAeysE9I3E5z6GZbxWj4KdAPMVAaoIutYRxgyOxCks0QJcM8OILfE(QrGj51l(90l(0lgyHOCtYJfItWjh0snFvwJLjdLfpSqOtRocMfBSq4iXiKOSqWPirRokyYJkww45RgbMKxV43tV4tVmWqVySxEMo4CWfEKrjkahrQj51l(7fNIeT6OGjpQyzHNVAeysE9(TxM2RPo6SakEujNf)CaHc0Pvhb3lg6Lbg61uhDwafpQKZIFoGqb60QJG79BV14CgqXJk5S4Ndiui6373EXPirRokyYJkww45RgbMKxV4TxLBsEHhzuIc8mDW5GRxgyO3PaD0ki6PYb6f)9ItrIwDuWKhvSSWZxncmjpwik3K8yH8iJseRXYeMnlEyHqNwDeml2yHWrIrirzHyQJolOo6dGHuWqofuMrewb60QJG79BVyS3ACod88vJatYlaNdUE)2lt7TgNZWyAfGHi1Rq0VxmWcr5MKhleyKcnpqPIi1gznwJfcW0dwrWfuAQj5XIhwMmmlEyHqNwDeml2yHWrIrirzHOCtWrf6ONqGEXRNEXPirRokmMwbyis9QmD6Jags8I69BVyS3ACodJPvagIuVcr)EzGHERX5mmfebSe9cr)EXaleLBsESqMo9radjErSgltgklEyHqNwDeml2yHWrIrirzHuJZzaMuBSMOJcr)E)2lkE0mrqPamP2iOmvBmFb60QJG79BV4uKOvhfm5rfll88vJatYRx83BnoNbysTXAIokGONkhOx86P3HYcr5MKhlKPGOQ6CSglty2S4HfcDA1rWSyJfchjgHeLfsnoNHPGiGLOxi6Zcr5MKhleFSqz1PaJ1yzcZelEyHqNwDeml2yHWrIrirzHuJZzymTcWqK6vi6373ERX5mmMwbyis9kGONkhOx83RYnjVWuquvDUa9bXJgvm5rSquUj5XcXhluwDkWynwMmeS4HfcDA1rWSyJfchjgHeLfsnoNHX0kadrQxHOFVF7fJ96JiCfOC4WWHPGOQ6C9Yad9ofebmfzekOCtWr9Yad9QCtYl4JfkRofyb5ktNaD06fdSquUj5XcXhluwDkWynwMGPYIhwi0PvhbZInwik3K8yH4JfkRofySqGjahj(MKhle8GWQxl7fkz9cbth261hLCqVYbeyQxm58N61FubeO3e1lZZxncmjVE9hvab6DWiD96NaGuDuGfchjgHeLfsnoNbq8kEjhuqP6iaqoOfePWyfI(9(Txm2lpthCo4cO4rLCw8ZbekGONkhO3p7v5MKxafpQKZIFoGqb6dIhnQyYJ69ZE5kWkM8OEXBV14CgaXR4LCqbLQJaa5GwqKcJvarpvoqVmWqVmTxtD0zbu8Osol(5acfOtRocUxm073EXPirRokyYJkww45RgbMKxVF2lxbwXKh1lE7TgNZaiEfVKdkOuDeaih0cIuySci6PYbynwM4nZIhwi0PvhbZInwiCKyesuwi14CggtRamePEfI(9(TxaPi5GwSmYhdk3eCeleLBsESq8XcLvNcmwJLjdjS4HfcDA1rWSyJfchjgHeLfsnoNbFSqj3PGxi6373E5kWkM8OEXFV14Cg8XcLCNcEbe9u5aSquUj5XcXhluwDkWynwMGPXIhwi0PvhbZInwiravgmkoQWvGjhuwMmmleosmcjkleM27uqeWuKrOGYnbh173EzAV4uKOvhfMcIkvNcSIFMo5G273EXyVySxm2RYnjVWuquvDUa9bXJMCq79BVySxLBsEHPGOQ6Cb6dIhnQGONkhOx83l(egIEzGHEzAVO4rZebLctbralrVaDA1rW9IHEzGHEvUj5f8XcLvNcSa9bXJMCq79BVySxLBsEbFSqz1PalqFq8Orfe9u5a9I)EXNWq0ldm0lt7ffpAMiOuykicyj6fOtRocUxm0lg69BV14Cggj1KdAj6hI(9IHEzGHEXyVasrYbTyzKpguUj4OE)2lg7TgNZWiPMCqlr)q0V3V9Y0EvUj5fa8eXhd0hepAYbTxgyOxM2BnoNHX0kadrQxHOFVF7LP9wJZzyKutoOLOFi6373EvUj5fa8eXhd0hepAYbT3V9Y0EhtRamePEva(KZbkYvMob6O1lg6fd9IbwiravY5SaLdZYKHzHOCtYJfYuquP6uGXcbMaCK4BsESqywrKCq71gPEbMEWkcUxuAQj59V38Cy1Beq9IVcI6fBofyGEhmsxV2iHvVkI69sR3kjh0E9Z0rW9otuVyY5p1BI6L55RgbMKxO3FeG6fFfe1l2CkW6LeBKq9chrYbTxTx8vquvDom)tyHYQtbwVCfy9oyKUEXKi1KdAV)i)EfqVk3eCuVjQx4isoO9sFq8Or9oqSXEHqksoO9INmYhdSgltggFyXdle60QJGzXgleosmcjklKACodJPvagIuVcr)E)2RYnbhvOJEcb6f)9ItrIwDuymTcWqK6vz60hbmK4fXcr5MKhleFSqz1PaJ1yzYWdZIhwi0PvhbZInwiCKyesuwimTxCks0QJc(JjDYhf)mDYbT3V9IXEzAVM6OZctu(k2ivuWibc0Pvhb3ldm0RYnbhvOJEcb6fV9oCVyO3V9IXEvUj4OcCAbb6jg1l(7DO9Yad9QCtWrf6ONqGEXRNEXPirRokmQi4cxbwz60hbmK4f1ldm0RYnbhvOJEcb6fVE6fNIeT6OWyAfGHi1RY0PpcyiXlQxmWcr5MKhle)XKo5JY0PpcWASmz4HYIhwi0PvhbZInwik3K8yHWvNROCtYR4eGXcXjaRC6JyHOCtWrftD0zawJLjdZSzXdle60QJGzXgleosmcjkleLBcoQqh9ec0lE7Dywik3K8yHaJuO5bkveP2iRXYKHzMyXdle60QJGzXgleosmcjkleaPi5GwSmYhdk3eCeleLBsESqa8eXhznwMm8qWIhwi0PvhbZInwiCKyesuwik3eCuHo6jeOx86PxCks0QJckIRhvOp8DjqYR3V9(0td(CRx86PxCks0QJckIRhvOp8DjqYR80t79BVMIGswyGyJYnm(Wcr5MKhlefX1Jk0h(Uei5XASmzymvw8WcHoT6iywSXcr5MKhlKPtFeWqIxeleycWrIVj5XcbtrSXEPlJqh71ueuYa)7vSEfqVAVqv561YE5kW6fFD6Jags8I6vb9ofNJq9khWifU3C2l(kiQQoxGfchjgHeLfIYnbhvOJEcb6fVE6fNIeT6OWOIGlCfyLPtFeWqIxeRXYKH9MzXdleLBsESqMcIQQZXcHoT6iywSXASgleFeXZxvnw8WYKHzXdleLBsESquexpQiNrohXnwi0PvhbZInwJLjdLfpSqOtRocMfBSqGjahj(MKhlemPCqVU8G2BLMjI6L55RgbMKxVGXm6G71qY5fzGETr161qcuOeQxTxWOIi4E5Qrqtew9YZ0bNdUEZR30gjuVgsoVid07LwVvQ3iGGhYZc50hXcbKrxrGEIriwiCKyesuwimTxCks0QJc88vJatYRKxjcOE)2lt7L(5O47tWbyePWtbrfCeaqUE)2lt71uhDwykicykYiuGoT6iywik3K8yHaYORiqpXieRXYeMnlEyHOCtYJfYtqOevKNcLyHqNwDeml2ynwMWmXIhwi0PvhbZInwiCKyesuwimTxFeHl4JfkRofySquUj5XcXhluwDkWynwJ1yHGJqajpwMmu8zOdJpyQdDiHfYafDYbfWcbtHzGjZeVbt8M8(E7fpJuVYZprwVZe1l2rPFXFube27fr)CuqeCVG8r9QrlFQrW9Yh1dkbcnJ)GCuVd177L55HJqgb3l2rXJMjckf8wS3RL9IDu8OzIGsbVnqNwDem27fJd)bgcnJ)GCuVyQEFVmppCeYi4EXUPo6SG3I9ETSxSBQJol4Tb60QJGXEVyC4pWqOz8hKJ61B277L55HJqgb3l2rXJMjckf8wS3RL9IDu8OzIGsbVnqNwDem27fJd9dmeAgBgXuygyYmXBWeVjVV3EXZi1R88tK17mr9IDyAQrNH9Er0phfeb3liFuVA0YNAeCV8r9GsGqZ4pih17WEFVmppCeYi4EXokE0mrqPG3I9ETSxSJIhnteuk4Tb60QJGXEVQ1lZmMWp0lgh(dmeAg)b5OEzM8(EzEE4iKrW9IDu8OzIGsbVf79AzVyhfpAMiOuWBd0PvhbJ9EvRxMzmHFOxmo8hyi0m(dYr9o8q9(EzEE4iKrW9crEmVxawNPF07q6qAVw27pe1EFjC0fb9M(esTe1lghsXqVyC4pWqOz8hKJ6D4H699Y88WriJG7f788GJIf8wS3RL9IDEEWrXcEBGoT6iyS3lgh(dmeAg)b5OEhMz799Y88WriJG7f7gsoVilmCWBXEVw2l2nKCErwWgo4TyVxmYS)adHMXFqoQ3Hz2EFVmppCeYi4EXUHKZlYcdn4TyVxl7f7gsoVilydn4TyVxmYS)adHMXFqoQ3HzM8(EzEE4iKrW9IDEEWrXcEl271YEXopp4OybVnqNwDem27fJd)bgcnJ)GCuVdDyVVxMNhoczeCVyhfpAMiOuWBXEVw2l2rXJMjckf82aDA1rWyVxmo8hyi0m(dYr9o0H699Y88WriJG7f7O4rZebLcEl271YEXokE0mrqPG3gOtRocg79IXH)adHMXFqoQ3HYS9(EzEE4iKrW9IDtD0zbVf79AzVy3uhDwWBd0PvhbJ9EX4WFGHqZ4pih17qz2EFVmppCeYi4EXokE0mrqPG3I9ETSxSJIhnteuk4Tb60QJGXEVyC4pWqOz8hKJ6DOmtEFVmppCeYi4EXokE0mrqPG3I9ETSxSJIhnteuk4Tb60QJGXEVyC4pWqOz8hKJ6DOdH33lZZdhHmcUxSJIhnteuk4TyVxl7f7O4rZebLcEBGoT6iyS3lgh(dmeAgBgXuygyYmXBWeVjVV3EXZi1R88tK17mr9IDFeXZxvnS3lI(5OGi4Eb5J6vJw(uJG7LpQhuceAg)b5OEhQ33lZZdhHmcUxSBQJol4TyVxl7f7M6OZcEBGoT6iyS3RA9YmJj8d9IXH)adHMXMrmfMbMmt8gmXBY77Tx8ms9kp)ez9otuVyNNVAeysEfEMo4CWbWEVi6NJcIG7fKpQxnA5tncUx(OEqjqOz8hKJ6ft177L55HJqgb3l2rXJMjckf8wS3RL9IDu8OzIGsbVnqNwDem27fJd)bgcnJnJykmdmzM4nyI3K33BV4zK6vE(jY6DMOEXUYnbhvm1rNbWEVi6NJcIG7fKpQxnA5tncUx(OEqjqOz8hKJ6DOEFVmppCeYi4EXUPo6SG3I9ETSxSBQJol4Tb60QJGXEVyCOFGHqZ4pih1lZ277L55HJqgb3l2n1rNf8wS3RL9IDtD0zbVnqNwDem27fJd)bgcnJnJykmdmzM4nyI3K33BV4zK6vE(jY6DMOEXoW0dwrWfuAQj5H9Er0phfeb3liFuVA0YNAeCV8r9GsGqZ4pih17q9(EzEE4iKrW9IDu8OzIGsbVf79AzVyhfpAMiOuWBd0PvhbJ9EX4WFGHqZ4pih1lMQ33lZZdhHmcUxSBQJol4TyVxl7f7M6OZcEBGoT6iyS3lgh(dmeAg)b5OEX08(EzEE4iKrW9IDu8OzIGsbVf79AzVyhfpAMiOuWBd0PvhbJ9EX4q)adHMXFqoQ3Hh277L55HJqgb3l2n1rNf8wS3RL9IDtD0zbVnqNwDem27fJd)bgcnJnJykmdmzM4nyI3K33BV4zK6vE(jY6DMOEXopF1iWK8k(JkGWEVi6NJcIG7fKpQxnA5tncUx(OEqjqOz8hKJ6LzY77L55HJqgb3l255bhfl4TyVxl7f788GJIf82aDA1rWyVxmo8hyi0m(dYr96n799Y88WriJG7f7M6OZcEl271YEXUPo6SG3gOtRocg79IXH)adHMXFqoQxVzVVxMNhoczeCVyhfpAMiOuWBXEVw2l2rXJMjckf82aDA1rWyVxmo0pWqOz8hKJ6ftZ77L55HJqgb3l2rXJMjckf8wS3RL9IDu8OzIGsbVnqNwDem27fJd)bgcnJ)GCuVdJP699Y88WriJG7f7M6OZcEl271YEXUPo6SG3gOtRocg79IXH(bgcnJ)GCuVdpK499Y88WriJG7f788GJIf8wS3RL9IDEEWrXcEBGoT6iyS3RA9YmJj8d9IXH)adHMXMrVXZprgb3R3CVk3K861jadeAgzH4JYP4iwi)(BV4RGOEhYuOuZ4V)27Oz(aVhZygQyJXAGNpmdKx0PMKhhPtdZa5XXCZ4V)2lJXJ6DOyA)7DO4ZqhUzSz83F7L5J6bLaEFZ4V)2R317pcq9ofOJwbrpvoqVi1gjuV2OE9AkckzbtEuXYcSq9otuVofyEhG45b3RwfNyy1BeOqjqOz83F71769hYeqxVCfy9IOFoki6rNb6DMOEzE(QrGj51lgLaf(3lCEy36DmDW9kwVZe1R27erGXEhYiJsuVCfyyi0m(7V96D9YmFA1r9cmKWTE5Je3l5G2BE9Q9oPb9otKxGELRxBK6Lz8t)qVw2lIGJCQ3bjYlxQWHMXF)TxVRxMbmM(iW6v79NWcLvNcSEPZqy1RnQwVWjb69sR3xctUEhqoxVY5Dq1h1lgbYRxJagb3RA9EzVab6jtHRN1lZ6NG0R88vUHHqZ4V)2R31lZZdhHSEvNR3ACodEBark36LodjeOxl7TgNZG3gI()7vVEv3lbwVYbeONmfUEwVmRFcsVqv56vUEbYdeAg)93E9UE)raQ3rfbZtycUxCks0QJa9AzVicoYPEz(p9J6DqI8YLkCOzSz83F7Lz(dIhncU3knte1lpFv16TsqLde6LzW5KVb69YZ7gv0BgD9QCtYd0BEoScnJk3K8abFeXZxvTp9GzfX1JkYzKZrCRz83F7Lz8t)qVyIks0QJ6ftW3K88(E9gZEbK1RL9Q9E55Dd5iu2lo1fP)9AJuVmpF1iWK86v5MKxV6b3lpthCo4a9AJQ1RIOE55bmKkhb3RL9MNdRERuVrab37Gr66L55RgbMKxVcO3OFVdeNR3lTERuVrab3lCejh0ETrQxG8Io1K8cnJ)(BV)(BVk3K8abFeXZxvTp9GzCks0QJ(F6J8alaT6OcpF1iWK8(N(EqeGSMXF7Lz8t)qVyIks0QJ6ftW3K88(EXZOa6fNIeT6OEb(exMcb6DWizJeQxMNVAeysE9cgZOdU3k1BeqW9chrYbTx8vqeWuKrOqZ4V)2RYnjpqWhr88vv7tpygNIeT6O)N(iptbratrgHk88vJatY7F67bq2Fz6HPM6OZc(yHsUtbV)4uxK8m8FCQlsfYbip4tZ4V9Ym(PFOxmrfjA1r9Ij4BsEEFV4zua9ItrIwDuVaFIltHa9AJuVx8vjuV5Sxtrqjd0RA9oyu4J9IjLwVqmePE1l(60hbmK4fb6nJgqGPEZzVmpF1iWK86fmMrhCVvQ3iGGdnJ)(BVk3K8abFeXZxvTp9GzCks0QJ(F6J8mMwbyis9QmD6Jags8I(N(EaK9xMEm1rNfMo9rfF14J)XPUi5zO)XPUivihG8WSBg)TxMXp9d9IjQirRoQxmbFtYZ77fpJcOxCks0QJ6f4tCzkeOxBK69IVkH6nN9AkckzGEvR3bJcFSxmjfb3lZvG1l(60hbmK4fb6nJgqGPEZzVmpF1iWK86fmMrhCVvQ3iGG7vb9ofNJqHMXF)TxLBsEGGpI45RQ2NEWmofjA1r)p9rEgveCHRaRmD6Jags8I(N(EaK9xMEm1rNfMo9rfF14J)XPUi5zO)XPUivihG8WSBg)TxMXp9d9IjQirRoQxmbFtYZ77fpJcOxCks0QJ6f4tCzkeOxBK69IVkH6nN9AkckzGEvR3bJcFSxmP06fIHi1REXxN(iGHeViqVkI6nci4EHJi5G2lZZxncmjVqZ4V)2RYnjpqWhr88vv7tpygNIeT6O)N(ip88vJatYRmD6Jags8I(N(EaK9xMEm1rNfMo9rfF14J)XPUi5Hz)hN6IuHCaYdMAZ4V9Ym(PFOxmrfjA1r9Ij4BsEEFV4zua9ItrIwDuVaFIltHa9AJuVx8vjuV5Sxtrqjd0RA9oyu4J9YmqC9OEzM)W3LajVEZObeyQ3C2lZZxncmjVEbJz0b3BL6nci4qZ4V)2RYnjpqWhr88vv7tpygNIeT6O)N(ipkIRhvOp8DjqY7F67bq2Fz6XuhDwy60hv8vJp(hN6IKhmnmT)4uxKkKdqEgAZ4V9Ym(PFOxmrfjA1r9Ij4BsEEFV4zua9ItrIwDuVaFIltHa9AJuV(eItNPqPEZzVp90ERKlh07GrHp2lZaX1J6Lz(dFxcK86DG4C9EP1BL6nci4qZ4V)2RYnjpqWhr88vv7tpygNIeT6O)N(ipkIRhvOp8DjqYR80t)dttn6mpmt4Z)03dIaK1m(BVmJF6h6fturIwDuVyc(MKN33lEgPEV4RsOEZzVMIGsgOxiJY0KdAV)uoGq9cgZOdU3k1BeqW9MxVWrKCq7L55RgbMKxOz83F7v5MKhi4JiE(QQ9PhmJtrIwD0)tFKhE(QrGj5vaJY0KdAXphqO)W0uJoZZq)N(EqeGSMXF7Lz8t)qVyIks0QJ6ftW3K88(EXZi1RjpQxe9u5KdAV51R2lxbwVdgPRxMNVAeysE9Y1R3k1BeqW9kxVaINhmi0m(7V9QCtYde8repFv1(0dMXPirRo6)PpYdpF1iWK8kCfyfe9u5a)HPPgDMh8j4n)p99GiaznJ)2lZ4N(HEXevKOvh1lMGVj5599INrb0lofjA1r9c8jUmfc0Rns9EXxLq9MZEbeppyqV5Sx8vquVyZPaRxBuTEbJz0b3BL61pthb3RVcSETrQxyAQrN1R(Y4zHMXF)TxLBsEGGpI45RQ2NEWmofjA1r)p9rEsCeYptxzkiQuDkWa)HPPgDMh85F67braYAg)TxMXp9d9IjQirRoQxmbFtYZ77ftkh0RlpO9wPzIOEzE(QrGj51lymJo4EzMF(yHi11lMac(0Jt9wPEJacEiFZ4V)2RYnjpqWhr88vv7tpygNIeT6O)N(ip0ZhlePUsIGp94ubMCkw)HPPgDMNHhs(N(EqeGSMXF)TxVXSxMNVAeysE9kGEHfGwDe8)Eb8rco6OETrQ3PGawVmpF1iWK86DQOE1PrOETrQ3PaD06LoyqOz83F793F7v5MKhi4JiE(QQ9PhmJtrIwD0)tFKhtEuXYcpF1iWK8(JtDrYZuGoAfe9u5aFom(Gp)LPhCks0QJcWcqRoQWZxncmjVMXF7fpJuVWrKAsE9MZE1EHeVEX0jhuSd6fBocaKdAVmpF1iWK8cnJ)(BVk3K8abFeXZxvTp9GzCks0QJ(F6J8a8QwGJi1K8(N(EaK9hN6IKNHOz83EXugjBKq9Q9gbA1r9kg96nci4ETS3ACo7L55RgbMKxVcOx6NJIVpbhAg)93EvUj5bc(iINVQAF6bZ4uKOvh9)0h5HNVAeysEL8kra9hN6IKh6NJIVpbhG6uyrTebkvfgkXad0phfFFco8uUwrubmsKvErGWzGb6NJIVpbhKdWrrtRoQ8Zr9S4Rat4eoXad0phfFFcoaIx1LjCrFKnIfWyGb6NJIVpbhONpwisDLebF6XjgyG(5O47tWHPtFujNLQAMJyGb6NJIVpbhgOErhHaLjkpygyG(5O47tWb5agkYTebkWco5OsLCogyG(5O47tWbWOcNdi4sIQLCwSe9OZAg)TxmPCqVU8G2BLMjI6L55RgbMKxVGXm6G71qY5fzGETr161qcuOeQxTxWOIi4E5Qrqtew9YZ0bNdUEZR30gjuVgsoVid07LwVvQ3iGGhY3m(7V9QCtYde8repFv1(0dMXPirRo6)PpYtELiGk8OLZ5)03dGS)4uxK8mu85Vm9GtrIwDuGNVAeysEL8kra1m(7V9QCtYde8repFv1(0dMXPirRo6)PpYtELiGk8OLZ5)03dGS)4uxK8m0H4Vm9q)Cu89j4Wt5AfrfWirw5fbcVz83F7v5MKhi4JiE(QQ9PhmJtrIwD0)tFKN8krav4rlNZ)PVhaz)XPUi5zO4ZN4uKOvhfONpwisDLebF6XPcm5uS(ltp0phfFFcoqpFSqK6kjc(0JtnJk3K8abFeXZxvTp9G5iGkIrV)N(ipGm6kc0tmc9xMEykofjA1rbE(QrGj5vYReb0xMs)Cu89j4amIu4PGOcocai3xMAQJolmfebmfzeQzu5MKhi4JiE(QQ9Phm)eekrf5PqPMrLBsEGGpI45RQ2NEWSpwOS6uG9xMEyQpIWf8XcLvNcSMXMXF)TxM5piE0i4EjCecREn5r9AJuVk3suVcOxfNkoT6OqZOYnjpGhEgpJqaFY5(ltpmffpAMiOuawaCX3jNIWQWZ3tp4MXF)Tx8ms9YZxncmjVIjp5G2RYnjVEDcW6fWhj4OJa9oyKUEzE(QrGj517aX56Ts9gbeCV6b3lWseb61gPErei6SELRxCks0QJcM8OILfE(QrGj5fAg)93EvUj5b(0dM5QZvuUj5vCcW(F6J8WZxncmjVIjp5G2m(BVyIks0QJ61gvRxcyYtnc07GrYgjuVqgLPjh0E)PCaH6DG4C9wPEJacU3knte1lZZxncmjVEfqVisHXk0m(7V9QCtYd8PhmJtrIwD0)tFKhWOmn5Gw8ZbeQuPzIOcpF1iWK8(N(EaK9hN6IKhmQCtWrf6ONqa8JtrIwDuGNVAeysEfWOmn5Gw8ZbeIbguUj4OcD0tia(XPirRokWZxncmjVY0PpcyiXlIbgWPirRokyYJkww45RgbMKN3PCtYlagLPjh0IFoGqHz05kicoYnjp8YZ0bNdUayuMMCql(5acfGJi1K8WWxCks0QJcM8OILfE(QrGj55D8mDW5GlagLPjh0IFoGqbe9u5a4v5MKxamkttoOf)CaHcZOZvqeCKBsEFXipthCo4cO4rLCw8ZbekGONkhW74z6GZbxamkttoOf)CaHci6PYbW7qWadm1uhDwafpQKZIFoGqyOzu5MKh4tpygmkttoOf)CaH(ltp14Cg45RgbMKxaohCFvUj5fMcIkvNcSaFurqja(9m8xMIXACodYnj0PUcxbCfMcr)V14CggtRamePEfqKYnm8fNIeT6OayuMMCql(5acvQ0mruHNVAeysEnJk3K8aF6bZifw0ZkaFf51Fz6PgNZapF1iWK8cW5G7lgXPirRokyYJkww45RgbMKh(XPirRokWZxncmjVIpI4kWkM8OpPpiE0OIjpIbgWPirRokyYJkww45RgbMKhE5z6GZbN3nm(GHMrLBsEGp9GzysTXAIo6Vm9uJZzGNVAeysEb4CW9TgNZakEujNf)CaHcW5G7lofjA1rbtEuXYcpF1iWK8WpofjA1rbE(QrGj5v8rexbwXKh9j9bXJgvm5rFIXACodWKAJ1eDuaoIutYZ7QX5mWZxncmjVaCePMKhg(XO4rZebLcWKAJGYuTX81mQCtYd8Phm)eekrGsolwIE0z)LPhCks0QJcM8OILfE(QrGj5HFCks0QJc88vJatYR4JiUcSIjp6t6dIhnQyYJ(wJZzGNVAeysEb4CW1m(BV4BI6ftKoBel0)EJaQxTx8vquVyZPaRx(OIGs9chrYbT3HmbHseO3C2lEs0JoRxUcSETSxfxkW9YvFF5G2lFurqjqOzu5MKh4tpyEkiQuDkW(hbuzWO4OcxbMCq9m8Fz6r5MKx4jiuIaLCwSe9OZc0hepAYb97m6CfeXhveuQyYJ8oLBsEHNGqjcuYzXs0JolqFq8Orfe9u5a4Nz6lthtRamePEva(KZbkYvMob6O9LP14CggtRamePEfI(nJk3K8aF6bZraveJE)P5K4w50h5bQtHf1seOuvyO0Fz6bNIeT6OGjpQyzHNVAeysE4LNPdohCE3q0mQCtYd8Phmhburm69)0h5HE(yHi1vse8PhN(ltp4uKOvhfm5rfll88vJatYd)EWPirRokqpFSqK6kjc(0JtfyYPy9fNIeT6OGjpQyzHNVAeysE4fNIeT6Oa98XcrQRKi4tpovGjNIL3nenJk3K8aF6bZraveJE)p9rEaJkCoGGljQwYzXs0Jo7Vm9GrCks0QJcM8OILfE(QrGj5HFp4uKOvhf45RgbMKxXhrCfyftE0NdLbgMc0rRGONkha)4uKOvhfm5rfll88vJatYddFRX5mWZxncmjVaCo4AgvUj5b(0dMJaQig9(F6J8a1HL)yjNffaKN4utY7Vm9GtrIwDuWKhvSSWZxncmjp86bNIeT6OqELiGk8OLZzZOYnjpWNEWCeqfXO3)tFKNNY1kIkGrISYlce(Fz6bNIeT6OGjpQyzHNVAeysE43Zq0m(BVEJzVrGCq7v7fyekf4EZZ7IaQxXO3)Ev3aflqVra1lZcrk8uquVyIeaqUEZObeyQ3C2lZZxncmjVqVyc2iHgia6FV(ijrIjd5OEJa5G2lZcrk8uquVyIeaqUEhi2yVmpF1iWK86nphw9kZE9g3KqN66L5kGRWuVcOx60QJG7vp4E1EJafk17G8WU1BL61LaR3ehH61gPEHJi1K86nN9AJuVtb6Of6fpJcOxfgg0R2l4PoxV4uxK61YETrQxEMo4CW1Bo7LzHifEkiQxmrcaixVdgPRx4uoO9AJcOxU64rNAsE9wjUgbuVI1Ra6nEisDat49AzVkaeFuV2OA9kwVdeNR3k1BeqW96tOjXnhw9MxV8mDW5Gl0mQCtYd8Phmhburm69)0h5bgrk8uqubhbaK7Vm9GtrIwDuWKhvSSWZxncmjp86bNIeT6OqELiGk8OLZ5xmwJZzqUjHo1v4kGRWuayk3lp14CgKBsOtDfUc4kmfE6hfGPCVyGbMYZdokwqUjHo1v4kGRWedmGtrIwDuGNVAeysEL8kraXad4uKOvhfm5rfll88vJatYdVYzeYpDQrWLPaD0ki6PYbgshsXipthCo4(Cy8bdyOz83F7Lj0GEHKrxVEdONyeQx6mew)7froHa9MxVGrfrW9kg96L5mRELBMONAsE9AJQ1Ra69sRxSiRxq03prgbh6TxmzY3PCc0Rns96JiCsgb96KJ6DWiD9oJh3K8uxOzu5MKh4tpyocOIy07)PpYdiJUIa9eJq)LPhmItrIwDuWKhvSSWZxncmjp86HzJp)ymItrIwDuiVseqfE0Y5eV4dgyGbmYudjNxKfgoiGaiJUIa9eJqFnKCErwy4qeOvh91qY5fzHHd8mDW5GlGONkhGbgyQHKZlYcdniGaiJUIa9eJqFnKCErwyOHiqRo6RHKZlYcdnWZ0bNdUaIEQCamGHVyKP0phfFFcoaJifEkiQGJaaYXad8mDW5GlaJifEkiQGJaaYfq0tLdG3HadnJ)2lEqcuOeQxiz01R3a6jgH6LuKdREhi2yVEJBsOtD9YCfWvyQ3e17Gr66vSEhOGE9rexbwOzu5MKh4tpyMRhNCLACo)F6J8aYORiqpXK8(ltpmLNhCuSGCtcDQRWvaxHPVM8i8pemWqnoNb5Me6uxHRaUctbGPCV8uJZzqUjHo1v4kGRWu4PFuaMY9Qz83E9gg9a9AJQ1lC27LwVv6OPy9Y88vJatYRxWygDW9IPpcSERuVrab3BgnGat9MZEzE(QrGj51RA9cYh1RFkNfAgvUj5b(0dMJaQig9(F6J8ihGJIMwDu5NJ6zXxbMWjC6Vm9q)Cu89j4auNclQLiqPQWqPV4uKOvhfm5rfll88vJatYdVEWPirRokKxjcOcpA5C2mQCtYd8Phmhburm69)0h5z60hvYzPQM5O)Y0d9ZrX3NGdqDkSOwIaLQcdL(ItrIwDuWKhvSSWZxncmjp86bNIeT6OqELiGk8OLZzZOYnjpWNEWCeqfXO3)tFKNbQx0riqzIYd(Vm9q)Cu89j4auNclQLiqPQWqPV4uKOvhfm5rfll88vJatYdVEWPirRokKxjcOcpA5C2mQCtYd8Phmhburm69)0h5roGHIClrGcSGtoQujN7Vm9q)Cu89j4auNclQLiqPQWqPV4uKOvhfm5rfll88vJatYdVEWPirRokKxjcOcpA5C2mQCtYd8Phmhburm69)0h5beVQlt4I(iBelG9xMEOFok((eCaQtHf1seOuvyO0xCks0QJcM8OILfE(QrGj5Hxp4uKOvhfYRebuHhTCoBgvUj5b(0dMJaQig9a)LPhCks0QJcM8OILfE(QrGj5Hxp4uKOvhfYRebuHhTCoBg)T3FeG6fFrjW6LjjoTxl71qcuOeQxVjKaCy1R3GlChfAgvUj5b(0dMNOeyLlXP)LPhu8OzIGsbOib4WQiCH7OV14Cg45RgbMKxaohCFXiofjA1rbtEuXYcpF1iWK8WlpthCo4yGbCks0QJcM8OILfE(QrGj5HFCks0QJc88vJatYR4JiUcSIjp6t6dIhnQyYJWqZ4V96nrwV2i1lZsaCX3jNIWQxMNVNEW9wJZzVr))9gphba9YZxncmjVEfqVGmVqZOYnjpWNEWmpJNriGp5C)LPhu8OzIGsbybWfFNCkcRcpFp9G)YZ0bNdUqnoNfybWfFNCkcRcpFp9GdisHX6BnoNbybWfFNCkcRcpFp9GlkIRhfGZb3xMwJZzawaCX3jNIWQWZ3tp4q0)lgXPirRokyYJkww45RgbMK3Nk3K8ctucSA6SaxbwXKhHxEMo4CWfQX5SalaU47Ktryv457PhCaoIutYJbgWPirRokyYJkww45RgbMKh(hcm0mQCtYd8PhmRiUEuH(W3LajV)Y0dkE0mrqPaSa4IVtofHvHNVNEWF5z6GZbxOgNZcSa4IVtofHvHNVNEWbePWy9TgNZaSa4IVtofHvHNVNEWffX1JcW5G7ltRX5malaU47Ktryv457PhCi6)fJ4uKOvhfm5rfll88vJatY7t6dIhnQyYJ(u5MKxyIsGvtNf4kWkM8i8YZ0bNdUqnoNfybWfFNCkcRcpFp9GdWrKAsEmWaofjA1rbtEuXYcpF1iWK8W)q8LPM6OZcO4rLCw8ZbecdnJk3K8aF6bZtucSA6S)Y0dkE0mrqPaSa4IVtofHvHNVNEWF5z6GZbxOgNZcSa4IVtofHvHNVNEWbe9u5a4NRaRyYJ(wJZzawaCX3jNIWQWZ3tp4YeLalaNdUVmTgNZaSa4IVtofHvHNVNEWHO)xmItrIwDuWKhvSSWZxncmjVp5kWkM8i8YZ0bNdUqnoNfybWfFNCkcRcpFp9GdWrKAsEmWaofjA1rbtEuXYcpF1iWK8W)qGHMrLBsEGp9G5jkbw5sC6Fz6bfpAMiOuawaCX3jNIWQWZ3tp4V8mDW5GluJZzbwaCX3jNIWQWZ3tp4aIuyS(wJZzawaCX3jNIWQWZ3tp4YeLalaNdUVmTgNZaSa4IVtofHvHNVNEWHO)xmItrIwDuWKhvSSWZxncmjp8YZ0bNdUqnoNfybWfFNCkcRcpFp9GdWrKAsEmWaofjA1rbtEuXYcpF1iWK8W)qGHMrLBsEGp9GzU6CfLBsEfNaS)N(ip88vJatYR4pQa6Vm9GtrIwDuWKhvSSWZxncmjp87bFyGbCks0QJcM8OILfE(QrGj5HFCks0QJc88vJatYR4JiUcSIjp6lpthCo4c88vJatYlGONkha)4uKOvhf45RgbMKxXhrCfyftEuZOYnjpWNEWmkEujNf)CaH(ltp14CgqXJk5S4NdiuaohCFzAnoNHPGiGLOxi6)fJ4uKOvhfm5rfll88vJatYdVEQX5mGIhvYzXphqOaCePMK3xCks0QJcM8OILfE(QrGj5HxLBsEHPGOs1PalmJoxbr8rfbLkM8igyaNIeT6OGjpQyzHNVAeysE4DkqhTcIEQCam0m(BV)uMUEvqVp9WQx8vquVyZPad0Rc61pbaP6OENjQxMNVAeysEHEHeRgs5wVz06nN9AJuVtKYnjp11lpF(5rN1Bo71gPEV4RsOEZzV4RGOEXMtbgOxBuTEhioxVNArK6Cy1lI4Jkck1lCejh0ETrQxMNVAeysE96pQaQ3kX1iG61ptNCq7vpSSr5G2RVcSETr16DG4C9EP1luKEwV61l9HH0EXxbr9InNcSEHJi5G2lZZxncmjVqZ4V)2RYnjpWNEWmofjA1r)JaQKZzbkh2ZW)JaQmyuCuHRatoOEg()PpYZuquP6uGv8Z0jh0)4uxK8OCtYlmfevQofyb(OIGsGYePCtYtDFIrCks0QJcM8OILfE(QrGj59PYnjVayuMMCql(5acfMrNRGi4i3K8(X4uKOvhfaJY0KdAXphqOsLMjIk88vJatYdddP8mDW5GlmfevQofyb4isnjpVBy8ZZ0bNdUWuquP6uGfE6hf(OIGsGpXPirRokK4iKFMUYuquP6uGbgs5z6GZbxykiQuDkWcWrKAsEEhgRX5mWZxncmjVaCePMK3qkpthCo4ctbrLQtbwaoIutYdddPdPd)fNIeT6OGjpQyzHNVAeysE4FkqhTcIEQCGMXF7fturIwDuV2OA9YZZqPd07pnM0jF0l(60hb6ncuOuVw2lDGiI6vmqV8rfbLa9QiQx)mDeCVZe1lZZxncmjVqVycNdREJaQ3FAmPt(Ox81Ppc0BgnGat9MZEzE(QrGj517Gr66DgDUE5Jkckb6LRxVvQ3SAQCeCVWrKCq71gPEp6dRxMNVAeysEHMXF)TxLBsEGp9GzCks0QJ(F6J84pM0jFu8Z0jh0)Y0JYnbhvOJEcbWpofjA1rbE(QrGj5vMo9radjEr)XPUi5bNIeT6OGjpQyzHNVAeysEFwJZzGNVAeysEb4isnjpVBiWVYnjVG)ysN8rz60hbcZOZvqeFurqPIjp6tEMo4CWf8ht6KpktN(iqaoIutYZ7uUj5faJY0KdAXphqOWm6Cfebh5MK3pgNIeT6OayuMMCql(5acvQ0mruHNVAeysEFXPirRokyYJkww45RgbMKh(Nc0rRGONkhGbgqXJMjckfaXR4LCqbLQJaa5GYadM8i8penJ)2lMYiD9gbYbTx81PpcyiXlQx56L55RgbMK3)EbkoQxf07tpS6LpQiOeOxf0RFcas1r9otuVmpF1iWK86DGyJz06LR((Ybn0m(7V9QCtYd8PhmJtrIwD0)tFKh)XKo5JIFMo5G(xMEuUj4OcD0tiaE9GtrIwDuGNVAeysELPtFeWqIx0FCQlsEWPirRokyYJkww45RgbMKh(vUj5f8ht6KpktN(iqygDUcI4Jkckvm5rENYnjVayuMMCql(5acfMrNRGi4i3K8(X4uKOvhfaJY0KdAXphqOsLMjIk88vJatY7lofjA1rbtEuXYcpF1iWK8W)uGoAfe9u5amWakE0mrqPaiEfVKdkOuDeaihugyWKhH)HOzu5MKh4tpyMRoxr5MKxXja7)PpYdk9l(JkG(dmKWnpd)xMEQX5mGIhvYzXphqOq0)lofjA1rbtEuXYcpF1iWK8Wl(0m(BVmdym9rG1Rns9ItrIwDuV2OA9YZZqPd0l(kiQxS5uG1BeOqPETSx6are1RyGE5Jkckb6vruVQdK96NPJG7DMOEXKJh1Bo79NYbek0m(7V9QCtYd8PhmJtrIwD0)iGk5CwGYH9m8)iGkdgfhv4kWKdQNH)F6J8mfevQofyf)mDYb9F67bq2FCQlsE4z6GZbxafpQKZIFoGqbe9u5a4x5MKxykiQuDkWcZOZvqeFurqPIjpY7uUj5faJY0KdAXphqOWm6Cfebh5MK3pgJ4uKOvhfaJY0KdAXphqOsLMjIk88vJatY7lpthCo4cGrzAYbT4Ndiuarpvoa(5z6GZbxafpQKZIFoGqbe9u5ay4lpthCo4cO4rLCw8ZbekGONkha)tb6Ovq0tLd8xMEykofjA1rHPGOs1PaR4NPtoOFn1rNfqXJk5S4Ndi03ACodO4rLCw8ZbekaNdUMXF7ftzKUEXKuemxbMCq7fFD6J6fIHeVO)9IVcI6fBofyGEbJz0b3BL6nci4ETSxO0ri1OEXKsRxigIuVa9QhCVw2l9HrhCVyZPaJq9oKPaJqHMrLBsEGp9G5PGOs1Pa7FeqLColq5WEg(FeqLbJIJkCfyYb1ZW)LPhMItrIwDuykiQuDkWk(z6Kd6xCks0QJcM8OILfE(QrGj5Hx85RYnbhvOJEcbWRhCks0QJcJkcUWvGvMo9radjErFz6uqeWuKrOGYnbh9LP14CggtRamePEfI(FXynoNHrsn5GwI(HO)xLBsEHPtFeWqIxuG(G4rJki6PYbWp(egcgyGpQiOeOmrk3K8uhE9mum0m(BVmRisoO9IVcIaMImc9Vx8vquVyZPad0RIOEJacUxG8eNICy1RL9chrYbTxMNVAeysEHE9MOJqQZH1)ETrcREve1BeqW9AzVqPJqQr9IjLwVqmePEb6DWiD9YrIb6DG4C9EP1BL6DGcmcUx9G7DGyJ9InNcmc17qMcmc9VxBKWQxWygDW9wPEb(isH7nJwVw27tLZu561gPEXMtbgH6DitbgH6TgNZqZOYnjpWNEW8uquP6uG9pcOsoNfOCypd)pcOYGrXrfUcm5G6z4)Y0ZuqeWuKrOGYnbh9LpQiOeaVEg(ltXPirRokmfevQofyf)mDYb9lgzQYnjVWuquvDUa9bXJMCq)YuLBsEbFSqz1Palixz6eOJ23ACodJKAYbTe9drFgyq5MKxykiQQoxG(G4rtoOFzAnoNHX0kadrQxHOpdmOCtYl4JfkRofyb5ktNaD0(wJZzyKutoOLOFi6)LP14CggtRamePEfI(yOz83Ezg4sbUxU67lh0EXxbr9InNcSE5Jkckb6DWO4OE5J6DKtoO9czuMMCq79NYbeQzu5MKh4tpyEkiQuDkW(hbuzWO4OcxbMCq9m8Fz6r5MKxamkttoOf)CaHc0hepAYb97m6CfeXhveuQyYJWVYnjVayuMMCql(5acfmH7vbrWrUj59TgNZWyAfGHi1RaCo4(AYJW7W4tZOYnjpWNEWmxDUIYnjVIta2)tFKhGPhSIGlO0utY7Vm9GtrIwDuWKhvSSWZxncmjp8IpFRX5mGIhvYzXphqOaCo4AgvUj5b(0dMb8eXhBgBgvUj5bck3eCuXuhDgWJtWjh0snF1)Y0JYnbhvOJEcbW7WFRX5mWZxncmjVaCo4(IrCks0QJcM8OILfE(QrGj5HxEMo4CWfCco5GwQ5RgGJi1K8yGbCks0QJcM8OILfE(QrGj5HFp4dgAgvUj5bck3eCuXuhDg4tpy(rgLO)Y0dofjA1rbtEuXYcpF1iWK8WVh8HbgWipthCo4cpYOefGJi1K8WpofjA1rbtEuXYcpF1iWK8(YutD0zbu8Osol(5acHbgyWuhDwafpQKZIFoGqFRX5mGIhvYzXphqOq0)lofjA1rbtEuXYcpF1iWK8WRYnjVWJmkrbEMo4CWXadtb6Ovq0tLdGFCks0QJcM8OILfE(QrGj51mQCtYdeuUj4OIPo6mWNEWmmsHMhOurKAJ)LPhtD0zb1rFamKcgYPGYmIW6lgRX5mWZxncmjVaCo4(Y0ACodJPvagIuVcrFm0m2mQCtYde45RgbMKxHNPdohCap(Pj51mQCtYde45RgbMKxHNPdohCGp9G5Qlt4YmIWQzu5MKhiWZxncmjVcpthCo4aF6bZvcbiKxYb9Vm9uJZzGNVAeysEHOFZOYnjpqGNVAeysEfEMo4CWb(0dMNcIQUmHBgvUj5bc88vJatYRWZ0bNdoWNEWSECcyi1v4QZ1mQCtYde45RgbMKxHNPdohCGp9GztEuzGI8)ltpO4rZebLcg98tK6kduK)3ACod0hJAeysEHOFZOYnjpqGNVAeysEfEMo4CWb(0dMJaQig9(tZjXTYPpYduNclQLiqPQWqPMrLBsEGapF1iWK8k8mDW5Gd8Phmhburm69)0h5roahfnT6OYph1ZIVcmHt4uZOYnjpqGNVAeysEfEMo4CWb(0dMJaQig9(F6J8mD6Jk5SuvZCuZOYnjpqGNVAeysEfEMo4CWb(0dMJaQig9(F6J8mq9IocbktuEWnJk3K8abE(QrGj5v4z6GZbh4tpyocOIy07)PpYJCadf5wIafybNCuPsoxZOYnjpqGNVAeysEfEMo4CWb(0dMJaQig9(F6J8aIx1LjCrFKnIfWAgvUj5bc88vJatYRWZ0bNdoWNEWCeqfXOhOzSzu5MKhiWZxncmjVI)Ocipob6Obky6JWqF0z)LPNACod88vJatYlaNdUMXF7LzgyYtnQ3XCqVU8G2lZZxncmjVEhioxVofy9AJ65fOxl7fs86ftNCqXoOxS5iaqoO9AzVWKrONCuVJ5GEXxbr9InNcmqVGXm6G7Ts9gbeCOz83F7v5MKhiWZxncmjVI)OcOp9GzCks0QJ(hbujNZcuoSNH)hbuzWO4OcxbMCq9m8)tFKh6dJoycUWZxncmjVcIEQCG)PVhaz)XPUi5PgNZapF1iWK8ci6PYb(SgNZapF1iWK8cWrKAsE)ymYZ0bNdUapF1iWK8ci6PYbWFnoNbE(QrGj5fq0tLdGH)Y0dpp4Oyb5Me6uxHRaUctnJ)2lZagg0Rns9chrQj51Bo71gPEHeVEX0jhuSd6fBocaKdAVmpF1iWK861YETrQx6G7nN9AJuV8icrN1lZZxncmjVELzV2i1lxbwVdYOdUxE(8DKr9chrYbTxBua9Y88vJatYl0m(7V9QCtYde45RgbMKxXFub0NEWmofjA1r)JaQKZzbkh2ZW)JaQmyuCuHRatoOEg()PpYd9Hrhmbx45RgbMKxbrpvoW)03Jcd)hN6IKhCks0QJcaVQf4isnjV)Y0dpp4Oyb5Me6uxHRaUctFXynoNbq8kEjhuqP6iaqoOfePWyfI(mWaofjA1rb6dJoycUWZxncmjVcIEQCa8oCyi(Xq5WHN(XpgJ14CgaXR4LCqbLQJaa5GgE6hfGPCV8UACodG4v8soOGs1raGCqdat5EHbm0mQCtYde45RgbMKxXFub0NEWCvHwYzXqc3lWFz6PgNZapF1iWK8cW5GRzu5MKhiWZxncmjVI)OcOp9GzNGtoOLA(Q)LPhLBcoQqh9ecG3H)wJZzGNVAeysEb4CW1m(BVykInMrRxVXnj0PUEzUc4km9Vxm9rG1Beq9IVcI6fBofyGEhmsxV2iHvVdYd7wVV4Xh7LJed0REW9oyKUEXxbralrVEfqVW5Gl0mQCtYde45RgbMKxXFub0NEW8uquP6uG9pcOsoNfOCypd)pcOYGrXrfUcm5G6z4)Y0dt55bhfli3KqN6kCfWvy6lFurqjaE9m83ACod88vJatYle9)Y0ACodtbralrVq0)ltRX5mmMwbyis9ke9)oMwbyis9Qa8jNduKRmDc0r7ZACodJKAYbTe9drF8p0MXF7ftrSXE9g3KqN66L5kGRW0)EXxbr9InNcSEJaQxWygDW9wPEvyyXK8uNdRE55bmKkhb3li71gvRxX6va9EP1BL6nci4EJNJaGE9g3KqN66L5kGRWuVcOxTMrRxl7L(WxquVjQxBKquVkI69LiQxBuVEPlJqh7fFfe1l2CkWa9AzV0hgDW96nUjHo11lZvaxHPETSxBK6Lo4EZzVmpF1iWK8cnJ)(BVk3K8abE(QrGj5v8hva9PhmJtrIwD0)iGk5CwGYH9m8)iGkdgfhv4kWKdQNH)F6J8qF4tCJGltbrLQtbg4F67bq2FCQlsEuUj5fMcIkvNcSaFurqjqzIuUj5PUpXiofjA1rb6dJoycUWZxncmjVcIEQCaVRgNZGCtcDQRWvaxHPaCePMKhggs5z6GZbxykiQuDkWcWrKAsE)LPhEEWrXcYnj0PUcxbCfMAg)93EvUj5bc88vJatYR4pQa6tpygNIeT6O)ravY5SaLd7z4)ravgmkoQWvGjhupd))0h55icMGltbrLQtbg4F67bq2FCQlsE4K4WiofjA1rb6dJoycUWZxncmjVcIEQCGHumwJZzqUjHo1v4kGRWuaoIutYZ7GYHdp9dmGH)Y0dpp4Oyb5Me6uxHRaUctnJk3K8abE(QrGj5v8hva9PhmpfevQofy)JaQKZzbkh2ZW)JaQmyuCuHRatoOEg(Vm9WZdokwqUjHo1v4kGRW0x(OIGsa86z4VyeNIeT6Oa9HpXncUmfevQofya86bNIeT6OWrembxMcIkvNcmadmGtrIwDuG(WOdMGl88vJatYRGONkha)EQX5mi3KqN6kCfWvykahrQj5Xad14CgKBsOtDfUc4kmfaMY9c)dLbgQX5mi3KqN6kCfWvykGONkha)q5WHN(bdmWZ0bNdUayuMMCql(5acfqKcJ1xLBcoQqh9ecGxp4uKOvhf45RgbMKxbmkttoOf)CaH(YtC0PNfob6OvMkHHV14Cg45RgbMKxi6)fJmTgNZWuqeWs0le9zGHACodYnj0PUcxbCfMci6PYbWp(egcm8LP14CggtRamePEfI(FhtRamePEva(KZbkYvMob6O9znoNHrsn5GwI(HOp(hAZOYnjpqGNVAeysEf)rfqF6bZC15kk3K8koby)p9rEuUj4OIPo6mqZOYnjpqGNVAeysEf)rfqF6bZ88vJatY7FeqLColq5WEg(FeqLbJIJkCfyYb1ZW)LPNACod88vJatYlaNdUV4uKOvhfm5rfll88vJatYd)EWNVyKPO4rZebLcWcGl(o5uewfE(E6bZad14CgGfax8DYPiSk8890doe9zGHACodWcGl(o5uewfE(E6bxMOeyHO)xtD0zbu8Osol(5ac9LNPdohCHAColWcGl(o5uewfE(E6bhqKcJfg(IrMIIhnteukafjahwfHlChXadWunoNbOib4WQiCH7Oq0hdFXit5jo60ZchXrPlrWmWapthCo4cWKAJ1eDuarpvoadmuJZzaMuBSMOJcrFm8fJmLN4OtplGJoBeledmWZ0bNdUWtqOebk5Syj6rNfq0tLdGHVyu5MKx4rgLOGCLPtGoAFvUj5fEKrjkixz6eOJwbrpvoa(9GtrIwDuGNVAeysEfUcScIEQCagyq5MKxaWteFmqFq8Ojh0Vk3K8caEI4Jb6dIhnQGONkha)4uKOvhf45RgbMKxHRaRGONkhGbguUj5fMcIQQZfOpiE0Kd6xLBsEHPGOQ6Cb6dIhnQGONkha)4uKOvhf45RgbMKxHRaRGONkhGbguUj5f8XcLvNcSa9bXJMCq)QCtYl4JfkRofyb6dIhnQGONkha)4uKOvhf45RgbMKxHRaRGONkhGbguUj5fMo9radjErb6dIhn5G(v5MKxy60hbmK4ffOpiE0OcIEQCa8JtrIwDuGNVAeysEfUcScIEQCam0m(BVyc2iH6LNPdohCGETr16fmMrhCVvQ3iGG7DGyJ9Y88vJatYRxWygDW9MNdRERuVrab37aXg7vVEvUfvxVmpF1iWK86LRaRx9G79sR3bIn2R2lK41lMo5GIDqVyZraGCq71hL8qZOYnjpqGNVAeysEf)rfqF6bZC15kk3K8koby)p9rE45RgbMKxHNPdohCG)Y0tnoNbE(QrGj5fq0tLdG3HegyGNPdohCbE(QrGj5fq0tLdG)HOzu5MKhiWZxncmjVI)OcOp9G5PtFeWqIx0Fz6bJ14CggtRamePEfI(FvUj4OcD0tiaE9GtrIwDuGNVAeysELPtFeWqIxegyGbmwJZzykicyj6fI(FvUj4OcD0tiaE9GtrIwDuGNVAeysELPtFeWqIxK3HIhnteukmfebSe9WqZOYnjpqGNVAeysEf)rfqF6bZ(yHYQtb2Fz6PgNZaiEfVKdkOuDeaih0cIuyScr)V14CgaXR4LCqbLQJaa5GwqKcJvarpvoaE5kWkM8OMrLBsEGapF1iWK8k(JkG(0dM9XcLvNcS)Y0tnoNHPGiGLOxi63mQCtYde45RgbMKxXFub0NEWSpwOS6uG9xMEQX5m4Jfk5of8cr)V14Cg8XcLCNcEbe9u5a4LRaRyYJ(IXACod88vJatYlGONkhaVCfyftEedmuJZzGNVAeysEb4CWHHVk3eCuHo6jea)4uKOvhf45RgbMKxz60hbmK4f1mQCtYde45RgbMKxXFub0NEWSpwOS6uG9xMEQX5mmMwbyis9ke9)wJZzGNVAeysEHOFZOYnjpqGNVAeysEf)rfqF6bZ(yHYQtb2Fz6Xhr4kq5WHHdaEI4JFRX5mmsQjh0s0pe9)QCtWrf6ONqa8JtrIwDuGNVAeysELPtFeWqIx03ACod88vJatYle9Bg)T3FeqoO9czuMMCq79NYbeQx4isoO9Y88vJatYRxl7fralruV4RGOEXMtbwV6b37pnM0jF0l(60h1lFurqjqVC96Ts9wPJMcxu3)ERrR3iiQohw9MNdREZRxMrYmhAgvUj5bc88vJatYR4pQa6tpygmkttoOf)CaH(ltp14Cg45RgbMKxi6)LPk3K8ctbrLQtbwGpQiOe4RYnbhvOJEcbWRhCks0QJc88vJatYRagLPjh0IFoGqFvUj5f8ht6KpktN(iqygDUcI4Jkckvm5r4DgDUcIGJCtY7VCgHqrFRitpk3K8ctbrLQtbwGpQiOeWJYnjVWuquP6uGfE6hf(OIGsGMrLBsEGapF1iWK8k(JkG(0dM9ht6KpktN(iWFz6PgNZapF1iWK8cr)VgsXrUIjpc)14Cg45RgbMKxarpvoWxmIrLBsEHPGOs1PalWhveucG)H)AQJol4Jfk5of8(QCtWrf6ONqapdJbgyGPM6OZc(yHsUtbpgyq5MGJk0rpHa4Dym8TgNZWiPMCqlr)q0)ZX0kadrQxfGp5CGICLPtGoA4FOnJk3K8abE(QrGj5v8hva9PhmpD6Jags8I(ltp14Cg45RgbMKxaohCF5z6GZbxGNVAeysEbe9u5a4NRaRyYJ(QCtWrf6ONqa86bNIeT6OapF1iWK8ktN(iGHeVOMrLBsEGapF1iWK8k(JkG(0dMNcIQQZ9xMEQX5mWZxncmjVaCo4(YZ0bNdUapF1iWK8ci6PYbWpxbwXKh9LP88GJIfMo9rfLZrKj51mQCtYde45RgbMKxXFub0NEWmGNi(4Fz6PgNZapF1iWK8ci6PYbWlxbwXKh9TgNZapF1iWK8crFgyOgNZapF1iWK8cW5G7lpthCo4c88vJatYlGONkha)CfyftEuZOYnjpqGNVAeysEf)rfqF6bZobNCql18v)ltp14Cg45RgbMKxarpvoa(HYHdp9JVk3eCuHo6jeaVd3mQCtYde45RgbMKxXFub0NEWmmsHMhOurKAJ)LPNACod88vJatYlGONkha)q5WHN(X3ACod88vJatYle9BgBg)TxmjY5tOEXPirRoQxBuTE55zQCGETrQxLBr11lbm5Pgb3RjpQxBuTETrQ3J(W6L55RgbMKxVdeNR3k1lIuyScnJ)(BVk3K8abE(QrGj5vm5jhup4uKOvh9)0h5HNVAeysEfePWyvm5r)XPUi5HNPdohCbE(QrGj5fq0tLd8JPp8jUrWfVKd2jh0cIGJCtYRz83EXZi1lxbwVM8OEZzV2i1lWNCUETr16DG4C9wPE9rexbwVYzzVmpF1iWK8cnJ)(BVk3K8abE(QrGj5vm5jh0p9GzCks0QJ(F6J8WZxncmjVIpI4kWkM8O)4uxK8GrLBsEHPGOQ6CbUcSIjp6hZuEEWrXctN(OIY5iYK8(u5MKxaWteFmWvGvm5rFYZdokwy60hvuohrMKhg(Xyu5MGJk0rpHa4hNIeT6OapF1iWK8ktN(iGHeVim8PYnjVW0PpcyiXlkWvGvm5r)ymQCtWrf6ONqa86bNIeT6OapF1iWK8ktN(iGHeVim4D4uKOvhf45RgbMKxHRaRGONkhOz83F7v5MKhiWZxncmjVIjp5G(PhmJtrIwD0)tFKhE(QrGj5vm5r)XPUi5bNIeT6OapF1iWK8kisHXQyYJAg)TxMf5uS6L55RgbMKxVZe1Ronc1l(kicykYiuVXZraqV4uKOvhfMcIaMImcv45RgbMKxVcOxazHMXF)TxLBsEGapF1iWK8kM8Kd6NEWmofjA1r)p9rE45RgbMKxXKh9p9980p(JtDrYZuqeWuKrOaIEQCG)Y0JPo6SWuqeWuKrOVmfNIeT6OWuqeWuKrOcpF1iWK8Ag)TxMf5uS6L55RgbMKxVZe1lMScl6z9cXxrE1Rm7vSEhioxV88r9MZzV8mDW5GRxqMxOz83F7v5MKhiWZxncmjVIjp5G(PhmJtrIwD0)tFKhE(QrGj5vm5r)tFpp9J)4uxK8WZ0bNdUasHf9ScWxrEfq0tLd8xME4jo60ZcEHfs07lpthCo4cifw0ZkaFf5varpvoG3nm(GFCks0QJc88vJatYRyYJAg)TxMf5uS6L55RgbMKxVZe17qMGqjc0Bo7fpj6rN1m(7V9QCtYde45RgbMKxXKNCq)0dMXPirRo6)PpYdpF1iWK8kM8O)PVNN(XFCQlsE4z6GZbx4jiuIaLCwSe9OZci6PYb(ltp8ehD6zbC0zJyH(YZ0bNdUWtqOebk5Syj6rNfq0tLd4DdDiWpofjA1rbE(QrGj5vm5rnJ)2lZICkw9Y88vJatYR3zI6LzrQnwt0rHMXF)TxLBsEGapF1iWK8kM8Kd6NEWmofjA1r)p9rE45RgbMKxXKh9p9980p(JtDrYdpthCo4cWKAJ1eDuarpvoWNySgNZamP2ynrhfGJi1K88UACod88vJatYlahrQj5HHFmkE0mrqPamP2iOmvBmF)LPhEIJo9SWrCu6se8xEMo4CWfGj1gRj6OaIEQCaVBy8b)4uKOvhf45RgbMKxXKh1m(BVmlYPy1lZZxncmjVENjQxMfP2i2b9IVQnMVEbMY9c0Rm71gje1RIOEvRxhPaRxBq2RPiOKbcnJ)(BVk3K8abE(QrGj5vm5jh0p9GzCks0QJ(F6J8WZxncmjVIjp6F675PF8hN6IKNACodWKAJ1eDuarpvoG3vJZzGNVAeysEb4isnjV)Y0dkE0mrqPamP2iOmvBmFFRX5matQnwt0rHO)xLBcoQqh9ecGxpdTz83EzwKtXQxMNVAeysE9otuV2i1lZ8ZhlePUEXeqWNECQ3ACo7vM9AJuV(oflc1Ra6ncKdAV2OA9Ai58ISqZ4V)2RYnjpqGNVAeysEftEYb9tpygNIeT6O)N(ip88vJatYRyYJ(N(EE6h)XPUi5bNIeT6Oa98XcrQRKi4tpovGjNIL3HrEMo4CWfONpwisDLebF6XPaCePMKN3XZ0bNdUa98XcrQRKi4tpofq0tLdGHFmt5z6GZbxGE(yHi1vse8PhNcisHX6Vm9q)Cu89j4a98XcrQRKi4tpo1m(BVmlYPy1lZZxncmjVENjQxVjNclQLiqVytHHs)7nEoca6vSEhKrhCVvQxyYPyrW96YdkH61g1R3HIp9ciEEWGqZ4V)2RYnjpqGNVAeysEftEYb9tpygNIeT6O)N(ip88vJatYRyYJ(N(EE6h)XPUi5HNPdohCbOofwulrGsvHHsbe9u5a)LPh6NJIVpbhG6uyrTebkvfgk9LNPdohCbOofwulrGsvHHsbe9u5aE3qXh8JtrIwDuGNVAeysEftEuZ4V9YSiNIvVmpF1iWK86nEM46fto)PEPp8feb6vM9kg2b9g9dnJ)(BVk3K8abE(QrGj5vm5jh0p9GzCks0QJ(F6J8WZxncmjVIjp6F675PF8hN6IKNACodO4rLCw8ZbekGONkh4Vm9yQJolGIhvYzXphqOV14Cg45RgbMKxaohCnJ)2lZICkw9Y88vJatYR3zI6vVEPpmK2lMC8OEZzV)uoGq9kZETrQxm54r9MZE)PCaH6DqgDW9YZh1BoN9YZ0bNdUEvRxhPaR3HOxaXZdg0BLMjI6L55RgbMKxVdYOdo0m(7V9QCtYde45RgbMKxXKNCq)0dMXPirRo6)PpYdpF1iWK8kM8O)PVNN(XFCQlsE4z6GZbxafpQKZIFoGqbe9u5aFwJZzafpQKZIFoGqb4isnjV)Y0JPo6SakEujNf)CaH(wJZzGNVAeysEb4CW9LNPdohCbu8Osol(5acfq0tLd85qGFCks0QJc88vJatYRyYJAg)TxMf5uS6L55RgbMKxVYSxMLa4IVtofHvVmpFp9G7DqgDW9EP1BL6frkmw9otuVI1lwKfAg)93EvUj5bc88vJatYRyYtoOF6bZ4uKOvh9)0h5HNVAeysEftE0)03Zt)4po1fjp8mDW5GluJZzbwaCX3jNIWQWZ3tp4aIEQCG)Y0dkE0mrqPaSa4IVtofHvHNVNEWFRX5malaU47Ktryv457PhCaohCnJ)2lMSkW9YmJJod499YSiNIvVmpF1iWK86DMOEvy4Eb(6Gd0Bo7Lz3BI69LiQxfgg0RnQwVdeNRxNcSED5bLq9AJ617WdrVaINhmi0lEgja1lo1fjqVkIoSB9EeNaafjoS6n9n5PUELRx156LRaceAg)93EvUj5bc88vJatYRyYtoOF6bZ4uKOvh9)0h5HNVAeysEftE0)03Zt)4po1fjpivGleo6SGcddcY9xMEqQaxiC0zbfggeOpeGb(IubUq4OZckmmiWZ4z41dZ(lsf4cHJolOWWGaCePMKhEhEiAg)TxmzvG7LzghDgW77Lz4gOyb6ncOEzE(QrGj517aXg7fx0DesRItmS6fPcCVeo6mW)EtCecjWuV6HvVWKtXc0Rtagb3RwtCuVw27t9I6feruVI1luYa9gbeCVJeIcnJ)(BVk3K8abE(QrGj5vm5jh0p9GzCks0QJ(F6J8WZxncmjVIjp6po1fjpivGleo6SaUO7iKwDuqUFmtrQaxiC0zbCr3riT6Oq0)Vm9GubUq4OZc4IUJqA1rb6dbyGV4uKOvhf45RgbMKxbrkmwftEe(rQaxiC0zbCr3riT6OGCnJ)27pcq9AJuVh9H1lZZxncmjVEZRxEMo4CW1Rm7vSEhKrhCVxA9wPEPp8jUrW9AzVWKtXQxBK6fWhj4OJG7npQ3e1Rns9c4JeC0rW9Mh17Gm6G7Du99PRxhba9AJ617qXNEbeppyqVvAMiQxBK6DkqhTEPdgeAg)93EvUj5bc88vJatYRyYtoOF6bZ4uKOvh9)0h5HNVAeysEftE0FCQlsEWPirRokWZxncmjVcIuySkM8O)Y0dofjA1rbE(QrGj5vqKcJvXKh9jpthCo4c88vJatYlahrQj59JX4WEhgXNaM6N4tyO)ytD0zHPGiGPiJqy4hBQJol4LCWo5GIb87bNIeT6OapF1iWK8kM8igyaNIeT6OapF1iWK8kM8i8ofOJwbrpvoG3nu8Pz83EzgWW9AJuV8icrN1RjpQxl71gPEb8rco6i4EzE(QrGj51RL96hTEfRx56vRG0fnQxtEuVGSxBuTEfRxb0lWeNRxLZJi1OE1PrOE1EDIzoQxtEuV(kaqGqZ4V)2RYnjpqGNVAeysEftEYb9tpygNIeT6O)N(ip88vJatYRyYJ(N(Euy4)4uxK8yYJAg)Tx8vo15W6FV88WriR3jkF9Qvq6Ig1RjpQx9G7fyjI61gPErKtnbh1RjpQx56fNIeT6OGjpQyzHNVAeysEHE)rNt8I61gPEreW6nN9AJuVC1XJo1K8a)7DWOWh7Du99PRxhba9or0phPZCy1RL9c8jcU3OFV2i1lqErNAsE)71gfqVJQVpDGEZ5078MyoZQx9G7DWO4OE5kWKdAOz83F7v5MKhiWZxncmjVIjp5G(PhmJtrIwD0)iGk5CwGYH9m8)iGkdgfhv4kWKdQNH)F6J8yYJkww45RgbMK3FCQlsEWiofjA1rbE(QrGj5vm5rENjpcd)4ACod88vJatYlaNdUMXMrLBsEGak9l(JkG8mD6Jags8I(ltpk3eCuHo6jeaVEWPirRokmMwbyis9QmD6Jags8I(IXACodJPvagIuVcrFgyOgNZWuqeWs0le9XqZOYnjpqaL(f)rfqF6bZtbrv15(ltp14CgGj1gRj6Oq0)lkE0mrqPamP2iOmvBmFFXPirRokyYJkww45RgbMKh(RX5matQnwt0rbe9u5aFvUj4OcD0tiaE9m0MrLBsEGak9l(JkG(0dM9XcLvNcS)Y0tnoNbq8kEjhuqP6iaqoOfePWyfI(FRX5maIxXl5GckvhbaYbTGifgRaIEQCa8YvGvm5rnJk3K8abu6x8hva9Phm7JfkRofy)LPNACodtbralrVq0Vzu5MKhiGs)I)OcOp9GzFSqz1Pa7Vm9uJZzymTcWqK6vi63m(BV)ia1BEuV4RGOEXMtbwVKICy1RC9IjN)uVYSxSYyVW5HDR3rfh1lj2iH6ftIutoO9(J87nr9IjLwVqmePE1lwK1REW9sInsiVVxmQyO3rfh17lruV2OE9AdYEvhIuyS(3lgRyO3rfh1lZWrFamKcgYPyh0l(gry1lIuyS61YEJa6FVjQxmYXqVqifjh0EXtg5J9kGEvUj4OqVmR8WU1lC2RnkGEhmkoQ3rfb3lxbMCq7fFD6Jags8Ia9MOEhmsxVqIxVy6Kdk2b9InhbaYbTxb0lIuyScnJk3K8abu6x8hva9PhmpfevQofy)JaQKZzbkh2ZW)JaQmyuCuHRatoOEg(Vm9WuCks0QJctbrLQtbwXptNCq)wJZzaeVIxYbfuQocaKdAbrkmwb4CW9v5MGJk0rpHa4hNIeT6OWOIGlCfyLPtFeWqIx0xMofebmfzekOCtWrFXitRX5mmsQjh0s0pe9)Y0ACodJPvagIuVcr)Vm1hr4k5CwGYHdtbrLQtb2xmQCtYlmfevQofyb(OIGsa86zOmWagn1rNfuh9bWqkyiNckZicRV8mDW5GlaJuO5bkveP2yarkmwyGbgaKIKdAXYiFmOCtWryadnJ)27pcq9IVcI6fBofy9sInsOEHJi5G2R2l(kiQQohM)jSqz1PaRxUcSEhmsxVysKAYbT3FKFVcOxLBcoQ3e1lCejh0EPpiE0OEhi2yVqifjh0EXtg5JHMrLBsEGak9l(JkG(0dMNcIkvNcS)ravY5SaLd7z4)ravgmkoQWvGjhupd)xMEykofjA1rHPGOs1PaR4NPtoOFz6uqeWuKrOGYnbh9fJyeJk3K8ctbrv15c0hepAYb9lgvUj5fMcIQQZfOpiE0OcIEQCa8JpHHGbgykkE0mrqPWuqeWs0ddmWGYnjVGpwOS6uGfOpiE0Kd6xmQCtYl4JfkRofyb6dIhnQGONkha)4tyiyGbMIIhnteukmfebSe9Wag(wJZzyKutoOLOFi6JbgyaJasrYbTyzKpguUj4OVySgNZWiPMCqlr)q0)ltvUj5fa8eXhd0hepAYbLbgyAnoNHX0kadrQxHO)xMwJZzyKutoOLOFi6)v5MKxaWteFmqFq8Ojh0VmDmTcWqK6vb4tohOixz6eOJggWagAgvUj5bcO0V4pQa6tpyMRoxr5MKxXja7)PpYJYnbhvm1rNbAgvUj5bcO0V4pQa6tpy2hluwDkW(ltp14Cg8XcLCNcEHO)xUcSIjpc)14Cg8XcLCNcEbe9u5aF5kWkM8i8xJZzafpQKZIFoGqbe9u5anJk3K8abu6x8hva9Phm7JfkRofy)LPNACodJPvagIuVcr)VasrYbTyzKpguUj4OVk3eCuHo6jea)4uKOvhfgtRamePEvMo9radjErnJk3K8abu6x8hva9Phm7pM0jFuMo9rG)Y0dtXPirRok4pM0jFu8Z0jh0V14Cggj1KdAj6hI(FzAnoNHX0kadrQxHO)xmQCtWrf40cc0tmc)dLbguUj4OcD0tiaE9GtrIwDuyurWfUcSY0PpcyiXlIbguUj4OcD0tiaE9GtrIwDuymTcWqK6vz60hbmK4fHHMrLBsEGak9l(JkG(0dMb8eXh)ltpasrYbTyzKpguUj4OMrLBsEGak9l(JkG(0dMHrk08aLkIuB8Vm9OCtWrf6ONqa8o0MrLBsEGak9l(JkG(0dMvexpQqF47sGK3Fz6r5MGJk0rpHa41dofjA1rbfX1Jk0h(Uei599PNg85gE9GtrIwDuqrC9Oc9HVlbsELNE6xtrqjlmqSr5ggFAg)TxmfXg7LUmcDSxtrqjd8VxX6va9Q9cvLRxl7LRaRx81PpcyiXlQxf07uCoc1RCaJu4EZzV4RGOQ6CHMrLBsEGak9l(JkG(0dMNo9radjEr)LPhLBcoQqh9ecGxp4uKOvhfgveCHRaRmD6Jags8IAgvUj5bcO0V4pQa6tpyEkiQQoxZyZOYnjpqay6bRi4ckn1K88mD6Jags8I(ltpk3eCuHo6jeaVEWPirRokmMwbyis9QmD6Jags8I(IXACodJPvagIuVcrFgyOgNZWuqeWs0le9XqZOYnjpqay6bRi4ckn1K8(0dMNcIQQZ9xMEQX5matQnwt0rHO)xu8OzIGsbysTrqzQ2y((ItrIwDuWKhvSSWZxncmjp8xJZzaMuBSMOJci6PYbWRNH2mQCtYdeaMEWkcUGstnjVp9GzFSqz1Pa7Vm9uJZzykicyj6fI(nJk3K8abGPhSIGlO0utY7tpy2hluwDkW(ltp14CggtRamePEfI(FRX5mmMwbyis9kGONkha)k3K8ctbrv15c0hepAuXKh1mQCtYdeaMEWkcUGstnjVp9GzFSqz1Pa7Vm9uJZzymTcWqK6vi6)fJ(icxbkhomCykiQQohdmmfebmfzekOCtWrmWGYnjVGpwOS6uGfKRmDc0rddnJ)2lEqy1RL9cLSEHGPdB96JsoOx5acm1lMC(t96pQac0BI6L55RgbMKxV(JkGa9oyKUE9taqQok0mQCtYdeaMEWkcUGstnjVp9GzFSqz1Pa7Vm9uJZzaeVIxYbfuQocaKdAbrkmwHO)xmYZ0bNdUakEujNf)CaHci6PYb(u5MKxafpQKZIFoGqb6dIhnQyYJ(KRaRyYJWBnoNbq8kEjhuqP6iaqoOfePWyfq0tLdWadm1uhDwafpQKZIFoGqy4lofjA1rbtEuXYcpF1iWK8(KRaRyYJWBnoNbq8kEjhuqP6iaqoOfePWyfq0tLd0mQCtYdeaMEWkcUGstnjVp9GzFSqz1Pa7Vm9uJZzymTcWqK6vi6)fqksoOflJ8XGYnbh1mQCtYdeaMEWkcUGstnjVp9GzFSqz1Pa7Vm9uJZzWhluYDk4fI(F5kWkM8i8xJZzWhluYDk4fq0tLd0m(BVmRisoO9AJuVatpyfb3lkn1K8(3BEoS6ncOEXxbr9InNcmqVdgPRxBKWQxfr9EP1BLKdAV(z6i4ENjQxm58N6nr9Y88vJatYl07pcq9IVcI6fBofy9sInsOEHJi5G2R2l(kiQQohM)jSqz1PaRxUcSEhmsxVysKAYbT3FKFVcOxLBcoQ3e1lCejh0EPpiE0OEhi2yVqifjh0EXtg5JHMrLBsEGaW0dwrWfuAQj59PhmpfevQofy)JaQKZzbkh2ZW)JaQmyuCuHRatoOEg(Vm9W0PGiGPiJqbLBco6ltXPirRokmfevQofyf)mDYb9lgXigvUj5fMcIQQZfOpiE0Kd6xmQCtYlmfevvNlqFq8Orfe9u5a4hFcdbdmWuu8OzIGsHPGiGLOhgyGbLBsEbFSqz1PalqFq8Ojh0Vyu5MKxWhluwDkWc0hepAubrpvoa(XNWqWadmffpAMiOuykicyj6Hbm8TgNZWiPMCqlr)q0hdmWagbKIKdAXYiFmOCtWrFXynoNHrsn5GwI(HO)xMQCtYla4jIpgOpiE0KdkdmW0ACodJPvagIuVcr)VmTgNZWiPMCqlr)q0)RYnjVaGNi(yG(G4rtoOFz6yAfGHi1RcWNCoqrUY0jqhnmGbm0mQCtYdeaMEWkcUGstnjVp9GzFSqz1Pa7Vm9uJZzymTcWqK6vi6)v5MGJk0rpHa4hNIeT6OWyAfGHi1RY0PpcyiXlQzu5MKhiam9GveCbLMAsEF6bZ(JjDYhLPtFe4Vm9WuCks0QJc(JjDYhf)mDYb9lgzQPo6SWeLVInsffmsagyq5MGJk0rpHa4Dym8fJk3eCuboTGa9eJW)qzGbLBcoQqh9ecGxp4uKOvhfgveCHRaRmD6Jags8IyGbLBcoQqh9ecGxp4uKOvhfgtRamePEvMo9radjEryOzu5MKhiam9GveCbLMAsEF6bZC15kk3K8koby)p9rEuUj4OIPo6mqZOYnjpqay6bRi4ckn1K8(0dMHrk08aLkIuB8Vm9OCtWrf6ONqa8oCZOYnjpqay6bRi4ckn1K8(0dMb8eXh)ltpasrYbTyzKpguUj4OMrLBsEGaW0dwrWfuAQj59PhmRiUEuH(W3LajV)Y0JYnbhvOJEcbWRhCks0QJckIRhvOp8DjqY77tpn4Zn86bNIeT6OGI46rf6dFxcK8kp90VMIGswyGyJYnm(0m(BVykIn2lDze6yVMIGsg4FVI1Ra6v7fQkxVw2lxbwV4RtFeWqIxuVkO3P4CeQx5agPW9MZEXxbrv15cnJk3K8abGPhSIGlO0utY7tpyE60hbmK4f9xMEuUj4OcD0tiaE9GtrIwDuyurWfUcSY0PpcyiXlQzu5MKhiam9GveCbLMAsEF6bZtbrv15yHa8joltWuz2SgRXYc]] )
|
|
end
|
|
|