From 06bd861d5763a16edafd614bd331b0450ccf96e9 Mon Sep 17 00:00:00 2001 From: Darlantan Date: Sat, 2 Oct 2021 06:24:41 -0400 Subject: [PATCH 01/13] First "let's back up my work somewhere other than my HDD" commit --- .../dispenser/chem_synthesizer_ch.dm | 385 ++++++++++++++++++ .../reagents/reagent_containers/glass.dm | 3 +- icons/obj/chemical_ch.dmi | Bin 0 -> 16514 bytes vorestation.dme | 1 + 4 files changed, 388 insertions(+), 1 deletion(-) create mode 100644 code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm create mode 100644 icons/obj/chemical_ch.dmi diff --git a/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm b/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm new file mode 100644 index 0000000000..c0add0934e --- /dev/null +++ b/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm @@ -0,0 +1,385 @@ +#define SYNTHESIZER_MAX_CARTRIDGES 40 +#define SYNTHESIZER_MAX_RECIPES 20 +#define SYNTHESIZER_MAX_QUEUE 40 + +// Recipes are stored as a list which alternates between chemical id's and volumes to add. + +// TODO: +// Design UI +// TGUI procs +// Create procs to take synthesis steps as an input and stores as a 1 click synthesis button. Needs name, expected output volume. +// DONE Create procs to actually perform the reagent transfer/etc. for a synthesis, reading the stored synthesis steps. +// Implement a step-mode where the player manually clicks on each step and an expert mode where players input a comma-delineated list. +// DONE Add process() code which makes the machine actually work. Perhaps tie a boolean and single start proc into process(). +// Give the machine queue-behavior which allows players to queue up multiple recipes, even when the machine is busy. Reference protolathe code. +// Give the machine a way to stop a synthesis and purge/bottle the reaction vessel. +// Perhaps use recipes as a "ID" "num" "ID" "num" list to avoid using multiple lists. +// Panel open button. +// DONE Code for power usage. +// Update_icon() overrides. +// Underlay code for the reaction vessel. +// Add an eject catalyst bottle button. +// Make sure recipes can only be removed when the machine is idle. Adding should be fine. +// May need yet another list which is just strings which match recipe ID's. + +/obj/machinery/chemical_synthesizer + name = "chemical synthesizer" + desc = "A programmable machine capable of automatically synthesizing medicine." + icon = 'icons/obj/chemical_ch.dmi' + icon_state = "synth_idle_bottle" + + use_power = USE_POWER_IDLE + power_channel = EQUIP + idle_power_usage = 100 + active_power_usage = 150 + anchored = TRUE + unacidable = TRUE + panel_open = TRUE + + var/busy = FALSE + var/expert_mode = FALSE // Toggle between click-step input and comma-delineated text input for creating recipes. + var/use_catalyst = TRUE // Determines whether or not the catalyst will be added to reagents while processing a recipe. + var/delay_modifier = 3 // This is multiplied by the volume of a step to determine how long each step takes. Bigger volume = slower. + var/obj/item/weapon/reagent_containers/glass/catalyst = null // This is where the user adds catalyst. Usually phoron. + + var/list/recipes = list(list()) // This holds chemical recipes up to a maximum determined by SYNTHESIZER_MAX_RECIPES. Two-dimensional. + var/list/queue = list() // This holds the recipe id's for queued up recipes. + var/list/catalyst_ids = list() // This keeps track of the chemicals in the catalyst to remove before bottling. + var/list/cartridges = list() // Associative, label -> cartridge + + var/list/spawn_cartridges = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/hydrogen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lithium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/carbon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/nitrogen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxygen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/fluorine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/aluminum, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/silicon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/phosphorus, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sulfur, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/chlorine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/potassium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/iron, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/copper, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/mercury, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/radium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sacid, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tungsten, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/calcium + ) + + var/_recharge_reagents = TRUE + var/process_tick = 0 + var/list/dispense_reagents = list( + "hydrogen", "lithium", "carbon", "nitrogen", "oxygen", "fluorine", "sodium", + "aluminum", "silicon", "phosphorus", "sulfur", "chlorine", "potassium", "iron", + "copper", "mercury", "radium", "water", "ethanol", "sugar", "sacid", "tungsten", "calcium" + ) + +/obj/machinery/chemical_synthesizer/Initialize() + . = ..() + // Create the reagents datum which will act as the machine's reaction vessel. + create_reagents(600) + catalyst = new /obj/item/weapon/reagent_containers/glass/beaker(src) + + if(spawn_cartridges) + for(var/type in spawn_cartridges) + add_cartridge(new type(src)) + panel_open = FALSE + +/obj/machinery/chemical_synthesizer/examine(mob/user) + . = ..() + if(panel_open) + . += "It has [cartridges.len] cartridges installed, and has space for [SYNTHESIZER_MAX_CARTRIDGES - cartridges.len] more." + +/obj/machinery/chemical_synthesizer/proc/add_cartridge(obj/item/weapon/reagent_containers/chem_disp_cartridge/C, mob/user) + if(!panel_open) + if(user) + to_chat(user, "\The panel is locked!") + return + + if(!istype(C)) + if(user) + to_chat(user, "\The [C] will not fit in \the [src]!") + return + + if(cartridges.len >= SYNTHESIZER_MAX_CARTRIDGES) + if(user) + to_chat(user, "\The [src] does not have any slots open for \the [C] to fit into!") + return + + if(!C.label) + if(user) + to_chat(user, "\The [C] does not have a label!") + return + + if(cartridges[C.label]) + if(user) + to_chat(user, "\The [src] already contains a cartridge with that label!") + return + + if(user) + user.drop_from_inventory(C) + to_chat(user, "You add \the [C] to \the [src].") + + C.loc = src + cartridges[C.label] = C + cartridges = sortAssoc(cartridges) + SStgui.update_uis(src) + +/obj/machinery/chemical_synthesizer/proc/remove_cartridge(label) + . = cartridges[label] + cartridges -= label + SStgui.update_uis(src) + +/obj/machinery/chemical_synthesizer/attackby(obj/item/weapon/W, mob/user) + // Why do so many people code in wrenching when there's already a proc for it? + if(!busy && default_unfasten_wrench(user, W, 40)) + return + + if(istype(W, /obj/item/weapon/reagent_containers/chem_disp_cartridge)) + add_cartridge(W, user) + return + + // But we won't use the screwdriver proc because chem dispenser behavior. + if(panel_open && W.is_screwdriver()) + var/label = tgui_input_list(user, "Which cartridge would you like to remove?", "Chemical Synthesizer", cartridges) + if(!label) + return + var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = remove_cartridge(label) + if(C) + to_chat(user, "You remove \the [C] from \the [src].") + C.loc = loc + playsound(src, W.usesound, 50, 1) + return + + // We don't need a busy check here as the catalyst slot must be occupied for the machine to function. + if(istype(W, /obj/item/weapon/reagent_containers/glass)) + if(catalyst) + to_chat(user, "There is already \a [catalyst] in \the [src] catalyst slot!") + return + + var/obj/item/weapon/reagent_containers/RC = W + + if(!RC.is_open_container()) + to_chat(user, "You don't see how \the [src] could extract reagents from \the [RC].") + return + + catalyst = RC + user.drop_from_inventory(RC) + RC.loc = src + to_chat(user, "You set \the [RC] on \the [src].") + update_icon() + return + + return ..() + +// More stolen chemical_dispenser code. +/obj/machinery/chemical_synthesizer/process() + if(!_recharge_reagents) + return + if(stat & (BROKEN|NOPOWER)) + return + if(--process_tick <= 0) + process_tick = 15 + . = 0 + for(var/id in dispense_reagents) + var/datum/reagent/R = SSchemistry.chemical_reagents[id] + if(!R) + stack_trace("[src] at [x],[y],[z] failed to find reagent '[id]'!") + dispense_reagents -= id + continue + var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = cartridges[R.name] + if(C && C.reagents.total_volume < C.reagents.maximum_volume) + var/to_restore = min(C.reagents.maximum_volume - C.reagents.total_volume, 5) + use_power(to_restore * 500) + C.reagents.add_reagent(id, to_restore) + . = 1 + if(.) + SStgui.update_uis(src) +/* +/obj/machinery/chemical_synthesizer/tgui_interact(mob/user, datum/tgui/ui = null) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "ChemSynthesizer", ui_title) + ui.open() + +/obj/machinery/chemical_synthesizer/tgui_data(mob/user) + var/data[0] + +/obj/machinery/chemical_synthesizer/tgui_act(action, params) + if(..()) + return TRUE + + . = TRUE + switch(action) + + + + add_fingerprint(usr) +*/ +/obj/machinery/chemical_synthesizer/attack_ghost(mob/user) + if(stat & (BROKEN|NOPOWER)) + return + tgui_interact(user) + +/obj/machinery/chemical_synthesizer/attack_ai(mob/user) + attack_hand(user) + +/obj/machinery/chemical_synthesizer/attack_hand(mob/user) + if(stat & (BROKEN|NOPOWER)) + return + tgui_interact(user) + +// This proc handles adding the catalyst starting the synthesizer's queue. +/obj/machinery/chemical_synthesizer/proc/start_queue(mob/user) + if(stat & (BROKEN|NOPOWER)) + return + + if(!queue) + to_chat(user, "You can't start an empty queue!") + return + + if(!catalyst) + to_chat(user, "Place a bottle in the catalyst slot before starting the queue!") + return + + if(panel_open) + to_chat(user, "Close the panel before starting the queue!") + return + + if(reagents.total_volume) + to_chat(user, "Empty the reaction vessel before starting the queue!") + return + + busy = TRUE + use_power = USE_POWER_ACTIVE + if(use_catalyst) + // Populate the list of catalyst chems. This is important when it's time to bottle_product(). + for(var/datum/reagent/chem in catalyst.reagents.reagent_list) + catalyst_ids += chem.id + + // Transfer the catalyst to the synthesizer's reagent holder. + catalyst.reagents.trans_to_holder(src.reagents, catalyst.reagents.total_volume) + + // Start the first recipe in the queue, starting with step 1. + follow_recipe(queue[1], 1) + + +// This proc controls the timing for each step in a reaction. Step is the index for the current chem of our recipe, step + 1 is the volume of said chem. +/obj/machinery/chemical_synthesizer/proc/follow_recipe(var/r_id, var/step as num) + if(stat & (BROKEN|NOPOWER)) + stall() + return + + icon_state = "synth_working" + if(!step) + step = 1 + + // The time between each step is the volume required by a step multiplied by the delay_modifier (in ticks/deciseconds). + addtimer(CALLBACK(src, .proc/perform_reaction, r_id, step), recipes[r_id][step + 1] * delay_modifier) + +// This proc carries out the actual steps in each reaction. +/obj/machinery/chemical_synthesizer/proc/perform_reaction(var/r_id, var/step as num) + if(stat & (BROKEN|NOPOWER)) + stall() + return + + //Let's store these as temporary variables to make the code more readable. + var/label = recipes[r_id][step] + var/quantity = recipes[r_id][step+1] + + // If we're missing a cartridge somehow or lack space for the next step, stall. It's now up to the chemist to fix this. + if(!cartridges[label]) + visible_message("The [src] beeps loudly, flashing a 'cartridge missing' error!", "You hear loud beeping!") + playsound(src, 'sound/weapons/smg_empty_alarm.ogg', 40) + stall() + return + + if(quantity > reagents.get_free_space()) + visible_message("The [src] beeps loudly, flashing a 'maximum volume exceeded' error!", "You hear loud beeping!") + playsound(src, 'sound/weapons/smg_empty_alarm.ogg', 40) + stall() + return + + // If there isn't enough reagent left for this step, try again in a minute. + var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = cartridges[label] + if(quantity > C.reagents.total_volume) + visible_message("The [src] flashes an 'insufficient reagents' warning.") + addtimer(CALLBACK(src, .proc/perform_reaction, r_id, step), 1 MINUTE) + return + + // After all this mess of code, we reach the line where the magic happens. + C.reagents.trans_to_holder(src.reagents, quantity) + // playsound(src, 'sound/machinery/HPLC_binary_pump.ogg', 25, 1) + + // Advance to the next step in the recipe. If this is outside of the recipe's index, we're finished. Otherwise, proceed to next step. + step += 2 + var/list/tmp = recipes[r_id] + if(step > tmp.len) + icon_state = "synth_finished" + + // First extract the catalyst(s), if any remain. + if(use_catalyst) + for(var/chem in catalyst_ids) + var/amount = reagents.get_reagent_amount(chem) + reagents.trans_id_to(catalyst, chem, amount) + + // Add a delay of 1 tick per unit of reagent. Clear the catalyst_ids. + catalyst_ids = list() + var/delay = reagents.total_volume + addtimer(CALLBACK(src, .proc/bottle_product, r_id), delay) + + else + follow_recipe(r_id, step) + +// Now that we're done, bottle up the product. +/obj/machinery/chemical_synthesizer/proc/bottle_product(var/r_id) + if(stat & (BROKEN|NOPOWER)) + stall() + return + + while(reagents.total_volume) + var/obj/item/weapon/reagent_containers/glass/bottle/B = new(src.loc) + B.name = "[r_id] bottle" + B.pixel_x = rand(-7, 7) // random position + B.pixel_y = rand(-7, 7) + B.icon_state = "bottle-4" + reagents.trans_to_obj(B, min(reagents.total_volume, MAX_UNITS_PER_BOTTLE)) + B.update_icon() + + // Sanity check when manual bottling is triggered. + if(queue) + queue -= queue[1] + + // If the queue is now empty, we're done. Otherwise, re-add catalyst and proceed to the next recipe. + if(queue) + if(use_catalyst) + for(var/datum/reagent/chem in catalyst.reagents.reagent_list) + catalyst_ids += chem.id + catalyst.reagents.trans_to_holder(src.reagents, catalyst.reagents.total_volume) + follow_recipe(queue[1], 1) + + else + busy = FALSE + use_power = USE_POWER_IDLE + queue = list() + update_icon() + + +// What happens to the synthesizer if it breaks or loses power in the middle of running. Chemists must fix things manually. +/obj/machinery/chemical_synthesizer/proc/stall() + busy = FALSE + use_power = USE_POWER_IDLE + queue = list() + catalyst_ids = list() + update_icon() + +#undef SYNTHESIZER_MAX_CARTRIDGES +#undef SYNTHESIZER_MAX_RECIPES +#undef SYNTHESIZER_MAX_QUEUE \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 86f1b261bf..0e21050bca 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -49,7 +49,8 @@ /obj/structure/frame, /obj/machinery/radiocarbon_spectrometer, /obj/machinery/portable_atmospherics/powered/reagent_distillery, - /obj/machinery/feeder + /obj/machinery/feeder, + /obj/machinery/chemical_synthesizer //CHOMPedit, ) //CHOMP Addition for feeder in the above list. I am paranoid about comments within lists so this is outside. diff --git a/icons/obj/chemical_ch.dmi b/icons/obj/chemical_ch.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f5006e97602d3d07e3f26229610095b70e41f47d GIT binary patch literal 16514 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 Date: Sun, 9 Jan 2022 21:21:41 -0500 Subject: [PATCH 02/13] Auto stash before checking out "Upstream/upstream-merge-12021" --- .../dispenser/chem_synthesizer_ch.dm | 42 +++++++++++++++++-- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm b/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm index c0add0934e..09bcffc64b 100644 --- a/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm +++ b/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm @@ -21,6 +21,7 @@ // Add an eject catalyst bottle button. // Make sure recipes can only be removed when the machine is idle. Adding should be fine. // May need yet another list which is just strings which match recipe ID's. +// For user recipes, make clicking on the recipe give a prompt with "add to queue," "export recipe," and "delete recipe." /obj/machinery/chemical_synthesizer name = "chemical synthesizer" @@ -37,7 +38,7 @@ panel_open = TRUE var/busy = FALSE - var/expert_mode = FALSE // Toggle between click-step input and comma-delineated text input for creating recipes. + var/production_mode = FALSE // Toggle between click-step input and comma-delineated text input for creating recipes. var/use_catalyst = TRUE // Determines whether or not the catalyst will be added to reagents while processing a recipe. var/delay_modifier = 3 // This is multiplied by the volume of a step to determine how long each step takes. Bigger volume = slower. var/obj/item/weapon/reagent_containers/glass/catalyst = null // This is where the user adds catalyst. Usually phoron. @@ -202,7 +203,7 @@ . = 1 if(.) SStgui.update_uis(src) -/* + /obj/machinery/chemical_synthesizer/tgui_interact(mob/user, datum/tgui/ui = null) ui = SStgui.try_update_ui(user, src, ui) if(!ui) @@ -210,7 +211,40 @@ ui.open() /obj/machinery/chemical_synthesizer/tgui_data(mob/user) - var/data[0] + var/list/data = list() + + data["busy"] = busy + data["production_mode"] = production_mode + data["panel_open"] = panel_open + data["use_catalyst"] = use_catalyst + + // Queue and recipe lists might not be formatted correctly here. Delete this once you've confirmed. + data["queue"] = queue + data["recipes"] = recipes + + + + // Read data from the reaction vessel. + var/list/vessel_reagents_list = list() + data["rxn_vessel"] = vessel_reagents_list + for(var/datum/reagent/R in src.reagents.reagent_list) + vessel_reagents_list[++vessel_reagents_list.len] = list("name" = R.name, "volume" = R.volume, "description" = R.description, "id" = R.id) + + // Read data from the catalyst, if present. + data["catalyst"] = catalyst ? 1 : 0 + if(catalyst) + var/list/catalyst_reagents_list = list() + data["catalyst_reagents"] = catalyst_reagents_list + for(var/datum/reagent/R in catalyst.reagents.reagent_list) + catalyst_reagents_list[++catalyst_reagents_list.len] = list("name" = R.name, "volume" = R.volume, "description" = R.description, "id" = R.id) + + var/chemicals[0] + for(var/label in cartridges) + var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = cartridges[label] + chemicals.Add(list(list("title" = label, "id" = label, "amount" = C.reagents.total_volume))) // list in a list because Byond merges the first list + data["chemicals"] = chemicals + + return data /obj/machinery/chemical_synthesizer/tgui_act(action, params) if(..()) @@ -222,7 +256,7 @@ add_fingerprint(usr) -*/ + /obj/machinery/chemical_synthesizer/attack_ghost(mob/user) if(stat & (BROKEN|NOPOWER)) return From f4fbb2cb90a0d6a0b566eb449f4c7d5b3aac3636 Mon Sep 17 00:00:00 2001 From: Darlantan Date: Sat, 19 Feb 2022 19:28:35 -0500 Subject: [PATCH 03/13] WIP commit because I need to fix mirror conflicts right now --- .../dispenser/chem_synthesizer_ch.dm | 83 +++- .../tgui/interfaces/ChemSynthesizer.js | 461 ++++++++++++++++++ 2 files changed, 536 insertions(+), 8 deletions(-) create mode 100644 tgui/packages/tgui/interfaces/ChemSynthesizer.js diff --git a/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm b/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm index 09bcffc64b..f3c61a02a0 100644 --- a/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm +++ b/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm @@ -11,15 +11,15 @@ // DONE Create procs to actually perform the reagent transfer/etc. for a synthesis, reading the stored synthesis steps. // Implement a step-mode where the player manually clicks on each step and an expert mode where players input a comma-delineated list. // DONE Add process() code which makes the machine actually work. Perhaps tie a boolean and single start proc into process(). -// Give the machine queue-behavior which allows players to queue up multiple recipes, even when the machine is busy. Reference protolathe code. -// Give the machine a way to stop a synthesis and purge/bottle the reaction vessel. +// DONE Give the machine queue-behavior which allows players to queue up multiple recipes, even when the machine is busy. Reference protolathe code. +// DONE Give the machine a way to stop a synthesis and purge/bottle the reaction vessel. // Perhaps use recipes as a "ID" "num" "ID" "num" list to avoid using multiple lists. -// Panel open button. +// DONE Panel open button. // DONE Code for power usage. // Update_icon() overrides. // Underlay code for the reaction vessel. -// Add an eject catalyst bottle button. -// Make sure recipes can only be removed when the machine is idle. Adding should be fine. +// DONE Add an eject catalyst bottle button. +// DONE Make sure recipes can only be removed when the machine is idle. Adding should be fine. // May need yet another list which is just strings which match recipe ID's. // For user recipes, make clicking on the recipe give a prompt with "add to queue," "export recipe," and "delete recipe." @@ -207,7 +207,7 @@ /obj/machinery/chemical_synthesizer/tgui_interact(mob/user, datum/tgui/ui = null) ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "ChemSynthesizer", ui_title) + ui = new(user, src, "ChemSynthesizer", name) ui.open() /obj/machinery/chemical_synthesizer/tgui_data(mob/user) @@ -252,8 +252,64 @@ . = TRUE switch(action) - - + if("start_queue") + // Start up the queue. + if(!busy) + start_queue() + if("rem_queue") + // Remove a single entry from the queue. + var/index = text2num(params["q_index"]) + if(!isnum(index) || !ISINTEGER(index) || !istype(queue) || (index<1 || index>length(queue))) + return + queue -= queue[index] + if("clear_queue") + // Remove all entries from the queue except the currently processing recipe. + queue = list() + if("eject_catalyst") + // Removes the catalyst bottle from the machine. + if(!busy && catalyst) + catalyst.forceMove(get_turf(src)) + catalyst = null + if("toggle_catalyst") + // Decides if the machine uses the catalyst. + if(!busy) + use_catalyst = !use_catalyst + if("emergency_stop") + // Stops everything if that's desirable for some reason. + if(busy) + stall() + if("bottle_product") + // Bottles the reaction mixture if stalled. + if(!busy) + bottle_product() + if("panel_toggle") + // Opens/closes the panel. + if(!busy) + panel_open = !panel_open + if("add_recipe") + // Allows the user to add a recipe. Kinda vital for this machine to do anything useful. + if(recipes.len >= SYNTHESIZER_MAX_RECIPES) + to_chat(usr, "Maximum recipes exceeded!") + return + if(!production_mode) + babystep_recipe(usr) + else + import_recipe(usr) + if("rem_recipe") + // Allows the user to remove recipes while the machine is idle. + if(!busy) + var/index = params["rm_index"] + if(index in recipes) + recipes -= recipes[index] + if("add_queue") + // Adds recipes to the queue. + if(queue.len >= SYNTHESIZER_MAX_QUEUE) + to_chat(usr, "Synthesizer queue full!") + return + var/index = params["qa_index"] + // If you forgot, this is a string returned by the user pressing the "add to queue" button on a recipe. + if(index in recipes) + queue[queue.len + 1] = index add_fingerprint(usr) @@ -270,6 +326,14 @@ return tgui_interact(user) +// This proc is lets users create recipes step-by-step and exports a comma delineated list to chat. It's intended to teach how to use the machine. +/obj/machinery/chemical_synthesizer/proc/babystep_recipe(mob/user) + return + +// This proc allows users to copy-paste a comma delineated list to create a recipe. +/obj/machinery/chemical_synthesizer/proc/import_recipe(mob/user) + return + // This proc handles adding the catalyst starting the synthesizer's queue. /obj/machinery/chemical_synthesizer/proc/start_queue(mob/user) if(stat & (BROKEN|NOPOWER)) @@ -378,6 +442,9 @@ stall() return + if(!r_id) + r_id = "[reagents.get_master_reagent_name()]" + while(reagents.total_volume) var/obj/item/weapon/reagent_containers/glass/bottle/B = new(src.loc) B.name = "[r_id] bottle" diff --git a/tgui/packages/tgui/interfaces/ChemSynthesizer.js b/tgui/packages/tgui/interfaces/ChemSynthesizer.js new file mode 100644 index 0000000000..26fc8e270e --- /dev/null +++ b/tgui/packages/tgui/interfaces/ChemSynthesizer.js @@ -0,0 +1,461 @@ +import { Fragment } from 'inferno'; +import { useBackend } from "../backend"; +import { Box, Button, Flex, Icon, LabeledList, Section } from "../components"; +import { Window } from "../layouts"; +import { BeakerContents } from './common/BeakerContents'; +import { ComplexModal, modalOpen, modalRegisterBodyOverride } from './common/ComplexModal'; + +const transferAmounts = [1, 5, 10, 30, 60]; +const bottleStyles = [ + "bottle.png", + "small_bottle.png", + "wide_bottle.png", + "round_bottle.png", + "reagent_bottle.png", +]; + +const analyzeModalBodyOverride = (modal, context) => { + const { act, data } = useBackend(context); + const result = modal.args.analysis; + return ( +
+ + + + {result.name} + + + {(result.desc || "").length > 0 ? result.desc : "N/A"} + + {result.blood_type && ( + + + {result.blood_type} + + + {result.blood_dna} + + + )} + {!data.condi && ( +
+ ); +}; + +export const ChemMaster = (props, context) => { + const { data } = useBackend(context); + const { + condi, + beaker, + beaker_reagents = [], + buffer_reagents = [], + mode, + } = data; + return ( + + + + 0} + /> + + 0} + /> + {/* */} + + + ); +}; + +const ChemMasterBeaker = (props, context) => { + const { act, data } = useBackend(context); + const { + beaker, + beakerReagents, + bufferNonEmpty, + } = props; + + let headerButton = bufferNonEmpty ? ( + act('eject')} + /> + ) : ( + + + + + + + ); +}; + +const ChemMasterProductionCondiment = (props, context) => { + const { act } = useBackend(context); + return ( + + - - - - - + {queue.length && queue.map(item => { + if ((item.index === 1) && !!busy) { + return ( + + { + + + + } + + ); + } + return ( + + + + ); + }) || ( + + Queue Empty. + + )} + ); }; -const ChemMasterProductionCondiment = (props, context) => { - const { act } = useBackend(context); - return ( - - + + }) || ( + + No Recipes. + + )} + ); -}; - -// const ChemMasterCustomization = (props, context) => { -// const { act, data } = useBackend(context); -// if (!data.loaded_pill_bottle) { -// return ( -//
-// -// None loaded. -// -//
-// ); -// } - -// return ( -//
-//
-// ); -// }; - -modalRegisterBodyOverride('analyze', analyzeModalBodyOverride); +}; \ No newline at end of file From 97e061b39c4fcd7de96ea8a27c91d0b74ec03bd0 Mon Sep 17 00:00:00 2001 From: Darlantan Date: Sat, 11 Jun 2022 17:15:36 -0400 Subject: [PATCH 09/13] More branch switching --- .../dispenser/chem_synthesizer_ch.dm | 3 + .../tgui/interfaces/ChemSynthesizer.js | 260 ++++++++++++++---- 2 files changed, 204 insertions(+), 59 deletions(-) diff --git a/modular_chomp/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm b/modular_chomp/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm index 1c49303711..3a56972c0f 100644 --- a/modular_chomp/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm +++ b/modular_chomp/code/modules/reagents/machinery/dispenser/chem_synthesizer_ch.dm @@ -302,6 +302,9 @@ // Opens/closes the panel. if(!busy) panel_open = !panel_open + if("mode_toggle") + // Toggles production mode. + production_mode = !production_mode if("add_recipe") // Allows the user to add a recipe. Kinda vital for this machine to do anything useful. if(recipes.len >= SYNTHESIZER_MAX_RECIPES) diff --git a/tgui/packages/tgui/interfaces/ChemSynthesizer.js b/tgui/packages/tgui/interfaces/ChemSynthesizer.js index 5e2a2f68e8..859e52c97e 100644 --- a/tgui/packages/tgui/interfaces/ChemSynthesizer.js +++ b/tgui/packages/tgui/interfaces/ChemSynthesizer.js @@ -1,6 +1,6 @@ import { Fragment } from 'inferno'; import { useBackend } from "../backend"; -import { Box, Button, Flex, Icon, LabeledList, Section } from "../components"; +import { Box, Button, Flex, LabeledList, Section } from "../components"; import { Window } from "../layouts"; import { BeakerContents } from './common/BeakerContents'; @@ -47,8 +47,8 @@ const ChemSynthesizerQueueRecipes = (props, context) => { - - } + + + } ); } - return ( - - - - ); - }) || ( - - Queue Empty. - - )} - + return ( + + + + ); + }) || ( + + Queue Empty. + + )} + ); }; @@ -151,23 +148,168 @@ const ChemSynthesizerRecipeList = (props, context) => { busy, } = data; - return = ( - - {recipes.length && recipes.map(item => { - + return ( + + {recipes.map(item => ( + - - }) || ( - - No Recipes. - - )} - + color="bad" + icon="minus" + disabled={!!busy} + onClick={() => act("rem_recipe", { + rm_index: item.name, + })} /> + - - ); - }) || ( + + return ( + + + + ); + } }) || ( Queue Empty. @@ -150,7 +150,7 @@ const ChemSynthesizerRecipeList = (props, context) => { return ( - {recipes.map(item => ( + {recipes.map(item => { + + } + + ); + } + return ( + + + + ); + })) || ( + + Queue Empty. + + )} + + +
act("add_recipe")} /> }> - - - - - + + {(recipes.length && recipes.map((item) => { + return ( + +
); }; -const ChemSynthesizerQueueList = (props, context) => { - const { act, data } = useBackend(context); - const { - queue = [], - busy, - } = data; - - return ( - - {queue.length && queue.map(item => { - if ((item.index === 1) && !!busy) { - return ( - - { - - - - } - - ); - - return ( - - - - ); - } }) || ( - - Queue Empty. - - )} - - ); -}; - -const ChemSynthesizerRecipeList = (props, context) => { - const { act, data } = useBackend(context); - const { - recipes = [], - busy, - } = data; - - return ( - - {recipes.map(item => { - - - - } - - ); - } - return ( - - - - ); - })) || ( - - Queue Empty. - - )} + {(queue.length && + queue.map((item) => { + if (item.index === 1 && !!busy) { + return ( + + { + + + + } + + ); + } + return ( + + + + ); + })) || Queue Empty.} - +
{ buttons={
@@ -179,71 +163,48 @@ const ChemSynthesizerChemicals = (props, context) => { flexFillers.push(true); } return ( - -
- + +
+ {chemicals.map((c, i) => ( - -
-
- {(rxn_vessel.length > 0) - ? ( - - ) - : ( - - Vessel is empty. - - )} +
+ {rxn_vessel.length > 0 ? ( + + ) : ( + Vessel is empty. + )}
{!!catalyst && ( {catalystCurrentVolume} / {catalystMaxVolume} units )} -
); @@ -251,62 +212,52 @@ const ChemSynthesizerChemicals = (props, context) => { const ChemSynthesizerSettings = (props, context) => { const { act, data } = useBackend(context); - const { - busy, - production_mode, - panel_open, - rxn_vessel, - } = data; + const { busy, production_mode, panel_open, rxn_vessel } = data; return ( - - -
- - + + +
+ +
diff --git a/tgui/public/tgui.bundle.js b/tgui/public/tgui.bundle.js index 32743d758c..e3f3f8cddc 100644 --- a/tgui/public/tgui.bundle.js +++ b/tgui/public/tgui.bundle.js @@ -1 +1 @@ -!function(){var e={21926:function(e,t,n){"use strict";t.__esModule=!0,t.createPopper=void 0,t.popperGenerator=h;var o=m(n(48764)),r=m(n(68349)),a=m(n(3671)),i=m(n(55490)),c=(m(n(40755)),m(n(69282))),l=m(n(27672)),d=(m(n(30752)),m(n(12459)),m(n(27629)),m(n(54220))),s=m(n(75949));t.detectOverflow=s["default"];var u=n(79388);n(15954);function m(e){return e&&e.__esModule?e:{"default":e}}var p={placement:"bottom",modifiers:[],strategy:"absolute"};function f(){for(var e=arguments.length,t=new Array(e),n=0;n0&&(a=(0,r.round)(n.width)/l||1),c>0&&(i=(0,r.round)(n.height)/c||1)}return{width:n.width/a,height:n.height/i,top:n.top/i,right:n.right/a,bottom:n.bottom/i,left:n.left/a,x:n.left/a,y:n.top/i}};var o=n(79388),r=n(36291)},65647:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t,n){var o="clippingParents"===t?function(e){var t=(0,i["default"])((0,m["default"])(e)),n=["absolute","fixed"].indexOf((0,d["default"])(e).position)>=0&&(0,s.isHTMLElement)(e)?(0,c["default"])(e):e;if(!(0,s.isElement)(n))return[];return t.filter((function(e){return(0,s.isElement)(e)&&(0,p["default"])(e,n)&&"body"!==(0,f["default"])(e)}))}(e):[].concat(t),r=[].concat(o,[n]),a=r[0],l=r.reduce((function(t,n){var o=N(e,n);return t.top=(0,C.max)(o.top,t.top),t.right=(0,C.min)(o.right,t.right),t.bottom=(0,C.min)(o.bottom,t.bottom),t.left=(0,C.max)(o.left,t.left),t}),N(e,a));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l};var o=n(15954),r=b(n(8204)),a=b(n(40015)),i=b(n(3671)),c=b(n(55490)),l=b(n(25890)),d=b(n(40755)),s=n(79388),u=b(n(11100)),m=b(n(95136)),p=b(n(62215)),f=b(n(38569)),h=b(n(73060)),C=n(36291);function b(e){return e&&e.__esModule?e:{"default":e}}function N(e,t){return t===o.viewport?(0,h["default"])((0,r["default"])(e)):(0,s.isElement)(t)?function(e){var t=(0,u["default"])(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):(0,h["default"])((0,a["default"])((0,l["default"])(e)))}},48764:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t,n){void 0===n&&(n=!1);var u=(0,i.isHTMLElement)(t),m=(0,i.isHTMLElement)(t)&&function(e){var t=e.getBoundingClientRect(),n=(0,s.round)(t.width)/e.offsetWidth||1,o=(0,s.round)(t.height)/e.offsetHeight||1;return 1!==n||1!==o}(t),p=(0,l["default"])(t),f=(0,o["default"])(e,m),h={scrollLeft:0,scrollTop:0},C={x:0,y:0};(u||!u&&!n)&&(("body"!==(0,a["default"])(t)||(0,d["default"])(p))&&(h=(0,r["default"])(t)),(0,i.isHTMLElement)(t)?((C=(0,o["default"])(t,!0)).x+=t.clientLeft,C.y+=t.clientTop):p&&(C.x=(0,c["default"])(p)));return{x:f.left+h.scrollLeft-C.x,y:f.top+h.scrollTop-C.y,width:f.width,height:f.height}};var o=u(n(11100)),r=u(n(3514)),a=u(n(38569)),i=n(79388),c=u(n(36056)),l=u(n(25890)),d=u(n(57360)),s=n(36291);function u(e){return e&&e.__esModule?e:{"default":e}}},40755:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(0,r["default"])(e).getComputedStyle(e)};var o,r=(o=n(96904))&&o.__esModule?o:{"default":o}},25890:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(((0,o.isElement)(e)?e.ownerDocument:e.document)||window.document).documentElement};var o=n(79388)},40015:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=(0,o["default"])(e),l=(0,i["default"])(e),d=null==(t=e.ownerDocument)?void 0:t.body,s=(0,c.max)(n.scrollWidth,n.clientWidth,d?d.scrollWidth:0,d?d.clientWidth:0),u=(0,c.max)(n.scrollHeight,n.clientHeight,d?d.scrollHeight:0,d?d.clientHeight:0),m=-l.scrollLeft+(0,a["default"])(e),p=-l.scrollTop;"rtl"===(0,r["default"])(d||n).direction&&(m+=(0,c.max)(n.clientWidth,d?d.clientWidth:0)-s);return{width:s,height:u,x:m,y:p}};var o=l(n(25890)),r=l(n(40755)),a=l(n(36056)),i=l(n(69211)),c=n(36291);function l(e){return e&&e.__esModule?e:{"default":e}}},41829:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}},68349:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=e.offsetWidth,o=e.offsetHeight;Math.abs(t.width-n)<=1&&(n=t.width);Math.abs(t.height-o)<=1&&(o=t.height);return{x:e.offsetLeft,y:e.offsetTop,width:n,height:o}};var o,r=(o=n(11100))&&o.__esModule?o:{"default":o}},38569:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e?(e.nodeName||"").toLowerCase():null}},3514:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return e!==(0,r["default"])(e)&&(0,a.isHTMLElement)(e)?(0,i["default"])(e):(0,o["default"])(e)};var o=c(n(69211)),r=c(n(96904)),a=n(79388),i=c(n(41829));function c(e){return e&&e.__esModule?e:{"default":e}}},55490:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=s(e);for(;n&&(0,c["default"])(n)&&"static"===(0,a["default"])(n).position;)n=s(n);if(n&&("html"===(0,r["default"])(n)||"body"===(0,r["default"])(n)&&"static"===(0,a["default"])(n).position))return t;return n||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&(0,i.isHTMLElement)(e)){if("fixed"===(0,a["default"])(e).position)return null}var n=(0,l["default"])(e);(0,i.isShadowRoot)(n)&&(n=n.host);for(;(0,i.isHTMLElement)(n)&&["html","body"].indexOf((0,r["default"])(n))<0;){var o=(0,a["default"])(n);if("none"!==o.transform||"none"!==o.perspective||"paint"===o.contain||-1!==["transform","perspective"].indexOf(o.willChange)||t&&"filter"===o.willChange||t&&o.filter&&"none"!==o.filter)return n;n=n.parentNode}return null}(e)||t};var o=d(n(96904)),r=d(n(38569)),a=d(n(40755)),i=n(79388),c=d(n(94437)),l=d(n(95136));function d(e){return e&&e.__esModule?e:{"default":e}}function s(e){return(0,i.isHTMLElement)(e)&&"fixed"!==(0,a["default"])(e).position?e.offsetParent:null}},95136:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){if("html"===(0,o["default"])(e))return e;return e.assignedSlot||e.parentNode||((0,a.isShadowRoot)(e)?e.host:null)||(0,r["default"])(e)};var o=i(n(38569)),r=i(n(25890)),a=n(79388);function i(e){return e&&e.__esModule?e:{"default":e}}},43367:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function l(e){if(["html","body","#document"].indexOf((0,a["default"])(e))>=0)return e.ownerDocument.body;if((0,i.isHTMLElement)(e)&&(0,r["default"])(e))return e;return l((0,o["default"])(e))};var o=c(n(95136)),r=c(n(57360)),a=c(n(38569)),i=n(79388);function c(e){return e&&e.__esModule?e:{"default":e}}},8204:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=(0,r["default"])(e),i=t.visualViewport,c=n.clientWidth,l=n.clientHeight,d=0,s=0;i&&(c=i.width,l=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(d=i.offsetLeft,s=i.offsetTop));return{width:c,height:l,x:d+(0,a["default"])(e),y:s}};var o=i(n(96904)),r=i(n(25890)),a=i(n(36056));function i(e){return e&&e.__esModule?e:{"default":e}}},96904:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}},69211:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=t.pageXOffset,o=t.pageYOffset;return{scrollLeft:n,scrollTop:o}};var o,r=(o=n(96904))&&o.__esModule?o:{"default":o}},36056:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(0,o["default"])((0,r["default"])(e)).left+(0,a["default"])(e).scrollLeft};var o=i(n(11100)),r=i(n(25890)),a=i(n(69211));function i(e){return e&&e.__esModule?e:{"default":e}}},79388:function(e,t,n){"use strict";t.__esModule=!0,t.isElement=function(e){var t=(0,r["default"])(e).Element;return e instanceof t||e instanceof Element},t.isHTMLElement=function(e){var t=(0,r["default"])(e).HTMLElement;return e instanceof t||e instanceof HTMLElement},t.isShadowRoot=function(e){if("undefined"==typeof ShadowRoot)return!1;var t=(0,r["default"])(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot};var o,r=(o=n(96904))&&o.__esModule?o:{"default":o}},57360:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=t.overflow,o=t.overflowX,a=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+a+o)};var o,r=(o=n(40755))&&o.__esModule?o:{"default":o}},94437:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return["table","td","th"].indexOf((0,r["default"])(e))>=0};var o,r=(o=n(38569))&&o.__esModule?o:{"default":o}},3671:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function l(e,t){var n;void 0===t&&(t=[]);var c=(0,o["default"])(e),d=c===(null==(n=e.ownerDocument)?void 0:n.body),s=(0,a["default"])(c),u=d?[s].concat(s.visualViewport||[],(0,i["default"])(c)?c:[]):c,m=t.concat(u);return d?m:m.concat(l((0,r["default"])(u)))};var o=c(n(43367)),r=c(n(95136)),a=c(n(96904)),i=c(n(57360));function c(e){return e&&e.__esModule?e:{"default":e}}},15954:function(e,t){"use strict";t.__esModule=!0,t.write=t.viewport=t.variationPlacements=t.top=t.start=t.right=t.reference=t.read=t.popper=t.placements=t.modifierPhases=t.main=t.left=t.end=t.clippingParents=t.bottom=t.beforeWrite=t.beforeRead=t.beforeMain=t.basePlacements=t.auto=t.afterWrite=t.afterRead=t.afterMain=void 0;t.top="top";var n="bottom";t.bottom=n;var o="right";t.right=o;var r="left";t.left=r;var a="auto";t.auto=a;var i=["top",n,o,r];t.basePlacements=i;var c="start";t.start=c;var l="end";t.end=l;t.clippingParents="clippingParents";t.viewport="viewport";t.popper="popper";t.reference="reference";var d=i.reduce((function(e,t){return e.concat([t+"-"+c,t+"-"+l])}),[]);t.variationPlacements=d;var s=[].concat(i,[a]).reduce((function(e,t){return e.concat([t,t+"-"+c,t+"-"+l])}),[]);t.placements=s;var u="beforeRead";t.beforeRead=u;var m="read";t.read=m;var p="afterRead";t.afterRead=p;var f="beforeMain";t.beforeMain=f;var h="main";t.main=h;var C="afterMain";t.afterMain=C;var b="beforeWrite";t.beforeWrite=b;var N="write";t.write=N;var g="afterWrite";t.afterWrite=g;var V=[u,m,p,f,h,C,b,N,g];t.modifierPhases=V},37809:function(e,t,n){"use strict";t.__esModule=!0;var o={popperGenerator:!0,detectOverflow:!0,createPopperBase:!0,createPopper:!0,createPopperLite:!0};t.popperGenerator=t.detectOverflow=t.createPopperLite=t.createPopperBase=t.createPopper=void 0;var r=n(15954);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(o,e)||e in t&&t[e]===r[e]||(t[e]=r[e]))}));var a=n(4207);Object.keys(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(o,e)||e in t&&t[e]===a[e]||(t[e]=a[e]))}));var i=n(21926);t.popperGenerator=i.popperGenerator,t.detectOverflow=i.detectOverflow,t.createPopperBase=i.createPopper;var c=n(17827);t.createPopper=c.createPopper;var l=n(47952);t.createPopperLite=l.createPopper},89290:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o,r=(o=n(38569))&&o.__esModule?o:{"default":o},a=n(79388);var i={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},i=t.elements[e];(0,a.isHTMLElement)(i)&&(0,r["default"])(i)&&(Object.assign(i.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],i=t.attributes[e]||{},c=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});(0,a.isHTMLElement)(o)&&(0,r["default"])(o)&&(Object.assign(o.style,c),Object.keys(i).forEach((function(e){o.removeAttribute(e)})))}))}},requires:["computeStyles"]};t["default"]=i},71313:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o=m(n(27629)),r=m(n(68349)),a=m(n(62215)),i=m(n(55490)),c=m(n(78772)),l=n(54444),d=m(n(11277)),s=m(n(45674)),u=n(15954);n(79388);function m(e){return e&&e.__esModule?e:{"default":e}}var p=function(e,t){return e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e,(0,d["default"])("number"!=typeof e?e:(0,s["default"])(e,u.basePlacements))};var f={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,a=e.name,d=e.options,s=n.elements.arrow,m=n.modifiersData.popperOffsets,f=(0,o["default"])(n.placement),h=(0,c["default"])(f),C=[u.left,u.right].indexOf(f)>=0?"height":"width";if(s&&m){var b=p(d.padding,n),N=(0,r["default"])(s),g="y"===h?u.top:u.left,V="y"===h?u.bottom:u.right,v=n.rects.reference[C]+n.rects.reference[h]-m[h]-n.rects.popper[C],_=m[h]-n.rects.reference[h],y=(0,i["default"])(s),k=y?"y"===h?y.clientHeight||0:y.clientWidth||0:0,x=v/2-_/2,w=b[g],B=k-N[C]-b[V],L=k/2-N[C]/2+x,S=(0,l.within)(w,L,B),I=h;n.modifiersData[a]=((t={})[I]=S,t.centerOffset=S-L,t)}},effect:function(e){var t=e.state,n=e.options.element,o=void 0===n?"[data-popper-arrow]":n;null!=o&&("string"!=typeof o||(o=t.elements.popper.querySelector(o)))&&(0,a["default"])(t.elements.popper,o)&&(t.elements.arrow=o)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};t["default"]=f},54680:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0,t.mapToStyles=p;var o=n(15954),r=u(n(55490)),a=u(n(96904)),i=u(n(25890)),c=u(n(40755)),l=u(n(27629)),d=u(n(31686)),s=n(36291);function u(e){return e&&e.__esModule?e:{"default":e}}var m={top:"auto",right:"auto",bottom:"auto",left:"auto"};function p(e){var t,n=e.popper,l=e.popperRect,d=e.placement,u=e.variation,p=e.offsets,f=e.position,h=e.gpuAcceleration,C=e.adaptive,b=e.roundOffsets,N=e.isFixed,g=p.x,V=void 0===g?0:g,v=p.y,_=void 0===v?0:v,y="function"==typeof b?b({x:V,y:_}):{x:V,y:_};V=y.x,_=y.y;var k=p.hasOwnProperty("x"),x=p.hasOwnProperty("y"),w=o.left,B=o.top,L=window;if(C){var S=(0,r["default"])(n),I="clientHeight",T="clientWidth";if(S===(0,a["default"])(n)&&(S=(0,i["default"])(n),"static"!==(0,c["default"])(S).position&&"absolute"===f&&(I="scrollHeight",T="scrollWidth")),d===o.top||(d===o.left||d===o.right)&&u===o.end)B=o.bottom,_-=(N&&S===L&&L.visualViewport?L.visualViewport.height:S[I])-l.height,_*=h?1:-1;if(d===o.left||(d===o.top||d===o.bottom)&&u===o.end)w=o.right,V-=(N&&S===L&&L.visualViewport?L.visualViewport.width:S[T])-l.width,V*=h?1:-1}var A,M=Object.assign({position:f},C&&m),E=!0===b?function(e){var t=e.x,n=e.y,o=window.devicePixelRatio||1;return{x:(0,s.round)(t*o)/o||0,y:(0,s.round)(n*o)/o||0}}({x:V,y:_}):{x:V,y:_};return V=E.x,_=E.y,h?Object.assign({},M,((A={})[B]=x?"0":"",A[w]=k?"0":"",A.transform=(L.devicePixelRatio||1)<=1?"translate("+V+"px, "+_+"px)":"translate3d("+V+"px, "+_+"px, 0)",A)):Object.assign({},M,((t={})[B]=x?_+"px":"",t[w]=k?V+"px":"",t.transform="",t))}var f={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,o=n.gpuAcceleration,r=void 0===o||o,a=n.adaptive,i=void 0===a||a,c=n.roundOffsets,s=void 0===c||c,u={placement:(0,l["default"])(t.placement),variation:(0,d["default"])(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,p(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,p(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:s})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};t["default"]=f},53887:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o,r=(o=n(96904))&&o.__esModule?o:{"default":o};var a={passive:!0};var i={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,o=e.options,i=o.scroll,c=void 0===i||i,l=o.resize,d=void 0===l||l,s=(0,r["default"])(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return c&&u.forEach((function(e){e.addEventListener("scroll",n.update,a)})),d&&s.addEventListener("resize",n.update,a),function(){c&&u.forEach((function(e){e.removeEventListener("scroll",n.update,a)})),d&&s.removeEventListener("resize",n.update,a)}},data:{}};t["default"]=i},82566:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o=s(n(31477)),r=s(n(27629)),a=s(n(44214)),i=s(n(75949)),c=s(n(2894)),l=n(15954),d=s(n(31686));function s(e){return e&&e.__esModule?e:{"default":e}}var u={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,s=e.name;if(!t.modifiersData[s]._skip){for(var u=n.mainAxis,m=void 0===u||u,p=n.altAxis,f=void 0===p||p,h=n.fallbackPlacements,C=n.padding,b=n.boundary,N=n.rootBoundary,g=n.altBoundary,V=n.flipVariations,v=void 0===V||V,_=n.allowedAutoPlacements,y=t.options.placement,k=(0,r["default"])(y),x=h||(k===y||!v?[(0,o["default"])(y)]:function(e){if((0,r["default"])(e)===l.auto)return[];var t=(0,o["default"])(e);return[(0,a["default"])(e),t,(0,a["default"])(t)]}(y)),w=[y].concat(x).reduce((function(e,n){return e.concat((0,r["default"])(n)===l.auto?(0,c["default"])(t,{placement:n,boundary:b,rootBoundary:N,padding:C,flipVariations:v,allowedAutoPlacements:_}):n)}),[]),B=t.rects.reference,L=t.rects.popper,S=new Map,I=!0,T=w[0],A=0;A=0,D=O?"width":"height",F=(0,i["default"])(t,{placement:M,boundary:b,rootBoundary:N,altBoundary:g,padding:C}),R=O?P?l.right:l.left:P?l.bottom:l.top;B[D]>L[D]&&(R=(0,o["default"])(R));var j=(0,o["default"])(R),W=[];if(m&&W.push(F[E]<=0),f&&W.push(F[R]<=0,F[j]<=0),W.every((function(e){return e}))){T=M,I=!1;break}S.set(M,W)}if(I)for(var z=function(e){var t=w.find((function(t){var n=S.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return T=t,"break"},U=v?3:1;U>0;U--){if("break"===z(U))break}t.placement!==T&&(t.modifiersData[s]._skip=!0,t.placement=T,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};t["default"]=u},27353:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o,r=n(15954),a=(o=n(75949))&&o.__esModule?o:{"default":o};function i(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function c(e){return[r.top,r.right,r.bottom,r.left].some((function(t){return e[t]>=0}))}var l={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,o=t.rects.reference,r=t.rects.popper,l=t.modifiersData.preventOverflow,d=(0,a["default"])(t,{elementContext:"reference"}),s=(0,a["default"])(t,{altBoundary:!0}),u=i(d,o),m=i(s,r,l),p=c(u),f=c(m);t.modifiersData[n]={referenceClippingOffsets:u,popperEscapeOffsets:m,isReferenceHidden:p,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":f})}};t["default"]=l},4207:function(e,t,n){"use strict";t.__esModule=!0,t.preventOverflow=t.popperOffsets=t.offset=t.hide=t.flip=t.eventListeners=t.computeStyles=t.arrow=t.applyStyles=void 0;var o=m(n(89290));t.applyStyles=o["default"];var r=m(n(71313));t.arrow=r["default"];var a=m(n(54680));t.computeStyles=a["default"];var i=m(n(53887));t.eventListeners=i["default"];var c=m(n(82566));t.flip=c["default"];var l=m(n(27353));t.hide=l["default"];var d=m(n(99873));t.offset=d["default"];var s=m(n(83662));t.popperOffsets=s["default"];var u=m(n(21031));function m(e){return e&&e.__esModule?e:{"default":e}}t.preventOverflow=u["default"]},99873:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0,t.distanceAndSkiddingToXY=i;var o,r=(o=n(27629))&&o.__esModule?o:{"default":o},a=n(15954);function i(e,t,n){var o=(0,r["default"])(e),i=[a.left,a.top].indexOf(o)>=0?-1:1,c="function"==typeof n?n(Object.assign({},t,{placement:e})):n,l=c[0],d=c[1];return l=l||0,d=(d||0)*i,[a.left,a.right].indexOf(o)>=0?{x:d,y:l}:{x:l,y:d}}var c={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,o=e.name,r=n.offset,c=void 0===r?[0,0]:r,l=a.placements.reduce((function(e,n){return e[n]=i(n,t.rects,c),e}),{}),d=l[t.placement],s=d.x,u=d.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=s,t.modifiersData.popperOffsets.y+=u),t.modifiersData[o]=l}};t["default"]=c},83662:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o,r=(o=n(2002))&&o.__esModule?o:{"default":o};var a={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=(0,r["default"])({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};t["default"]=a},21031:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o=n(15954),r=f(n(27629)),a=f(n(78772)),i=f(n(16696)),c=n(54444),l=f(n(68349)),d=f(n(55490)),s=f(n(75949)),u=f(n(31686)),m=f(n(22710)),p=n(36291);function f(e){return e&&e.__esModule?e:{"default":e}}var h={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,f=e.name,h=n.mainAxis,C=void 0===h||h,b=n.altAxis,N=void 0!==b&&b,g=n.boundary,V=n.rootBoundary,v=n.altBoundary,_=n.padding,y=n.tether,k=void 0===y||y,x=n.tetherOffset,w=void 0===x?0:x,B=(0,s["default"])(t,{boundary:g,rootBoundary:V,padding:_,altBoundary:v}),L=(0,r["default"])(t.placement),S=(0,u["default"])(t.placement),I=!S,T=(0,a["default"])(L),A=(0,i["default"])(T),M=t.modifiersData.popperOffsets,E=t.rects.reference,P=t.rects.popper,O="function"==typeof w?w(Object.assign({},t.rects,{placement:t.placement})):w,D="number"==typeof O?{mainAxis:O,altAxis:O}:Object.assign({mainAxis:0,altAxis:0},O),F=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,R={x:0,y:0};if(M){if(C){var j,W="y"===T?o.top:o.left,z="y"===T?o.bottom:o.right,U="y"===T?"height":"width",H=M[T],G=H+B[W],q=H-B[z],K=k?-P[U]/2:0,Y=S===o.start?E[U]:P[U],$=S===o.start?-P[U]:-E[U],X=t.elements.arrow,Q=k&&X?(0,l["default"])(X):{width:0,height:0},J=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:(0,m["default"])(),Z=J[W],ee=J[z],te=(0,c.within)(0,E[U],Q[U]),ne=I?E[U]/2-K-te-Z-D.mainAxis:Y-te-Z-D.mainAxis,oe=I?-E[U]/2+K+te+ee+D.mainAxis:$+te+ee+D.mainAxis,re=t.elements.arrow&&(0,d["default"])(t.elements.arrow),ae=re?"y"===T?re.clientTop||0:re.clientLeft||0:0,ie=null!=(j=null==F?void 0:F[T])?j:0,ce=H+ne-ie-ae,le=H+oe-ie,de=(0,c.within)(k?(0,p.min)(G,ce):G,H,k?(0,p.max)(q,le):q);M[T]=de,R[T]=de-H}if(N){var se,ue="x"===T?o.top:o.left,me="x"===T?o.bottom:o.right,pe=M[A],fe="y"===A?"height":"width",he=pe+B[ue],Ce=pe-B[me],be=-1!==[o.top,o.left].indexOf(L),Ne=null!=(se=null==F?void 0:F[A])?se:0,ge=be?he:pe-E[fe]-P[fe]-Ne+D.altAxis,Ve=be?pe+E[fe]+P[fe]-Ne-D.altAxis:Ce,ve=k&&be?(0,c.withinMaxClamp)(ge,pe,Ve):(0,c.within)(k?ge:he,pe,k?Ve:Ce);M[A]=ve,R[A]=ve-pe}t.modifiersData[f]=R}},requiresIfExists:["offset"]};t["default"]=h},47952:function(e,t,n){"use strict";t.__esModule=!0,t.defaultModifiers=t.createPopper=void 0;var o=n(21926);t.popperGenerator=o.popperGenerator,t.detectOverflow=o.detectOverflow;var r=l(n(53887)),a=l(n(83662)),i=l(n(54680)),c=l(n(89290));function l(e){return e&&e.__esModule?e:{"default":e}}var d=[r["default"],a["default"],i["default"],c["default"]];t.defaultModifiers=d;var s=(0,o.popperGenerator)({defaultModifiers:d});t.createPopper=s},17827:function(e,t,n){"use strict";t.__esModule=!0;var o={createPopper:!0,createPopperLite:!0,defaultModifiers:!0,popperGenerator:!0,detectOverflow:!0};t.defaultModifiers=t.createPopperLite=t.createPopper=void 0;var r=n(21926);t.popperGenerator=r.popperGenerator,t.detectOverflow=r.detectOverflow;var a=C(n(53887)),i=C(n(83662)),c=C(n(54680)),l=C(n(89290)),d=C(n(99873)),s=C(n(82566)),u=C(n(21031)),m=C(n(71313)),p=C(n(27353)),f=n(47952);t.createPopperLite=f.createPopper;var h=n(4207);function C(e){return e&&e.__esModule?e:{"default":e}}Object.keys(h).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(o,e)||e in t&&t[e]===h[e]||(t[e]=h[e]))}));var b=[a["default"],i["default"],c["default"],l["default"],d["default"],s["default"],u["default"],m["default"],p["default"]];t.defaultModifiers=b;var N=(0,r.popperGenerator)({defaultModifiers:b});t.createPopperLite=t.createPopper=N},2894:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){void 0===t&&(t={});var n=t,c=n.placement,l=n.boundary,d=n.rootBoundary,s=n.padding,u=n.flipVariations,m=n.allowedAutoPlacements,p=void 0===m?r.placements:m,f=(0,o["default"])(c),h=f?u?r.variationPlacements:r.variationPlacements.filter((function(e){return(0,o["default"])(e)===f})):r.basePlacements,C=h.filter((function(e){return p.indexOf(e)>=0}));0===C.length&&(C=h);var b=C.reduce((function(t,n){return t[n]=(0,a["default"])(e,{placement:n,boundary:l,rootBoundary:d,padding:s})[(0,i["default"])(n)],t}),{});return Object.keys(b).sort((function(e,t){return b[e]-b[t]}))};var o=c(n(31686)),r=n(15954),a=c(n(75949)),i=c(n(27629));function c(e){return e&&e.__esModule?e:{"default":e}}},2002:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=e.reference,c=e.element,l=e.placement,d=l?(0,o["default"])(l):null,s=l?(0,r["default"])(l):null,u=n.x+n.width/2-c.width/2,m=n.y+n.height/2-c.height/2;switch(d){case i.top:t={x:u,y:n.y-c.height};break;case i.bottom:t={x:u,y:n.y+n.height};break;case i.right:t={x:n.x+n.width,y:m};break;case i.left:t={x:n.x-c.width,y:m};break;default:t={x:n.x,y:n.y}}var p=d?(0,a["default"])(d):null;if(null!=p){var f="y"===p?"height":"width";switch(s){case i.start:t[p]=t[p]-(n[f]/2-c[f]/2);break;case i.end:t[p]=t[p]+(n[f]/2-c[f]/2)}}return t};var o=c(n(27629)),r=c(n(31686)),a=c(n(78772)),i=n(15954);function c(e){return e&&e.__esModule?e:{"default":e}}},27672:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=undefined,n(e())}))}))),t}}},75949:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){void 0===t&&(t={});var n=t,m=n.placement,p=void 0===m?e.placement:m,f=n.boundary,h=void 0===f?l.clippingParents:f,C=n.rootBoundary,b=void 0===C?l.viewport:C,N=n.elementContext,g=void 0===N?l.popper:N,V=n.altBoundary,v=void 0!==V&&V,_=n.padding,y=void 0===_?0:_,k=(0,s["default"])("number"!=typeof y?y:(0,u["default"])(y,l.basePlacements)),x=g===l.popper?l.reference:l.popper,w=e.rects.popper,B=e.elements[v?x:g],L=(0,o["default"])((0,d.isElement)(B)?B:B.contextElement||(0,r["default"])(e.elements.popper),h,b),S=(0,a["default"])(e.elements.reference),I=(0,i["default"])({reference:S,element:w,strategy:"absolute",placement:p}),T=(0,c["default"])(Object.assign({},w,I)),A=g===l.popper?T:S,M={top:L.top-A.top+k.top,bottom:A.bottom-L.bottom+k.bottom,left:L.left-A.left+k.left,right:A.right-L.right+k.right},E=e.modifiersData.offset;if(g===l.popper&&E){var P=E[p];Object.keys(M).forEach((function(e){var t=[l.right,l.bottom].indexOf(e)>=0?1:-1,n=[l.top,l.bottom].indexOf(e)>=0?"y":"x";M[e]+=P[n]*t}))}return M};var o=m(n(65647)),r=m(n(25890)),a=m(n(11100)),i=m(n(2002)),c=m(n(73060)),l=n(15954),d=n(79388),s=m(n(11277)),u=m(n(45674));function m(e){return e&&e.__esModule?e:{"default":e}}},45674:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}},80885:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o=0?"x":"y"}},31477:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.replace(/left|right|bottom|top/g,(function(e){return n[e]}))};var n={left:"right",right:"left",bottom:"top",top:"bottom"}},44214:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.replace(/start|end/g,(function(e){return n[e]}))};var n={start:"end",end:"start"}},31686:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.split("-")[1]}},36291:function(e,t){"use strict";t.__esModule=!0,t.round=t.min=t.max=void 0;var n=Math.max;t.max=n;var o=Math.min;t.min=o;var r=Math.round;t.round=r},54220:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}},11277:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return Object.assign({},(0,r["default"])(),e)};var o,r=(o=n(22710))&&o.__esModule?o:{"default":o}},69282:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=function(e){var t=new Map,n=new Set,o=[];function r(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var o=t.get(e);o&&r(o)}})),o.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||r(e)})),o}(e);return o.modifierPhases.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])};var o=n(15954)},73060:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}},12459:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){var n=new Set;return e.filter((function(e){var o=t(e);if(!n.has(o))return n.add(o),!0}))}},30752:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){e.forEach((function(t){[].concat(Object.keys(t),a).filter((function(e,t,n){return n.indexOf(e)===t})).forEach((function(n){switch(n){case"name":t.name;break;case"enabled":t.enabled;break;case"phase":r.modifierPhases.indexOf(t.phase);break;case"fn":t.fn;break;case"effect":null!=t.effect&&t.effect;break;case"requires":null!=t.requires&&Array.isArray(t.requires);break;case"requiresIfExists":Array.isArray(t.requiresIfExists)}t.requires&&t.requires.forEach((function(t){e.find((function(e){return e.name===t}))}))}))}))};(o=n(80885))&&o.__esModule;var o,r=n(15954);var a=["name","enabled","phase","fn","effect","requires","options"]},54444:function(e,t,n){"use strict";t.__esModule=!0,t.within=r,t.withinMaxClamp=function(e,t,n){var o=r(e,t,n);return o>n?n:o};var o=n(36291);function r(e,t,n){return(0,o.max)(e,(0,o.min)(t,n))}},7696:function(e,t,n){"use strict";var o=n(45744),r=n(56279),a=TypeError;e.exports=function(e){if(o(e))return e;throw a(r(e)+" is not a function")}},99079:function(e,t,n){"use strict";var o=n(49332),r=n(56279),a=TypeError;e.exports=function(e){if(o(e))return e;throw a(r(e)+" is not a constructor")}},3760:function(e,t,n){"use strict";var o=n(45744),r=String,a=TypeError;e.exports=function(e){if("object"==typeof e||o(e))return e;throw a("Can't set "+r(e)+" as a prototype")}},48144:function(e,t,n){"use strict";var o=n(43741),r=n(48525),a=n(92723).f,i=o("unscopables"),c=Array.prototype;c[i]==undefined&&a(c,i,{configurable:!0,value:r(null)}),e.exports=function(e){c[i][e]=!0}},21679:function(e,t,n){"use strict";var o=n(59529).charAt;e.exports=function(e,t,n){return t+(n?o(e,t).length:1)}},41706:function(e,t,n){"use strict";var o=n(76469),r=TypeError;e.exports=function(e,t){if(o(t,e))return e;throw r("Incorrect invocation")}},65522:function(e,t,n){"use strict";var o=n(5484),r=String,a=TypeError;e.exports=function(e){if(o(e))return e;throw a(r(e)+" is not an object")}},65167:function(e){"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},26974:function(e,t,n){"use strict";var o=n(39125);e.exports=o((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},92574:function(e,t,n){"use strict";var o,r,a,i=n(65167),c=n(77849),l=n(61770),d=n(45744),s=n(5484),u=n(77807),m=n(10374),p=n(56279),f=n(87229),h=n(73e3),C=n(92723).f,b=n(76469),N=n(56997),g=n(44958),V=n(43741),v=n(8220),_=n(48797),y=_.enforce,k=_.get,x=l.Int8Array,w=x&&x.prototype,B=l.Uint8ClampedArray,L=B&&B.prototype,S=x&&N(x),I=w&&N(w),T=Object.prototype,A=l.TypeError,M=V("toStringTag"),E=v("TYPED_ARRAY_TAG"),P="TypedArrayConstructor",O=i&&!!g&&"Opera"!==m(l.opera),D=!1,F={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},R={BigInt64Array:8,BigUint64Array:8},j=function(e){if(!s(e))return!1;var t=m(e);return"DataView"===t||u(F,t)||u(R,t)},W=function(e){if(!s(e))return!1;var t=m(e);return u(F,t)||u(R,t)};for(o in F)(a=(r=l[o])&&r.prototype)?y(a).TypedArrayConstructor=r:O=!1;for(o in R)(a=(r=l[o])&&r.prototype)&&(y(a).TypedArrayConstructor=r);if((!O||!d(S)||S===Function.prototype)&&(S=function(){throw A("Incorrect invocation")},O))for(o in F)l[o]&&g(l[o],S);if((!O||!I||I===T)&&(I=S.prototype,O))for(o in F)l[o]&&g(l[o].prototype,I);if(O&&N(L)!==I&&g(L,I),c&&!u(I,M))for(o in D=!0,C(I,M,{get:function(){return s(this)?this[E]:undefined}}),F)l[o]&&f(l[o],E,o);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:O,TYPED_ARRAY_TAG:D&&E,aTypedArray:function(e){if(W(e))return e;throw A("Target is not a typed array")},aTypedArrayConstructor:function(e){if(d(e)&&(!g||b(S,e)))return e;throw A(p(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n,o){if(c){if(n)for(var r in F){var a=l[r];if(a&&u(a.prototype,e))try{delete a.prototype[e]}catch(i){try{a.prototype[e]=t}catch(d){}}}I[e]&&!n||h(I,e,n?t:O&&w[e]||t,o)}},exportTypedArrayStaticMethod:function(e,t,n){var o,r;if(c){if(g){if(n)for(o in F)if((r=l[o])&&u(r,e))try{delete r[e]}catch(a){}if(S[e]&&!n)return;try{return h(S,e,n?t:O&&S[e]||t)}catch(a){}}for(o in F)!(r=l[o])||r[e]&&!n||h(r,e,t)}},getTypedArrayConstructor:function z(e){var t=N(e);if(s(t)){var n=k(t);return n&&u(n,P)?n.TypedArrayConstructor:z(t)}},isView:j,isTypedArray:W,TypedArray:S,TypedArrayPrototype:I}},10377:function(e,t,n){"use strict";var o=n(61770),r=n(90655),a=n(77849),i=n(65167),c=n(82429),l=n(87229),d=n(60495),s=n(39125),u=n(41706),m=n(94868),p=n(87543),f=n(76124),h=n(29209),C=n(56997),b=n(44958),N=n(94600).f,g=n(92723).f,V=n(8093),v=n(74337),_=n(93182),y=n(48797),k=c.PROPER,x=c.CONFIGURABLE,w=y.get,B=y.set,L="ArrayBuffer",S="DataView",I="Wrong index",T=o.ArrayBuffer,A=T,M=A&&A.prototype,E=o.DataView,P=E&&E.prototype,O=Object.prototype,D=o.Array,F=o.RangeError,R=r(V),j=r([].reverse),W=h.pack,z=h.unpack,U=function(e){return[255&e]},H=function(e){return[255&e,e>>8&255]},G=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},q=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},K=function(e){return W(e,23,4)},Y=function(e){return W(e,52,8)},$=function(e,t){g(e.prototype,t,{get:function(){return w(this)[t]}})},X=function(e,t,n,o){var r=f(n),a=w(e);if(r+t>a.byteLength)throw F(I);var i=w(a.buffer).bytes,c=r+a.byteOffset,l=v(i,c,c+t);return o?l:j(l)},Q=function(e,t,n,o,r,a){var i=f(n),c=w(e);if(i+t>c.byteLength)throw F(I);for(var l=w(c.buffer).bytes,d=i+c.byteOffset,s=o(+r),u=0;ute;)(Z=ee[te++])in A||l(A,Z,T[Z]);M.constructor=A}b&&C(P)!==O&&b(P,O);var ne=new E(new A(2)),oe=r(P.setInt8);ne.setInt8(0,2147483648),ne.setInt8(1,2147483649),!ne.getInt8(0)&&ne.getInt8(1)||d(P,{setInt8:function(e,t){oe(this,e,t<<24>>24)},setUint8:function(e,t){oe(this,e,t<<24>>24)}},{unsafe:!0})}else M=(A=function(e){u(this,M);var t=f(e);B(this,{bytes:R(D(t),0),byteLength:t}),a||(this.byteLength=t)}).prototype,P=(E=function(e,t,n){u(this,P),u(e,M);var o=w(e).byteLength,r=m(t);if(r<0||r>o)throw F("Wrong offset");if(r+(n=n===undefined?o-r:p(n))>o)throw F("Wrong length");B(this,{buffer:e,byteLength:n,byteOffset:r}),a||(this.buffer=e,this.byteLength=n,this.byteOffset=r)}).prototype,a&&($(A,"byteLength"),$(E,"buffer"),$(E,"byteLength"),$(E,"byteOffset")),d(P,{getInt8:function(e){return X(this,1,e)[0]<<24>>24},getUint8:function(e){return X(this,1,e)[0]},getInt16:function(e){var t=X(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=X(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return q(X(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return q(X(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return z(X(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return z(X(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){Q(this,1,e,U,t)},setUint8:function(e,t){Q(this,1,e,U,t)},setInt16:function(e,t){Q(this,2,e,H,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){Q(this,2,e,H,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){Q(this,4,e,G,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){Q(this,4,e,G,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){Q(this,4,e,K,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){Q(this,8,e,Y,t,arguments.length>2?arguments[2]:undefined)}});_(A,L),_(E,S),e.exports={ArrayBuffer:A,DataView:E}},21497:function(e,t,n){"use strict";var o=n(73502),r=n(312),a=n(10950),i=n(33099),c=Math.min;e.exports=[].copyWithin||function(e,t){var n=o(this),l=a(n),d=r(e,l),s=r(t,l),u=arguments.length>2?arguments[2]:undefined,m=c((u===undefined?l:r(u,l))-s,l-d),p=1;for(s0;)s in n?n[d]=n[s]:i(n,d),d+=p,s+=p;return n}},8093:function(e,t,n){"use strict";var o=n(73502),r=n(312),a=n(10950);e.exports=function(e){for(var t=o(this),n=a(t),i=arguments.length,c=r(i>1?arguments[1]:undefined,n),l=i>2?arguments[2]:undefined,d=l===undefined?n:r(l,n);d>c;)t[c++]=e;return t}},29074:function(e,t,n){"use strict";var o=n(36249).forEach,r=n(74640)("forEach");e.exports=r?[].forEach:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}},15993:function(e,t,n){"use strict";var o=n(10950);e.exports=function(e,t){for(var n=0,r=o(t),a=new e(r);r>n;)a[n]=t[n++];return a}},49981:function(e,t,n){"use strict";var o=n(9341),r=n(76348),a=n(73502),i=n(63635),c=n(94535),l=n(49332),d=n(10950),s=n(61154),u=n(93247),m=n(52522),p=Array;e.exports=function(e){var t=a(e),n=l(this),f=arguments.length,h=f>1?arguments[1]:undefined,C=h!==undefined;C&&(h=o(h,f>2?arguments[2]:undefined));var b,N,g,V,v,_,y=m(t),k=0;if(!y||this===p&&c(y))for(b=d(t),N=n?new this(b):p(b);b>k;k++)_=C?h(t[k],k):t[k],s(N,k,_);else for(v=(V=u(t,y)).next,N=n?new this:[];!(g=r(v,V)).done;k++)_=C?i(V,h,[g.value,k],!0):g.value,s(N,k,_);return N.length=k,N}},89344:function(e,t,n){"use strict";var o=n(4254),r=n(312),a=n(10950),i=function(e){return function(t,n,i){var c,l=o(t),d=a(l),s=r(i,d);if(e&&n!=n){for(;d>s;)if((c=l[s++])!=c)return!0}else for(;d>s;s++)if((e||s in l)&&l[s]===n)return e||s||0;return!e&&-1}};e.exports={includes:i(!0),indexOf:i(!1)}},36249:function(e,t,n){"use strict";var o=n(9341),r=n(90655),a=n(83609),i=n(73502),c=n(10950),l=n(64711),d=r([].push),s=function(e){var t=1==e,n=2==e,r=3==e,s=4==e,u=6==e,m=7==e,p=5==e||u;return function(f,h,C,b){for(var N,g,V=i(f),v=a(V),_=o(h,C),y=c(v),k=0,x=b||l,w=t?x(f,y):n||m?x(f,0):undefined;y>k;k++)if((p||k in v)&&(g=_(N=v[k],k,V),e))if(t)w[k]=g;else if(g)switch(e){case 3:return!0;case 5:return N;case 6:return k;case 2:d(w,N)}else switch(e){case 4:return!1;case 7:d(w,N)}return u?-1:r||s?s:w}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterReject:s(7)}},93881:function(e,t,n){"use strict";var o=n(10261),r=n(4254),a=n(94868),i=n(10950),c=n(74640),l=Math.min,d=[].lastIndexOf,s=!!d&&1/[1].lastIndexOf(1,-0)<0,u=c("lastIndexOf"),m=s||!u;e.exports=m?function(e){if(s)return o(d,this,arguments)||0;var t=r(this),n=i(t),c=n-1;for(arguments.length>1&&(c=l(c,a(arguments[1]))),c<0&&(c=n+c);c>=0;c--)if(c in t&&t[c]===e)return c||0;return-1}:d},10112:function(e,t,n){"use strict";var o=n(39125),r=n(43741),a=n(64279),i=r("species");e.exports=function(e){return a>=51||!o((function(){var t=[];return(t.constructor={})[i]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},74640:function(e,t,n){"use strict";var o=n(39125);e.exports=function(e,t){var n=[][e];return!!n&&o((function(){n.call(null,t||function(){return 1},1)}))}},21038:function(e,t,n){"use strict";var o=n(7696),r=n(73502),a=n(83609),i=n(10950),c=TypeError,l=function(e){return function(t,n,l,d){o(n);var s=r(t),u=a(s),m=i(s),p=e?m-1:0,f=e?-1:1;if(l<2)for(;;){if(p in u){d=u[p],p+=f;break}if(p+=f,e?p<0:m<=p)throw c("Reduce of empty array with no initial value")}for(;e?p>=0:m>p;p+=f)p in u&&(d=n(d,u[p],p,s));return d}};e.exports={left:l(!1),right:l(!0)}},74337:function(e,t,n){"use strict";var o=n(312),r=n(10950),a=n(61154),i=Array,c=Math.max;e.exports=function(e,t,n){for(var l=r(e),d=o(t,l),s=o(n===undefined?l:n,l),u=i(c(s-d,0)),m=0;d0;)e[o]=e[--o];o!==a++&&(e[o]=n)}return e},i=function(e,t,n,o){for(var r=t.length,a=n.length,i=0,c=0;i1?arguments[1]:undefined);t=t?t.next:n.first;)for(o(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!N(this,e)}}),a(p,n?{get:function(e){var t=N(this,e);return t&&t.value},set:function(e,t){return b(this,0===e?0:e,t)}}:{add:function(e){return b(this,e=0===e?0:e,e)}}),u&&o(p,"size",{get:function(){return C(this).size}}),s},setStrong:function(e,t,n){var o=t+" Iterator",r=h(t),a=h(o);d(e,t,(function(e,t){f(this,{type:o,target:e,state:r(e),kind:t,last:undefined})}),(function(){for(var e=a(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=undefined,{value:undefined,done:!0})}),n?"entries":"values",!n,!0),s(t)}}},81995:function(e,t,n){"use strict";var o=n(90655),r=n(60495),a=n(49632).getWeakData,i=n(65522),c=n(5484),l=n(41706),d=n(47916),s=n(36249),u=n(77807),m=n(48797),p=m.set,f=m.getterFor,h=s.find,C=s.findIndex,b=o([].splice),N=0,g=function(e){return e.frozen||(e.frozen=new V)},V=function(){this.entries=[]},v=function(e,t){return h(e.entries,(function(e){return e[0]===t}))};V.prototype={get:function(e){var t=v(this,e);if(t)return t[1]},has:function(e){return!!v(this,e)},set:function(e,t){var n=v(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=C(this.entries,(function(t){return t[0]===e}));return~t&&b(this.entries,t,1),!!~t}},e.exports={getConstructor:function(e,t,n,o){var s=e((function(e,r){l(e,m),p(e,{type:t,id:N++,frozen:undefined}),r!=undefined&&d(r,e[o],{that:e,AS_ENTRIES:n})})),m=s.prototype,h=f(t),C=function(e,t,n){var o=h(e),r=a(i(t),!0);return!0===r?g(o).set(t,n):r[o.id]=n,e};return r(m,{"delete":function(e){var t=h(this);if(!c(e))return!1;var n=a(e);return!0===n?g(t)["delete"](e):n&&u(n,t.id)&&delete n[t.id]},has:function(e){var t=h(this);if(!c(e))return!1;var n=a(e);return!0===n?g(t).has(e):n&&u(n,t.id)}}),r(m,n?{get:function(e){var t=h(this);if(c(e)){var n=a(e);return!0===n?g(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return C(this,e,t)}}:{add:function(e){return C(this,e,!0)}}),s}}},18291:function(e,t,n){"use strict";var o=n(59450),r=n(61770),a=n(90655),i=n(16851),c=n(73e3),l=n(49632),d=n(47916),s=n(41706),u=n(45744),m=n(5484),p=n(39125),f=n(98994),h=n(93182),C=n(75121);e.exports=function(e,t,n){var b=-1!==e.indexOf("Map"),N=-1!==e.indexOf("Weak"),g=b?"set":"add",V=r[e],v=V&&V.prototype,_=V,y={},k=function(e){var t=a(v[e]);c(v,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(N&&!m(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return N&&!m(e)?undefined:t(this,0===e?0:e)}:"has"==e?function(e){return!(N&&!m(e))&&t(this,0===e?0:e)}:function(e,n){return t(this,0===e?0:e,n),this})};if(i(e,!u(V)||!(N||v.forEach&&!p((function(){(new V).entries().next()})))))_=n.getConstructor(t,e,b,g),l.enable();else if(i(e,!0)){var x=new _,w=x[g](N?{}:-0,1)!=x,B=p((function(){x.has(1)})),L=f((function(e){new V(e)})),S=!N&&p((function(){for(var e=new V,t=5;t--;)e[g](t,t);return!e.has(-0)}));L||((_=t((function(e,t){s(e,v);var n=C(new V,e,_);return t!=undefined&&d(t,n[g],{that:n,AS_ENTRIES:b}),n}))).prototype=v,v.constructor=_),(B||S)&&(k("delete"),k("has"),b&&k("get")),(S||w)&&k(g),N&&v.clear&&delete v.clear}return y[e]=_,o({global:!0,constructor:!0,forced:_!=V},y),h(_,e),N||n.setStrong(_,e,b),_}},35155:function(e,t,n){"use strict";var o=n(77807),r=n(75379),a=n(12488),i=n(92723);e.exports=function(e,t,n){for(var c=r(t),l=i.f,d=a.f,s=0;s"+l+""}},92413:function(e,t,n){"use strict";var o=n(80936).IteratorPrototype,r=n(48525),a=n(20471),i=n(93182),c=n(53481),l=function(){return this};e.exports=function(e,t,n,d){var s=t+" Iterator";return e.prototype=r(o,{next:a(+!d,n)}),i(e,s,!1,!0),c[s]=l,e}},87229:function(e,t,n){"use strict";var o=n(77849),r=n(92723),a=n(20471);e.exports=o?function(e,t,n){return r.f(e,t,a(1,n))}:function(e,t,n){return e[t]=n,e}},20471:function(e){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},61154:function(e,t,n){"use strict";var o=n(23986),r=n(92723),a=n(20471);e.exports=function(e,t,n){var i=o(t);i in e?r.f(e,i,a(0,n)):e[i]=n}},36849:function(e,t,n){"use strict";var o=n(90655),r=n(39125),a=n(79408).start,i=RangeError,c=Math.abs,l=Date.prototype,d=l.toISOString,s=o(l.getTime),u=o(l.getUTCDate),m=o(l.getUTCFullYear),p=o(l.getUTCHours),f=o(l.getUTCMilliseconds),h=o(l.getUTCMinutes),C=o(l.getUTCMonth),b=o(l.getUTCSeconds);e.exports=r((function(){return"0385-07-25T07:06:39.999Z"!=d.call(new Date(-50000000000001))}))||!r((function(){d.call(new Date(NaN))}))?function(){if(!isFinite(s(this)))throw i("Invalid time value");var e=this,t=m(e),n=f(e),o=t<0?"-":t>9999?"+":"";return o+a(c(t),o?6:4,0)+"-"+a(C(e)+1,2,0)+"-"+a(u(e),2,0)+"T"+a(p(e),2,0)+":"+a(h(e),2,0)+":"+a(b(e),2,0)+"."+a(n,3,0)+"Z"}:d},81990:function(e,t,n){"use strict";var o=n(65522),r=n(2118),a=TypeError;e.exports=function(e){if(o(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw a("Incorrect hint");return r(this,e)}},66384:function(e,t,n){"use strict";var o=n(28859),r=n(92723);e.exports=function(e,t,n){return n.get&&o(n.get,t,{getter:!0}),n.set&&o(n.set,t,{setter:!0}),r.f(e,t,n)}},73e3:function(e,t,n){"use strict";var o=n(45744),r=n(92723),a=n(28859),i=n(58962);e.exports=function(e,t,n,c){c||(c={});var l=c.enumerable,d=c.name!==undefined?c.name:t;return o(n)&&a(n,d,c),c.global?l?e[t]=n:i(t,n):(c.unsafe?e[t]&&(l=!0):delete e[t],l?e[t]=n:r.f(e,t,{value:n,enumerable:!1,configurable:!c.nonConfigurable,writable:!c.nonWritable})),e}},60495:function(e,t,n){"use strict";var o=n(73e3);e.exports=function(e,t,n){for(var r in t)o(e,r,t[r],n);return e}},58962:function(e,t,n){"use strict";var o=n(61770),r=Object.defineProperty;e.exports=function(e,t){try{r(o,e,{value:t,configurable:!0,writable:!0})}catch(n){o[e]=t}return t}},11335:function(e,t,n){"use strict";var o=n(59450),r=n(76348),a=n(37249),i=n(82429),c=n(45744),l=n(92413),d=n(56997),s=n(44958),u=n(93182),m=n(87229),p=n(73e3),f=n(43741),h=n(53481),C=n(80936),b=i.PROPER,N=i.CONFIGURABLE,g=C.IteratorPrototype,V=C.BUGGY_SAFARI_ITERATORS,v=f("iterator"),_="keys",y="values",k="entries",x=function(){return this};e.exports=function(e,t,n,i,f,C,w){l(n,t,i);var B,L,S,I=function(e){if(e===f&&P)return P;if(!V&&e in M)return M[e];switch(e){case _:case y:case k:return function(){return new n(this,e)}}return function(){return new n(this)}},T=t+" Iterator",A=!1,M=e.prototype,E=M[v]||M["@@iterator"]||f&&M[f],P=!V&&E||I(f),O="Array"==t&&M.entries||E;if(O&&(B=d(O.call(new e)))!==Object.prototype&&B.next&&(a||d(B)===g||(s?s(B,g):c(B[v])||p(B,v,x)),u(B,T,!0,!0),a&&(h[T]=x)),b&&f==y&&E&&E.name!==y&&(!a&&N?m(M,"name",y):(A=!0,P=function(){return r(E,this)})),f)if(L={values:I(y),keys:C?P:I(_),entries:I(k)},w)for(S in L)(V||A||!(S in M))&&p(M,S,L[S]);else o({target:t,proto:!0,forced:V||A},L);return a&&!w||M[v]===P||p(M,v,P,{name:f}),h[t]=P,L}},89604:function(e,t,n){"use strict";var o=n(62660),r=n(77807),a=n(68438),i=n(92723).f;e.exports=function(e){var t=o.Symbol||(o.Symbol={});r(t,e)||i(t,e,{value:a.f(e)})}},33099:function(e,t,n){"use strict";var o=n(56279),r=TypeError;e.exports=function(e,t){if(!delete e[t])throw r("Cannot delete property "+o(t)+" of "+o(e))}},77849:function(e,t,n){"use strict";var o=n(39125);e.exports=!o((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},50842:function(e,t,n){"use strict";var o=n(61770),r=n(5484),a=o.document,i=r(a)&&r(a.createElement);e.exports=function(e){return i?a.createElement(e):{}}},97989:function(e){"use strict";var t=TypeError;e.exports=function(e){if(e>9007199254740991)throw t("Maximum allowed index exceeded");return e}},13811:function(e,t,n){"use strict";var o=n(42630).match(/firefox\/(\d+)/i);e.exports=!!o&&+o[1]},15904:function(e){"use strict";e.exports="object"==typeof window&&"object"!=typeof Deno},86936:function(e,t,n){"use strict";var o=n(42630);e.exports=/MSIE|Trident/.test(o)},48715:function(e,t,n){"use strict";var o=n(42630),r=n(61770);e.exports=/ipad|iphone|ipod/i.test(o)&&r.Pebble!==undefined},25515:function(e,t,n){"use strict";var o=n(42630);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(o)},67745:function(e,t,n){"use strict";var o=n(61496),r=n(61770);e.exports="process"==o(r.process)},35016:function(e,t,n){"use strict";var o=n(42630);e.exports=/web0s(?!.*chrome)/i.test(o)},42630:function(e,t,n){"use strict";var o=n(54965);e.exports=o("navigator","userAgent")||""},64279:function(e,t,n){"use strict";var o,r,a=n(61770),i=n(42630),c=a.process,l=a.Deno,d=c&&c.versions||l&&l.version,s=d&&d.v8;s&&(r=(o=s.split("."))[0]>0&&o[0]<4?1:+(o[0]+o[1])),!r&&i&&(!(o=i.match(/Edge\/(\d+)/))||o[1]>=74)&&(o=i.match(/Chrome\/(\d+)/))&&(r=+o[1]),e.exports=r},86778:function(e,t,n){"use strict";var o=n(42630).match(/AppleWebKit\/(\d+)\./);e.exports=!!o&&+o[1]},59096:function(e){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},59450:function(e,t,n){"use strict";var o=n(61770),r=n(12488).f,a=n(87229),i=n(73e3),c=n(58962),l=n(35155),d=n(16851);e.exports=function(e,t){var n,s,u,m,p,f=e.target,h=e.global,C=e.stat;if(n=h?o:C?o[f]||c(f,{}):(o[f]||{}).prototype)for(s in t){if(m=t[s],u=e.dontCallGetSet?(p=r(n,s))&&p.value:n[s],!d(h?s:f+(C?".":"#")+s,e.forced)&&u!==undefined){if(typeof m==typeof u)continue;l(m,u)}(e.sham||u&&u.sham)&&a(m,"sham",!0),i(n,s,m,e)}}},39125:function(e){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},6531:function(e,t,n){"use strict";n(50044);var o=n(90655),r=n(73e3),a=n(50174),i=n(39125),c=n(43741),l=n(87229),d=c("species"),s=RegExp.prototype;e.exports=function(e,t,n,u){var m=c(e),p=!i((function(){var t={};return t[m]=function(){return 7},7!=""[e](t)})),f=p&&!i((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[d]=function(){return n},n.flags="",n[m]=/./[m]),n.exec=function(){return t=!0,null},n[m](""),!t}));if(!p||!f||n){var h=o(/./[m]),C=t(m,""[e],(function(e,t,n,r,i){var c=o(e),l=t.exec;return l===a||l===s.exec?p&&!i?{done:!0,value:h(t,n,r)}:{done:!0,value:c(n,t,r)}:{done:!1}}));r(String.prototype,e,C[0]),r(s,m,C[1])}u&&l(s[m],"sham",!0)}},23507:function(e,t,n){"use strict";var o=n(98037),r=n(10950),a=n(97989),i=n(9341);e.exports=function c(e,t,n,l,d,s,u,m){for(var p,f=d,h=0,C=!!u&&i(u,m);h0&&o(p)?f=c(e,t,p,r(p),f,s-1)-1:(a(f+1),e[f]=p),f++),h++;return f}},57724:function(e,t,n){"use strict";var o=n(39125);e.exports=!o((function(){return Object.isExtensible(Object.preventExtensions({}))}))},10261:function(e,t,n){"use strict";var o=n(14687),r=Function.prototype,a=r.apply,i=r.call;e.exports="object"==typeof Reflect&&Reflect.apply||(o?i.bind(a):function(){return i.apply(a,arguments)})},9341:function(e,t,n){"use strict";var o=n(90655),r=n(7696),a=n(14687),i=o(o.bind);e.exports=function(e,t){return r(e),t===undefined?e:a?i(e,t):function(){return e.apply(t,arguments)}}},14687:function(e,t,n){"use strict";var o=n(39125);e.exports=!o((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},38349:function(e,t,n){"use strict";var o=n(90655),r=n(7696),a=n(5484),i=n(77807),c=n(53898),l=n(14687),d=Function,s=o([].concat),u=o([].join),m={},p=function(e,t,n){if(!i(m,t)){for(var o=[],r=0;r]*>)/g,s=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,t,n,o,u,m){var p=n+e.length,f=o.length,h=s;return u!==undefined&&(u=r(u),h=d),c(m,h,(function(r,c){var d;switch(i(c,0)){case"$":return"$";case"&":return e;case"`":return l(t,0,n);case"'":return l(t,p);case"<":d=u[l(c,1,-1)];break;default:var s=+c;if(0===s)return r;if(s>f){var m=a(s/10);return 0===m?r:m<=f?o[m-1]===undefined?i(c,1):o[m-1]+i(c,1):r}d=o[s-1]}return d===undefined?"":d}))}},61770:function(e,t,n){"use strict";var o=function(e){return e&&e.Math==Math&&e};e.exports=o("object"==typeof globalThis&&globalThis)||o("object"==typeof window&&window)||o("object"==typeof self&&self)||o("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},77807:function(e,t,n){"use strict";var o=n(90655),r=n(73502),a=o({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return a(r(e),t)}},31645:function(e){"use strict";e.exports={}},66791:function(e,t,n){"use strict";var o=n(61770);e.exports=function(e,t){var n=o.console;n&&n.error&&(1==arguments.length?n.error(e):n.error(e,t))}},29093:function(e,t,n){"use strict";var o=n(54965);e.exports=o("document","documentElement")},17041:function(e,t,n){"use strict";var o=n(77849),r=n(39125),a=n(50842);e.exports=!o&&!r((function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},29209:function(e){"use strict";var t=Array,n=Math.abs,o=Math.pow,r=Math.floor,a=Math.log,i=Math.LN2;e.exports={pack:function(e,c,l){var d,s,u,m=t(l),p=8*l-c-1,f=(1<>1,C=23===c?o(2,-24)-o(2,-77):0,b=e<0||0===e&&1/e<0?1:0,N=0;for((e=n(e))!=e||e===Infinity?(s=e!=e?1:0,d=f):(d=r(a(e)/i),e*(u=o(2,-d))<1&&(d--,u*=2),(e+=d+h>=1?C/u:C*o(2,1-h))*u>=2&&(d++,u/=2),d+h>=f?(s=0,d=f):d+h>=1?(s=(e*u-1)*o(2,c),d+=h):(s=e*o(2,h-1)*o(2,c),d=0));c>=8;)m[N++]=255&s,s/=256,c-=8;for(d=d<0;)m[N++]=255&d,d/=256,p-=8;return m[--N]|=128*b,m},unpack:function(e,t){var n,r=e.length,a=8*r-t-1,i=(1<>1,l=a-7,d=r-1,s=e[d--],u=127&s;for(s>>=7;l>0;)u=256*u+e[d--],l-=8;for(n=u&(1<<-l)-1,u>>=-l,l+=t;l>0;)n=256*n+e[d--],l-=8;if(0===u)u=1-c;else{if(u===i)return n?NaN:s?-Infinity:Infinity;n+=o(2,t),u-=c}return(s?-1:1)*n*o(2,u-t)}}},83609:function(e,t,n){"use strict";var o=n(90655),r=n(39125),a=n(61496),i=Object,c=o("".split);e.exports=r((function(){return!i("z").propertyIsEnumerable(0)}))?function(e){return"String"==a(e)?c(e,""):i(e)}:i},75121:function(e,t,n){"use strict";var o=n(45744),r=n(5484),a=n(44958);e.exports=function(e,t,n){var i,c;return a&&o(i=t.constructor)&&i!==n&&r(c=i.prototype)&&c!==n.prototype&&a(e,c),e}},44790:function(e,t,n){"use strict";var o=n(90655),r=n(45744),a=n(42878),i=o(Function.toString);r(a.inspectSource)||(a.inspectSource=function(e){return i(e)}),e.exports=a.inspectSource},49632:function(e,t,n){"use strict";var o=n(59450),r=n(90655),a=n(31645),i=n(5484),c=n(77807),l=n(92723).f,d=n(94600),s=n(25586),u=n(65067),m=n(8220),p=n(57724),f=!1,h=m("meta"),C=0,b=function(e){l(e,h,{value:{objectID:"O"+C++,weakData:{}}})},N=e.exports={enable:function(){N.enable=function(){},f=!0;var e=d.f,t=r([].splice),n={};n[h]=1,e(n).length&&(d.f=function(n){for(var o=e(n),r=0,a=o.length;rN;N++)if((V=S(e[N]))&&d(h,V))return V;return new f(!1)}C=s(e,b)}for(v=C.next;!(_=r(v,C)).done;){try{V=S(_.value)}catch(I){m(C,"throw",I)}if("object"==typeof V&&V&&d(h,V))return V}return new f(!1)}},80261:function(e,t,n){"use strict";var o=n(76348),r=n(65522),a=n(36750);e.exports=function(e,t,n){var i,c;r(e);try{if(!(i=a(e,"return"))){if("throw"===t)throw n;return n}i=o(i,e)}catch(l){c=!0,i=l}if("throw"===t)throw n;if(c)throw i;return r(i),n}},80936:function(e,t,n){"use strict";var o,r,a,i=n(39125),c=n(45744),l=n(48525),d=n(56997),s=n(73e3),u=n(43741),m=n(37249),p=u("iterator"),f=!1;[].keys&&("next"in(a=[].keys())?(r=d(d(a)))!==Object.prototype&&(o=r):f=!0),o==undefined||i((function(){var e={};return o[p].call(e)!==e}))?o={}:m&&(o=l(o)),c(o[p])||s(o,p,(function(){return this})),e.exports={IteratorPrototype:o,BUGGY_SAFARI_ITERATORS:f}},53481:function(e){"use strict";e.exports={}},10950:function(e,t,n){"use strict";var o=n(87543);e.exports=function(e){return o(e.length)}},28859:function(e,t,n){"use strict";var o=n(39125),r=n(45744),a=n(77807),i=n(77849),c=n(82429).CONFIGURABLE,l=n(44790),d=n(48797),s=d.enforce,u=d.get,m=Object.defineProperty,p=i&&!o((function(){return 8!==m((function(){}),"length",{value:8}).length})),f=String(String).split("String"),h=e.exports=function(e,t,n){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!a(e,"name")||c&&e.name!==t)&&m(e,"name",{value:t,configurable:!0}),p&&n&&a(n,"arity")&&e.length!==n.arity&&m(e,"length",{value:n.arity});try{n&&a(n,"constructor")&&n.constructor?i&&m(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=undefined)}catch(r){}var o=s(e);return a(o,"source")||(o.source=f.join("string"==typeof t?t:"")),e};Function.prototype.toString=h((function(){return r(this)&&u(this).source||l(this)}),"toString")},73346:function(e){"use strict";var t=Math.expm1,n=Math.exp;e.exports=!t||t(10)>22025.465794806718||t(10)<22025.465794806718||-2e-17!=t(-2e-17)?function(e){var t=+e;return 0==t?t:t>-1e-6&&t<1e-6?t+t*t/2:n(t)-1}:t},92647:function(e,t,n){"use strict";var o=n(61303),r=Math.abs,a=Math.pow,i=a(2,-52),c=a(2,-23),l=a(2,127)*(2-c),d=a(2,-126);e.exports=Math.fround||function(e){var t,n,a=+e,s=r(a),u=o(a);return sl||n!=n?u*Infinity:u*n}},12153:function(e){"use strict";var t=Math.log,n=Math.LOG10E;e.exports=Math.log10||function(e){return t(e)*n}},28010:function(e){"use strict";var t=Math.log;e.exports=Math.log1p||function(e){var n=+e;return n>-1e-8&&n<1e-8?n-n*n/2:t(1+n)}},61303:function(e){"use strict";e.exports=Math.sign||function(e){var t=+e;return 0==t||t!=t?t:t<0?-1:1}},9275:function(e){"use strict";var t=Math.ceil,n=Math.floor;e.exports=Math.trunc||function(e){var o=+e;return(o>0?n:t)(o)}},34063:function(e,t,n){"use strict";var o,r,a,i,c,l,d,s,u=n(61770),m=n(9341),p=n(12488).f,f=n(61777).set,h=n(25515),C=n(48715),b=n(35016),N=n(67745),g=u.MutationObserver||u.WebKitMutationObserver,V=u.document,v=u.process,_=u.Promise,y=p(u,"queueMicrotask"),k=y&&y.value;k||(o=function(){var e,t;for(N&&(e=v.domain)&&e.exit();r;){t=r.fn,r=r.next;try{t()}catch(n){throw r?i():a=undefined,n}}a=undefined,e&&e.enter()},h||N||b||!g||!V?!C&&_&&_.resolve?((d=_.resolve(undefined)).constructor=_,s=m(d.then,d),i=function(){s(o)}):N?i=function(){v.nextTick(o)}:(f=m(f,u),i=function(){f(o)}):(c=!0,l=V.createTextNode(""),new g(o).observe(l,{characterData:!0}),i=function(){l.data=c=!c})),e.exports=k||function(e){var t={fn:e,next:undefined};a&&(a.next=t),r||(r=t,i()),a=t}},58822:function(e,t,n){"use strict";var o=n(67581);e.exports=o&&!!Symbol["for"]&&!!Symbol.keyFor},67581:function(e,t,n){"use strict";var o=n(64279),r=n(39125);e.exports=!!Object.getOwnPropertySymbols&&!r((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&o&&o<41}))},37494:function(e,t,n){"use strict";var o=n(61770),r=n(45744),a=n(44790),i=o.WeakMap;e.exports=r(i)&&/native code/.test(a(i))},16002:function(e,t,n){"use strict";var o=n(7696),r=function(e){var t,n;this.promise=new e((function(e,o){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=o})),this.resolve=o(t),this.reject=o(n)};e.exports.f=function(e){return new r(e)}},96794:function(e,t,n){"use strict";var o=n(71857),r=TypeError;e.exports=function(e){if(o(e))throw r("The method doesn't accept regular expressions");return e}},46329:function(e,t,n){"use strict";var o=n(61770).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&o(e)}},90119:function(e,t,n){"use strict";var o=n(61770),r=n(39125),a=n(90655),i=n(95372),c=n(56404).trim,l=n(93966),d=a("".charAt),s=o.parseFloat,u=o.Symbol,m=u&&u.iterator,p=1/s(l+"-0")!=-Infinity||m&&!r((function(){s(Object(m))}));e.exports=p?function(e){var t=c(i(e)),n=s(t);return 0===n&&"-"==d(t,0)?-0:n}:s},80280:function(e,t,n){"use strict";var o=n(61770),r=n(39125),a=n(90655),i=n(95372),c=n(56404).trim,l=n(93966),d=o.parseInt,s=o.Symbol,u=s&&s.iterator,m=/^[+-]?0x/i,p=a(m.exec),f=8!==d(l+"08")||22!==d(l+"0x16")||u&&!r((function(){d(Object(u))}));e.exports=f?function(e,t){var n=c(i(e));return d(n,t>>>0||(p(m,n)?16:10))}:d},35350:function(e,t,n){"use strict";var o=n(77849),r=n(90655),a=n(76348),i=n(39125),c=n(21417),l=n(41543),d=n(89328),s=n(73502),u=n(83609),m=Object.assign,p=Object.defineProperty,f=r([].concat);e.exports=!m||i((function(){if(o&&1!==m({b:1},m(p({},"a",{enumerable:!0,get:function(){p(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach((function(e){t[e]=e})),7!=m({},e)[n]||c(m({},t)).join("")!=r}))?function(e,t){for(var n=s(e),r=arguments.length,i=1,m=l.f,p=d.f;r>i;)for(var h,C=u(arguments[i++]),b=m?f(c(C),m(C)):c(C),N=b.length,g=0;N>g;)h=b[g++],o&&!a(p,C,h)||(n[h]=C[h]);return n}:m},48525:function(e,t,n){"use strict";var o,r=n(65522),a=n(86328),i=n(59096),c=n(31645),l=n(29093),d=n(50842),s=n(95541),u=s("IE_PROTO"),m=function(){},p=function(e){return"