From 3301abd178493e6edb61cce3143030e92e270efd Mon Sep 17 00:00:00 2001 From: jamesbrq Date: Mon, 30 Oct 2023 18:19:54 -0400 Subject: [PATCH] Update to Beta ver. --- Client.py | 107 +++++--- Items.py | 250 +++++++++--------- Locations.py | 6 +- .../__pycache__/LocationName.cpython-311.pyc | Bin 44056 -> 44138 bytes Options.py | 2 +- Rom.py | 14 +- Rules.py | 4 +- __init__.py | 2 +- __pycache__/Client.cpython-311.pyc | Bin 7448 -> 13246 bytes __pycache__/Items.cpython-311.pyc | Bin 15471 -> 16072 bytes __pycache__/Locations.cpython-311.pyc | Bin 66750 -> 69554 bytes __pycache__/Options.cpython-311.pyc | Bin 6434 -> 8244 bytes __pycache__/Regions.cpython-311.pyc | Bin 17991 -> 17987 bytes __pycache__/Rom.cpython-311.pyc | Bin 33347 -> 34104 bytes __pycache__/Rules.cpython-311.pyc | Bin 29066 -> 29333 bytes __pycache__/StateLogic.cpython-311.pyc | Bin 6515 -> 7161 bytes __pycache__/__init__.cpython-311.pyc | Bin 9366 -> 9731 bytes data/basepatch.bsdiff | Bin 16146 -> 16192 bytes 18 files changed, 211 insertions(+), 174 deletions(-) diff --git a/Client.py b/Client.py index 8a2c93b..18a6a09 100644 --- a/Client.py +++ b/Client.py @@ -1,11 +1,14 @@ -from typing import TYPE_CHECKING, Optional, Dict, Set +from typing import TYPE_CHECKING, Optional, Dict, Set, List import struct +from BaseClasses import MultiWorld from NetUtils import ClientStatus from .Locations import roomCount, nonBlock, beanstones, roomException, shop, badge, pants from .Items import items_by_id, ItemData +from collections import defaultdict import sys import logging import math +import asyncio # This imports the bizhawk apworld if it's not already imported. This code block should be removed for a PR. if "worlds._bizhawk" not in sys.modules: @@ -42,7 +45,9 @@ class MLSSClient(BizHawkClient): local_checked_locations: Set[int] goal_flag: int rom_slot_name: Optional[str] + player: int player_name: Optional[str] + checked_flags: dict[int, list] = {} def __init__(self) -> None: super().__init__() @@ -50,6 +55,7 @@ def __init__(self) -> None: self.local_set_events = {} self.local_found_key_items = {} self.rom_slot_name = None + self.lock = asyncio.Lock async def validate_rom(self, ctx: BizHawkClientContext) -> bool: from CommonClient import logger @@ -65,7 +71,6 @@ async def validate_rom(self, ctx: BizHawkClientContext) -> bool: "You need to generate a patch file and use it to create a patched ROM.") return False if rom_name != "MARIO&LUIGIUAP": - logger.info(rom_name) logger.info("ERROR: The patch file used to create this ROM is not compatible with " "this client. Double check your client version against the version being " "used by the generator.") @@ -81,9 +86,14 @@ async def validate_rom(self, ctx: BizHawkClientContext) -> bool: ctx.watcher_timeout = 0.125 self.rom_slot_name = rom_name name_bytes = ((await bizhawk.read(ctx.bizhawk_ctx, [(0xB0, 16, "ROM")]))[0]) + player = ((await bizhawk.read(ctx.bizhawk_ctx, [(0xAF, 1, "ROM")]))[0][0]) + self.player = player + 1 name = bytes([byte for byte in name_bytes if byte != 0]).decode("UTF-8") self.player_name = name + for i in range(59): + self.checked_flags[i] = [9, 10] + return True async def set_auth(self, ctx: BizHawkClientContext) -> None: @@ -93,17 +103,16 @@ async def game_watcher(self, ctx: BizHawkClientContext) -> None: from CommonClient import logger try: read_state = await bizhawk.read(ctx.bizhawk_ctx, [(0x4564, 59, "EWRAM"), - (0x2330, 2, "IWRAM"), (0x3FE0, 1, "IWRAM"), (0x3FE4, 1, "IWRAM"), (0x304B, 1, "EWRAM"), (0x304C, 4, "EWRAM"), (0x3058, 6, "EWRAM"), (0x4808, 2, "EWRAM")]) + (0x2330, 2, "IWRAM"), (0x3FE0, 1, "IWRAM"), (0x3FE4, 1, "IWRAM"), (0x304B, 1, "EWRAM"), (0x304C, 4, "EWRAM"), (0x4800, 6, "EWRAM"), (0x4808, 2, "EWRAM"), (0x4407, 1, "EWRAM")]) flags = read_state[0] room = (read_state[1][1] << 8) + read_state[1][0] shop_init = read_state[2][0] - shop_scroll = read_state[3][0] + shop_scroll = read_state[3][0] & 0x1F is_buy = (read_state[4][0] != 0) shop_address = (struct.unpack(' None: locs_to_send = set() location = 0 i = 0 - for item in ctx.items_received: - if i < received_index: - i += 1 - continue - item_data = items_by_id[item.item] - b = await bizhawk.read(ctx.bizhawk_ctx, [(0x3057, 1, "EWRAM")]) - if b[0][0] == 0: - await bizhawk.write(ctx.bizhawk_ctx, [(0x3057, [id_to_RAM(item_data.itemID)], "EWRAM"), (0x4808, [(i + 1) // 0x100, (i + 1) % 0x100], "EWRAM")]) - else: - break + # Checking shop purchases if is_buy: - is_buy = False if shop_address != 0x3c0618 and shop_address != 0x3c0684: location = shop[shop_address][shop_scroll] else: if shop_init & 0x1 != 0: - location = badge[shop_address][shop_scroll & 0x1F] + location = badge[shop_address][shop_scroll] else: - location = pants[shop_address][shop_scroll & 0x1F] + location = pants[shop_address][shop_scroll] + if location in ctx.server_locations: + locs_to_send.add(location) await bizhawk.write(ctx.bizhawk_ctx, [(0x304B, [0x0], "EWRAM")]) - if location in ctx.server_locations: - locs_to_send.add(location) + # Checking flags that aren't digspots or blocks + for item in nonBlock: + if is_buy: + break + address, mask, location = item + flag_bytes = await bizhawk.read(ctx.bizhawk_ctx, [(address, 1, "EWRAM"), (0x4800, 6, "EWRAM")]) + flag_byte = flag_bytes[0][0] + backup_logo = bytes([byte for byte in flag_bytes[1] if byte < 0x70]).decode("UTF-8") + if backup_logo != "MLSSAP": + return + if flag_byte & mask != 0: + if location in roomException: + if roomException[location] == room: + exception = True + else: + exception = False + else: + exception = True + if location in ctx.server_locations and exception: + locs_to_send.add(location) # Check for set location flags. for byte_i, byte in enumerate(bytearray(flags)): - for i in range(8): - and_value = 1 << i + if is_buy: + break + for j in range(8): + if j in self.checked_flags[byte_i]: + continue + and_value = 1 << j if byte & and_value != 0: - flag_id = byte_i * 8 + (i + 1) + flag_id = byte_i * 8 + (j + 1) room, item = find_key(roomCount, flag_id) pointer_arr = await bizhawk.read(ctx.bizhawk_ctx, [(ROOM_ARRAY_POINTER + ((room - 1) * 4), 4, "ROM")]) @@ -157,22 +180,30 @@ async def game_watcher(self, ctx: BizHawkClientContext) -> None: pointer = key break if pointer in ctx.server_locations: + self.checked_flags[byte_i] += [j] locs_to_send.add(pointer) - for item in nonBlock: - address, mask, location = item - flag_bytes = await bizhawk.read(ctx.bizhawk_ctx, [(address, 1, "EWRAM")]) - flag_byte = flag_bytes[0][0] - if flag_byte & mask != 0: - if location in roomException: - if roomException[location] == room: - exception = True - else: - exception = False - else: - exception = True - if location in ctx.server_locations and exception: - locs_to_send.add(location) + for item in ctx.items_received: + if is_buy: + break + if i < received_index: + i += 1 + continue + if self.player == item.player: + i += 1 + continue + item_data = items_by_id[item.item] + b = await bizhawk.read(ctx.bizhawk_ctx, [(0x3057, 1, "EWRAM")]) + if b[0][0] == 0: + await bizhawk.write(ctx.bizhawk_ctx, [(0x3057, [id_to_RAM(item_data.itemID)], "EWRAM"), (0x4808, [(i + 1) // 0x100, (i + 1) % 0x100], "EWRAM")]) + else: + break + + if not ctx.finished_game and cackletta != 0: + await ctx.send_msgs([{ + "cmd": "StatusUpdate", + "status": ClientStatus.CLIENT_GOAL + }]) # Send locations if there are any to send. if locs_to_send != self.local_checked_locations: diff --git a/Items.py b/Items.py index a343ed4..d51ba56 100644 --- a/Items.py +++ b/Items.py @@ -32,131 +32,131 @@ class MLSSItem(Item): ItemData(77771015, "Golden Mushroom", ItemClassification.useful, 0x18), ItemData(77771016, "Refreshing Herb", ItemClassification.filler, 0x19), ItemData(77771017, "Red Pepper", ItemClassification.filler, 0x1A), - ItemData(77771017, "Green Pepper", ItemClassification.filler, 0x1B), - ItemData(77771018, "Hoo Bean", ItemClassification.filler, 0x1D), - ItemData(77771019, "Chuckle Bean", ItemClassification.filler, 0x1E), - ItemData(77771020, "Woohoo blend", ItemClassification.useful, 0x20), - ItemData(77771021, "Hoohoo Blend", ItemClassification.useful, 0x21), - ItemData(77771022, "Chuckle Blend", ItemClassification.useful, 0x22), - ItemData(77771023, "Teehee Blend", ItemClassification.useful, 0x23), - ItemData(77771024, "Hoolumbian", ItemClassification.useful, 0x24), - ItemData(77771025, "Chuckoccino", ItemClassification.useful, 0x25), - ItemData(77771026, "Teeheespresso", ItemClassification.useful, 0x26), - ItemData(77771027, "Peasley's Rose", ItemClassification.progression, 0x31), - ItemData(77771028, "Beanbean Brooch", ItemClassification.progression, 0x32), - ItemData(77771029, "Red Goblet", ItemClassification.progression, 0x33), - ItemData(77771030, "Green Goblet", ItemClassification.progression, 0x34), - ItemData(77771031, "Red Chuckola Fruit", ItemClassification.progression, 0x35), - ItemData(77771032, "White Chuckola Fruit", ItemClassification.progression, 0x36), - ItemData(77771033, "Purple Chuckola Fruit", ItemClassification.progression, 0x37), - ItemData(77771034, "Hammers", ItemClassification.progression, 0x38), - ItemData(77771035, "Firebrand", ItemClassification.progression, 0x39), - ItemData(77771036, "Thunder Hand", ItemClassification.progression, 0x3A), - ItemData(77771037, "Membership Card", ItemClassification.progression, 0x40), - ItemData(77771038, "Winkle Card", ItemClassification.progression, 0x41), - ItemData(77771039, "Peach's Extra Dress", ItemClassification.progression, 0x42), - ItemData(77771040, "Fake Beanstar", ItemClassification.progression, 0x43), - ItemData(77771041, "Red Pearl Bean", ItemClassification.progression, 0x45), - ItemData(77771042, "Green Pearl Bean", ItemClassification.progression, 0x46), - ItemData(77771043, "Bean Fruit 1", ItemClassification.progression_skip_balancing, 0x47), - ItemData(77771044, "Bean Fruit 2", ItemClassification.progression_skip_balancing, 0x50), - ItemData(77771045, "Bean Fruit 3", ItemClassification.progression_skip_balancing, 0x51), - ItemData(77771046, "Bean Fruit 4", ItemClassification.progression_skip_balancing, 0x52), - ItemData(77771047, "Bean Fruit 5", ItemClassification.progression_skip_balancing, 0x53), - ItemData(77771048, "Bean Fruit 6", ItemClassification.progression_skip_balancing, 0x54), - ItemData(77771049, "Bean Fruit 7", ItemClassification.progression_skip_balancing, 0x55), - ItemData(77771050, "Blue Neon Egg", ItemClassification.progression, 0x56), - ItemData(77771051, "Red Neon Egg", ItemClassification.progression, 0x57), - ItemData(77771052, "Green Neon Egg", ItemClassification.progression, 0x60), - ItemData(77771053, "Yellow Neon Egg", ItemClassification.progression, 0x61), - ItemData(77771054, "Purple Neon Egg", ItemClassification.progression, 0x62), - ItemData(77771055, "Orange Neon Egg", ItemClassification.progression, 0x63), - ItemData(77771056, "Azure Neon Egg", ItemClassification.progression, 0x64), - ItemData(77771057, "Beanstar Piece 1", ItemClassification.progression, 0x65), - ItemData(77771058, "Beanstar Piece 2", ItemClassification.progression, 0x66), - ItemData(77771059, "Beanstar Piece 3", ItemClassification.progression, 0x67), - ItemData(77771060, "Beanstar Piece 4", ItemClassification.progression, 0x70), - ItemData(77771061, "Spangle", ItemClassification.progression, 0x72), - ItemData(77771062, "Beanlet 1", ItemClassification.useful, 0x73), - ItemData(77771063, "Beanlet 2", ItemClassification.useful, 0x74), - ItemData(77771064, "Beanlet 3", ItemClassification.useful, 0x75), - ItemData(77771065, "Beanlet 4", ItemClassification.useful, 0x76), - ItemData(77771066, "Beanlet 5", ItemClassification.useful, 0x77), - ItemData(77771067, "Beanstone 1", ItemClassification.useful, 0x80), - ItemData(77771068, "Beanstone 2", ItemClassification.useful, 0x81), - ItemData(77771069, "Beanstone 3", ItemClassification.useful, 0x82), - ItemData(77771070, "Beanstone 4", ItemClassification.useful, 0x83), - ItemData(77771071, "Beanstone 5", ItemClassification.useful, 0x84), - ItemData(77771072, "Beanstone 6", ItemClassification.useful, 0x85), - ItemData(77771073, "Beanstone 7", ItemClassification.useful, 0x86), - ItemData(77771074, "Beanstone 8", ItemClassification.useful, 0x87), - ItemData(77771075, "Beanstone 9", ItemClassification.useful, 0x90), - ItemData(77771076, "Beanstone 777710", ItemClassification.useful, 0x91), - ItemData(77771077, "Secret Scroll 1", ItemClassification.useful, 0x92), - ItemData(77771078, "Secret Scroll 2", ItemClassification.useful, 0x93), - ItemData(77771079, "Castle Badge", ItemClassification.useful, 0x9F), - ItemData(77771080, "Pea Badge", ItemClassification.useful, 0xA0), - ItemData(77771081, "Bean B. Badge", ItemClassification.useful, 0xA1), - ItemData(77771082, "Counter Badge", ItemClassification.useful, 0xA2), - ItemData(77771083, "Charity Badge", ItemClassification.useful, 0xA3), - ItemData(77771084, "Bros. Badge", ItemClassification.useful, 0xA4), - ItemData(77771085, "Miracle Badge", ItemClassification.useful, 0xA5), - ItemData(77771086, "Ohoracle Badge", ItemClassification.useful, 0xA6), - ItemData(77771087, "Mush Badge", ItemClassification.useful, 0xA7), - ItemData(77771088, "Mari-Lui Badge", ItemClassification.useful, 0xA8), - ItemData(77771089, "Muscle Badge", ItemClassification.useful, 0xA9), - ItemData(77771090, "Spiny Badge AA", ItemClassification.useful, 0xAA), - ItemData(77771091, "Mush Badge A", ItemClassification.useful, 0xAB), - ItemData(77771092, "Grab Badge", ItemClassification.useful, 0xAC), - ItemData(77771093, "Mush Badge AA", ItemClassification.useful, 0xAD), - ItemData(77771094, "Power Badge", ItemClassification.useful, 0xAE), - ItemData(77771095, "Wonder Badge", ItemClassification.useful, 0xAF), - ItemData(77771096, "Beauty Badge", ItemClassification.useful, 0xB0), - ItemData(77771097, "Salvage Badge", ItemClassification.useful, 0xB1), - ItemData(77771098, "Oh-Pah Badge", ItemClassification.useful, 0xB2), - ItemData(77771099, "Brilliant Badge", ItemClassification.useful, 0xB3), - ItemData(77771100, "Sarge Badge", ItemClassification.useful, 0xB4), - ItemData(77771101, "General Badge", ItemClassification.useful, 0xB5), - ItemData(77771102, "Tank Badge", ItemClassification.useful, 0xB6), - ItemData(77771103, "Bros. Rock", ItemClassification.useful, 0xBD), - ItemData(77771104, "Soulful Bros.", ItemClassification.useful, 0xC0), - ItemData(77771105, "High-End Badge", ItemClassification.useful, 0xC1), - ItemData(77771106, "Bean Pants", ItemClassification.useful, 0xCC), - ItemData(77771107, "Bean Trousers", ItemClassification.useful, 0xCD), - ItemData(77771108, "Blue Jeans", ItemClassification.useful, 0xCE), - ItemData(77771109, "Parasol Pants", ItemClassification.useful, 0xCF), - ItemData(77771110, "Hard Pants", ItemClassification.useful, 0xD0), - ItemData(77771111, "Heart Jeans", ItemClassification.useful, 0xD1), - ItemData(77771112, "Plaid Trousers", ItemClassification.useful, 0xD2), - ItemData(77771113, "#1 Trousers", ItemClassification.useful, 0xD3), - ItemData(77771114, "Safety Slacks", ItemClassification.useful, 0xD4), - ItemData(77771115, "Shroom Pants", ItemClassification.useful, 0xD5), - ItemData(77771116, "Shroom Bells", ItemClassification.useful, 0xD6), - ItemData(77771117, "Shroom Slacks", ItemClassification.useful, 0xD7), - ItemData(77771118, "Peachy Jeans", ItemClassification.useful, 0xD8), - ItemData(77771119, "Mushwin Pants", ItemClassification.useful, 0xD9), - ItemData(77771120, "Mushluck Pants", ItemClassification.useful, 0xDA), - ItemData(77771121, "Scandal Jeans", ItemClassification.useful, 0xDB), - ItemData(77771122, "Street Jeans", ItemClassification.useful, 0xDC), - ItemData(77771123, "Tropic Slacks", ItemClassification.useful, 0xDD), - ItemData(77771124, "Hermetic Pants", ItemClassification.useful, 0xDE), - ItemData(77771125, "Beanstar Pants", ItemClassification.useful, 0xDF), - ItemData(77771126, "Peasley Slacks", ItemClassification.useful, 0xE0), - ItemData(77771127, "Queen B. Jeans", ItemClassification.useful, 0xE1), - ItemData(77771128, "B. Brand Jeans", ItemClassification.useful, 0xE2), - ItemData(77771129, "Heart Slacks", ItemClassification.useful, 0xE3), - ItemData(77771130, "Casual Slacks", ItemClassification.useful, 0xE4), - ItemData(77771131, "Casual Coral", ItemClassification.useful, 0xEB), - ItemData(77771132, "Harhall's Jeans", ItemClassification.useful, 0xF1), - ItemData(77771133, "Wool Trousers", ItemClassification.useful, 0xF3), - ItemData(77771134, "Iron Pants", ItemClassification.useful, 0xF7), - ItemData(77771135, "Greed Wallet", ItemClassification.useful, 0xF8), - ItemData(77771136, "Bonus Ring", ItemClassification.useful, 0xF9), - ItemData(77771137, "Excite Spring", ItemClassification.useful, 0xFA), - ItemData(77771138, "Great Force", ItemClassification.useful, 0xFB), - ItemData(77771139, "Power Grip", ItemClassification.useful, 0xFC), - ItemData(77771140, "Cobalt Necktie", ItemClassification.useful, 0xFD), - ItemData(77771141, "Gameboy Horror SP", ItemClassification.useful, 0xFE) + ItemData(77771018, "Green Pepper", ItemClassification.filler, 0x1B), + ItemData(77771019, "Hoo Bean", ItemClassification.filler, 0x1D), + ItemData(77771020, "Chuckle Bean", ItemClassification.filler, 0x1E), + ItemData(77771021, "Woohoo blend", ItemClassification.useful, 0x20), + ItemData(77771022, "Hoohoo Blend", ItemClassification.useful, 0x21), + ItemData(77771023, "Chuckle Blend", ItemClassification.useful, 0x22), + ItemData(77771024, "Teehee Blend", ItemClassification.useful, 0x23), + ItemData(77771025, "Hoolumbian", ItemClassification.useful, 0x24), + ItemData(77771026, "Chuckoccino", ItemClassification.useful, 0x25), + ItemData(77771027, "Teeheespresso", ItemClassification.useful, 0x26), + ItemData(77771028, "Peasley's Rose", ItemClassification.progression, 0x31), + ItemData(77771029, "Beanbean Brooch", ItemClassification.progression, 0x32), + ItemData(77771030, "Red Goblet", ItemClassification.progression, 0x33), + ItemData(77771031, "Green Goblet", ItemClassification.progression, 0x34), + ItemData(77771032, "Red Chuckola Fruit", ItemClassification.progression, 0x35), + ItemData(77771033, "White Chuckola Fruit", ItemClassification.progression, 0x36), + ItemData(77771034, "Purple Chuckola Fruit", ItemClassification.progression, 0x37), + ItemData(77771035, "Hammers", ItemClassification.progression, 0x38), + ItemData(77771036, "Firebrand", ItemClassification.progression, 0x39), + ItemData(77771037, "Thunder Hand", ItemClassification.progression, 0x3A), + ItemData(77771038, "Membership Card", ItemClassification.progression, 0x40), + ItemData(77771039, "Winkle Card", ItemClassification.progression, 0x41), + ItemData(77771040, "Peach's Extra Dress", ItemClassification.progression, 0x42), + ItemData(77771041, "Fake Beanstar", ItemClassification.progression, 0x43), + ItemData(77771042, "Red Pearl Bean", ItemClassification.progression, 0x45), + ItemData(77771043, "Green Pearl Bean", ItemClassification.progression, 0x46), + ItemData(77771044, "Bean Fruit 1", ItemClassification.progression_skip_balancing, 0x47), + ItemData(77771045, "Bean Fruit 2", ItemClassification.progression_skip_balancing, 0x50), + ItemData(77771046, "Bean Fruit 3", ItemClassification.progression_skip_balancing, 0x51), + ItemData(77771047, "Bean Fruit 4", ItemClassification.progression_skip_balancing, 0x52), + ItemData(77771048, "Bean Fruit 5", ItemClassification.progression_skip_balancing, 0x53), + ItemData(77771049, "Bean Fruit 6", ItemClassification.progression_skip_balancing, 0x54), + ItemData(77771050, "Bean Fruit 7", ItemClassification.progression_skip_balancing, 0x55), + ItemData(77771051, "Blue Neon Egg", ItemClassification.progression, 0x56), + ItemData(77771052, "Red Neon Egg", ItemClassification.progression, 0x57), + ItemData(77771053, "Green Neon Egg", ItemClassification.progression, 0x60), + ItemData(77771054, "Yellow Neon Egg", ItemClassification.progression, 0x61), + ItemData(77771055, "Purple Neon Egg", ItemClassification.progression, 0x62), + ItemData(77771056, "Orange Neon Egg", ItemClassification.progression, 0x63), + ItemData(77771057, "Azure Neon Egg", ItemClassification.progression, 0x64), + ItemData(77771058, "Beanstar Piece 1", ItemClassification.progression, 0x65), + ItemData(77771059, "Beanstar Piece 2", ItemClassification.progression, 0x66), + ItemData(77771060, "Beanstar Piece 3", ItemClassification.progression, 0x67), + ItemData(77771061, "Beanstar Piece 4", ItemClassification.progression, 0x70), + ItemData(77771062, "Spangle", ItemClassification.progression, 0x72), + ItemData(77771063, "Beanlet 1", ItemClassification.useful, 0x73), + ItemData(77771064, "Beanlet 2", ItemClassification.useful, 0x74), + ItemData(77771065, "Beanlet 3", ItemClassification.useful, 0x75), + ItemData(77771066, "Beanlet 4", ItemClassification.useful, 0x76), + ItemData(77771067, "Beanlet 5", ItemClassification.useful, 0x77), + ItemData(77771068, "Beanstone 1", ItemClassification.useful, 0x80), + ItemData(77771069, "Beanstone 2", ItemClassification.useful, 0x81), + ItemData(77771070, "Beanstone 3", ItemClassification.useful, 0x82), + ItemData(77771071, "Beanstone 4", ItemClassification.useful, 0x83), + ItemData(77771072, "Beanstone 5", ItemClassification.useful, 0x84), + ItemData(77771073, "Beanstone 6", ItemClassification.useful, 0x85), + ItemData(77771074, "Beanstone 7", ItemClassification.useful, 0x86), + ItemData(77771075, "Beanstone 8", ItemClassification.useful, 0x87), + ItemData(77771076, "Beanstone 9", ItemClassification.useful, 0x90), + ItemData(77771077, "Beanstone 10", ItemClassification.useful, 0x91), + ItemData(77771078, "Secret Scroll 1", ItemClassification.useful, 0x92), + ItemData(77771079, "Secret Scroll 2", ItemClassification.useful, 0x93), + ItemData(77771080, "Castle Badge", ItemClassification.useful, 0x9F), + ItemData(77771081, "Pea Badge", ItemClassification.useful, 0xA0), + ItemData(77771082, "Bean B. Badge", ItemClassification.useful, 0xA1), + ItemData(77771083, "Counter Badge", ItemClassification.useful, 0xA2), + ItemData(77771084, "Charity Badge", ItemClassification.useful, 0xA3), + ItemData(77771085, "Bros. Badge", ItemClassification.useful, 0xA4), + ItemData(77771086, "Miracle Badge", ItemClassification.useful, 0xA5), + ItemData(77771087, "Ohoracle Badge", ItemClassification.useful, 0xA6), + ItemData(77771088, "Mush Badge", ItemClassification.useful, 0xA7), + ItemData(77771089, "Mari-Lui Badge", ItemClassification.useful, 0xA8), + ItemData(77771090, "Muscle Badge", ItemClassification.useful, 0xA9), + ItemData(77771091, "Spiny Badge AA", ItemClassification.useful, 0xAA), + ItemData(77771092, "Mush Badge A", ItemClassification.useful, 0xAB), + ItemData(77771093, "Grab Badge", ItemClassification.useful, 0xAC), + ItemData(77771094, "Mush Badge AA", ItemClassification.useful, 0xAD), + ItemData(77771095, "Power Badge", ItemClassification.useful, 0xAE), + ItemData(77771096, "Wonder Badge", ItemClassification.useful, 0xAF), + ItemData(77771097, "Beauty Badge", ItemClassification.useful, 0xB0), + ItemData(77771098, "Salvage Badge", ItemClassification.useful, 0xB1), + ItemData(77771099, "Oh-Pah Badge", ItemClassification.useful, 0xB2), + ItemData(77771100, "Brilliant Badge", ItemClassification.useful, 0xB3), + ItemData(77771101, "Sarge Badge", ItemClassification.useful, 0xB4), + ItemData(77771102, "General Badge", ItemClassification.useful, 0xB5), + ItemData(77771103, "Tank Badge", ItemClassification.useful, 0xB6), + ItemData(77771104, "Bros. Rock", ItemClassification.useful, 0xBD), + ItemData(77771105, "Soulful Bros.", ItemClassification.useful, 0xC0), + ItemData(77771106, "High-End Badge", ItemClassification.useful, 0xC1), + ItemData(77771107, "Bean Pants", ItemClassification.useful, 0xCC), + ItemData(77771108, "Bean Trousers", ItemClassification.useful, 0xCD), + ItemData(77771109, "Blue Jeans", ItemClassification.useful, 0xCE), + ItemData(77771110, "Parasol Pants", ItemClassification.useful, 0xCF), + ItemData(77771111, "Hard Pants", ItemClassification.useful, 0xD0), + ItemData(77771112, "Heart Jeans", ItemClassification.useful, 0xD1), + ItemData(77771113, "Plaid Trousers", ItemClassification.useful, 0xD2), + ItemData(77771114, "#1 Trousers", ItemClassification.useful, 0xD3), + ItemData(77771115, "Safety Slacks", ItemClassification.useful, 0xD4), + ItemData(77771116, "Shroom Pants", ItemClassification.useful, 0xD5), + ItemData(77771117, "Shroom Bells", ItemClassification.useful, 0xD6), + ItemData(77771118, "Shroom Slacks", ItemClassification.useful, 0xD7), + ItemData(77771119, "Peachy Jeans", ItemClassification.useful, 0xD8), + ItemData(77771120, "Mushwin Pants", ItemClassification.useful, 0xD9), + ItemData(77771121, "Mushluck Pants", ItemClassification.useful, 0xDA), + ItemData(77771122, "Scandal Jeans", ItemClassification.useful, 0xDB), + ItemData(77771123, "Street Jeans", ItemClassification.useful, 0xDC), + ItemData(77771124, "Tropic Slacks", ItemClassification.useful, 0xDD), + ItemData(77771125, "Hermetic Pants", ItemClassification.useful, 0xDE), + ItemData(77771126, "Beanstar Pants", ItemClassification.useful, 0xDF), + ItemData(77771127, "Peasley Slacks", ItemClassification.useful, 0xE0), + ItemData(77771128, "Queen B. Jeans", ItemClassification.useful, 0xE1), + ItemData(77771129, "B. Brand Jeans", ItemClassification.useful, 0xE2), + ItemData(77771130, "Heart Slacks", ItemClassification.useful, 0xE3), + ItemData(77771131, "Casual Slacks", ItemClassification.useful, 0xE4), + ItemData(77771132, "Casual Coral", ItemClassification.useful, 0xEB), + ItemData(77771133, "Harhall's Jeans", ItemClassification.useful, 0xF1), + ItemData(77771134, "Wool Trousers", ItemClassification.useful, 0xF3), + ItemData(77771135, "Iron Pants", ItemClassification.useful, 0xF7), + ItemData(77771136, "Greed Wallet", ItemClassification.useful, 0xF8), + ItemData(77771137, "Bonus Ring", ItemClassification.useful, 0xF9), + ItemData(77771138, "Excite Spring", ItemClassification.useful, 0xFA), + ItemData(77771139, "Great Force", ItemClassification.useful, 0xFB), + ItemData(77771140, "Power Grip", ItemClassification.useful, 0xFC), + ItemData(77771141, "Cobalt Necktie", ItemClassification.useful, 0xFD), + ItemData(77771142, "Gameboy Horror SP", ItemClassification.useful, 0xFE) ] item_frequencies: typing.Dict[str, int] = { diff --git a/Locations.py b/Locations.py index 8ebb86d..9399a16 100644 --- a/Locations.py +++ b/Locations.py @@ -67,7 +67,7 @@ class MLSSLocation(Location): LocationData("Cave Connecting Stardust Fields and Hoohoo Village Block 2", 0x39da7f, 0, 0x02000000, 0x00), LocationData("Hoohoo Village South Cave Block", 0x39dacd, 0, 0x02000000, 0x00), LocationData("Hoohoo Village North Cave Room 1 Block", 0x39da98, 0, 0x02000000, 0x00), - LocationData("Hoohoo Village North Cave Room 2 Block", 0x39dab5, 0, 0x02000000, 0x00), + LocationData("Hoohoo Village North Cave Room 2 Block", 0x39daad, 0, 0x02000000, 0x00), LocationData("Beanbean Outskirts Surf Beach Block", 0x39dd03, 0, 0x02000000, 0x00), LocationData("Woohoo Hooniversity Star Room Block 1", 0x39e13d, 0, 0x02000000, 0x00), LocationData("Woohoo Hooniversity Star Room Block 2", 0x39e145, 0, 0x02000000, 0x00), @@ -95,7 +95,7 @@ class MLSSLocation(Location): LocationData("Hoohoo Village Right Side Digspot", 0x39d95f, 0, 0x02000000, 0x00), LocationData("Hoohoo Village Super Hammer Cave Digspot", 0x39db02, 0, 0x02000000, 0x00), LocationData("Hoohoo Village Super Hammer Cave Block", 0x39daea, 0, 0x02000000, 0x00), - LocationData("Hoohoo Village North Cave Room 2 Digspot", 0x39daad, 0, 0x02000000, 0x00), + LocationData("Hoohoo Village North Cave Room 2 Digspot", 0x39dab5, 0, 0x02000000, 0x00), LocationData("Hoohoo Mountain Base Minecart Cave Digspot", 0x39db0f, 0, 0x02000000, 0x00), LocationData("Beanbean Outskirts Farm Room Digspot 1", 0x39db22, 0, 0x02000000, 0x00), LocationData("Beanbean Outskirts Farm Room Digspot 2", 0x39db2a, 0, 0x02000000, 0x00), @@ -676,7 +676,7 @@ class MLSSLocation(Location): (0x432D, 0x20, 0x1e9431), # Piranha Bean (0x434E, 0x2, 0x1e9411), # Secret Scroll 1 (0x434E, 0x4, 0x1e9412), # Secret Scroll 2 - (0x4375, 0x8, 0x243844), # Membership Card + (0x4375, 0x8, 0x260637), # Membership Card (0x4373, 0x10, 0x277a45), # Teehee Valley Mole (0x434D, 0x8, 0x1E9444), # Harhall's Pants (0x432E, 0x10, 0x1e9441), # Harhall Beanstar Piece diff --git a/Names/__pycache__/LocationName.cpython-311.pyc b/Names/__pycache__/LocationName.cpython-311.pyc index 68d6ee888dc2924e0f9b7b878037e0782151dca2..e9b7032ac698b53c49e036fb95c558f59e23cd49 100644 GIT binary patch delta 308 zcmbPngXz@`Cf?<|yj%=G5V}z=wR|FPC}YRQ3v}n1PP;(_{qGMWP@Pu&_9g^^3zMH$SB`C)KV<0?1_qsx0;f h5+9fu85ut?`EfA%F@9jcO?`yOeZirG6Qmz(8vrFIRYL#( delta 230 zcmaELgK5SMCf?<|yj%=Gpc5>csxy%{l(AuBaw88*FoOpF<_|m~oRfpZG&To_J$GRg z*lZE~g?;j+MB&Zx$uc&KF`H}VmoaYsv7m{C>jI0;4ZXOFEZR3Vw=9igs~2TrU?^e+ z8tbRY2&RifKq6paF(B&~hfQvNN@-52U6DAD%Lr6i> bytes: """ diff --git a/Rules.py b/Rules.py index 51976ad..9affa35 100644 --- a/Rules.py +++ b/Rules.py @@ -1,4 +1,4 @@ -from worlds.generic.Rules import add_rule +from worlds.generic.Rules import add_rule, forbid_item from BaseClasses import MultiWorld from .Names.LocationName import LocationName from .Locations import all_locations @@ -11,6 +11,8 @@ def set_rules(world: MultiWorld, player: int): add_rule(world.get_location(location.name, player), lambda state: StateLogic.canDig(state, player)) if "Beanstone" in location.name: add_rule(world.get_location(location.name, player), lambda state: StateLogic.canDig(state, player)) + if "Shop" in location.name: + forbid_item(world.get_location(location.name, player), "Hammers", player) add_rule(world.get_location(LocationName.HoohooVillageHammerHouseBlock, player), lambda state: StateLogic.hammers(state, player)) diff --git a/__init__.py b/__init__.py index fa33ccb..122585d 100644 --- a/__init__.py +++ b/__init__.py @@ -107,7 +107,7 @@ def create_item(self, name: str) -> MLSSItem: return MLSSItem(item.itemName, item.progression, item.code, self.player) def generate_output(self, output_directory: str) -> None: - rom = Rom("C:/Users/james/Downloads/armips-v0.11.0-windows-x86/", self.multiworld, self.player) + rom = Rom(self.multiworld, self.player) for location_name in location_table.keys(): location = self.multiworld.get_location(location_name, self.player) diff --git a/__pycache__/Client.cpython-311.pyc b/__pycache__/Client.cpython-311.pyc index 40704aaebfba0fecffbae5cfd261dd4a5de17c89..96a9e41b0ae9a111a5b9a810cc0eea13a6b0eed6 100644 GIT binary patch literal 13246 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 WT+0Kk=i$!&BxxXgCG>gFmi&Kw6c|JR diff --git a/__pycache__/Items.cpython-311.pyc b/__pycache__/Items.cpython-311.pyc index af062fccc005ff9f33cb3e255a2b830c7d841890..807e62b3191f050d3a2f26cca1909e8c6d8d533f 100644 GIT binary patch literal 16072 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 Sij=O6KstD diff --git a/__pycache__/Locations.cpython-311.pyc b/__pycache__/Locations.cpython-311.pyc index bdc83b301d5a06fec2fd2ebbe9eeab6f32114749..a0fb0b272f28cb980da28c309911dde404307eeb 100644 GIT binary patch delta 9679 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 delta 6801 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 delta 914 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 delta 4277 zcmbtX32+nV72cIr@*x@7l59)9580ORfw_#q#;y(K2w*OkfCD%(D`SCeDZ4VkMt})! zMls1m;WVBp39rDNtK9OL0&IX{wd5evPjApxVoN znHDmXFRx3c}mQnjcSVVBur5ZvnOVX_NvdZ4D%d5(F=a5N=xx7v7;PP67mcV zU)k6Te^HfWYa*P>?dXbdg2T>7G|-Q-W%Ldt4bQ!>aAeuD z)x*{PxxmWYNtZp;FnrgzrBbp~22G|WHh4*=QCs$+iLj2q zgkVdTM-tI=+6AYpWtXeNB?#s4Ve;S9Tgca5_+!ePoxaK^Q-(AlbIFKi+*~D@t6tuB zWpAiP6jS56?^SfhKe3I)aEngU5v5H_UxmWMUQ06S3Qs|mxI z+^U9fLP{WaV5e_qSZDBi2E0CRz%%4I=?!?piN=8P5sjadHIgnL?{OIeo@g7DA;Q({ zzMB8j#hIM78~&3Ee&B%b!2dF?GdT?~lzXS*53%q?ZaF-eUjU7H3lnGVq}>d!gpK*7 za5ZoF*C{ztvav8)m<>%93#$UQU?H0TU*yk)YnB|?Z>d1;c?)uNad0p{m#mH#kZ@5! z)Z_;;_X%-mGT)L5QX$92!;zx7AQa>f2k&o6#u||cBZaR+kyQs5i!5xSY*As&fxB%M zs3|0$A7qxm=_Ojl9zE3AmVsoQ6mni>$N;$o$*dLF*{N(Y+?c(ToheB{iA_K2945+h zx6+Sgyl}*5V$0=DX6gh-jVY6S8gRV7B6pHHl*7mKi`ge2b-^n36x_YQ#J(BqS&*Y(ABU3_S!_7?!-~(Fjm1h_3D~UVIld;y*AN_=Y5dPYwS16nM0zODXB|A-2{c zw{vSVm6EO$%Ieafv(}u1bT~0NtV;{DkLwC0T_I`~z^`jRQ20yW^0)G-nb{|+PJ{gm zgJpH4tX?=vucX=K2q}od32@b?u&Utw^*faM@1w+~oe`Jk;jayO+eXN6l;9!(1&ODb5N$wQ`VS=RoD!wVFQkCM+j722#Bdo?f#gUU-f8pCQ1_HMQ&_C|Xy>J_1|T z&9};{HArguT20R?qHu}ARuU~BcnL<=EsZ;mWQ27HFT&^RR9$De9 z3#Xa_b;tMl_rVwIvy_sd8!|WS%=cG>jpiGRGZNA!s+q)O|2+dezMinj>{o?#RM~rd zy}@TToQ^%*kJGg&1UCiXO#<3CHs$qAL{nN`zk{f22)NV(BzTSl?-5Yv=sNTf^$J3S zYj+5aCYxTMufGr?SVSP_&Tq*=+3D;Onn^aw;Kweabi3RUm0Q3K8BsWSp@~!%;oWT& z>faH09@3ge*>mtlvq`;*R^kAB)cjqA?+`q6mj`ED4C?JmlO@C4a8|Z|W!PXEti*4R zAzw1&!}jg@8cCNs#1GrgI)|L_@OGctzj(;xUkv#>E-J8z?3ln5n+wuTXRM@~cc~H~ z*wE6;9sUWu{0hM`0t!sDU;ll<_mUwXafon zg5M*EbRwj!2xX0C80L*lCn<{BXt_zw@x{Mm%9>!(FN^xMKT7XAbfz7EiQU~JrAQEYigKuNn{_7M<{p8Zdw{F2NRyus$mrOCQ%u4c8Lzb z6IF^YQ9Q>mL9l%5QwC>;^rgf6g}ovD5?{6a$o0NH}@=Ci@wGHoa8KsR=M3k-C2Ic#jI4QL>3>m%U!OQ#FSvmhd z?wubu`JM-=p>2Or)_-vG^8Wj|u}L>@d7ls1-ak!xTBu^QCLE{rKmmIZ^|6`Ou#kva%H<) z?GeSjt@4JlX@vO{ba}bxCnCb_abb;^1FH{a9KO9~%gZa*YnyWVuOp&%b$i_19+6JN znCbFIC!*Tb;SwFaakO4C$zaNhw5{+AoRIWr-eA#*lH(--&oFl({w?e3aqH@hXv+vXc;QGf`v6=!VzkAoG6S0@7;J{q!x5cpO6U^7+4O#x#H)!P_(0>CDCc;Ai diff --git a/__pycache__/Rules.cpython-311.pyc b/__pycache__/Rules.cpython-311.pyc index db3f45c59935b963a8fb383b6a7230a92231e69f..ccafa672e7ab7b395e9dff6bff59c2b071fb7e9e 100644 GIT binary patch delta 1375 zcmaKre@t6d6vy9rZ$3!LTISTbm32%Q_AzK_A-pnv*To-$;%F(GKwLX`rJeAKubmQg z2n(6I3}u{6&D_jl3=-!S@WuG2$+9K;V}G}R!l=BF5U<0cU!kwIPz%y<;u>6^VSD2zw%F|6;Ih5*kn71N30J0E1TDb z?mZ6u4@VPVM({uouL`?&_RSVA@*H=Kyv76E2p8g{uwGq0BjAk|U&(6Ga8wN>)Pz=w z=W83qXGmbmiM=m8yFFu%-rkk#3}!+{GXs%qXEfJ|y{!&>?5e|S6$#8%uH_ka;b;4< z;4f7};G}6V_+p;!n>6Xne=Cs&d5r}^6|Q&&aJjDt$0Z+jSC`^X(ic#Tf$BxEhSZ{Y zamCk<^R=?*GN#)kT0$J3u4#ojJX~`f8i`~x$Yx+eA#kcCZdn!6iV{~8qeFKi>yVg# zr@1Q!a`u{~@bb%9dvng-oUuo4TXG$}nc$Jk8^^L8kz7Xv*IaWT(Wbyh)XMOt`;K^k zDzsC<&3>0X`Hry1JBmBJGXCiu#OY8GuT{{+`iJ$u0hZP$;SlM#0;gIMqC~TlQ?J-f z@DbZ~ENi?(^gMxPv4{Et`1Wga_`Gi&)dm^cn(}*?ZL%*oI}Ld_N^`<#?5%S1NeS!R zPIS3#AfTsiZ@IKZE2f#K+^RT{P==M%s%1EuN{=ah$#+#;tEd+Th%*(U=ia`-ab;cn zlSdylKK~k<$i?0#dTP-kkJI81<;sHGy4v+lf)Vk@0s+0 zNmC|Gn{=Ag8|AeyJEPfxp7m8(JX4q^Uy|WtvS9T0w6zc7Up+E>Y0@Q=E}QfaB#9PWh9`P&%4EsRWW^iar+Zu)y#7^ zk^Oq@$gJSxtX=drJz*aT@KiUsSJZAWiw@PUuaEvHVs_lA-&H^2=xsm_? delta 1510 zcmaJ>ZA@EL7`|^WTt2kG0z*O>fjB-|K0~1`Eh`|p=*Gw>A6Y17+?5NI)|R%AIX@y~ zx@8k0<&{ib7FdiM%VM0?n9VrnVodbcE?T1@(YZ{MCHo7GNvf~vfr;9T9aJLs5cleifb7jIj}#h$eyuq zI=vRoVX4iHL?hJ%|4a+-G%dBh*Sg}oX#1*v)zBF?bgG8XkKOKg_W{*2rjAdnc8B8K zA(UITCCf?2rTR3eV3EK=Mg1<>Sm;(Nr9Yt`*dJ20ufa`9XJDtuPn&|>{ms$e0VT&PY)yI6Fb-fe|0ioJlBY=0)by579u zOW1D6)I>ajQA<5k;nlKAT`(V)QwnxHN=51qvFoM0rxZDGfJRA&9GUbhCB4Cefv}wt z8&eX(vHh$`6JEumM8XcfuYEKX*^T;^Cz_zh@l9d8-KF;IQwN4t+vRw>ye`nJI^z3j zWa|5osh_u0tQ1_Z+!0|E9CrnVBbt{*%5_jxvcx~c3lyUI9EXC|IfEs z!J{!nW1|}LYRtzOi}(Ul3WCfF40c!{q_K#`rZjet*a95l_%g>=IljhmhH!vy+$;SJ7Mf}^x3k?I&{%&s>zHm9+-sMOc#U}Pn`D2iM6+?0^{{37|>$MWDn zmrYt^Q?=N=cTPI7N#EV1ClfSOwsq6_K|EbrCr#wj@zJsKV|(QB;l{6J?3@aWdM7ov z#e~~V7M8o*aEfT8ih$0_DSO;dwerjb%c_BxT{ZYGDp!J^2fy{HZjY+?R-OL1(@(zk z@lIW$f*0U4FPnW6-Y21$hUs|UWrGjU+!G-2*tg&;%Xc(cdOA9K?Qo8%3dgzD=lP45 zO=&pZ*OK!gTU^8-pTOwC&-%t=ZT+p8@KJ1fNQBrW*(Dl6sy=yB&!t9ydXA8qGBpw_ zSKb!OA%jF16*ZK(Nl>o+PB|u`XB;docEiRODCn$(scX@PGjxFaRh|6ygu# bm9fl;UY%9ZfpdOfU0~0Z+{E+$kyr8`@gd>Y diff --git a/__pycache__/StateLogic.cpython-311.pyc b/__pycache__/StateLogic.cpython-311.pyc index 2b79b13dcf4a16287d4097d91fbfe4e3311fe884..47c41f7a4f9451cb35dda58a32c8a2404d8eea73 100644 GIT binary patch delta 807 zcmZ{hO-vI(7>0NHgDqQX6?eC!F$LRNN9!wf*Vvk--hzFe^W7>lzc<{bNFM4uj5yC+?nfJ@Q-#gEIyZhtPuU_X) zOG`6DpLDx;&AIM$gD303NBl!(lFLx#GXhZ|1hDVx+=)JqmZxf0kZ&0KhIK1-N3Vaff3U-wGjKMGMss*HcmA+Z zlX~nFCdB4phw~?PAyRV!fF4LN>bHTaHvNB3~5yqR9rd;!DfuYz$a`OG?VLR|pFbmmxW0QAxAUm@EB K$^To83;zJdQtf^K delta 542 zcmexq{@I9cIWI340}$v0%cd&xPUMqdY?-Lu$`Z_=DK@!*Q*81BrlieQjCle~1F0`WJpNlh*Wvjmx?CeIhzQNN;eedVgk9kM6b zF6#SV(f9wrz|13mAvofCaLlFPm-yLQbm7K09IelOSiMn|o&pecQAt3fbeCkEF zv@33DDiDdR{Oei8m$Hgsre%Xo1Cl^#R{6<}64IMRMRqaOGxL-&E-hP;x*_bMy3G}J z8<1Pd7>|md5WNr(cF{5XieorL=xR*Lh19GYso6lM#WLoC+zz53l6MR1ZgB8+fSg^# zC=QeYk|1Z7F+P=6T%fu_?4q>66=?&I(||&z);nAem|ZmWx?<|+1r_rTy$}|CAvXD< zf65jA6sTZk?uESK8+j!_W3w2`Kvse%kPpfji@1Ri=%*<<`G{nu;z|ZEw}=xc_KU+N hH$SB`C)KXV4#;H$;^LIeu~OcQiYy@A4A@Dq0RVaevB3ZU diff --git a/__pycache__/__init__.cpython-311.pyc b/__pycache__/__init__.cpython-311.pyc index 62137837f0266c0e3b691e203f030331a4846ea4..7b34871b1651681b1f2b53e1cc4334243e7d85a3 100644 GIT binary patch delta 1564 zcmaJ>T})g>6rOYU_b&Sb`^(+G?jl+?t)&o1)Itkdo6r)7u%<07KZScCOZju|79ZTT zL`h&x6KPIqebHc5jA>L14_4Ded@%7zY2=~VL~D#`H1VOvpYY&=XLh>?)jFB`otZf^ zbG~!toO`+L<#xxr4u_3V<7&0G_K~B`0^i{w%VLLW?(vMU9$zNyII1$8nu1`!GwWJWa?+500TkZ%(e76 zKGA`3*}wXy+%3Tqc+@@=XcLT%66oSUEXEUJp&h3j2T^hy{~vuFG~rdpZ8(N6IUk3| zR&O|8g+Qk`{fvO500+T)zsrCD{@Z8{qDF!xWRZ!PR>Zvfcq+xI(gJw+Nw&+#Q&P`q0q91jA2GnC6X{N zlMMseaN#c%LA>tv+2O*84AAWjSz`|0^6bUi6_q&Rap6yHXBgOpM&f3=k4e`(CWk=A zDYxSL$AYO~!MNQ5nD8riTeUguDluX#V_pX0NMEs${n4x?hX=_1!ycC*Yt0EBZtKo% zWL8l0$vc;UWlT%u7!P|+v&?-*$b+*gqjWHJ3~iYsqbB-1^!;{(U=hRy4tnW-LlVUPGt26({Tp?(;T#`JlM!-zK0FSG>cOs@OgJfGwx6&zE#)q|KZ7nTZjN zcj9Nhr}x?lyz@@3J$Ej}OYY_E+g;8Zhe^#ftn$~}3LHd<4`8pqVULKh{tbn4lid4W z3C%lim3$;m->)RN85rLPjL+Ngs{bL|n)l1o>#ZlLuYTcQkX)jQ5>nozr_ZD{Dj`*A zff0O1sWlgi4D(75`tT2>22_j&zdqb64w$){1Q%(?g-<*sph-aCLPNnTeo!oI3);Q9 zpTxRQ5K`D4>a%5t`keU+O9R@<_v4+=d9x@~XQ5DWHk<$nKM0?f3>~ONlF){qM)p8E z-ig$Mj!Lw(L~|e-fkAvR>W4X8j6Px(*}!M<^Jrz6Ai(DY%;S&ImdH2_^^XZCV&6I| z7OF4RE;YP;;HI;7!&!?*c3rcGpmro8xVh_%r}BZVrx_YcX%p%GX^rct$%*2>=ajhD zF5m?LPJ+BaPxE4ICdJxCT#Ln_27id@=3CL->&6g18*lK2P4#!#PH4i{{CqVUG_TRW*`n90>{Q>$y7XJ-0Xno-T delta 1324 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 literal 16146 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 ea