From 63fe1702545776d3105bacfac451238953989c60 Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action
adding line breaks in hook returns. (InspectorCaracal)
Feature: New sethelp/category switch to change a help topic’s
category after it was created (chiizujin)
Feature: Add alias/delete switch for removing object aliases
+from in-game with default command (chiizujin)
Fix: Use plural (‘no apples’) instead of singular (‘no apple’) in
get_numbered_name for better grammatical form (InspectorCaracal)
Fix: Object aliases not showing in search multi-match @@ -214,6 +216,11 @@ to disappear for wider client widths (chiizujin)
Fix: Traceback in crafting contrib’s recipe.msg
(InspectorCaracal)
Fix: EvEditor line-echo compacted whitespace erroneously (chiizujin)
Fix: EvEditor :help described the :paste operation in the wrong +way (chiizujin)
Fix: EvEditor range:range specification didn’t return correct +range (chiizujin)
Doc: Added Beginner Tutorial lessons for AI, Quests and Procedural dungeon (Griatch)
Doc fixes (Griatch, InspectorCaracal)
conf.py holds the Sphinx configuration. It should usually not be modified except to update the Evennia version on a new branch.
Some doc pages are automatically generated. Changes to their generated markdown file will be overwritten. Instead they must be modified at the point the automation reads the text from.
+All API docs under source/api are built from the doc strings of Evennia core code. Documentation fixes for these needs to be done in the doc strings of the relevant module, function, class or method.
Contribs/Contribs-Overview.md is completely generated from scratch when building the docs, by the script evennia/docs/pylib/contrib_readmes2docs.py.
All contrib blurbs on the above page are taken from the first paragraph of each contrib’s README.md, found under evennia/contrib/*/*/README.md.
Similarly, all contrib documentation linked from the above page is generated from each contrib’s README.md file.
Components/Default-Commands.md is generated from the command classes found under evennia/commands/default/.
Coding/Evennia-Code-Style.md is generated from evennia/CODING_STYLE.md.
Coding/Changelog.md is generated from evennia/CHANGELOG.md
Setup/Settings-Default.md is generated from the default settings file evennia/default_settings.py
Most auto-generated pages have a warning in the header indicating that it’s auto-generated.
+The format used for Evennia’s docs is Markdown (Commonmark). While markdown diff --git a/docs/latest/_modules/evennia/commands/default/building.html b/docs/latest/_modules/evennia/commands/default/building.html index f6f6a78f5b..98e7a656db 100644 --- a/docs/latest/_modules/evennia/commands/default/building.html +++ b/docs/latest/_modules/evennia/commands/default/building.html @@ -310,10 +310,13 @@ alias <obj> [= [alias[,alias,alias,...]]] alias <obj> = alias/category <obj> = [alias[,alias,...]:<category> + alias/delete <obj> = <alias> Switches: category - requires ending input with :category, to store the given aliases with the given category. + delete - deletes all occurrences of the given alias, regardless + of category Assigns aliases to an object so it can be referenced by more than one name. Assign empty to remove all aliases from object. If @@ -327,7 +330,7 @@ key = "@alias" aliases = "setobjalias" - switch_options = ("category",) + switch_options = ("category", "delete") locks = "cmd:perm(setobjalias) or perm(Builder)" help_category = "Building" @@ -344,12 +347,12 @@ return objname = self.lhs - # Find the object to receive aliases + # Find the object to receive/delete aliases obj = caller.search(objname) if not obj: return - if self.rhs is None: - # no =, so we just list aliases on object. + if self.rhs is None and 'delete' not in self.switches: + # no =, and not deleting, so we just list aliases on object. aliases = obj.aliases.all(return_key_and_category=True) if aliases: caller.msg( @@ -372,7 +375,9 @@ return if not self.rhs: - # we have given an empty =, so delete aliases + # we have given an empty =, so delete aliases. + # as a side-effect, 'alias/delete obj' and 'alias/delete obj=' + # will also be caught here, which is fine old_aliases = obj.aliases.all() if old_aliases: caller.msg( @@ -384,6 +389,19 @@ caller.msg("No aliases to clear.") return + if "delete" in self.switches: + # delete all matching keys, regardless of category + existed = False + for key, category in obj.aliases.all(return_key_and_category=True): + if key == self.rhs: + obj.aliases.remove(key=self.rhs, category=category) + existed = True + if existed: + caller.msg("Alias '%s' deleted from %s." % (self.rhs, obj.get_display_name(caller))) + else: + caller.msg("%s has no alias '%s'." % (obj.get_display_name(caller), self.rhs)) + return + category = None if "category" in self.switches: if ":" in self.rhs: diff --git a/docs/latest/_modules/evennia/commands/default/tests.html b/docs/latest/_modules/evennia/commands/default/tests.html index cd9d7b3912..1a28901ecf 100644 --- a/docs/latest/_modules/evennia/commands/default/tests.html +++ b/docs/latest/_modules/evennia/commands/default/tests.html @@ -880,7 +880,24 @@ self.call(building.CmdSetObjAlias(), "Obj", "Aliases for Obj: 'testobj1b'") self.call(building.CmdSetObjAlias(), "Obj2 =", "Cleared aliases from Obj2") - self.call(building.CmdSetObjAlias(), "Obj2 =", "No aliases to clear.") + self.call(building.CmdSetObjAlias(), "Obj2 =", "No aliases to clear.") + + self.call(building.CmdSetObjAlias(), "Obj =", "Cleared aliases from Obj: testobj1b") + self.call(building.CmdSetObjAlias(), + "/category Obj = testobj1b:category1", + "Alias(es) for 'Obj' set to 'testobj1b' (category: 'category1')." + ) + self.call( + building.CmdSetObjAlias(), + "/category Obj = testobj1b:category2", + "Alias(es) for 'Obj' set to 'testobj1b,testobj1b' (category: 'category2')." + ) + self.call( + building.CmdSetObjAlias(), # delete both occurences of alias 'testobj1b' + "/delete Obj = testobj1b", + "Alias 'testobj1b' deleted from Obj." + ) + self.call(building.CmdSetObjAlias(), "Obj =", "No aliases to clear.")
search_index_entry = {'aliases': 'pemit remit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' pemit remit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}¶search_index_entry = {'aliases': 'remit pemit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' remit pemit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}¶
search_index_entry = {'aliases': 'batchcommand batchcmd', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcommand batchcmd', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}¶search_index_entry = {'aliases': 'batchcmd batchcommand', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcmd batchcommand', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}¶
alias <obj> [= [alias[,alias,alias,…]]] alias <obj> = -alias/category <obj> = [alias[,alias,…]:<category>
+alias/category <obj> = [alias[,alias,…]:<category> +alias/delete <obj> = <alias>given aliases with the given category.
of category
+search_index_entry = {'aliases': 'setobjalias', 'category': 'building', 'key': '@alias', 'no_prefix': 'alias setobjalias', 'tags': '', 'text': "\n adding permanent aliases for object\n\n Usage:\n alias <obj> [= [alias[,alias,alias,...]]]\n alias <obj> =\n alias/category <obj> = [alias[,alias,...]:<category>\n\n Switches:\n category - requires ending input with :category, to store the\n given aliases with the given category.\n\n Assigns aliases to an object so it can be referenced by more\n than one name. Assign empty to remove all aliases from object. If\n assigning a category, all aliases given will be using this category.\n\n Observe that this is not the same thing as personal aliases\n created with the 'nick' command! Aliases set with alias are\n changing the object in question, making those aliases usable\n by everyone.\n "}¶search_index_entry = {'aliases': 'setobjalias', 'category': 'building', 'key': '@alias', 'no_prefix': 'alias setobjalias', 'tags': '', 'text': "\n adding permanent aliases for object\n\n Usage:\n alias <obj> [= [alias[,alias,alias,...]]]\n alias <obj> =\n alias/category <obj> = [alias[,alias,...]:<category>\n alias/delete <obj> = <alias>\n\n Switches:\n category - requires ending input with :category, to store the\n given aliases with the given category.\n delete - deletes all occurrences of the given alias, regardless\n of category\n\n Assigns aliases to an object so it can be referenced by more\n than one name. Assign empty to remove all aliases from object. If\n assigning a category, all aliases given will be using this category.\n\n Observe that this is not the same thing as personal aliases\n created with the 'nick' command! Aliases set with alias are\n changing the object in question, making those aliases usable\n by everyone.\n "}¶
search_index_entry = {'aliases': '@delete @del', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy delete del', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}¶search_index_entry = {'aliases': '@del @delete', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy del delete', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}¶
aliases = ['@update', '@typeclasses', '@swap', '@type', '@parent']¶aliases = ['@parent', '@typeclasses', '@type', '@swap', '@update']¶
search_index_entry = {'aliases': '@update @typeclasses @swap @type @parent', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass update typeclasses swap type parent', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶search_index_entry = {'aliases': '@parent @typeclasses @type @swap @update', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass parent typeclasses type swap update', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
search_index_entry = {'aliases': 'emote :', 'category': 'general', 'key': 'pose', 'no_prefix': ' emote :', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}¶search_index_entry = {'aliases': ': emote', 'category': 'general', 'key': 'pose', 'no_prefix': ' : emote', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}¶
Test the batch processor.
red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpsd70qei1/7cce317da0f28b615fa6a15ff176e7e3d3169695/evennia/contrib/tutorials/red_button/red_button.py'>¶
search_index_entry = {'aliases': 'conn co con', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn co con', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶search_index_entry = {'aliases': 'co conn con', 'category': 'general', 'key': 'connect', 'no_prefix': ' co conn con', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
search_index_entry = {'aliases': 'conn co con', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn co con', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶search_index_entry = {'aliases': 'co conn con', 'category': 'general', 'key': 'connect', 'no_prefix': ' co conn con', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶
search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
search_index_entry = {'aliases': 'delchanalias delaliaschan', 'category': 'comms', 'key': 'delcom', 'no_prefix': ' delchanalias delaliaschan', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}¶search_index_entry = {'aliases': 'delaliaschan delchanalias', 'category': 'comms', 'key': 'delcom', 'no_prefix': ' delaliaschan delchanalias', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}¶
search_index_entry = {'aliases': 'abort chicken out q quit', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' abort chicken out q quit', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}¶search_index_entry = {'aliases': 'quit chicken out abort q', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' quit chicken out abort q', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}¶
search_index_entry = {'aliases': 'whisper ; shout', 'category': 'general', 'key': 'say', 'no_prefix': ' whisper ; shout', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶search_index_entry = {'aliases': 'shout ; whisper', 'category': 'general', 'key': 'say', 'no_prefix': ' shout ; whisper', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶
search_index_entry = {'aliases': 'ex e unfocus examine', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' ex e unfocus examine', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶search_index_entry = {'aliases': 'ex e examine unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' ex e examine unfocus', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶
search_index_entry = {'aliases': 'inventory give inv i', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inventory give inv i', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶search_index_entry = {'aliases': 'give inventory i inv', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' give inventory i inv', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
search_index_entry = {'aliases': 'dive fly', 'category': 'general', 'key': 'fly or dive', 'no_prefix': ' dive fly', 'tags': '', 'text': '\n Fly or Dive up and down.\n\n Usage:\n fly\n dive\n\n Will fly up one room or dive down one room at your current position. If\n there is no room above/below you, your movement will fail.\n\n '}¶search_index_entry = {'aliases': 'fly dive', 'category': 'general', 'key': 'fly or dive', 'no_prefix': ' fly dive', 'tags': '', 'text': '\n Fly or Dive up and down.\n\n Usage:\n fly\n dive\n\n Will fly up one room or dive down one room at your current position. If\n there is no room above/below you, your movement will fail.\n\n '}¶
search_index_entry = {'aliases': 'hit turnbased combat', 'category': 'general', 'key': 'attack', 'no_prefix': ' hit turnbased combat', 'tags': '', 'text': '\n Start or join combat.\n\n Usage:\n attack [<target>]\n\n '}¶search_index_entry = {'aliases': 'turnbased combat hit', 'category': 'general', 'key': 'attack', 'no_prefix': ' turnbased combat hit', 'tags': '', 'text': '\n Start or join combat.\n\n Usage:\n attack [<target>]\n\n '}¶
search_index_entry = {'aliases': 'foil boost', 'category': 'combat', 'key': 'stunt', 'no_prefix': ' foil boost', 'tags': '', 'text': '\n Perform a combat stunt, that boosts an ally against a target, or\n foils an enemy, giving them disadvantage against an ally.\n\n Usage:\n boost [ability] <recipient> <target>\n foil [ability] <recipient> <target>\n boost [ability] <target> (same as boost me <target>)\n foil [ability] <target> (same as foil <target> me)\n\n Example:\n boost STR me Goblin\n boost DEX Goblin\n foil STR Goblin me\n foil INT Goblin\n boost INT Wizard Goblin\n\n '}¶search_index_entry = {'aliases': 'boost foil', 'category': 'combat', 'key': 'stunt', 'no_prefix': ' boost foil', 'tags': '', 'text': '\n Perform a combat stunt, that boosts an ally against a target, or\n foils an enemy, giving them disadvantage against an ally.\n\n Usage:\n boost [ability] <recipient> <target>\n foil [ability] <recipient> <target>\n boost [ability] <target> (same as boost me <target>)\n foil [ability] <target> (same as foil <target> me)\n\n Example:\n boost STR me Goblin\n boost DEX Goblin\n foil STR Goblin me\n foil INT Goblin\n boost INT Wizard Goblin\n\n '}¶
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}¶search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}¶
search_index_entry = {'aliases': 'unwield unwear', 'category': 'general', 'key': 'remove', 'no_prefix': ' unwield unwear', 'tags': '', 'text': '\n Remove a remove a weapon/shield, armor or helmet.\n\n Usage:\n remove <item>\n unwield <item>\n unwear <item>\n\n To remove an item from the backpack, use |wdrop|n instead.\n\n '}¶search_index_entry = {'aliases': 'unwear unwield', 'category': 'general', 'key': 'remove', 'no_prefix': ' unwear unwield', 'tags': '', 'text': '\n Remove a remove a weapon/shield, armor or helmet.\n\n Usage:\n remove <item>\n unwield <item>\n unwear <item>\n\n To remove an item from the backpack, use |wdrop|n instead.\n\n '}¶
aliases = ['press button', 'push', 'press']¶
search_index_entry = {'aliases': 'press button push press', 'category': 'general', 'key': 'push button', 'no_prefix': ' press button push press', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}¶
aliases = ['smash', 'break lid', 'smash lid']¶
search_index_entry = {'aliases': 'smash break lid smash lid', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash break lid smash lid', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}¶
aliases = ['press button', 'push', 'press']¶
search_index_entry = {'aliases': 'press button push press', 'category': 'general', 'key': 'push button', 'no_prefix': ' press button push press', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}¶
aliases = ['examine', 'get', 'feel', 'ex', 'l', 'listen']¶
search_index_entry = {'aliases': 'examine get feel ex l listen', 'category': 'general', 'key': 'look', 'no_prefix': ' examine get feel ex l listen', 'tags': '', 'text': "\n Looking around in darkness\n\n Usage:\n look <obj>\n\n ... not that there's much to see in the dark.\n\n "}¶
search_index_entry = {'aliases': 'light burn', 'category': 'tutorialworld', 'key': 'on', 'no_prefix': ' light burn', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}¶search_index_entry = {'aliases': 'burn light', 'category': 'tutorialworld', 'key': 'on', 'no_prefix': ' burn light', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}¶
aliases = ['push button', 'button', 'press button']¶aliases = ['press button', 'push button', 'button']¶
search_index_entry = {'aliases': 'push button button press button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' push button button press button', 'tags': '', 'text': '\n Presses a button.\n '}¶search_index_entry = {'aliases': 'press button push button button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' press button push button button', 'tags': '', 'text': '\n Presses a button.\n '}¶
aliases = ['hit', 'kill', 'thrust', 'bash', 'chop', 'defend', 'pierce', 'slash', 'parry', 'fight', 'stab']¶aliases = ['stab', 'parry', 'fight', 'hit', 'kill', 'slash', 'chop', 'pierce', 'thrust', 'defend', 'bash']¶
search_index_entry = {'aliases': 'hit kill thrust bash chop defend pierce slash parry fight stab', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' hit kill thrust bash chop defend pierce slash parry fight stab', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶search_index_entry = {'aliases': 'stab parry fight hit kill slash chop pierce thrust defend bash', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' stab parry fight hit kill slash chop pierce thrust defend bash', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶
aliases = ['search', 'fiddle', 'feel', 'l', 'feel around']¶aliases = ['fiddle', 'feel around', 'search', 'feel', 'l']¶
search_index_entry = {'aliases': 'search fiddle feel l feel around', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' search fiddle feel l feel around', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶search_index_entry = {'aliases': 'fiddle feel around search feel l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' fiddle feel around search feel l', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶
directory = '/tmp/tmpsgau2ds0/6431b5c6c48826e4ec0aa51b8c718677e6a43fd5/evennia'¶directory = '/tmp/tmpsd70qei1/7cce317da0f28b615fa6a15ff176e7e3d3169695/evennia'¶
directory = '/tmp/tmpsgau2ds0/6431b5c6c48826e4ec0aa51b8c718677e6a43fd5/evennia/game_template'¶directory = '/tmp/tmpsd70qei1/7cce317da0f28b615fa6a15ff176e7e3d3169695/evennia/game_template'¶
aliases = [':dd', ':p', ':::', ':uu', ':h', ':A', '::', ':', ':u', ':r', ':wq', ':dw', ':S', ':q', ':I', ':UU', ':=', ':j', ':f', ':q!', ':<', ':fi', ':echo', ':x', ':i', ':!', ':y', ':DD', ':s', ':w', ':>', ':fd']¶aliases = [':q!', ':dd', ':DD', ':=', ':p', ':<', ':j', ':y', ':A', ':UU', ':dw', ':u', ':h', ':x', ':>', '::', ':f', ':fi', ':fd', ':S', ':wq', ':s', ':echo', ':I', ':', ':i', ':::', ':w', ':q', ':r', ':uu', ':!']¶
search_index_entry = {'aliases': ':dd :p ::: :uu :h :A :: : :u :r :wq :dw :S :q :I :UU := :j :f :q! :< :fi :echo :x :i :! :y :DD :s :w :> :fd', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :dd :p ::: :uu :h :A :: : :u :r :wq :dw :S :q :I :UU := :j :f :q! :< :fi :echo :x :i :! :y :DD :s :w :> :fd', 'tags': '', 'text': '\n Commands for the editor\n '}¶search_index_entry = {'aliases': ':q! :dd :DD := :p :< :j :y :A :UU :dw :u :h :x :> :: :f :fi :fd :S :wq :s :echo :I : :i ::: :w :q :r :uu :!', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :q! :dd :DD := :p :< :j :y :A :UU :dw :u :h :x :> :: :f :fi :fd :S :wq :s :echo :I : :i ::: :w :q :r :uu :!', 'tags': '', 'text': '\n Commands for the editor\n '}¶
aliases = ['n', 'no', '__nomatch_command', 'a', 'abort', 'y', 'yes']¶
search_index_entry = {'aliases': 'n no __nomatch_command a abort y yes', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' n no __nomatch_command a abort y yes', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}¶
aliases = ['t', 'q', 'e', 'abort', 'a', 'end', 'top', 'previous', 'n', 'p', 'quit', 'next']¶aliases = ['end', 'n', 'p', 'q', 'top', 'abort', 'a', 'e', 'quit', 'previous', 'next', 't']¶
search_index_entry = {'aliases': 't q e abort a end top previous n p quit next', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' t q e abort a end top previous n p quit next', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶search_index_entry = {'aliases': 'end n p q top abort a e quit previous next t', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' end n p q top abort a e quit previous next t', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
evennia.utils.utils.value_is_integer(value)[source]¶Determines if a value can be type-cast to an integer.
+value (any) – The value to check.
+result (bool) – Whether it can be type-cast to an integer or not.
+^%{Yj_9wg_NM9$dFZ$CCOhr5wPOD0QC!%y_YX|FIVbL zqR1VsyzQF0s`phJf7`zbx!CSi%JCmCO?xcJ)2=Qib*s7_0Se$#$+59j-d7HfDieZR zJl9Ogt8BO9D_Qn!7Z>*dr0lv2oxYXz-}kVtwkzq3DCAY!BP+D}ZuMO6J$p#U*6G#i z^29WHy}BYNrqUb8xaP!^`hL|tkmnOq>W5QQ>PO7JmX!A=f2P&Ml@X_cuz zQiYn6(&$gn(-o(s)4#5Y?$iqTtM4G|PEM;=kbT>iuX;kEr=ojUF&pVGJ##UsbOIf* zS*=&6sn+Y$e^l$u%Z^>lN`3#r0~oVbKfL&yc#JOlHiw{qcl#`_qYxwanW6>kALK zj9OvWeR^8GT0NbhRPGJoR;e{kmKMH!_ahDZA~l1t z--G{gg_l$B)vA3ewp;&u3@@kR>(!<>;S_v>>QyJJf8Y13Y UFz;vtg&B(w|muPD3SWzC#{Q zeo1ZgfAhjG+*9<*tWINos3^o{geRoXY0Uo=g-&F~r)YEvb38?z6PeX18lA*EPPsMk z((MnwMeyC~)yogzg)*;BNtxHDq|BRBQs( GS%;^m%h)`h0(4`uuQW`uuoe`uy?4^f|fV=18v-8gY(wJCPMYqi&}& z<{ayGLc`9na;Gx#9BXz$gU_*Yr!xMOSN~tWHA7WSV~bmA^XjCud3{payg4atzCS5# ze||VAZBAly`$V=VPG^7ObT%hWXJ_Jcwk1wyPvUeoBu-~H;&iqmPH!LLG&dp4I}oR) z)oDxvPjuhm6gM4CbjRT&w;N7pP5-18^iOIv|D=}kPih_iq!#f{Y6btKmhbzu`%@U4 zab^CrdefYYGN(0IJk>3Plifc!+0BE~f89Aa(QSj%-7`4V4TDqJEf8A;r_fM|je=8X zo5VK3DKtl7li(y;AhAb~ok$j)NIN682j**9p2(fm+%@&HTD1nhEZ-KDQyN3~G0ym# zxorTL2pWNUcFumB3w=$NOKc1g(9|zq-4~>kFJIf5-Py?MX1g@c(IRw=$iQ7hM8RXM zJ#&y0RasPI@$|xXaPy+wmD%$#xmGlGUyc*I`=aEJ=`KmNC3%r8S|aKuCymE4^c+09 z{ccA(l8aZ}7mXCWkCO@UF9FSyIq_x!PwTUx@rYl4WB^Mm%@%GG(mBAh=;I0O+pp7I zwjqIZUX*h+L?S~ZkYO0YtR5!F-}lxFDnmuo@IUpxE#Ptk0fwqzY7ft%*XuwoySRKj zLiK{U`ZTF4ntsgcet}r~{xp1)PA(v+9R%X lyW0!?Xe9^ zLGBZOpvE|Ycw7N$Kzvq)01jRT8KxW_jDT7fkllDRC97(R)ZjvQUNmtE8xf?2c*uqO zCfwJoQr|L#rI;H2LN;Bk4P0^TYI%$zIDeb~@vXXed$xV1dG<9(gMo;6sg`|OSRUy> z2u>u^M2Cx_k0gv~EGC>1>11L2+R>hzh7Iq3C y%a($!4ev8OjfxOmW8{9{JjH)Y$9d(x0<&EENh zgUY)yTZcsl ^(QB|BOWGyAz31FIY4FMQB{#{=M~Kn-Bl?I~+2+phdj1rhc)_SXW~uzm~s zYv?X<(T<&Fgi(8N7aRoi8w K-`Q!k~_y%o-5&iV-kb8>LUY|7Fs4$3u;v}gH%4-!)ts4EKxiZfd>0RNl)cAGWN zs*ISCx6Dh|bqJz`bO4&4KN+FPU>D*+lM#+ct5Fsjz|^o8>emPsj<(T`%Y6QDj64jE zukO( hXED5ql)qTOK@t;QXoG z ^&K5Ef-#(ufF(<_4YiS)cDWDelSrRL_zbCWx@vmsdPJs% zyvp#Eb9~&FUQ_`f9WDjoGrq(JriQ%je-8m+&9xX`^&G+V;eHjrB-EG0Q~^|fe_Q7t zOB}y-x~4_>JdR^S9dhCybiA<1>3L&jz&GWs5?shXP26Qr4buDaACZXQ8&{-v$q3}H zY3pWuY0K4Al~}|nw)3vpB1KDlIV9s+4@)*75Ni^&j-6EZyT$7$0}2JcZz|h6+9m4F zp%{gmsDFe UJI+y*supu66**EjU7e*vj7H^f0?AjK*Lc%_p zFda#IU_;j6a;+tO&l0`Lc}+(rhlagb^6gYL)5)PxvWD;{I+Qsy?8Ot7^gEMSTv-)P z^Ak8CfvbVyhfPNR(6Dt LO6+NdG{oA>J8}hX0IxpBW%%1Q9C7R{I) zNP(^QR3}P7YpU5f_KtiCmFH$s%@v~~?Y+5Ao-*aRukar;Q@mhF3wfE>gifodHPCGI zU#O*QeL(wAidk|9OT56jYp8)CFPIj6K>x+&0@oq9B!>=V7ll(H6PHOn `|(>(M|_xuM!M=iDT$oo7+d!IFeoOQP1y9|REgM^*F5aTbn z%Zumt+x=`|Iu@sy{e>Ljy`vx49uRzp*JDq|K6h+DJKN%2fPcdFf_98FA$tu8FU$5t zJmBMbmv5_b7G8S+ScT<9_WtLW*(Lsn#|TUOIc&_rqolNdf7zug7#h|W*)?o1yuw86 zp 5nmdpk^Nh|ssw+ndSkdf3i)H4ga sa}_55^S_?U?N|0<@{%4v!;i-y@01l$cFIAX zKD>g7ZxZb4V@0^Vn^Pw)HoZwHttjz=5!<$Z1!?J3(_Fb&K`SOjD#RWONTtirwAOiZ z`?uKw1(}y;Spi5ehrBvcK}@&1=G>9Blro9qo#%h^bZGV S~_ZF zePoHKA%AMLm)}_d9v<+XxC(h_c6Uv)nwA!cSNszO7G>+7ui2+$`m!glmm69E9s& 75fe@j}3Lu-6& zD2ZNy0ABO#*b>U@ENTGHuD)56z(N(F?J_KY^>C=>fwbhIsrLB_rqD~u-jV*dU;n4e z=$8z>Wb(^zzy5zIG~|D><4f#t0j XjCXu){jdO%^nwP#4*~6 #F1v zY0aLWF&Aq`T;M{dS(WvYe^JXP+o(xo9yHD>MoHHV+Lce%A=;D?&ohC2@gM`w`xM@F z$$rwJ&dy1eUA}mW-LAAMhaG>!Ea{}7e-W g& zn=g5#!9Oq;e>_hES}nP_RY2_$dSWw76T8GG@RRN+cp}{dYy9VVO1N-obw$WI P7N2}CIj^M^!cMl6{;t{Oa3={jx9=C1X`@00X%`twr8DVF zrY2O;a7jF+UfOHr$uvke8aJzuY$R?}LaadZJzN$JBh8^!i&|ExavdMPX5+6btNta) zX|Pburw7AS#W|vMdW(P4;pw_dv${H2FZq#kB`uwDFd;ANbo-%Z)#j33iIgmQIo7OJ z-xg3>cIB!nsZw6SFDR3{GNmf~Fjs-|2xh4K_A!S*s$zi!bFZeQHvrzz7dWTkRrK~T z;~8;b05c}H4KF_F&ZRqzp^^9m!<=KYEBBB5aQw=H9G$H9B5i+-0S-)+_a%f#9ZZ+6 z+`HIhexQ?c{HC}vOWn70{1`32C Or{F7ork9@;po3bd)x$xKbT)X3 ze$^BxDwz`J(~h6Tsw(wNObPKHs-`)urkY#w&pby)bErpgN(dwYIl|4r8oT@=zbbq7 z_VS0Jrp8VoO-z6J{c~~tv4H5CWedw^v~Q`iuB7#{PN#! ;Hx)w9P%Gw(Pg&X(b;*8G4~r|H_XW*LTm3&O7m;f=s6h;C8pIcah+Dw( zWq;fZM}w)|a9{-)*R{}} 8X_WK)Tb)JcBs;Cw`mpZX?0HuofdxWgdbWj}u@IkB#u5GWIpox2Q9 zazHk?ybIYf%$D(N$*m(NZ`c-7`@@x>mCd1*$!AW`j9p@T$I{a(%&nO7s8#FsbTeUB z+|{r)O!a@OBQ}xWLx@|-FiGr(DKj?2qPf+3Clu%D+%HEux(us?UPyJ9RI7|bqP!=2 zImCCMBaPVkoke9V?h1sou`aB-yF_y%V8v6+AcI_7Mh3aiSz{cb`NT`w8p`V>y&pw< z=Ba5^ *lpI*zf3gV0PO+8}(w#t}dLE?iYi zPjl*P%u06GI2Xj&gr7 r$UM5|5kOxiQYR>RZWu61`f4!0>!c6H;~4THYHYbpNq$fR#k2gBmYXR zNLjNNLE#a|4mz@q;3$7(#f)NqWM4A&1=@cW_(K0pt$5QOi CtH2&Q zl+SKq*bDa5=aFWs$jXJ&E&i>@!QL;%;2Z3 &VcGQW$(}x2paInO7{CHQQ8W zmK?1wKS6_6=GB9*3+LM!w#tNCOzh>eTbVeLgge!-XJ9R|@oEIzna+zo$4&w+=$19L zUD?A*cp6`t)OHEK!28@89cqiunesWcCDi1y?odXzvH|omFBP}T)V0)w12%uKUX^d} z%4*k=`iWGY%N1(Fkse$@6JJuRKFn~E1XFTpJQFv}pJF2`IrLLnli_hcW23gB=Ketb zaV_9K#4-k fS^pH0`RHJ8HQS-ySDcuI10#MREV6_RoWmE^V3)JpAcTe4qSAtqx`27jkk ZSDw}>h#q2pR ig (In@Bbed{}tW#~yHLkZ-RsMe@dRfK&EI#5HQ~9>5 z$FZkB8G=ORAFG1Bmg?JxIXUs@f^{ZY7g)Cz0%Z3iAo@qwx1qBIKhRVD7o(pk@K>k1 z0{UQ51U=>C3xCA^0)Azm*slcOZ%HqipGbQm{h4Ni)byIDvhs +)bH%v~U zrMOX?UMIm>Tv~rlfHo@ZgC|~vw{HvwKg`WegdXn+o&W8~u~`AVPReDo6JgA+X<`P6 zNi?btw2e4d5NJv~p|*xfIx&|@Y9>;Dmq05KuqH2ia$KQ&3I2>df9588p5gBl`0M<{ zf93^-Q(Zxaxr|jhzLVNZC)Gf57Rd?G;)A?$2(yj{EV6&38z5+|94sBucmyAeNv{rL zi?7Wj0NFiu>(pJr_=^3T04m<6>d9#ZumfwDA>dyL0OO!LUvIcD;m=kY;)f2H9)7XR z%}Tjg_NU=y)91n!#ms|q)WtGS#9 1R63 zEb_iQ;$BjLSqU6ItC|NE4})DL3*1_a_3T>6!JEP<=nvoxPyd0F$*=;NG2U WB{+&i?13T6?dPE0h5aD{fwaO0?>Z87u)qIZW|{V=VfQ!E%l z!%&$uCrw9KIy6Z2t|B|u!{Z5*#an-TF3YR}`DHU)t>R4OC Bx%}oCPfeKJ|<*rr~R8&3>QbtCDnnhtJKQ4mn$?#C8QkYo1tsxc9oc zbCyGV$>!wvN;SUyh6~%22}B+gOtMcOUuTR7wsaU9^u+R0CTkg=-PD2;CntYe-m3B| zP8!baO=^C9ZC{;9*qy-zrVatb4a@G7agq#3vVnwOw&NsgnGx3SFy!Qp) $Tz))c71}i${DrjKLQ&mr6@O7Yb*WkKlffw=ln`I&+6mnn= z-8eGO7;|0+USuEItZp*KJrjRKFkq{yRlP_%-ueJJ4^?x^hAbF=V3=lz6toSVPwZ)> zug?_OBQ(QpQ;{baNUsE1^_*b)hm7&fI2UCuBvR0qcqX&Y1YhVr1m6{WhIhEcnOJN$ z9taLhsn+*Rb*3$K*N9;A5Q}+RwCy9%(DtCL=|n9rj?EdK{=nyLkE?$>EIs0v4PGe} z$9}OXWIVw~jA!;;*NB+<5NjHl0+C>vF{b<#-{be|_zIRxU?`8+VLo>(dT33`TIpKz z9P`#_6=>~u#Um@-gl(3vYk3_hy7dRG{;-2Uqt9Ud2iT&~VFt?BLX{cD2zdsKGh~b% z8D-2WC3(TNiP$wn&N+X%-%vN+v#xCGktp1);y+UBr0lm~zXQ=Ul%;fWJCxQ)I_V;7 z7qL(@Z-zY{nO|AZ|LxcR!%2So^?#uSpb1Dwf4*49lDvux>ox~Md9dLc?eV`pi2 *d64nT_P{`+t8Wf zY81xDX`9ni6wh_>gJXmQoQJX*55HGE8jYZcY!D$9?Zm_uhaey#<03K?v5He4N`APT zpYR~KwA?>|J4}+nknjylI6G+$J3a6%xdqBSTleF&2t$7Gjgf+FnqarreFdxtct^IF zVb7Ou;bsHrsoQ^6-z7_n_3a+s4v_1}7}A9A=oGl0^M?%BWyp^CgR#rXJzrghOB {T8D+>Qxg(Bre9rcX)R*(<0323Y zQFj(|@N|D#+14RQ-qXSVEN{m0GDEXqt>1mT|CoLb7aoHp#vU?Yj!%S~a3xkd)a=sh ziB34%wNHO>+}Wk*qO;F-_`Dy0Gfa383Kvi?+-ujgxFk}PPjjjdk6)QF@H2am>p331 zVy_cG_*uvWQ~ry$FIF;-*jrb+$5R8bL(d3LX=T`3dQ?Qk4wc=Pg$M{uikdIJ-=3?A z^t2 oCLJEH_!%!(AFg8eGdkzyRYx!56OTwZz zEETY0p5*Dywc1e(=T_NJ46DGfP$BZIWu;+hu7$wmP?AW!Z(4X73LY`X-41>M0ut`d zM>;V;f@9G=!Tx?aoZQmGsv&ZMQY|>)YwWlMBd&bV1mwgBIH&Z!NOE( -@sZn$RlRZ|by4B@XWDG<$etAVusbc^xS9$(RQWIGl8&fb(w&Nj znl0qhrux*D-Rg(e(_$U@MRJ2N1>^Q2`zU|dWytPD_E+GSaegndYuIj}Gcv|-9oNVu zS+=gyw}h~mz}O+PBelvhEJXPu->4l**rkX5p3dT1crq0tmr)KNjnw1_hU=P2y+%QE zh)u@zPr&_yl|$#tb!@iC1mamhWe_ip8xLz#AU_-A!!U=-f06z0m~j9Z2k;`hVhDfa z?Gl C#BAH-x*%xL5A1uVUAIr4QSl%p(z@%9^Ey_0e>kdxlWP)(FkySjAO z7W _n$-n6zKy5&WvXD94Gfn!=rdm9 zd)ee~bIg_ID&>?byGe )`AU-fc*DaZjtuRMrLj%*21s#Col8 zm|3q>`m@YBb-E^hz+~DVlsT3Js4Ocx%qaD$ft{^!$@~LUw&dkgPF@I{JtOPtI~8^< zCOhnRV%6kK0NY6%zO7tVwG!nN0$W#>_+kxJ>1YS#9-F?rXQwgtIKttNCOn1mZVX~n zh1M9dVU$ 7f-jV9WH&=h4f22j8-3MwD zA$ACX$J;ah8Ma & z!efGJLM-04DUL}?x5Drf{c~CAW(6&6VIK3m# xvsOn+q8 z>_<4p%kdT1*zSK|BLja3JyHYuUUqe`gwX&Vy2sPcSU<%BOv?;9fo+s>fd}*1p>1di zc=}SMZj0?#4DPeMXiPO3vHn5%u@tj%_%iSr3Ln^0?#kgz_rnt&;2ZjN%U^j@PnbtO zQ|+aam&{9<3wy{xZ~xb+-Ri^ZO7I{nUU-40g;TpvBj87wl<|M0rCKPjOVYliJ#YJS zOA;%hm+^M=<|a>Fs!qkih#kvsWxYzB(g=9RLXKflnwm8~%9vJ(IsfEcO!zA%KEQ+C zFL8rRIGUIuO+2bNkb3cug7RSFiJ?7wEid^*!@}{z=~O)q#VLU)1=bns3-~>3dn|&j zz3h|_yOw`) {^uVepKNuy(y_cU#h3iw`R-Rxl0)HL|E6|MsJO}=YVDq|Of4^;j{ziwz% zV4vB&puWj=%_0rCOn%=Vm$vJ$^XpFCOd^Cr>;qdbubqGA)V=h >yp@QQz@lT-dZW8W7k+0yB4bIf}<8IiPc z9y9)gzcTh~5#WxtqM{IVcZBpQLC=|Au@rV_2U3=Sha}1$*THxgh&**mZ5DFHzOZFD z9xx(1E^U9c`$u6iD90UbL=Oay*C*7;DC7E3cn3dZ;zNW+Y^&u55i~4%96RvgV_CLs zgAt_mEp2flyLyE$3~1TW-$d(T6U x#fYawU6Id1%s2=z*U1=a*G z+4Vzlm^(4p5%UXndyyeu44m(EVz@S0Pf{zO7qWj&6=ky0Y*-i+5zN`==$#82aN3@J zVF_Ont(aI u>70m~H?0VeY;o{23&gaxICh71 zbp`=r-DpYz9g;0L%;Be6bQnXvYpUH!jke1A4gEV+gWdHIEnpqYBi>i=BNggIi>Xt< zf^C2N8tND(gkFYs*jBRdl>N`N=X(p`OA}f7p(Lx7=MnGE@M9_J>vLN}=f6ua@|Vo` zQ__+*`@S3`j`H&E2v5}Vp0a0e#UwEE7`;}`MTTh^OUocFky1PPVq{B>4Q^vGAw`{P zrZCmdE|MP*gfjr*b2fZVq%|8;Q?|!q`MQ6SUdyovK5oBcKhtQjy(2u(b=Nm1Zo^fS z(M!67)QlOhIdLbYQmuiI-EcE7`1y
zm|7j|0Qv^Q{5NnwfmFMd zb<>I*6ot>Q%nnZkG;kP#RJ(*)<029)EA<_(^4s!MlC>HamrS|4z`yf$Mto1Cc sYF+UVbIQ@w zL|v6Xo{~;Apu#}3xQkrD9r$|7UNu-jg}D^AdtGH8MM^4ldfbMB;CB2^+>uJZP%zWb zL-1?%1w-ZWKQU@*k~IRY9dNUx+_8V42rKscHhHfVRq-3_ZloLo9E-2Gr*h_zAYj)7 z#~ FzO#Zs*RjsZjC52ux| zp gsiiMIu( hG555ToqmWFX*SJS~D=dDO) zabeTxwZf98qRk5Hof5fb>YJ}H-&V8 yq+9_6#{r$;-fq{=UE!=4@(Tx`X+9!Nz|BAix{~`#zB3L`Qu% z0*7cvrz3leBC$3eGC%Vy7($q5!O_3W5~cev++VPGflS!C#as5+#Ij*N @uDw8X#K{svDRhU_2uEJPVi6 zENwScEu5k*GWdVa-zF9>zzp9PsR>bv;Pe;12FQ|g@~up>>@w2QAqgTR!8tR0Mv#{i z_#C?wGt#kBV#tX5mjc5rM6 LGuH~b=~s4pyU#_}#TMY)w2LLV^m zQF+Gx2S}5uwC BZ z3?Ad2bAKt5GM=;y|F}KGGo7@V{Pvh1+H#jv7rP|ULjAx>7@ixYZSXfbu%Mrl=m`B; zw}wiL@k@WD+g#RgiO@rQ$jvR5yt}Z8c`d(T!^P|U^6mqiN$X+L(%AwXEb@5-j6;qr znnzj<-O^q|;Zw4(SqqGOM3zPR@^g#o&|?R$G2;XA2{pCK;U^^3v7P+5NV}6V0m$V9 zKp;q|pF`4$GZA*$44>hKd2EV^V @*Grr=#mXB~oeA74G zI`$**37YXV>tZ9=i;vW)@Yw5K>lBMQ^K16XSEAx^?(qT`pTH$88dKIk_xz3<`yCGZ z)o5uhcI8EKVQViK9RLpv#jmgpEZJSt;nwHU4TLe+Deq_WH} 3y8zAD^nM|G3!_GE91Wwg5E=L=V{FG z6zi%J4J>kg#7~oe=8-F^Bi$e}4!I}oBYS`5GO0cj-mgiY4L=v+zT>@CvhAt~b`AgJ z9p$n3wnhs~*^2g8N?3}Ng>OK|B?{9y1+A0to`r>AiP14RN1CJwv^4?0I5PPNV#2NP z3C@Ju;3LHMMOE$~UKW(KFXwLgxseHQAppyD&ICNuNKK;$-VaS*FK68UQzm37Dk*>4 zEyv+;(H@(`qlOvx&zOLtZ%hbB|I^3IWqb0#fIpT;p|NKS@+Hq0Aj714QxamjjVS@L zraGs7EMkDG=bqTkX noNIjZ}hJQE&U zpE!^45f{N2DthGMBf%FI2NJYQDolUQ@FK1SQh?FwNxShB!MaEARJNDH-^-xNaP0*h zE0wfS?!U0t*1tqNU+q?5E{?whKfGW)1c|44vXXWSGf0b67KfPlqw?4dr8sgoQq(MD zow{%=4&^qb0*v8%`2Qkcu!%?Nb6V>TOn)K|*(>;K5y%FDk&A-ZKc3RoTMd8r4;U7m zC1sej2tV(u_)cQFWs#8@W+A+b#G<@#u|!phc5c|QaWkb Wb<4hkJk0-j}r5S~9vCv*HI|VR!b=8+@ u$3a}^G%Kmc>?>apY4By@3OYMYNh4seiHSrR= zn$P}vrfu@F5j lssn%SbaQwWa S3#IhBM&NTi&1KNypd*6*-I-L_WoxU1Xe;SlsNy(6Lw=SYd#u zVJ*UJv!h5fWjXMw+!KGe08*ql>oW&GVb2wSRJc}BM4tGON(>EnI^+t^p-)(VQ7lBH zIH;?@9J5VToKN?s#05ce{CNLysk_s30t&dreZT-sOlZ?uZ_HNCk|XVS7VDwW4JdG6 z4Jcy< WctpmnV9B+q =yS(16nQf*DP(oAJu;;3Hbb|HErl *2o_xH^Z{YWG((x5FWIBx@Q93(`p zaD9(IGW@XsX>&R?5ag~a?nR8xhjfUw+&{3yj3r{|(1!&YK!w2oDLYd1cj>TC_ cseKd^Lo*{%iOSxto=;L;kNDeoo>uT)6s7*m*OuTZ%SrU)&RV*uJ 6QiCZP(QlZbt ze9ph&f+l>+@S9x(n>n=*40yjMEvdJL*^))@oWUhcz(`j-!Ht0&&lNlFPI#WaVNs-E zdbKB{%B%7#fly|Yt~Ko3*+7O#$U(#_K_Y)m+c()eh+z%Wx*sV?_KuQd7ijM1pFX_z zP*nMXg3g`k{*YB0J)77f&^1Sr?~5ZHlNK$%4jPO}%jAkCW LY8MAF>`hg<&|aj(CXav&9VHuXzI}>%p`gD zSog)Za9!LiFNZAbwbUU?# !9hdLO9o!h^& z&)}zjm*25#`*+NsL)$hL0axR7YC1@h=X}i#wvJ@pbSt?sk;@kVhUPt&6+eH4H$?I1 z?g;6fRx<*$G5vvmqHV|!8U#Oupr%~uu(IkFV3aH_`5%GuxmL%94&chI`5L1)8Xd#I zL~3#z(xpzFa$4d(c3vLy6k8U9iH<74B?pqQ9EQo^r}(j2U9j9RaAmm@sLP()IULti z)kDVUiJ#Z+)2Qe=)8?my%H@CM{Lq>Y5aQG5#-VevPT4NQr5@_TLtD@?ONRx=axs1* zOSl?DO96h!ln)_z<@r4 4hkKU5W?c2S zuhsKCKEPpR?QlHTw5HoGI{D#c%<>U8xb^(+hvV~qht%oYQ$7fr6Lf!7MU_iyQ0`d7 zlo!YrfcE46f#=!`hJXEDW{c75bX-ygf%@b7pqgbqR_`a0(T~o}`-qiMOyT*Dc e&{nctP9E!yqf<3gNTmVkBm zkjW20cuO)Lp0k@Q+hKnk5Rcu5{dGy^^8j{lMkWfK@ShyE7uXf*{4*&Jce>cJhMfGG zX?ZX1;CI;resD;@qx+Of2HJQS1W#>a6Rl+u2d65JWuKQd^+eyakNNE*=a+Abwk-{t zt5$GsmhT`(CUa!Bj~sBubBuxWVJ7{zsdmjnZFJN$qudTv-lKoa#K+DqM7j4R#{OGD zX|ahGf|=0*Y;{iH9g7l{7q+Tpf`DncT-2FN%|xmjl2os4x~{o5RC*hnIR{}Gnc{{) zdvR 5{G Oul~_i1RA^{tUmz;eCYX9g{$1 zoOB@Ziyq#`wmF`9XC-FYM&0I6u-Hc%f3d0ejqGyjWmF_T4WjL;E5eOjV8c#L&rY78 zSUxd 5{lFOm^}!M| zFPKRqr<`%h87J8J C^Y-trR0UlQg7?CCv_izUn-vLCyp#kwOsu9KZl ziiLl0<7$bygScL?%-Q***dI1C!pyJ8WK}4#U_1CIXj%31EzoF#mW~SHB{kU8u{Qb> zP&(pkB`srVVd5c7Emsc=AJ%qx^3#BX$hX{VBHIXeXFF#*$-&xoam *lv# z|EDvs#RCZ9h-lAg&6-c7X-LI+QwhW(ct?N8iMI8oCwa6I6`Ggy&+KKXJf@?O!M5B2 z1PB5z(>2vjsvaO?O!k4!OQhQ@!n()K7{OR8Mi5-Fe=V#f7;IC6ZKfxWD2fl{wkzTE zf4EKOq@P*J+_v&{L%wT;F^(YU2{V|csyQh59a|-nIG~4NQ&=WX>7yefTJ?RvC@g-atZnjOUUuoO5y5F<8l!F0!s(FK4JaS5BfGw_WUDg!?e@UYoqw1G*m8xNeNN3n_m z>|&g*;K539QB^#Jc4GUsuwRVzQozpk1N+L+X5+5`;FA;%m5HVpT*E9A;$y+8@$t6k z^D9%EVah7{X*v {6-~pnn%f2jV18bcDd!d=L z;;`h0>9UXw-{jRgUb(};>G_Nwz2m7quo~WJLF>cy=Cy*q5g+4D52kV)Nt-v8MbtNu z#Rol$&SI%!cAO(}7ShG9dWr3QuAD8Js2zcZ32fzai%i}uw4xcljVvC6$;5wZNgE-C zL3yK2AVPsnd5ED@CQ=3{JnIj`!Q=O2d#7y|^;ucFsGLqdlyDmENI$uxOpZ|_VSW_i z=So`u82CiP+MhAh24wFd(2U4`#2*=a?R;eOEifQvdw1KShC6 $8u}Y| z0O_X;KY5~LLHppHFbwn)Yb<{gC$WcC!^2}3GstPe>$WIs&%%p&XQj7C4rmT|Y1l1I z+0Q6z>+{lf5E>?YBLg%VKP7DiqtpachPfS;iGgKfx72R($sr6=g4`_+ia3CpnaNj+ zAod9ZI(|&V3X+aINh{)0RzyS!BTPmNQU}LZ{4>tK`DYxj;AcO~a-4q?15Xmm;gXk7 zu?LQaL3odC8|hj>n3=uf8|rwvqrW4X;jaZGZ)}D#Vtl;Z0Z`9~w^>6$Q=coB950)u zr5uZ18|+G#ZL~>^5r4M|kG^4XePC{66Q;CP7&% ((cyoyXn|sN98}*I9X_Py0 Gzgp4MP;zhgU zcLb;WmU!iE5Mv$!2~R~dPIKV3Zzyy89D7IL3@-^qWMqRk$cGP^_~60?H-|7R{4TV3 zs+8AFCjOoYe93lA!H#e&J%7(16)?0Pn(V9{fv^y?&)z-O#j$_f!gB#Iy3!k8$3z`v z;I-l6bTZEC9ALDZ #s9oGQk#NR5SfnrR(ix1OK3?YU@HDL$UmBX9QAYlLGdu;2lY|OC zK<^Ln# CDK%K>xdf5UmekZY^ $f)ygL6@b5i?Jv|XqMe057KxFAB8M_; zkz5d_g1QWyA8}M4F$5HY^iT8tcD$AJv%ryI_eSjnOBJ3=@v>Y{Va}h;Y~Z2B>?SpL zqKkG_om{kxv =|jN(A#X^57~Pr!~c33OfXaONtG*%G%hmUv&ISVHO*c1 zx2Qu#Q}r4~ep|wvVu1X8%se!Vd|Vb%8Ecnh<2uh_kdhgVdeF#vI7GTF?7_Tg%>FOn zkjOnf=6d}7? `_bXpS)-Dq9V|2g)So>er;d{No+s zPTZlmt8x7(e6}a`7|s?@7MezY5i|-@T8a(Sl y7c3lUV4Z_lGJ>|v?_qdizqM0g(RZL1KXE#of%iJ4u%xrEopyxvzX zS?#1W=KvqW3q!;U{nu~EM~?>^h8g4;(Hsd$6X<`E_@ 2rhScUyMDkr*xm`muJ}S_Fs0? ziVL-z1JB`ov>eCwP`_&{NfkF3f>cG`X}9B1@*fMgQb=*5<7c%1wip?Il=$3@`Wd4X z_lf1pX|~2l6%YdBUR=0TNdtld23Gz_$4k4S8F&YR_`ssm1Y`#r-WzhQHlU_6xq|1I zIPMd$O| bb_uyf)_T`LYrIi^^>$X1K(M8567veu=ymoI5&g=#$$@kPgedJF%I&c z!iP(*!cM+}d=sYuYEMkA5~;cL@wxl+_whw$leN%$uyYOKj&opDnP;P}?dsv+M~3!% zh1fo4$w~NXf4+X#4Sw`gaB@yts~7%9eP1HS+EJ>cZh)!A5j!V$1D4_HuGaZc*mMrG z`72!Ajqdn>eo_(vjV0QqqB}^T)Dv~To`E0t6~)UhY(^%4w!{r^&~U;{838By<+6!s zhEscz1eP3hKLtF{{4VH4oZ+qMwc>1UWbGQ~`2C>s0&r%Xy46>@PigmlQV(;@5=?Ra z&M+>SdD+@e*Bis3-?cBMWqKZF5`dZM6%MKKv*+Js}yN;gr*inis!>jscKZ7+R`T z)h@f8#r e$u* zwi=7zbIiEiHmKdvhdh;=1hG&;6{O|k(7T%^W~~6&Ki*5f#EiR3V@9ryZg_3Hq;DKu zg!hErS(Rgz#W0u284>@&Bi?01!M78bc6EP2_7xzc<8JM iuMBuONj-B{;O2qPCJhl$H}i+_0q7x-Lzyd z7xxA56Oor;lG;KFLyowItcW`=2g3tm4o&@lVGcR62 YZ}geXK>RCCLcb8?jjlKG)Vwnx^zJ&zPasQO^YzaVpNpRlkE#PIA6hP z4hhIpdu8rSFxe?{-<$l! NOzh zI|uT3oU3MdTzCzdZG4Oh>(f#Pnn^L1pmBf^1{Skpxw@+MLxVb2cW(z0oU%Xb6R{*V zELMx%9x=E+-*yKO=Ac3KX(%$P-szI4qwC$_?IaKh{w)NHX!Lk2mq3t-R~LmjDH(nG z8hCVltLEo^Zol{&x4iY_lz)*3GXwAh_VY!6@tJ!=qU@TZl$&_DtfaK`DM&~~fu@u) ze@543{efg?gaijwzPg=uMT ;o&hkoAx(+A zpSv}rYKjCy-PtFxTR0&eK;6;irh7bi+5n4ooKHw)&hE b52NR8Ml(JcdB9 zx)M$M2yawS+jGURK~aia2s)%JCGi&jy-R|SEBbA;wef^l4no}Yd_Zl`jK?LIxr8q| zIs7rh5*i_#2aO6;>R-=iTMs};%Y_G2n}2;1UXX*0BM3bhJz?K_RlbyZD=QK)X>`&f z9IH;CxEe#)?I!4Sz2o53u*W|d_%kSf%4Jq5Q_s*TnXk6O3S@Q)uT|Yt8irj=x7KeA zh35MN)@eo|Sb0)j7)DlndK6Y4-sW3x>x-v#-i?*WK&_tB{H*~Y2?j)84D_AT!iuFD z3gSaUU@nD_ {f zLAk25 )vShUiLDFRf$NOS+V6j6XQM@6}L;`Mu z!Wmyy_dFc#)&pyS8*kciy98R9X^}E}6J}G 6gc3jQWoMe?iz6YU5OM&00GGx zvkqqM2czXO=bqtk0Ws4DwG>6K{)VAUbscn7nVzy2#uO=UvH&gi?YOgn!nQUpG@Ye< zG5?y6hSVmXCB=U_p-rS-99dva0{`wrZ=KLFu*i*xdm$k79Dfgd*?`7i!E^;Ehkb4n z;u=aff`%Os#fK#kQZ6-uAz=0^BJ-zJGpG+nu7ozd27>sH8KM?AF)gs~_Ke$q(2e-Z zGMx;ZZ=@6RuK;c_H9B_*m|ltc5qMvyfHA0{{H>hq>)3&pqXz%X?b~9?1bVr}9f62k zaH=<_PcVoc5WF-EINy(uzB^xaUJ sYQHdaZG%ZPnZJ zGugM Gpz<1r6e@=0xU}eWA%PsqS@ xg_Hr07$^y{6TR66BhLeZxmX>NM>i$;G3d}~J} z`CoPwFZtQ#Gv6uIe^7qoa@2ywMQjTaKQnaa;q}n$MD@)I_NmHHaZ|^4lRmFf+*;7x zy2Hn@j?ol#e7}BAY5wzja<;z<<__2_jje$oHvzzny9Gl+Tj?`TJ*s{d*PlsHPpvr; zq@ZWZyl%sv*3%?a?4kYE j3NX>kkDSbKFOX-ElPC^RBjz)I3%6_t-(9zkN*Nue%<*YNO&8b1qB z#{e x0Ij z{xoVZo9+#7VrO(+l6}!mLt5=}7ivr$a7@J%V+WG0 rjUe#JKRuyOzQm@tv(<2j1M{ggjs!hC zXl{XYB=TN&BaYbQM+1wX7&<}h`%+BkX}T9?blq1$HOx7gu~+9rFUWhC#d24%WyPVQ zi{7|MQnB!VfY8jN520}#*b~lIuY`jrKPHqV*R3dbrEK}_{vLLoqo@}Jj1)B72M$P4 zxF^7O+R#8f5_H8ju36s`z8cS1(XvRN+>{-!VzZbhKVk?lVC=&T^ABB{3F={FgNNDi zxRExLdAziUdXMQqE=t(T><_>S8xT^IXM3w*sSmGY7(#M&^4GM&56NvW*gY 0=%1tYD&gB2+{N+v*EF1;xc zPyAthL{;LfiCzk>0+HmFPFHep$2nwdmIV(7tQ&PVm?haLMPdWRh+wA}`KxzAZDWOp z*R@-DxPUft^DlR3sF1q+9GAsXKW593Y?FQY^XLAe-Zl>aK|}8=F1lVYKV7yIE@A`Y zG3DY;Y5p-Z#qWlB;LacKpaej% =fhgg75O%;oW956B}%>oy(D~ffYZqm`{Ijom}?*EX{Nz4pcPcMfw2iFFa zLvM6nZCX>dUkYR*V&Eqtld*USp5|tp$j?idn0|wavd>natff%g0PQriyauF z3E3_h<$xdP5d~#pI?YU9-cm(fse?i4Dj6BsU*G2H+8aNpO>|FNbu$EczE=P<7!=I% zND+^}cjB*61lIryPPywEUf%C?_UjkgWp!^B&33$xL-iZsu97Al!+Q+H2z(_KQN{h@ ztFz@A?{MkRQDA}xIWK^+7Xj zIa^{Yv7&@IvMql4V0S)uGaUXr)5#3_^biPh?49;t+jv<#?(<>Sh#YcfQbB-Wqsqrr z4bC+zvWauK9bRbF-ixS$P8{h^>2$vuY*>Gn>BYII{y?vYuLFRp$&K`Tg>4(370e?? zLYC(c7lz(eAOw~!eN1l_=Tab~*q4ve$?Ay&Wl7y`WX#k0 QZd`yGeIXQqX^#LX(Vg-Xc>Lb^VS6gS@0Ir7DW||g8aMrqeuTP{Zl}7`9T1ucv z+H@Y_^6_Ml7pCiPm}@Jw8GQ@KPKJBfCiYVli8}f`yQ{EatxV@l@p%OyDYOlIgJIH? z$19BQ3A{;zF{!GEP=F2_F5>UC9M<0*U7(}Kuy>51ax{R)R|@Gvmr4Hvnse$CVQB9! zRLgM6WcjHHCvTD-psw7hdYv5)16$xn1=OD~m~!dKt8jg;%TSml=-yRe^dEv)`?o`V z0cwYanB1Y*{8`tyij~F+|0tM>Ljy2dxuAxJl2ni%KM`d!@z_os@{rq^k;;zo)RhCs zb-VuvOaZJnn6*)B^CVD-N?{Yf^&G=#%{?9B(|5Rb)i*ZOyfz5Qut+v*Z^JbNLX o!XMC+x>akZ4XL~gBDik>hdVt z@2v?+6fwt+i#xsqLy%nmqy~bhryF^5m4{UDiU25j1}R4Fus+-N{mkWkM*@6J5e68d z{`%{FLrbG6q_j)6JQ{pPX=oUZsVC2E0uI8(i+1lCk&r7l2EOl@`LA$>W@WglWAgq+ zs%}FMGXi!#T6z(V1nc!P|HCVv&%-3n+?dEU!g$0z#Wt7(nk)y0uJ|ZNoMplPhy(pG zofcqj8Q`%NEGMzOe@zrnBV#Qib#Usfm8>;@PwFQ6o+#ZDcq4eXZoxmJ;Go!DA5c_c zu6}^=SZ(7hCEBJ ?Sjhvs6A&P&%-@zs)sEpWkhb z2M0RNVnt9pufIJ}MN#9rt1-{)6_64`!;K9m(vls2=ebPw4f#xcQ}`2zp-BybR}1Jm zssqN?;VCgNIMXJHD Xxe7R%c}A<**2UpCJG;+!2Aop~TZH!y z%zGc(5p!g8?=Y_Zc_9PU3c`!DX`xI$@u_=6oX?IOF7SE4AcCx3=|*3AHd&u hMD+jf2^5-sFm>`$Ulvd2Yjb$-+;iCxpcg4f=BBLYr1vxu|j?`G8~iUN~Xy z{u(nvN)8hj=;zaXZhen;e}YXVeBbJ2omB#%zI|*v4iSB0aLRUlr<#2~UC`U#e8f(F z9p>W6PYGgl1dqEw0jxa4X1HHy*|rIVHjk>u)|brUO#Ld2SP500M_$$J;`#@yp9Jgq zIv5jwtuPb@hQ_nPY@AWc5W{YKSg`kxwfHOZ&Vt6z`w}Cx9O|P^r8qpsGN&KPmJQt1 zcqfihO;+wqwW}_R`n@|&XLVnyPA9oZ!8fqYXtZzWW!T*x0460cf(J=?qYf!@yjDgs z?5Irs3z))LydkiFPJ#|Lf-T2AN7A~|+0K&1&mK7upN@J-lpZb)q0X`O+wnTEr_+ ^ac9Gc)g6cNcyt=9k}eoDqN<*Yu*r4Q z9v*gm91T_MG7qlyFoV*Jb5uk@kyrt*=1*LCbMWH=Dl~RXF!)hW{9^!S*Tk^fa5G0< zDYNJgMy%UNkIf`QPo$4cKHMHl=}5t0pl=bMY)}?WdT#Q(yNB>{zey6@J}_|E$iRu< z-fgtaGsZC$+*wR6JQqhB#!Hd%5Nq4jDNOEd$8@6*4>GQ; +$cHOhGt9}&Bem)%!Dd*>f V}ET{;qSez5k@p+4u$d$v>doqNFmqx$#T&Tp~x-p+MA%88Mq_g z(m=g|qscbrT9_aWLT5i(?mI4KGW-d;kbA2EXYRMkcS31OPo=?b;`#D-AlLC$uju+; zlAKYD*rqZ}wejdUgnjZHMrNCj8=@F1CfujHd2Gt1w5PBbQZ5NTtD}|Y#F>see-c+G z%3k-m3o0K)*opS1A8v9@EgHfJAv*R=E)pB|N}Tz|wk?;7kX{;%H#w@u`UFWXz41E% zgE3`J5?=%~obT{zF1h`hWJLhGkl6&Sd!}5~2mV`$4-+H1)>u=0dP-gy+f0kqNSME0 z7hu61uvVtiM 0&&MLD&wPMWDiz|ZE4A;1MGmBGKbN~3}`)&t?;m+#p z+W9W}Zm)o5sDZ;KaP%6#)$D)%=LiC1HQ3C%zQ*8j)#z8wIB<#3uSBk+9gV41M;(q4 zrXGEaqG{_ myc` z4j(7K*3oB#^=nW^=&YhOFOE3>ag-{RA8VinO%BoHHG4@oRMffEKFV;0cijMdjPPnf ztzc*Yhsu?`t$fw*Qye)&NkIXQ1c`o>&P3Ezw?q65|4UzRQY@0!tqT07Sx~*yJP Lk}m%k=3txI1jOVI%)LM8q&SC$p*dV^r+(V1J9_6w{>c*ad#O;nL3ey7a;h $(AtH3itV97jig7RhN$b)y!i@eJOTFW&8in7pRwZX}Avcp@Zl#=F8G)jm`_wH0!; z(-HaZQzaQ-X_@1Vyir6GpcvlkiNUwdL`e}+iR_#Y_)D7$L^}dyAUOc5!TN;C-fumQ zd?v;kDA}pKp)Tk^U=%sE>Bc!B$)4}TBbZ_F3cR}m=w=Kg+UmikDJI_VSY}cLRO)te zG9?FTpOV+VG|Bknckc{}Eqax@A{7GEjr`hRN`H@a=Hz-#Pq&a3A~6!p*~CtO;bFTP z6)=IeEskQ%c7zakTTB5cO`OR?3H1NM3CUy&lYE|VBk( k_cmGc_sIyqI}eXK|K Uc}xqxND593F1by};P zLCu!}v2^A31zDwibHF=+P$U)-OaFCx+!j=9nKlqVJ2^cIaa%vjfmFptlInL1OWrDm z^;NDPn{HrUq_qOb9czfZZLqrdu`@@By02OfCMsT7utc>4EjTKC6{JLgZ+$CgjU5|r zRa1{jn|ujP((5^A&-YMJZ;EQQIO7iJD-EA&)NQgIdww9NUA;p_N-x&m9b1@P{WdX5 ztznM-)q5Q~d8Iv?%?{VkAJ!ZlibR;$3v@F&;bD|wrltvyWTA?R0^Y%mY~zTsb6UH@ zS~%4EOU$Oa>e{JtD!K^P&hOm7Q?}7%x+;CPFNX6SEmJM@EKslEGDHKqBDx;4lE1>R zqJ@cXxoK{8>tn4SUt#iS?X^+ITDLUnGE#w&XKX*Z)?#liV=l g#I2 zIcaLJjTZo5gNK#Pq@=Va-=!h3kD$23TgqFVDDgW!qYc8z)Gh@JGR}PKp#fIsr^RyA zn%trC6-tSQASYOVQN<2+L3KSWhpH@JAs{EY4JETK!l|?ll|Vf;HL`a#IB~rnRM+AS z{Pm(%2|26a9=Z2=Ni0G~KZ`?e?W%V&gXP0y(k%~&+^nnmoP=oA84Bda7i7mz |K+-XQ|Y&kMc-1kj_WKH+deG3kYy$6#Wn^gWhdz)3)>PD<$it0$UDp%pIt zryjnzjD`>3^4L*#-_Tk2|JezEZ;8?@XEenM{rp~xGR5~Q;p7Dap0R_}M$7GshBUEb z1`HOxpAR?SUWX?wkt2%D_+ha2cJS0}2uiV(5sfG^`3(Qh^`Q}5bbo`StQ{tfU6t=r zc7aQV8d{?8zZ_g4YpH+jlakD@BbzTfcTI)-M@EABUE;qWBaZdR8Jqh7)@j2+Cqp2K zxs%|^cjkp7B-0#BIa2&$utc51F 9g(6(Tgst;YQImu(U(G`7@lvHZFQx`vbt4TY zoCy_bD)o26#+&nM_vXofY`cs~0ya?%HrC0^7ZNsKakl#cyLcN^%fCqOePh;wAKZ=j z Zxn3X%!xg$fBHCdpT$bI?L>T!&on !k|foMhJw*w@l;}Bdg%-3IltiX$8n|(|;PsGqx zdG?FDyc@SHC(6^xxsJ!%x&uqsn bYCOtQ7N __r^S zDHEU?VDtMSB`k&xlf@Z`_l {Krx?46u_-RCIsr8GBj^sQ;v0T=axyY! zJ51Cg9T62HxB+G_%;@PK%#iyxX1JPWw~UmSiea!+o+)GiI6oJgf9;#8MQej^@rj`x z@hF2k56^iO>Pg?qi-MgLK{XagcQ#T<@}fvnI2=K*c6pJY7uSQ~2?{Y;WmsoYV0~lY zZB`Z8m&(NmE@>24GN9rB1S&}p4><+u1t;x?h@rBVbF_H6{ez#8HDN}M&(0Dm^g}k4 zM)_{2T`NsM5jBE~f(Uzd7Wafx7A1IT_p$O|0e5Ky`WYvYw@l=~#NN<=f$n`yY1Hoz z9&~nx`7+cq+M3^59e5qIwRujE%UrwOCqGW-TbLl6^KqjU*|VUfQsJ220lQ?u?U=rf zF51CxPTSI>c0)&yl!5r*x72Cy^gMqRNY+&GLc{I=JL_#HBZ58zi#ynlQI7xQ<}(Kb z{hKt*lhwUQZQn-fC@bkzoGAO@<0+l-Mbt;}Ku^=%ze~%zo!3+1daydORWR-00*l)? zByo|qC(7(ZOK#}>@rQ1x;^4oz(|MFoH%|<4^@@_ag+6M&)OTLW`+D)!{&scM^?9vg zx#Z~qc-~{MB*N&8JXJb%d#~ ~tmE3?3oFQB?vD(epel SZ6c=*=?=qlh33$k>LPPr9dO?pI<#K)!VE uQro*;*6ff5G0g-nn(uP(-ZZV2)%N0Zb348*NZ{ zi?WeJTW6eR*oq ) uHB95h0a`^iyHhTwF# @y=;M2_;6XLicVl_#C z)!E8J74M^hWfsv0U^JbUJ(!F;H$RHfv7uL|3fo#W70k-av2AV`X=I}iXPG#iLH z6(|G^XgRfaQE`>~v-6~k{@+(vt=CP1;SDlQu*iRBS`Ert0|`B@0XcuLg8Uoop#GGz zaYf)X2Q2lSlopf+wb6Fe+jtZ6XoiFEm`9zN7DL`->B;|Tmh8o!4{4Gz4?TLaGhQE7 z Nq8x=%RK_6hyfk3C%`R>bZ z-$!*}qVq!uqe560j(Zv@^l3KWTBbo~4BAptUM<4lKz)81T-ipoes=7x?yspp-UfH& z>QwzpZF2Agw@fP;va2lVzK2vTC%dCmBmO~5!Ewa3w7*U%5j=}OB13d(YZRF m)X!vDE!IPnDuonR1aSen6B2 z5H0edV^8&*p)yn63FcxJUT;6i@gC$>oW`q@&A2d&70Mn1#GC3BRB-otK?Zxa kJh7mvCx9dYTnNlc$5i65|rLixpCV8r47~s3V`T>&S*$H4+Wtkb$PmT6i9q! z{tYx(kgO3-d#Ift`8N;mt^I4|^3S=mTriZ`sq}7G+l4N*5??dihM2zKh?nc#*Z7R5 z2}1R^ff|Vx)>=x}+aO2S=*H;2tDlNLKNOx&EQ@31Q9khGL_z^sRM>A2F{vZhWwj^w z{3KQdEa~VetNe01m^0_vdr^Hw0;wTezY}g_83Fw#cd-q`{eMM;gGgwKmd7*(C<|fo zqT3N47(R;j*ZP@XT-p6+eG3nAHVj118}T|#c579C;w#3QM4F2nX4ZngM+B5*MGh&c zFba4z;%VgTyv)~h$Z@i}$Vkg|NBB~0IPU=68RM`sgof&Wh~dh;x=7j-e78N(S&OnO zkyVSm!5iY&yw30{9crt~!Q&tluTP}Eym6FINR!1p5 uE}# zd7$BDzpzdsZzaf>2XY^4WKw``;YV6bI-h}hjurAmvisNE&02<1XH^mT_uL4WAV31R zp>d7x6Y-&lfW#; QM%5 zHbABvr1MN`yp;4;PL$ I^C~Z~pZfPy?I_&KWIcaKPDV zKofuhOO2gVsDF}lOOMOt(g8i9e8EKyX*VdE^lR(3sLTN+p zP~1dlQF;OQ;kc=b_N|LpfXs&Qp3+q42gy&rt xC~Z+M zKO!R~_-YCYnXlGdiMq4K=YcVZeQIIish};>U?46HbvRBib_L0OZQ7H1mvdPjdg*9B zt0gSL`n1*GHaYI+==*|;pG-9^+i@fN3qnv&19ifb73BN1Im|K6`vkfnF_> Ph#znff}pSo!yTlju{VMqxIh+e(S^`PnyXApNIH6 z^mT#FV0$jHGhC~P>(#n>vRx6v8^N|xW+%cUMrEiEk@1(zcYi~9YBw=*<@ubT|BX2C z$^k|03j0d|xfqePU@2{Q-@>Tx6zA5Bv_`e3=zL(ifn+z2)5xR~{R5;%dgD0ad;rB_ zW?Y+`y-{Kp8>Tr%YJz>Kj@5DatR`=kQ{i_?E@Vw8<{hOA-H-;gAi8*pu%Roa8D`m% z59|w1_Z`|nS>@k5O`@#Mb>A{0g|=?Z(xp)X 1F$njUm z}EKiJSjghyC!l!a;~%;Xw_IrX5(0Td*fQSynxE&-Fv<=O 3PAXD*PvaRdEp;Sy8^_w)qHZ9%lP#`Mo4YV3j z;H}1dMDzr&zW|fpX+xEUt(wCQqGrL+mhY_gJm>L$4-r%+i n8Zut_%n!hH1DWUdaIyMrzFwd+B^Ul!OwkSpjtCbJ&A=k-AKKx03kmqCswg zSxvBGcyC({1_$uE4HEgEVrJ& x(mcjZ;s@Y@t&4adsb$$`v#_ama61f>|5%eHdO_WOm&EfqW>y5 zme<=a0gP495>yBz;~l^B*?y&c%J7I@np_AdQ{l zUd~ZaFZAxhpp1LNtB?xOoLL17U )rlXw`& z?oGbWQ+S)ZdIR_=RS1?N?~w*uTAFFHBNkT9`~%jSuZCl^<#q_$Sif5-O^H#0Wt{^+ zaq^Y%Vu{Eey^R?=-Hy~2_exN0CpXnH$`aXiGK)Z-Gi^Kl?sMFa#f<&>lhXJ51prXE z0fcgYbcfE!IB==NA|}+1kU~~IvoQG5ryYpINYjCr@VW0{R^icP$A9fu97Ts>1Q20D z-vvE7+651aED^y)267|GEz&&4&XNOuh8$jEV{5xMe4|l Z2p%rPhwUM`oiha8eF=r}ie)waH3h+O%;Aiv*)X1U03j zC1IN`DriZ9JT+j660WHZlTt8=+&Bc H0SkiC`P3wT2gV)wWE|-AQpLGlkp5P1QK>jhk48&73bMTZz;a z1NBrKeZpJtb46 z+Op;kv*^TDD>H`Lk6GhF+yT>D`B-=FZ`65}P36c--s$Z(ga7;F!g%fIw36`-!rrBi zqk1<+Kql^^AN_V98RXJoME~$2^**H-`0HHeEcFW$lfF@AhsX?Wq9<|E=yqjza8#vD zER^)x)OqBR(*5bkaHRgW=b*G%kEE kKE%r3nS|HM84#m6k z BMRK zbz!k1{A$mbnyc0WsU{6F35=Y>`jPf?S7;W11sLp;?0s3OLN7kDcVB@y%}=>F(fbeD zBYcc2PtvE((@NHQl}FjXU{CQT&e} %G{&^_-kddsLc){ku^-Ir7G z=#?9g1S3Se4b5$)XW>A7=``kg>fl0(Fq1i~N0(aeX{~6sa?X7Ro*NhedrO=(+^0i; zA}Tb2@SVaJyuf^2TOa@;`;n#hOkD?$u|t(~ce}bj*C_9U<*dFbC|ATp+E i{Bd8 zh(nLY7tU#b!_KJ9YDc%JS?I1SY$o@;gcj!cQ$AgRk1ZkhQZZ)}{qrdX{hRib>$y$< zB^#ul)D4l;0~Io{+d303T$Ixc4O|=0uU}4=DZhpz>dma)r^zN{!}w>84C}xM{7xBz z{5b5W{GtVlYTDtcPQ|>iMVU2kmFH^u5nYt%7hG@Hghu`15A&YOiyY2?ekIq{+eSW| zSt)ea@T;<;t67Anc1Satq=r +~x4UrL-LN4|UnhVdschm!1oQQGQ zU+E#E5vxHd|6DyDs!0y|5llb`lX##OC_$V5aLs4hVfutOpw|rD)@;`AQ0D~GIf6Ju ziX%ZMwiV7tV&HvZ9>!DgIN6{UX6~X@WT$D%$1=&HY&l9Zdp(g%*5-Xv4C?x5)mje| zw5D1P!|n+#!eop;H7(a}LW}^Q2AgeA2;APMqffR1Jh-=z6;32$<|~;%1(|jAj9uB4 z=UO6uOsRLd1EL5rT9+v=Xjnmi&_?%WLRy{V8P-w*Bm5VY>uxfd;!~Z7-{1Xt2Vy~f zR129TTO{5rbBrTFk&iJ|&N!|uuOyBImn2f$U2^SQ@mQ$nzD=+IHD&+^j&V;I$(#mA zAYmw+v4c4~5h{CN0OM9>8Rm(=V4s{m4yUj7f$S(*UulBtuNVI7nB*9@TlGsyJ_Pxk z33CK8JSci6_WH0}R^%Z=_{Y1v6JQL4ilNt3fAvjC-T3*-1^+J=2%P3bYhve!``kYh zZ9)&0O)J^wAQr^Kf3g4^13Fp%vnWWta_rz%Nl4vs*dks6l1j9M5Dq9P!8#kk$1wZp zJc%@?w3+0j??dgJ7<>!}yaNGv ULlufOQ#5mqs`DIN`)QfLG0M~|`r zb_u(QT_B!drF2B=%=|%qHW#u`6z~o(6i{L 5KxUGuh$vt;!{?=HQfn@DZ+j@syP19A`avHi)Hc z-rXiZ$0@=Y_NP+t|E+Z5r&6P|8JDE%eF!9<6U+jH3;uLJqu0Mx7y`z)0r8GM4_l@< z9?96E^my$aYrqZYlm9m${6`x#M7mOx#f
5@;f%{3wUy9mV%DvZ+C+~A@JsyZJHt59y3Ve$k^Zy?8Gd}9a z`+Eomv^wxc5T3ddd;695B6y5YG5nt6?_oJkyOOxT5b^ALa+MXrRSinB*29vnFYz04 zbxGQ^UnDczi8ua`(EHj>7FPip{VEE3A(jrr;JvtfqS^kR?C|e;)PW0i!08ByWZzyk zPa#%;l+cN<9+%M2HLz@&a7thgPd$`L&~vIa)|qn5lShxJA+i_kYGX!S_=D?>>{Jw6 z-~M=0%R_~j7mxWqb^IZ^b%u1S@EeaayMZM3?xV;b8qLN+AN>03gc0-Gc19(-I(&qU zlC*>&ckj`qXw^&iSP1JAKoR5GkKA{NFGd%SFSZ7@L&D8V**UQvxHgM#CZ988o;d?o zVty{1VO*?J4rapLq94jdUIa-`)l_G~TI2^#)qNWai s%JY5@FA$5VV`M%o{F2t z8B!Ex+(F;lP`}@%1ZA%<%?a+S%50B1nS4Vf_mBK^X{D_Yu7Llj9@N`v`S?JAVp%}? zZ7HRvtT+C)bB`O7GNQtqRP`mEQWzoBf_ph6;ZT_1-u1L!TG)P)Cf!lt(1-qQS|o6F zkGVX3=haT*tXilBAe)hj(U=6j nmbsF93{#zTfS^ r)403&f|YL1td^6+BYfj3V-!$ zTARXBa7dhi%JShK(w6zfg^+jZZhG@1exx?e&>*S*FQ?6hSsMXVdX)(1!GH;LZ`RCe zFDTPer?C_qwvulms&gUZ*NLT$ZV}(AIG; hx+ z{x4e03B4e?8~=84tBZ8eR!=oquQhJfMnur`hn>X|!b;Ip$YA;+d}pxKwrf%_l#k)$ z0wWjc`YFOl&gEZpC%MSMU)}`e{6m!igjtiB|6pecY~x$;d7^F1a@!JPcIIfFh^W}9 zr+@>d&oywE6V1jVB3l<1v9*sbI@mL}$%-J4A2TKW!j{stdUT+R&c?{XV7xbHT*gdR z^l_Pov=Oz{e%2PlP3bV0CeB|z8UZ9&JEJLYBl)31Y4wFV47fnJWkvyhnBqbJ>`hE% z$XUIYCwZ9*Qw7oin$~)QxC37@Niv*@lZ8{yzKRP=Id2e~9JrxYJab$Si8h1>SM<`d zv(dg||G({t7xS){lts+SRT!r-r*8#1Nb{h-G=|U#l`i#jU>FH`DQkbNvfgcM+zgq6 zvCYdZ3ZfIL1TM7%yPS)N*SBf_!qlKmca{H1P>PkN#yR3ygN7+?MpJIg5LXJw4>Ol0 z`nJUb8Farvb`Ob4tYHCO9>T9khiT!mzpfOdTLXx=lVWGt#fQnze2un(9{etXPP@f8 z!S+J*k$BPmAiIlIB$li8HaisiCt Jsk zQow+?rz^-1D B7Qy6Nl&-gKIv`d6A?m2@^2ooY!X{@WvlvQDI8 zVKK!N74sK(ydY3KPyp)ql#tI*!|KHJVrta&rCSgEIubVmG6`_kvS!z={fkR`>UgeL z;$*rAl#ueA4b^v5d;9=iGEc`&KaDrHe}@IR+Y$$)gs?rUzwGYF(g)TeUo-gVFGp *{u26`PuF_ww?n8!d>ABXM zuCOJ;%L^q}^9y$*4V;2>NV=gnc%II9Lifql)p@IV*4ZO(sn!<@1;6fW>IjErX;Jw7 z7D08YkvLr1b@1<4xa-~@qJ`;Wosr4S&;ug({8{S^{K=hIE>b+p%vt(qmQ9@iq!^pc z@vP3{ w5Uu^W>)%WKyBsG_YY#+e|5DImc>o4R4kj(4ecGI!=Rt@Szw*wC1^GU6J4Z+pV z{)zvi#>feDJAhb_4-=lV`q=m5dYHTs(%V$=S*(7|XGb*i-cGX8lm#MO268|0&^pB3 zLCFI+7ycQjZJMI>BDkuLSK%UcwTLeq%$4zC=WQy!$(o4B1#2#Us+vg#d>vN9OIlY# zA$Ebzg1$Nh4H8M`WJ~X+TJYU>(>3IDJKxa4b?=-|>!CqRTHm!R1Kn YYh=?XKl+x^)%HXjx zST*JQ-J)ctgvF_XGvW0FSPqh5J)PMp{VnWgFyC0Gc%3(^ioRU_;UT!fBgicEIka!m zixr&oXRs z6AIX@WF%j{?AuE9zz>L3V&h!S>F<#{0E6#< z>`#dPrRlL$ WX5&|rnLO31WXMF5K#`LvfPKQ>xI`y?+ge)v zdT@))QbPw6J@J_9)zZ+;-%j%B$X`d!3Ns6_RL}>)1vo}EDKj*o6N%6p0Acm7D>hE5 z1$SqFNJ$-Tw>C_898A+SW5iZsn{AU;c;D!-wp^cS6i>^vB!2yHj84tf&L<3=-W5hi ztYb2*w)wZBt~oUfz@}`>*GI0aox9b+t%m%G?S;omqXxkURi(H+A(saC+G3fRl=-mH zLA)^>+{o_HJ9iCMs`Q FgHXiBGox@BdQbqN0| zeS~Kq-F5SmX}mH_2) v!jXjk=H-oQ*Q#lkeVO7n%li |y;ABnuoGT(MQur`0UWL?A=n3EI-7v-IzvEfLiG`TkHy##RF621UrA>Y^4nq0nt zk0J13NJ$|Ou1)ka3*At|p25ulAH9P0b*ucA_0xtw`RH|Owf8`nWUsZg8-883S m2OiBxq%ytr+gP1J|uW*CqN#sseu(pz^Gl+)b_G3z4&| zgBHC}wr*?~zixjsW?$h+`Hr=B_}51m4`Y?gru&|i_b1qCy=6!{c<6F=H-0$`I#GXU zvl8oof20b8QSNrkfi-81GW-H?P~mOhse8%|N_P8zP^DmmdC3oUgAwrd?|=JmI|ukf zI1lIEJop@i1nhsAtk dAZ94Cghi6 zo|_6TwSse(f?y_gPx_s7xVys|ZJLk600*W2V`5HrPcj>bjMe8fHw>9Qh%!4&%jHzd zxm$}nPn?hZXo!q+PR~QZPunF!io<#N!Mq+w+#9#)n45pwiuEH{rZD&HFFvN&Cl-ce zUfdwZo|ZZXOmHpU1NIj%dG}jZTb~90d4OLqg>q02%T(5bt)w2JY*0lrdDxmts_)Sh zynsz9#Q8i&le90&HAd4My#0Qa!miAfT|R?K!3={3S#CQL10?gHBZ32&HLA+(w5{j_ z7b!jX632f<;W$6q&43Ag1RO= t_;JZX(u{rm?VuehNVG;wSk{rw_7)yr<&6Md{3da&sbq 0`8r86Y*c1}A@Tn`RLS7DGshT;7nNLYTx9NaO%J zFXlJtx8F95DB+1Ig+aiojlb!NlqpS A))Q#u!^WK@xwA^Au(eL)G;C 0THSW73$lVO&IRu#ok@$D4oQ)y;a-E|;b;l2pRSe0Y@uH(hYFCLx%o z$(+|S4hk#eOQJl>mY~fJHj^Uk8D$ &g{kHASk%NK 2ZQ}j(jho#ATX1PbpKQ=py3WW<}fpk*wFv6iF z$}}tq;>-|ibV-n)<>zAE4C}tCl3#xTVX!pexdzCknuNSOkE<8Eed#S&QiNyriBd^L zcM{4hO`&Z}kT+pV(uO{`fqgbFZ*S+D6;j1c(UR5k1!1P11=(R=*G-+?)(v7U%!<~M znvrL_B}d(jr8nZ4?!gi6CwtxsgO@1RvL$G=1MsB?djUJ*Z_D*p!sLA_R;qvSe5xfa zBZLVNGDx~~*K|pg4w8 CzocfEny1Mm)d_!g_|a5-mN7-09s4v%+p|hNQu%QiSyU7p5b3f>MZ%1L zm?rWtJytiU&E%m=TI9W%eVV*vzde%=7yC2fTYp4Empn7ITZR=UF--Tu46L6 *n}l+qxu~ zsoessh__+77vgNOG*)gDC(i{sNyAZ65*4KhBNk|{DP5MY7+cWl$gMO*(u|-+F%Xp; zEop(abdgJLqivibk9L16^|@b(x|AVBlV&07c@}94RW1{}==M&`(_|8Fu{>}sRhqCP zX_6dNG0z}tk-#NVm)%&)I!Pk!w#ozU5_JhPiXh2ARC2VW1=`X@R^LiE@8qVh*7d#` zmTH~Aq(~N~xl}+^zNi>l#wjXEg-{;@mnKWu5fo_-s+ebxwMc*95~)jW>cl!pBI&l` ziDqe {av?baCQnk5R-mJ~$>4_(qT$y+RSsq95Jcxs<0 zm2|u1acgPPgcU)M#HYzPQckk0RC!Boqh*^Qjdc5rgSFCBX+we}gN3Z;#dv$e<3lYL zCJ~Yp=Ho37VwHa;wfgl??~js-2+2}8Z<5q{!6=#oAz5lo8EvzPcIEcS0)Pm~QaNvu z)E)w!A0-tLlBIIq1gQ(Eps9JHNMA)XJ3-7Tgr)NEfxR2{g>{fMk;Jm`Q|9)O*%SfK zAZL-dB~q#7!(&O77Ah4l=BGOo70nF;f*i+6ll45S#3O%IAD5Ao8}2htlN-GC#%a BPp z9$ie8Ak&Aq)xpRy(j(}TgrrDHx*@g|NlNf`80YKK6ljA0xq%wxP0Ih&jHH3;fuo#} z=of;E -+UC^-d@| zf)vdW5wq{Rv4c$ksrN@4666>x5j`mnuVq6}5qxYV7;*8>+=d{)yU51``}V|IC5Zyi zh9H1rQv}>J70gU5(IHH!a&o~GRkft{BG+Qn+KhkwP3Xx^tY|VkJ=WQ=+Ada>$V~#) zPRtj#hr7FhhKxzQ_&G-ku;BkGRPcX<5C0F64p=KEXVWl?NiZ2gN{E%)#307*tJVNU z1!29xgS;r62d9}|gG!o92BMPZ({_y7BlOF42DByNaf}qza-o7}ak!f-q4;@>QzV9p z<)(jLS2Q7z($9)Geu`9{I9Zf2!N)p%gfryH`>Jfl` R%67Is(ililUN1A3wV`d5cWPswuhkrNJcnNcxAS?d!MnW*b+Wk6>of*Wb0oBi& zaAQ^SFlXpi_WO7w whci; zs3eSiSyPF5T0fz{3K6B`)3k_@67skttF#>ZGd> h)}`fl^&Ie|8!+cb=7v{=Y`o=e?wt&4w^ z6Dx(Fd74sRb)hM$hjIg BeIdT z9ggwiA=Q6}6u%Ak-F~q)G)~dR*{IsaW1f;R^&v^>8VmSc{jF|~l*loXmF9vwO)$o^ zUf!9uK++{+MC^nvwn2A%C&PaUwlEJ1x*ikyBYGioq$6^X(l;@QvGw{KIY6ML8Q?0G z=|8F+?SNXIhqTtUL49OHdycd)52?*>gZSvyt_y2nHqzU`2Kh0~;R(z_`ALmrgYvl6 z=nQC~`ouP>L3>owZ;G=}eOiOiBt52WIK^2iKB>iMkP?^H(r^}v_bq?Hb(0>YI9X;~ z+pg~Wv 8s7n?O`0#-e=k>ri7);1wKv2@rss+qv{;X<|`a+ zN?NqzG>d5xNj(dA+>p cmIEJ zZ?_ybj-`v<_fv5CMC^aAnrYb6)m 8T8~0m@T%eS@g*h;lFlii!?MXzMZ$9^6 z;m=JN%F#l={|;P=+Dhm^Wd_BCKX~13C#jF4ds*$^)Z00;?oOOlvccxmO6bIOG%B5K zpj|c7dC-5`txIJZT^N0Z;wYRk0ZDwZN1S0sti-SsG!7P1`oJ0CI4R)Ifi~_+?WHn! zUb+dTHC%9mWmpyQQ`XmLyJ@{#3d;};9*}UJe&`-;P{{@#u~tGSuHzBY*#;i5W;zdg z`w=slvP2AO2D>zOdLLN>vrC$1TMixuqgh)S+_Zmf)GjamJDRnT+|AiU^f6XrxvD-E zSM}9#^?9^CR$@1gjppD=HlO+UmeNS>;cFmTi~|d2t`)M*QkYB>ABw?a?46`8XeNH{ z9$J@Kty`0yl7GbIc95)-!^vsgrYvzg)LUMZd=n2GHFP9)5;o8}T=L^53jH;rirN{R zoO*v;q) {K{Awcq$0)Bk(7w; z9yTi~ULT7=8I9CVYMFu&o`bG94vl|0Nj*dwslzh-R&S(p;yd2yGSkp2-A?9)?!3?` zOOcm#oDL#WGAFV`@E}7cITl?c?O}law2yz~)5y0#C&vJ%_e~*zwn??gM|9xL oNv=j-d{O{;7CXi803TXmT*`u#^^;Pgs9h zjV|x9>MicF@|X75w{ )I*#rAkOJeS8T8}m+a5$qHvTvnFwX%WnQERMoqfD8rWtz_9{8b1 z^Lm0PnPWhQ!tJ3}@;>2l!3heQ83%-@#B?aJPmek%QYLCE3{qw5Zc0$S{APWU7QQ z-2J4 D(L=qXS+)lzIPMi>-uCc#YD*e~i;)3mzcD`b| r1UfO<+5> z6Z1t}gRjT29t&^MdzqMp=_Zxycq1uQYCoaI^Uw{f4tCS_P_@?y?aXz&A4vl#{UnHE zC jG0fWrY=)d1l-Nq{qG= LRd_+AQMJHtBUzY^HPJYm6@VE-w$m(2&Xv zjQP8;{fCY0RBqVTaUq={FZl@AyyPC(ymXZ?hOHUK#bj<^LTDqy#z_&2fze>?nUpSk z3#Uy1n@})@93oKZT=0JyqYa*H4{=cpt5@k<;2OgRKD>|QPTxo7*jH+U47@>{$@?kW z?~xY7z|_T+x|gp#Z6Sa(-;XFuO67u=`P;C00sGy9!xl$k7fBP%%{4gYb|m(5b;sM3 zy+}5nQ;tVchM26RE*=}H%~J8W?2A@tr*dJ-{B2l@A;7ErSZ;rYYo(dmMMH4~G+vkP zOZ^>W8)lLT-6RU7jX!Eo k0t*iqpLhY1Zj`oU>$=JUZ&`jrpZ> F9ywr1Xo{2a9D}mJT_XFtIYd$j_g!!bj;s{ z)yo89ipfgsCb7}FTm!GjMlv_P<0Xh$MznRA%8l!4=OV*n!k } zoZ+Y6PT7COZ{YYT#DloSiO~cum8GAQY2+sRaBaA2!chw&`Wa6T @JmxP Esgcyr;%QEpbySt>lzt9(bz{bHm2Hyx zNqQ<;W*s-rbLSc0_09X5V4H_H%Xm6TfXXu@Kw}RG7>q;RmurNGZe-~$Act^@lO#}% zA$os_+ebY-kL;!&qIJwGn;>{LW(q527@{TAKHi}K@4g&E%$?xvU7%4@YG;-qax=vi zuXsnvs&5e|x`ID{_mDr;dG+$1?-O);QvuMr-?01<9Bla0SscmW)=>&4BOt0zx$F2o zy(Q#V3g=ECcfMioB{CTptJv8L;F*Cxk5+$@_Z{$FsUKzZeHk6i9W4GEzArm1CA(@J|H?-r~7_$g@btna_`P1qFWt z4KMnJ_O#;k+d$SxRz|Ekx;>Mu)Z7(mbURJsta7Ly&^`A#KSmjEUr{#OPC{h@l_BaK zvHX`{`B8lKD=p%({*yzmm{LQzsUkQNpQHMLM||^;>wdJ(@jK-SwmEDoKK3!cLE^4m z=R~|}Tw@^EnP6hTuDjVf$L}ONlk9)zqlE@36lgA+V^!ye$bE@JumV74WHOgDoI3?9 zHw^uP06A`9pTagp#^RQJ(aI-dxrMuAe}vdx@N7p &x+qkKMvRSJK4P5(~U zikFuH?k~q=^SP=;GSy?m5l%5g5iHjJO0oQ;SsGo2jJZWr=ZgL<&|kuLf$egH3O|8K z#G pF0@0B=yPKoFEdlV-vkW z>KpS-FpIFDy0ibF#$f#*#~Xi12oFve6Vg1#o-r=-V|KDfMzS!;@=lVT oQJu;_$%PgdRYE zfO*j?`ZA1ZFv~ygc6hoH2FWMw!7VZzyc5}NOG3c@T#Pe{0&utaQx<>iN->7q=i7%o zKbeV&kpUw(!5o-kTq`jbTFe{zDU7kl3TFdqb^t?Yl}uPGO88VZBe9uX!|Y7!BjOJz zZDmVSXrfp|is>bwU!XMkJ==ie?Xi1gZnBx`HOy!hEnn9LeWm{lAX>ljoqHL9wCkaU zBGDs_bNNj`OWd0xfh~X0B-)ad{3f6!&Nc7AhA0kg2Mzo}nt^wg{4uija^UgfUy>7> zhP>7m67~y3tF65yZL6lXOGp&31e~6Ffvr^>+O#!&5zq{|c6drFB*m&px!eZvZpYyn zRX@}*-K3MiGV7L~!X`;cEe_irHAr-U6_oF!q)RR7)|NEg=Iwvq<7}U+!~SAU{1|5& zSmMP)4j8>6qBPMquH*Yyj9Q(s2PWHp(O_1SWuj-AUI|p>IxNAtODSPS7cHgBizUnQ z+7+@gjMWzUx%qpsYV-O(g=!n!j4qa|-mx&RFqdY7{aXFCSnpm;OAA^65gi1tk0tKM z UV%9S(e$z2JSd}>z)rrgkBD#N!iYcO>ocz Lh+w+XR7}uuMq*V8I9c-g zA>WF5M?||{kBcWq?-bEpJ6>1Jh)qn2m|;72X$WPX=ah9wqYTBl{xgvLa05ZV{$PVZ zw*_i7P;M|`)F>9lC9KCLwWud|mzu1rK24{z`%@6Nkf~<3JwzOe0vWBGB)!r60@|v4 zH*J5ei!Og4%V6@CWZ^b;{B~(3y+(G~<_>04UB=K3w#iBD5iCrxTq5U+J_WKvI+4UU zoR*FK{yEyjsrCwR93Bp6qI4^XakNhY*!?q;0&wn00 5`94rZSg`&fk zv!f-Ht@$?DJxh1d6AxoFmo M8 zl8N3g&GX`9b}42im~96F2$95)`Gc)(< xGeM}3j2G>d2O_;EG+@8RmBX;k^(;a;iPs-He4EoD@LPrn|^ 5enUx*59^ zu4bM$?i2+^dDni05I8+RFXpryskIBCV!C$m2e3=wtNO*uc~4@OWYX11OgEB$W%CEH ztK_094>@;m+N4;_tl?JiuI7Kw8@jd>DTFhz9=sqM06v?L&3@J-+pSMW02{*`Cw5!3 z_&jk(t&Sl92gmc2;vQ5_dAa?UlUSglOW*-^!H4}K@?oF}kCf?#;`e4VHii3D7LTy; z`_^8pLVid8E>;R3VN&))ZjsSL{K!ur8)(EF@rm3r8M53+>W@JEkw<@T#g{Yep)e`; zag}T!f>D`oj~j5HKEv2{asAD=OYQM7NT*_Ci8NbC6E=A&n)Np7#-$8xg=E6`KcWjZ zv|-H&HTfL0CeZBDZ;SFMeBf!C2RVT{V3YFlLqd59Rk;qnH6lXVxMNja1~|Vn^aN=d z{Z~*ck_^YXx#-}_3c7#$iqmlSv{n% BqdhHVw((2>@7v9o9Zp-Q9E)t5V z`u3Re6W6Jx$Ae3BrWom&qQ4pv7_>Ct1C%s5A;@T1=rOMz X%DGRes>~cKpM>jEje4Q~iJ8v^L3Q8z81&d5Tx9 z3>itk{rZ2@kH7u;&!E K)TF^q!Tih6I;h1ge cC&4~p}>Q%Xo<)dGsF zW>-Ak(6*|T6e)j7QmU1d8(T MrZhWn;hTF63x zAr7uMLeD5j r-j{;bM2He+gN=sFYNA-pV1j^=zosHyb$|OIKP!-f+eY8 z9Wsp74qoN%4CG8qwG}zD$ Tx zbY*_cG?B10-*`0#Evo-tip5g|?@w=Tn05Cd`xdXj_gDanv40R1lt+7r^cCMjP*?fm z4=1(@xGR4#iDE#_kXlzBtOw(9eYdjdWniL-$jB}S2y!6raSb&NTWb L zc`Repcfl-zA?YqJ!wif2OoDF(ks1)M9qd7kq6KPtA3Lv84{jZ;n#&_jl5ySA^WN4I z!rmYQJdb5dhjksb$85_>nAUDh-9#l%DVEqnQk 2~i-9Y^Z?&+SvY5yXPmo`TI2SzKF;lmX48~H~# zv7*QpPXPNQGa`7?;9D#|hcz
mD!~-RQlL06A z;tEPelwv+RplPwy;QXYoPYU79;4%}OubO|n(VgH`N#_R9Zkck-aDgvPqpxC=rehBC zKJ;kmH}pGC&<`e>I$rs7hS%pNRb5UU#eV0B{K0M{wDKfw;GZ`>E*75_4>7z3cswcY z{#fk*&lLPQlHJm$rONMlt%biVcv EocdAX%hXC2QSDb~Usd)9V@;C!pXZ`NFlW4HW}pFn!PRWU( q92(Ip(=W^;X^#=o4xAj6|?(g5c^2m4Z+)Jo*bD5?431Px0CDj@jxO}fSEvq=3N z#T0igyaAc!V=?l>n){8Rg*;0Q(N=#1m#>l4*TJNM3x|HqpQh|}!Gr5YLyxI|j*O)S zQt0#Gwh$}^F<+{%dah3Muqxm+{kv2r9y6$UaRQ}yxB;Q>6v kpncmVPB%_}qm zSTHug@0Xmz_|9{n;kza0Fh(fFa~R*5a~MzYq;NT7W#c)F@ANqgWVw;l>KuQ@$9O0@ zj?*61D>Y_8(3s9XRS)@*4%mq4>phRMVpB!?1dn_Da^w~4HzvEN%KsP%UNOPNxvrRL zY(CTPq9nvie$uX_vqY3e@pv>_rF_y+CqtdExC1&F>13pnB|F%)6e`6u9cS#Ql73~R zGWxV`+56+os$=h!$KIc8dxL*gL(uu+P*Db+JocGY$_53)+CzR{McZVz6D2R2w)lSn zVeEfU t1}Nlte4H z>Xl3NDU0hN*=~6T;fY|#0wXmlI(024B;d`TziJthJ_xV`rhot}Pj#6m{LbxP+Xd^g zZ`EsG_|k@3H;Pic8B)IIa-0Rr4HP9)$NMTH`3f!hUd(k%nBYC*%~NTWlW$*|9K`HV zLWqJW;`; }jQCe2`A201TEGg#XUs=QWly*fd0 z1+QbpjkFjIp?*MHxD|^?{5KIl$8hs(orsy7up!2z9Gq&>{D}@K(`gKV{2KMDst0QZ z&vJuw2Ky6QIwR@eZ5%U@4%HlEQVt$MC>;aIXz5s&J;kzGQY?SL>ko!zyJY`R(^)JP z-V2mOJ5YdsAC6+w21(&w*Ep&QzJaOtAD(zz @W9V#GpOVc;HIo{xxsdt>>k~c7YNk}fTSI@TZd6>z(g<8-c;-g=`Qh{b#BszZ zq&?>8QS`3gRJjU|3o#@&aale?CearpnV6PE@d0l5mKUTQzCC?~;TaX>zli-DiH3S2 z(Xi|*L;gZ|Ow 2QCp`di12j UE99=#v%H{$xihadOoZ&-=^0 zix_t<{zxzB>NBW8Nn5_b6g#<=3V!9h7FBlot*~TAtC8|)$G8P@t0tyx9DFyUSSni* z3w!Uhs0>c>QY`GF$JUDRQrpAUOJ#rNP`CrN<<+K43hdgXYrh$=Lo2Zph_<4ltE-{K zi7Tcu^GU1+ON~5