Fix startup runtime, remove debug from karma

This commit is contained in:
Markolie
2014-12-21 13:14:41 +01:00
parent 997a085399
commit 3e7e6ef1e6
5 changed files with 43 additions and 17 deletions
+27 -4
View File
@@ -82,7 +82,6 @@
hex = text("0[]", hex)
return hex
// Concatenates a list of strings into a single string. A seperator may optionally be provided.
/proc/list2text(list/ls, sep)
if(ls.len <= 1) // Early-out code for empty or singleton lists.
@@ -170,14 +169,38 @@
#undef S1
//slower then list2text, but correctly processes associative lists.
proc/tg_list2text(list/list, glue=",")
proc/tg_list2text(list/list, glue=",", assocglue=";")
if(!istype(list) || !list.len)
return
var/output
for(var/i=1 to list.len)
output += (i!=1? glue : null)+(!isnull(list["[list[i]]"])?"[list["[list[i]]"]]":"[list[i]]")
if(!isnull(list["[list[i]]"]))
output += (i!=1? glue : null)+ "[list[i]]"+(i!=1? assocglue : null)+"[list["[list[i]]"]]"
else
output += (i!=1? glue : null)+ "[list[i]]"
return output
proc/tg_text2list(text, glue=",", assocglue=";")
var/length = length(glue)
if(length < 1) return list(text)
. = list()
var/lastglue_found = 1
var/foundglue
var/foundassocglue
var/searchtext
do
foundglue = findtext(text, glue, lastglue_found, 0)
searchtext = copytext(text, lastglue_found, foundglue)
foundassocglue = findtext(searchtext, assocglue, 1, 0)
if(foundassocglue)
var/sublist = copytext(searchtext, 1, foundassocglue)
sublist[1] = copytext(searchtext, foundassocglue, 0)
. += sublist
else
. += copytext(text, lastglue_found, foundglue)
lastglue_found = foundglue + length
while(foundglue)
//Converts a string into a list by splitting the string at each delimiter found. (discarding the seperator)
/proc/text2list(text, delimiter="\n")
@@ -335,4 +358,4 @@ proc/tg_list2text(list/list, glue=",")
for(var/pos = end - 3, pos > 1, pos -= 3)
finalNum = copytext(finalNum, 1, pos) + sep + copytext(finalNum, pos)
return finalNum
return finalNum
+9 -3
View File
@@ -101,9 +101,9 @@ var/list/karma_spenders = list()
if(a == src.key)
usr << "\red You've already spent your karma for the round."
return
//if(M.key == src.key)
//usr << "\red You can't spend karma on yourself!"
//return
if(M.key == src.key)
usr << "\red You can't spend karma on yourself!"
return
if(M.client.address == src.client.address)
message_admins("\red Illegal karma spending detected from [src.key] to [M.key]. Using the same IP!")
log_game("\red Illegal karma spending detected from [src.key] to [M.key]. Using the same IP!")
@@ -318,6 +318,12 @@ You've gained <b>[totalkarma]</b> total karma in your time here.<br>"}
return
/client/proc/karmarefund(var/type,var/name,var/cost)
/*if(name == "Barber")
cost = 5
else*/
usr << "\red That job is not refundable."
return
var/DBQuery/query = dbcon.NewQuery("SELECT * FROM whitelist WHERE ckey='[usr.key]'")
query.Execute()
@@ -27,9 +27,6 @@
result = "methylphenidate"
required_reagents = list("mindbreaker" = 1, "hydrogen" = 1)
result_amount = 3
/datum/chemical_reaction/methylphenidate/proc/see_in_dark()
return
/datum/reagent/antidepressant/citalopram
name = "Citalopram"
+2 -2
View File
@@ -4,8 +4,8 @@ datum
var/name = null
var/id = null
var/result = null
var/list/required_reagents = new/list()
var/list/required_catalysts = new/list()
var/list/required_reagents = list()
var/list/required_catalysts = list()
// Both of these variables are mostly going to be used with slime cores - but if you want to, you can use them for other things
var/atom/required_container = null // the container required for the reaction to happen
+5 -5
View File
@@ -4342,7 +4342,7 @@
"bFz" = (/obj/structure/closet/crate,/turf/simulated/floor,/area/teleporter)
"bFA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central/sw)
"bFB" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bFC" = (/obj/effect/decal/warning_stripes/yellow/partial{dir = 4},/obj/effect/decal/warning_stripes/arrow{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bFC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central/sw)
"bFD" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay Emergency Entrance"; req_access_txt = "5"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/medical/medbay2)
"bFE" = (/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay2)
"bFF" = (/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
@@ -4432,7 +4432,7 @@
"bHl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bHm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; sortType = 18},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bHn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bHo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/yellow/partial{dir = 4},/obj/effect/decal/warning_stripes/arrow{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bHo" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central/sw)
"bHp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay Emergency Entrance"; req_access_txt = "5"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/medical/medbay2)
"bHq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor{tag = "icon-whiteblue (SOUTHWEST)"; icon_state = "whiteblue"; dir = 10},/area/medical/medbay2)
"bHr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
@@ -4493,7 +4493,7 @@
"bIu" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (NORTH)"; icon_state = "manifold-r-f"; dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/office)
"bIv" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 0; pixel_y = -32; req_access_txt = "0"},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office)
"bIw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office)
"bIx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic)
"bIx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic)
"bIy" = (/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/obj/structure/table/reinforced,/obj/item/weapon/hand_labeler,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{tag = "icon-brown (SOUTHEAST)"; icon_state = "brown"; dir = 6},/area/quartermaster/office)
"bIz" = (/obj/structure/disposalpipe/segment,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central/sw)
"bIA" = (/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/crew_quarters/heads)
@@ -12640,8 +12640,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjaGKaGLaERbnPbnQbnQbnVbnQbnQaaibzIbklbzJbzKbzLabIaSIbkpbevaaqbzMbqAbzNbzObUtaaqbzRbzSbzTbTebzUbzVbzWbzXbzObzYbzZaaqbwMbpubAabAbbAcbAdbAebAfbAgbAhbAiaaibvhaaiaaibAjbAkbAlbtNbAmbAnacfbAoaaiabnaaiaaiaaiaaiaaibApaaibAqbpubyOaaibArbAsbAsbAtbAuaaqbAvbAwbAxbFLbAzbAAbABbAxbACbADbAEbAFbAGbAHbAIbAJbAKbALbAMbANbAObAPbAQbARbASbATbAUbAVbAVbAWbAXbAYaaqbztbrvbrvbAZbBbbxHbSYbTdbBdbBebBfaaqbBgbBhaTabBibjYaaiaaibBjaaiaaibBkbBlbBlbBlbBmaaibxRbxUbxTbxUbxUbBnbxRaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbBobBpbnTbnUbnQbnQbnVbnQbnQaaibBqbjcbBrbBsbBtbBubBvbBwaSKaaqbBxbqAbzNbzObByaaqbBzbBAbqBbqBbBBbBCbBDbzXbzObBEbBFbBGbwMbpubBHbaubAcbBIbBJbBKbBLbBMbBNbBOabubAnacfarDbBPbyGbBPbAnbBQaaiaaiaaibSpbBSbBTbBUbBVbBWbBXacfbBYbpubyObvybBZbCabCbbCcbCdaaqbCebCfbCgbChbCibCjbCkbClbCmbCnbCobCpbCqbCrbCsbCtbCubCvbCwbCxbCyaaibCzbCAbCBbCCaaibwlbCEbCFbCGbCGaaqbCHbCIbCJaaqbCKbxHbxIaaqbCMbCNbCObCPbCQbCRbCSbCTbCUbCVbCWbCXbCYbCZbDabDabDbbDcbDdbDebDfbwpbwqbDgbwqbwpbDhaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjaaabDibnPbnQbnQbnQbnSbnQbnQaaibDmbDnbDobDpbnRaolbDrbDsaSKaaqbDtbDubDvbDwbDxbDybDzbDAbDBbDCbDDbDybDEbDFbDGbDHbDIaaqbDJbpubBHbaubAcaaibDKbDLeHibDNbDOabnbDPbDQbDRbhmacfbDSbDTbhmbDUbDVbDWaaibDXbDYbDZbEabEbbEbbEcbEdbEebpubEfaaiaaqbEgbjYbEhbEiaaqbCebEjaaqbEkbElbCjbEmaaqbCebEnbEoaaqaaqaaqaoyaaqaaqaaqbEpamzaaqaaiaaibEqaaqaaqaaiaaiaaqaaKaaqaaqaaqaaqaaqaaqaaqbErbEsaClaaqbEtbEubEvbEwbEwbExbEybEzbEAbEBbECbEDbEEbEFbEGbEGbEHbCQbEIaaibEJbEKbELbEMaaibENaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazTaaiaaiaaiaoNaoPazTaoNaoPaaiaoNaoPaaiaaiaaiaaiaaiaaiaaqaaqaaqaaqaztaolaolaolaolaolbEQbERbESbETbEUbEVbEWbqBbEXbqBbEYbzVbEZbqBbzObqBbFabjYbwMbpubFbbFcbFdaaibFebFfbFgbFhbFiabnbFjbFkbFlbFmbFnbFobFpbFqbFrbFsbFtaaibFubFvbFwbFwbFxbFybFzaaibFAbFBbyObFCbFDbFEbFFbFGbFHbFIbFJbCfbjYbFKbFUbFMbFNbjYbCebEnbEobFObFPbZTbZLbFSbFTbWPbFVbFWaaqbFXbFYbFZbGabGbbGcbGdbCVbGebEwbEwbGfbGgbEwbGhbGibGjbGkbGlbEwbGmbGnbGobGpbGqbGraaiabnaaiaaiaaibBjaaiaaibBkbBmaaibGsbGtbGubGvbGwbGxbGybGzaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAaaaaaabAbbGBbGCbZKbGCbGCbGDbGEbGFbGGbGEbGHbZKbGCbGIbGCbGJbGCamzbGKbqBbGLbqBbEYbGMbGNbGObzObGPbGQcjnbwMbpubGSbGTbAcaaibGUbGVbGWbDLbGXabnbGYbGZbHaaaibHbbHcbHdacDbHebHfbHgaaibHhbHibHjbHkbFxbFybFzaaibHlbHmbHnbHobHpbHqbHrbHsbHtbHubHvbHwaaqaaqbHxbHyaaqaaqbCebEnbEobjYbHzbHAbHAbHAbHBbHAbHCbHDbHEbHFbHGbHHbHHbHIbHJbHKbHLbHMbCQbCQbHNbCQbHObCQbHPbCQbHQbHRbHRbHSbHTbHUbHVbHWbHXbHYbHZbIabIbaaibIcbIdaaaaaaaaaaaibIebIfbIgbIhbIibIjbIkaaiaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazTaaiaaiaaiaoNaoPazTaoNaoPaaiaoNaoPaaiaaiaaiaaiaaiaaiaaqaaqaaqaaqaztaolaolaolaolaolbEQbERbESbETbEUbEVbEWbqBbEXbqBbEYbzVbEZbqBbzObqBbFabjYbwMbpubFbbFcbFdaaibFebFfbFgbFhbFiabnbFjbFkbFlbFmbFnbFobFpbFqbFrbFsbFtaaibFubFvbFwbFwbFxbFybFzaaibFAbFBbyObHobFDbFEbFFbFGbFHbFIbFJbCfbjYbFKbFUbFMbFNbjYbCebEnbEobFObFPbZTbZLbFSbFTbWPbFVbFWaaqbFXbFYbFZbGabGbbGcbGdbCVbGebEwbEwbGfbGgbEwbGhbGibGjbGkbGlbEwbGmbGnbGobGpbGqbGraaiabnaaiaaiaaibBjaaiaaibBkbBmaaibGsbGtbGubGvbGwbGxbGybGzaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAaaaaaabAbbGBbGCbZKbGCbGCbGDbGEbGFbGGbGEbGHbZKbGCbGIbGCbGJbGCamzbGKbqBbGLbqBbEYbGMbGNbGObzObGPbGQcjnbwMbpubGSbGTbAcaaibGUbGVbGWbDLbGXabnbGYbGZbHaaaibHbbHcbHdacDbHebHfbHgaaibHhbHibHjbHkbFxbFybFzaaibHlbHmbHnbFCbHpbHqbHrbHsbHtbHubHvbHwaaqaaqbHxbHyaaqaaqbCebEnbEobjYbHzbHAbHAbHAbHBbHAbHCbHDbHEbHFbHGbHHbHHbHIbHJbHKbHLbHMbCQbCQbHNbCQbHObCQbHPbCQbHQbHRbHRbHSbHTbHUbHVbHWbHXbHYbHZbIabIbaaibIcbIdaaaaaaaaaaaibIebIfbIgbIhbIibIjbIkaaiaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAaaaaaabaubIlbGCbGCbGCbGCbGCbGEbImbInbGEbGCbGCbGCbGIbGCbGJbGCamzbIobIpbIqbIrbIsbItbIubIvbIwbZybIybjYbwMbpubIzaaqaaqaaiaaiaaiaaiaaibIAabnaaibIBabnacDabnbICaaiaaiaaiaaiaaiaaiabnaaiaaiaaiaaiaaiaaiaaibIDbpubIEbowaaqbIFbIGaaqaaqbCebIHbIIbFHbIJbIKbILbIMbINbFJbIObIPbIQbIRbISbISbISbITbISbIUbIVbIWbIXbIYbIZbFZbJaaaiaaiaaiaaiaaiaaibJbaaiaaiaaiaaKbJcaaqaaqbJdbJebJfbJgbHVbJhbJibJjbJkbJlbJmaaibIcbJnaaaaaaaaaaaicmabJpaaibDeaaiaaibDeaaiaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAbJqaoOaCmbJrbJsbGCbGCbGCbGCbGCbGCbGCbGCbGCbGCbGCbGIbGCbGJbJtaztaolaolaolaolaolaolbJubEVaaqaaqaaqaaqbwMbpubJvbJwbJxbJybJzbJAbJBbJCbJDbJEbJFbJGbJHbJIbJJbJKbJLbJMbJNbJObJPbJObJQbJRbJSboubJTbpubJUbJVbJWbpubJXaaqbXVbJZbKabKbbKcbCebKdbKebKfbKgbKhbKibKjbKkbKlbKmbKnaaqbKobKpbKqbKrbKsbHAbKtbKuaaqbKvbFZbFZbFZbKwaaibKxbKybKzbKAbKBbKCbKDbKEaaibKFbKGbKHaaqaaqbKIbJfbKJbKKbKLbKMbKNbKObKPbKQaaibKRaaiaaaaaaaaaaaiaaiaaiaaiaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPmaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAbKSbKTbKSbKUbKUbKUbKUbKUbKUbKUbKUbKUbKUbKUbKUbKUbKVbKUbKWbKUbKXbKYbKZbLabLbbLcbLdbLebLfbLgbLhbLhaaqbwMbLibLjbpubpubyObLkboubJSbJRbLlbLmbLlbLnbLobLobLpbLqbLrbLobLobLsbLobLtbLobJRbJSboubLubLvbLwbLxbLybLzbpuaaqbLAbJZbLBbLCbLDbCebLEbLFbLGbLHbLIbLJbLKbLLbCebLMbLNaaqaaqbLObLPbLQbLRbLSbLTbLUaaqbLVbLWbFZbLXbLYaaibKxbLZbMabMbbMcbMdbMebMfaaibMgbKGejnejnaaqbMicehbMkbMlbMmbMnbMobMpbMqbMraaibIcaaiceiaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa