From af85ae38ad2c9bbd8af56207cd65f514e3a0ca32 Mon Sep 17 00:00:00 2001 From: "vageyenaman@gmail.com" Date: Wed, 28 Dec 2011 23:59:29 +0000 Subject: [PATCH] Some more work on the Telecomms: You can now access a hidden maintenance interface in all the telecomm machinery by using a Multitool on them. You can now build telecommunication machines, albeit they require a substantial amount of research and materials to make. Added in a few new stock parts constructable in the R&D Protolathe. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2844 316c924e-a436-60f5-8080-3fe189b3f50e --- code/defines/obj.dm | 1 + code/defines/obj/weapon.dm | 58 +++++++++ code/game/machinery/constructable_frame.dm | 70 +++++++++++ code/game/machinery/telecomms/broadcaster.dm | 9 +- code/game/machinery/telecomms/logbrowser.dm | 64 ++++++---- .../machinery/telecomms/telecomunications.dm | 52 +++++---- code/game/machinery/telecomms/telemonitor.dm | 20 ++-- code/modules/research/designs.dm | 110 ++++++++++++++++++ icons/obj/stationobjs.dmi | Bin 94510 -> 94930 bytes icons/obj/stock_parts.dmi | Bin 8001 -> 6403 bytes 10 files changed, 328 insertions(+), 56 deletions(-) diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 2bee1af4cdb..0c122622acb 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -309,6 +309,7 @@ m_amt = 50 g_amt = 20 origin_tech = "magnets=1;engineering=1" + var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage /obj/item/blueprints name = "station blueprints" diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index e48d0c44f56..d56b83bad31 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -458,6 +458,7 @@ var/registered = null var/assignment = null var/obj/item/weapon/photo/PHOTO = null + var/dorm = 0 // determines if this ID has claimed a dorm already /obj/item/weapon/card/id/gold name = "identification card" @@ -1668,6 +1669,63 @@ rating = 3 m_amt = 80 +// Subspace stock parts + +/obj/item/weapon/stock_parts/subspace/ansible + name = "Subspace Ansible" + icon_state = "subspace_ansible" + desc = "A compact module capable of sensing extradimensional activity." + origin_tech = "programming=3;magnets=5;materials=4;bluespace=2" + m_amt = 30 + g_amt = 10 + +/obj/item/weapon/stock_parts/subspace/filter + name = "Hyperwave Filter" + icon_state = "hyperwave_filter" + desc = "A tiny device capable of filtering and converting super-intense radiowaves." + origin_tech = "programming=4;magnets=2" + m_amt = 30 + g_amt = 10 + +/obj/item/weapon/stock_parts/subspace/amplifier + name = "Subspace Amplifier" + icon_state = "subspace_amplifier" + desc = "A compact micro-machine capable of amplifying weak subspace transmissions." + origin_tech = "programming=3;magnets=4;materials=4;bluespace=2" + m_amt = 30 + g_amt = 10 + +/obj/item/weapon/stock_parts/subspace/treatment + name = "Subspace Treatment Disk" + icon_state = "treatment_disk" + desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves." + origin_tech = "programming=3;magnets=2;materials=5;bluespace=2" + m_amt = 30 + g_amt = 10 + +/obj/item/weapon/stock_parts/subspace/analyzer + name = "Subspace Wavelength Analyzer" + icon_state = "treatment_disk" + desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." + origin_tech = "programming=3;magnets=4;materials=4;bluespace=2" + m_amt = 30 + g_amt = 10 + +/obj/item/weapon/stock_parts/subspace/crystal + name = "Ansible Crystal" + icon_state = "ansible_crystal" + desc = "A crystal made from pure glass used to transmit laser databursts to subspace." + origin_tech = "magnets=4;materials=4;bluespace=2" + g_amt = 50 + +/obj/item/weapon/stock_parts/subspace/transmitter + name = "Subspace Transmitter" + icon_state = "subspace_transmitter" + desc = "A large piece of equipment used to open a window into the subspace dimension." + origin_tech = "magnets=5;materials=5;bluespace=3" + m_amt = 50 + + /obj/item/weapon/ectoplasm name = "ectoplasm" desc = "spooky" diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index b813c76ef5b..7d00f02fdef 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -234,3 +234,73 @@ obj/item/weapon/circuitboard/rdserver "/obj/item/weapon/stock_parts/micro_laser" = 1, "/obj/item/weapon/stock_parts/console_screen" = 1, "/obj/item/weapon/cable_coil" = 2,) + + +// Telecomms circuit boards: + +/obj/item/weapon/circuitboard/telecomms/receiver + name = "Circuit Board (Subspace Receiver)" + build_path = "/obj/machinery/telecomms/receiver" + board_type = "machine" + origin_tech = "programming=4;engineering=3;bluespace=2" + frame_desc = "Requires 1 Subspace Ansible, 1 Hyperwave Filter, 2 Manipulators, and 1 Advanced Scanning Module." + req_components = list( + "/obj/item/weapon/stock_parts/subspace/ansible" = 1, + "/obj/item/weapon/stock_parts/subspace/filter" = 1, + "/obj/item/weapon/stock_parts/manipulator" = 2, + "/obj/item/weapon/stock_parts/scanning_module/adv" = 1) + +/obj/item/weapon/circuitboard/telecomms/bus + name = "Circuit Board (Bus Mainframe)" + build_path = "/obj/machinery/telecomms/bus" + board_type = "machine" + origin_tech = "programming=4;engineering=4" + frame_desc = "Requires 2 Manipulators, 1 Cable Coil and 1 Hyperwave Filter." + req_components = list( + "/obj/item/weapon/stock_parts/manipulator" = 2, + "/obj/item/weapon/cable_coil" = 1, + "/obj/item/weapon/stock_parts/subspace/filter" = 1) + +/obj/item/weapon/circuitboard/telecomms/processor + name = "Circuit Board (Processor Unit)" + build_path = "/obj/machinery/telecomms/processor" + board_type = "machine" + origin_tech = "programming=4;engineering=4" + frame_desc = "Requires 5 Manipulators, 1 Hyperwave Filter, 2 Treatment Disks, 1 Wavelength Analyzer, 2 Cable Coils and 1 Subspace Amplifier." + req_components = list( + "/obj/item/weapon/stock_parts/manipulator" = 5, + "/obj/item/weapon/stock_parts/subspace/filter" = 1, + "/obj/item/weapon/stock_parts/subspace/treatment" = 2, + "/obj/item/weapon/stock_parts/subspace/analyzer" = 1, + "/obj/item/weapon/cable_coil" = 2, + "/obj/item/weapon/stock_parts/subspace/amplifier" = 1) + +/obj/item/weapon/circuitboard/telecomms/server + name = "Circuit Board (Telecommunication Server)" + build_path = "/obj/machinery/telecomms/server" + board_type = "machine" + origin_tech = "programming=4;engineering=4" + frame_desc = "Requires 2 Manipulators, 1 Cable Coil and 1 Hyperwave Filter." + req_components = list( + "/obj/item/weapon/stock_parts/manipulator" = 2, + "/obj/item/weapon/cable_coil" = 1, + "/obj/item/weapon/stock_parts/subspace/filter" = 1) + +/obj/item/weapon/circuitboard/telecomms/broadcaster + name = "Circuit Board (Bus Mainframe)" + build_path = "/obj/machinery/telecomms/broadcaster" + board_type = "machine" + origin_tech = "programming=4;engineering=4;bluespace=2" + frame_desc = "Requires 2 Manipulators, 1 Cable Coil, 1 Hyperwave Filter, 1 Ansible Crystal, 1 Subspace Transmitter, 1 Subspace Amplifier and 4 High-Powered Micro-Lasers. " + req_components = list( + "/obj/item/weapon/stock_parts/manipulator" = 2, + "/obj/item/weapon/cable_coil" = 1, + "/obj/item/weapon/stock_parts/subspace/filter" = 1, + "/obj/item/weapon/stock_parts/subspace/crystal" = 1, + "/obj/item/weapon/stock_parts/subspace/transmitter" = 1, + "/obj/item/weapon/stock_parts/subspace/amplifier" = 1, + "/obj/item/weapon/stock_parts/micro_laser/high" = 4) + + + + diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 7687a04959a..437ee6daeb3 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -7,7 +7,7 @@ /obj/machinery/telecomms/broadcaster - name = "subspace broadcaster" + name = "Subspace Broadcaster" icon = 'stationobjs.dmi' icon_state = "broadcaster" desc = "A dish-shaped machine used to broadcast processed subspace signals." @@ -31,6 +31,11 @@ signal.data["done"] = 1 // mark the signal as being broadcasted + // Search for the original signal and mark it as done as well + var/datum/signal/original = signal.data["original"] + if(original) + original.data["done"] = 1 + /* --- Do a snazzy animation! --- */ flick("broadcaster_send", src) @@ -295,7 +300,5 @@ else R.show_message(rendered, 2) - // If the signal doesn't need to be used by intercoms or anything: - diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm index b8092cad6f8..f28f31d4ed5 100644 --- a/code/game/machinery/telecomms/logbrowser.dm +++ b/code/game/machinery/telecomms/logbrowser.dm @@ -59,26 +59,36 @@ var/race // The actual race of the mob var/language = "Human" // MMIs, pAIs, Cyborgs and humans all speak Human var/mobtype = "[C.parameters["mobtype"]]" - switch(mobtype) + var/mob/M = new mobtype - if("/mob/living/carbon/human") - race = "Human" + if(istype(M, /mob/living/carbon/human)) + race = "Human" - if("/mob/living/carbon/monkey") - race = "Monkey" - language = race + else if(istype(M, /mob/living/carbon/monkey)) + race = "Monkey" + language = race - if("/mob/living/carbon/metroid") - race = "Metroid" - language = race + else if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/metroid)) + race = "Alien" + language = race - if("/mob/living/carbon/alien") - race = "Alien" - language = race - - if(findtext("C.parameters["mobtype"]", "/mob/living/silicon")) + else if(istype(M, /mob/living/silicon)) race = "Artificial Life" + else if(istype(M, /mob/living/simple_animal/corgi)) + race = "Dog" + language = race + + else if(istype(M, /mob/living/simple_animal/cat)) + race = "Cat" + language = race + + else + race = "Unidentifiable" + language = race + + del(M) + // -- If the orator is a human, or universal translate is active, OR mob has universal speech on -- if(language == "Human" || universal_translate || C.parameters["uspeech"]) @@ -139,7 +149,7 @@ if("scan") if(servers.len > 0) - temp = "- FAILED: CANNOT PROBE WHEN BUFFER FULL -" + temp = "- FAILED: CANNOT PROBE WHEN BUFFER FULL -" else for(var/obj/machinery/telecomms/server/T in range(25, src)) @@ -147,9 +157,9 @@ servers.Add(T) if(!servers.len) - temp = "- FAILED: UNABLE TO LOCATE SERVERS IN \[[network]\] -" + temp = "- FAILED: UNABLE TO LOCATE SERVERS IN \[[network]\] -" else - temp = "- [servers.len] SERVERS PROBED & BUFFERED -" + temp = "- [servers.len] SERVERS PROBED & BUFFERED -" screen = 0 @@ -158,20 +168,28 @@ var/datum/comm_log_entry/D = SelectedServer.log_entries[text2num(href_list["delete"])] - temp = "- DELETED ENTRY: [D.name] -" + temp = "- DELETED ENTRY: [D.name] -" SelectedServer.log_entries.Remove(D) del(D) + else + temp = "- FAILED: NO SELECTED MACHINE -" if(href_list["input"]) var/newnet = input(usr, "Which network do you want to view?", "Comm Monitor", network) as null|text - if(newnet && usr in range(1, src)) - network = newnet - screen = 0 - machines = list() - temp = "- NEW NETWORK TAG SET IN ADDRESS \[[network]\] -" + + if(newnet && usr in range(1, src) && newnet != network) + if(length(newnet) > 15) + temp = "- FAILED: NETWORK TAG STRING TOO LENGHTLY -" + + else + + network = newnet + screen = 0 + machines = list() + temp = "- NEW NETWORK TAG SET IN ADDRESS \[[network]\] -" updateUsrDialog() return diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index ce3818d14fc..b1e7e627435 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -16,9 +16,11 @@ list/links = list() // list of machines this machine is linked to traffic = 0 // value increases as traffic increases list/autolinkers = list() // list of text/number values to link with - id = "" // identification string + id = "NULL" // identification string network = "NULL" // the network of the machinery + list/freq_listening = list() // list of frequencies to tune into: if none, will listen to all + machinetype = 0 // just a hacky way of preventing alike machines from pairing @@ -48,6 +50,13 @@ // receive information from linked machinery ..() + proc/is_freq_listening(datum/signal/signal) + // return 1 if found, 0 if not found + if((signal.frequency in freq_listening) || (!freq_listening.len)) + return 1 + else + return 0 + New() ..() if(autolinkers.len) @@ -68,7 +77,7 @@ */ /obj/machinery/telecomms/receiver - name = "subspace receiver" + name = "Subspace Receiver" icon = 'stationobjs.dmi' icon_state = "broadcast receiver" desc = "This machine has a dish-like shape and green lights. It is designed to detect and process subspace radio activity." @@ -77,18 +86,16 @@ use_power = 1 idle_power_usage = 30 machinetype = 1 - var - list/freq_listening = list() // list of frequencies that are being tuned into - // you can use "ALL" on any machine using this var receive_signal(datum/signal/signal) if(signal.transmission_method == 2) - if( (signal.frequency in freq_listening) || ("ALL" in freq_listening) ) // detect subspace signals + if(is_freq_listening(signal)) // detect subspace signals var/datum/signal/copy = new copy.copy_from(signal) // copy information to new signal + copy.data["original"] = signal relay_information(copy) // ideally relay the information to bus units @@ -103,7 +110,7 @@ */ /obj/machinery/telecomms/bus - name = "bus mainframe" + name = "Bus Mainframe" icon = 'stationobjs.dmi' icon_state = "bus1" desc = "A mighty piece of hardware used to send massive amounts of data quickly." @@ -115,20 +122,21 @@ receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) - if(signal.data["compression"]) // if signal is still compressed from subspace transmission - // send to one linked processor unit + if(is_freq_listening(signal)) + if(signal.data["compression"]) // if signal is still compressed from subspace transmission + // send to one linked processor unit - var/send_to_processor = relay_information(signal, "/obj/machinery/telecomms/processor", 1) + var/send_to_processor = relay_information(signal, "/obj/machinery/telecomms/processor", 1) - if(!send_to_processor) // failed to send to a processor, relay information anyway + if(!send_to_processor) // failed to send to a processor, relay information anyway + relay_information(signal, "/obj/machinery/telecomms/server") + + + else // the signal has been decompressed by a processor unit + // send to all linked server units relay_information(signal, "/obj/machinery/telecomms/server") - else // the signal has been decompressed by a processor unit - // send to all linked server units - relay_information(signal, "/obj/machinery/telecomms/server") - - /* The processor is a very simple machine that decompresses subspace signals and @@ -137,7 +145,7 @@ */ /obj/machinery/telecomms/processor - name = "processor unit" + name = "Processor Unit" icon = 'stationobjs.dmi' icon_state = "processor_on" desc = "This machine is used to process large quantities of information." @@ -149,8 +157,9 @@ receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) - signal.data["compression"] = 0 // uncompress subspace signal - relay_direct_information(signal, machine_from) // send the signal back to the machine + if(is_freq_listening(signal)) + signal.data["compression"] = 0 // uncompress subspace signal + relay_direct_information(signal, machine_from) // send the signal back to the machine @@ -163,7 +172,7 @@ /obj/machinery/telecomms/server - name = "telecommunication server" + name = "Telecommunication Server" icon = 'stationobjs.dmi' icon_state = "comm_server" desc = "A machine used to store data and network statistics." @@ -173,14 +182,13 @@ idle_power_usage = 15 machinetype = 4 var - list/freq_listening = list() list/log_entries = list() receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) if(signal.data["message"] && !signal.data["compression"]) - if( (signal.frequency in freq_listening) || ("ALL" in freq_listening) ) + if(is_freq_listening(signal)) // if signal contains discernable data diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm index de1f36d8646..71d61628706 100644 --- a/code/game/machinery/telecomms/telemonitor.dm +++ b/code/game/machinery/telecomms/telemonitor.dm @@ -95,7 +95,7 @@ if("probe") if(machines.len > 0) - temp = "- FAILED: CANNOT PROBE WHEN BUFFER FULL -" + temp = "- FAILED: CANNOT PROBE WHEN BUFFER FULL -" else for(var/obj/machinery/telecomms/T in range(25, src)) @@ -103,9 +103,9 @@ machines.Add(T) if(!machines.len) - temp = "- FAILED: UNABLE TO LOCATE NETWORK ENTITIES IN \[[network]\] -" + temp = "- FAILED: UNABLE TO LOCATE NETWORK ENTITIES IN \[[network]\] -" else - temp = "- [machines.len] ENTITIES LOCATED & BUFFERED -" + temp = "- [machines.len] ENTITIES LOCATED & BUFFERED -" screen = 0 @@ -113,11 +113,15 @@ if(href_list["input"]) var/newnet = input(usr, "Which network do you want to view?", "Comm Monitor", network) as null|text - if(newnet && usr in range(1, src)) - network = newnet - screen = 0 - machines = list() - temp = "- NEW NETWORK TAG SET IN ADDRESS \[[network]\] -" + if(newnet && usr in range(1, src) && newnet != network) + if(length(newnet) > 15) + temp = "- FAILED: NETWORK TAG STRING TOO LENGHTLY -" + + else + network = newnet + screen = 0 + machines = list() + temp = "- NEW NETWORK TAG SET IN ADDRESS \[[network]\] -" updateUsrDialog() return diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 0babc79fccb..5c9ad3cef24 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -478,6 +478,51 @@ datum build_path = "/obj/item/weapon/aiModule/tyrant" + +/////////////////////////////////// +/////Subspace Telecomms//////////// +/////////////////////////////////// + subspace_receiver + name = "Circuit Design (Subspace Receiver)" + desc = "Allows for the construction of Subspace Receiver equipment." + id = "s-receiver" + req_tech = list("programming" = 4, "engineering" = 3, "bluespace" = 2) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + + telecomms_bus + name = "Circuit Design (Bus Mainframe)" + desc = "Allows for the construction of Telecommunications Bus Mainframes." + id = "s-bus" + req_tech = list("programming" = 4, "engineering" = 4) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + + telecomms_processor + name = "Circuit Design (Processor Unit)" + desc = "Allows for the construction of Telecommunications Processor equipment." + id = "s-processor" + req_tech = list("programming" = 4, "engineering" = 4) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + + telecomms_server + name = "Circuit Design (Subspace Receiver)" + desc = "Allows for the construction of Telecommunications Servers." + id = "s-server" + req_tech = list("programming" = 4, "engineering" = 4) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + + subspace_broadcaster + name = "Circuit Design (Subspace Broadcaster)" + desc = "Allows for the construction of Subspace Broadcasting equipment." + id = "s-broadcaster" + req_tech = list("programming" = 4, "engineering" = 4, "bluespace" = 2) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + + /////////////////////////////////// /////Non-Board Computer Stuff////// /////////////////////////////////// @@ -897,6 +942,71 @@ datum reliability_base = 75 build_path = "/obj/item/weapon/stock_parts/matter_bin/super" + + + subspace_ansible + name = "Subspace Ansible" + desc = "A compact module capable of sensing extradimensional activity." + id = "s-ansible" + req_tech = list("programming" = 3, "magnets" = 4, "materials" = 4, "bluespace" = 2) + build_type = PROTOLATHE + materials = list("$metal" = 80, "$silver" = 20) + build_path = "/obj/item/weapon/stock_parts/subspace/ansible" + + hyperwave_filter + name = "Hyperwave Filter" + desc = "A tiny device capable of filtering and converting super-intense radiowaves." + id = "s-filter" + req_tech = list("programming" = 3, "magnets" = 3) + build_type = PROTOLATHE + materials = list("$metal" = 40, "$silver" = 10) + build_path = "/obj/item/weapon/stock_parts/subspace/filter" + + subspace_amplifier + name = "Subspace Amplifier" + desc = "A compact micro-machine capable of amplifying weak subspace transmissions." + id = "s-amplifier" + req_tech = list("programming" = 3, "magnets" = 4, "materials" = 4, "bluespace" = 2) + build_type = PROTOLATHE + materials = list("$metal" = 10, "$gold" = 30, "$uranium" = 15) + build_path = "/obj/item/weapon/stock_parts/subspace/amplifier" + + subspace_treatment + name = "Subspace Treatment Disk" + desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves." + id = "s-amplifier" + req_tech = list("programming" = 3, "magnets" = 2, "materials" = 4, "bluespace" = 2) + build_type = PROTOLATHE + materials = list("$metal" = 10, "$silver" = 20) + build_path = "/obj/item/weapon/stock_parts/subspace/treatment" + + subspace_analyzer + name = "Subspace Treatment Disk" + desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." + id = "s-amplifier" + req_tech = list("programming" = 3, "magnets" = 4, "materials" = 4, "bluespace" = 2) + build_type = PROTOLATHE + materials = list("$metal" = 10, "$gold" = 15) + build_path = "/obj/item/weapon/stock_parts/subspace/analyzer" + + subspace_crystal + name = "Ansible Crystal" + desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." + id = "s-amplifier" + req_tech = list("magnets" = 4, "materials" = 4, "bluespace" = 2) + build_type = PROTOLATHE + materials = list("$glass" = 1000, "$silver" = 20, "$gold" = 20) + build_path = "/obj/item/weapon/stock_parts/subspace/crystal" + + subspace_transmitter + name = "Subspace Transmitter" + desc = "A large piece of equipment used to open a window into the subspace dimension." + id = "s-amplifier" + req_tech = list("magnets" = 5, "materials" = 5, "bluespace" = 3) + build_type = PROTOLATHE + materials = list("$glass" = 100, "$silver" = 10, "$uranium" = 15) + build_path = "/obj/item/weapon/stock_parts/subspace/transmitter" + //////////////////////////////////////// //////////////////Power///////////////// //////////////////////////////////////// diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index 6c7baeccfca1d6568eb7b75479c9746e90f71e3a..8d1e646f0ff462bd613c2e73d38dd5630041458f 100644 GIT binary patch delta 7984 zcmYj#cRZE<`~N{1$!LhIqpUaCk?qiM%#e`P5kl6nNu1k^%t91GWUuViaVR5XWjk?1 zvdKC)^Lwbzi>xqZY6SzAF z6p)#3t`A2mu&Q>WZaPV}JaBlVZJMqtaVO?;)FmqHP@cMxT`ZT5fR?EH!NgX3f}S}y z3z89ho@T4xFmYD|_@)LNH50Q`0d&P|n^JMqx(J%k^l*m9eywF)pvN6o{Cxc~o_wn4@B!d8_?whJt*=Cf!Q=Z$}$m zP#>c(nUk;F8Q13!mJZ(=G0SS{4sXN|Isp^c=T|xpN{Fk^H`6z|?2n9j+xT7dp*QGTe&juS%X>JLHNDU(>`lqg_)VzP@nys z)RqdmJ5cTW{|SqMg0m2Xjcd!*aRi(bl$q?hritnN!Obx5Z@L zYD1op3(Ov3jh`RTtup>G!xsw(i$yE<|PnUlj^2RwtL}m%6++$QV z08}jdBh%mv_{4hrxn+KA;n=myZ(hn?NRbe@aB<4V*3hx>4mQSR3^y5iPF~mcp0dGY zwWh~&#;>RR!y3MJp3W~RlSu8;Wt2-q2iyiO zHD7J^qe+wep=O2W?Z?Kr}WYNpVk56SqD8si#R6q?Er=zg-0ttX|^>A3+ChJ zo@uczMd;CfmmhhO&jf!GE6iuRt%J=>o^`Ht=?tcufJ

pBfY zv7Bc(^xeVvN#y9bTt9Fs!&-P^hLMM7^#hVXaawHFkiMeRM3gvRC>JbrA^v${@lE}& zr``=rTH42OHr~lEqPi_0tC%aJ2#5ZJ_L-ROhL*y}0>5;WHC!U^#}fiSb-T^X9j0FY zKEW9hKSs@6eeL3t3zq9O%(7d18Xk0j+>E1;)91N+{j>!yv{3Q{=(#s6(g~JDa+hfBF5S#`y#2H!U9kxq=f{w5##yxTZjt_rSHxyC z^Sb5DY3@f4JkyaH$>CLV+)6ZerYCOS{2U^Rh@YRYYoFy^fEdb|?wWcmU1y{g07P%U znRPM!80I$r*jwfe-%3RJzB@D*!xF%x$5ZSl#dmIB>e**IiTmse1)!zca=9C7m$W{1 zy1U9i`($m6Jl#<4no$DFuJvlD`q^*uwmw>q7<@`5`Aa8-v0r%|zI|A`*u1so(&WGK zlX|Co;N#i5erdmkw3ddY%!9wR1_3MsStvI%GPU|Fc%1u=301i0=?2l$RD;Gq0&7xY z$|TcgKhl4VLs}0RF^YV)aSG3wVy?opzE;0-()u8pnvf#!nje>YuQ5rtaWlERozJw+uGae(KXEO`NtoZU;%x+ ze0uNL z!#tTYt^#MaV`GD>S85m6axWQi6KYm!i`A-T!Qj6(emRJZ74Pou5`(eV&0Rg>1#?{= zi<(FZVr*_{aXES;*x%o;g?5GF7V(PIccV{NJvi&ZVSTPp<&JgkjL47$K>t6}w&Hw2 z%z5bCU%>6rNc8KR(e!ASrTK=duXV1x(o$#@PV0L*_8nY}F{YN#R4mtQ@5JTHoN+$A zkf=#mT^IZA=BBO&GgnkOyLZ42Zm4_D_BtHJQ7p~7UN?v&ur3oUD*5zKY>$puz&E

tb@AGCN6Wa;p8yr+pg$U( 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 JzN*-a;S-uC004kcMOj`K(|-N$c#MlV$HMHn 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 YO7Bg`KmuRD{1XSLC}_%8%UXQ?f24Kt<^TWy