From d1a08c839216444b3a8d7463a3fc48e5653c209b Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action Evennia supports clickable links for clients that supports it. This marks certain text so it can be clicked by a mouse and either trigger a given Evennia command, or open a URL in an external web browser. To support clickable links, Evennia requires the webclient or an third-party telnet client with MXP support (Note: Evennia only supports clickable links, no other MXP features). All elements must appear in exactly this order to make a valid link. For example, if you have an object with a description Evennia allows for clickable links in text for clients that supports it. This marks certain text so it can be clicked by a mouse and either trigger a given Evennia command, or open a URL in an external web browser. To see clickable links, the player must use the Evennia webclient or a third-party telnet client with MXP support (Note: Evennia only supports clickable links, no other MXP features). Users with clients lacking MXP support will only see the link as normal text. Important By default, clickable links can not be added from in-game. Trying to do so will have the link come back as normal text. This is a security measure. See Settings for more information. Example: This will display as “If you go to the north you will find a cottage.” where clicking the link will execute the command By default MXP links are only available from strings provided in code (or via a batch script). You cannot create MXP links from inside the game - the result will not come out as clickable. This is a security measure. Consider if a user were able to enter clickable links in their description, like this: This would be executed by the poor player clicking the link, resulting in them paying 1000 gold to the bandit. If you think this risk is acceptable, you can remove this protection by adding the following to your settings: This will display as “If you go to the north you will find a cottage.” where clicking the link will execute the command Enable / disable MXP overall (default is shown) Example: This will show as “Omnious chanting sounds are coming from beyond the door”, where clicking the link will open the url in a browser if the client supports doing so. Enable / disable MXP overall (enabled by default). Make help entries have clickable topics in supported clients By default help entries have clickable topics. By default clickable links are only available from strings provided in code (or via a batch script). You cannot create clickable links from inside the game - the result will not come out as clickable. This is a security measure. Consider if a user were able to enter clickable links in their description, like this: This would be executed by the poor player clicking the link, resulting in them paying 1000 gold to the bandit. This is controlled by the following default setting: Only disable this protection if you know your game cannot be exploited in this way.Table of Contents
@@ -108,41 +109,55 @@
Clickable links¶
-
-
-|lc to start the link, by defining the command to execute.|lu to start the link, by defining the URL to open.|lt to continue with the text to show to the user (the link text).|le to end the link text and the link definition.Click to run a command¶
+|lc command |lt text |le
+
"If you go |lcnorth|ltto the north|le you will find a cottage."
north. If the client does not support clickable links, only the link text will be shown.MXP can be exploited¶
-|lc give 1000 gold to Bandit |ltClick here to read my backstory! |le
-
MXP_OUTGOING_ONLY = False
-
north.Other settings¶
-Click to open an url in a web browser¶
+|lu url |lt text |le
+
"Omnious |luhttps://mycoolsounds.com/chanting"|ltchanting sounds|le are coming from beyond the door.
+
Settings¶
+MXP_ENABLED = True
HELP_CLICKABLE_TOPICS = True
|lc give 1000 gold to Bandit |ltClick here to read my backstory!|le
+
MXP_OUTGOING_ONLY = True
+
aliases = ['batchcmd', 'batchcommand']¶aliases = ['batchcommand', 'batchcmd']¶
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 '}¶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 '}¶
aliases = ['@parent', '@typeclasses', '@swap', '@update', '@type']¶aliases = ['@typeclasses', '@swap', '@parent', '@update', '@type']¶
search_index_entry = {'aliases': '@parent @typeclasses @swap @update @type', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass parent typeclasses swap update type', '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': '@typeclasses @swap @parent @update @type', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass typeclasses swap parent update type', '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 "}¶
aliases = ['@channels', '@chan']¶aliases = ['@chan', '@channels']¶
search_index_entry = {'aliases': '@channels @chan', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel channels chan', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶search_index_entry = {'aliases': '@chan @channels', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel chan channels', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶
aliases = ['@channels', '@chan']¶aliases = ['@chan', '@channels']¶
search_index_entry = {'aliases': '@channels @chan', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel channels chan', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶search_index_entry = {'aliases': '@chan @channels', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel chan channels', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶
aliases = ['emote', ':']¶aliases = [':', 'emote']¶
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/tmpvr9yti02/5b3ab5761672a866619b5fbbca65ff2c2a6c11f4/evennia/contrib/tutorials/red_button/red_button.py'>¶
aliases = ['co', 'conn', 'con']¶aliases = ['con', 'co', 'conn']¶
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': 'con co conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' con co conn', '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 '}¶
aliases = ['l', 'look']¶aliases = ['look', 'l']¶
search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
aliases = ['co', 'conn', 'con']¶aliases = ['con', 'co', 'conn']¶
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': 'con co conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' con co conn', '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 '}¶
aliases = ['l', 'look']¶aliases = ['look', 'l']¶
search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
aliases = ['@callback', '@callbacks', '@calls']¶aliases = ['@callbacks', '@callback', '@calls']¶
search_index_entry = {'aliases': '@callback @callbacks @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callback callbacks calls', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶search_index_entry = {'aliases': '@callbacks @callback @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callbacks callback calls', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶
aliases = ['delchanalias', 'delaliaschan']¶aliases = ['delaliaschan', 'delchanalias']¶
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 "}¶
aliases = ['chicken out', 'quit', 'q', 'abort']¶aliases = ['chicken out', 'quit', 'abort', 'q']¶
search_index_entry = {'aliases': 'chicken out quit q abort', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' chicken out quit q abort', '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': 'chicken out quit abort q', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' chicken out quit 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 '}¶
aliases = ['whisper', ';', 'shout']¶aliases = [';', 'whisper', 'shout']¶
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': '; 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 '}¶
aliases = ['pose', ':']¶aliases = [':', 'pose']¶
search_index_entry = {'aliases': 'pose :', 'category': 'general', 'key': 'emote', 'no_prefix': ' pose :', 'tags': '', 'text': '\n Perform a free-form emote. Use /me to\n include yourself in the emote and /name\n to include other objects or characters.\n Use "..." to enact speech.\n\n Usage:\n emote <emote>\n :<emote\n\n Example:\n emote /me smiles at /peter\n emote /me points to /box and /lever.\n\n '}¶search_index_entry = {'aliases': ': pose', 'category': 'general', 'key': 'emote', 'no_prefix': ' : pose', 'tags': '', 'text': '\n Perform a free-form emote. Use /me to\n include yourself in the emote and /name\n to include other objects or characters.\n Use "..." to enact speech.\n\n Usage:\n emote <emote>\n :<emote\n\n Example:\n emote /me smiles at /peter\n emote /me points to /box and /lever.\n\n '}¶
aliases = ['e', 'unfocus', 'examine', 'ex']¶aliases = ['unfocus', 'e', 'ex', 'examine']¶
search_index_entry = {'aliases': 'e unfocus examine ex', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' e unfocus examine ex', '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': 'unfocus e ex examine', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' unfocus e ex 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 '}¶
aliases = ['i', 'give', 'inventory', 'inv']¶aliases = ['inv', 'inventory', 'i', 'give']¶
search_index_entry = {'aliases': 'i give inventory inv', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' i give inventory inv', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶search_index_entry = {'aliases': 'inv inventory i give', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inv inventory i give', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
aliases = ['@dig', '@open']¶aliases = ['@open', '@dig']¶
search_index_entry = {'aliases': '@dig @open', 'category': 'general', 'key': 'open', 'no_prefix': ' dig open', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}¶search_index_entry = {'aliases': '@open @dig', 'category': 'general', 'key': 'open', 'no_prefix': ' open dig', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}¶
aliases = ['offers', 'deal']¶aliases = ['deal', 'offers']¶
search_index_entry = {'aliases': 'offers deal', 'category': 'trading', 'key': 'status', 'no_prefix': ' offers deal', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}¶search_index_entry = {'aliases': 'deal offers', 'category': 'trading', 'key': 'status', 'no_prefix': ' deal offers', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
aliases = ['dive', 'fly']¶aliases = ['fly', 'dive']¶
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 '}¶
aliases = ['unwield', 'unwear']¶aliases = ['unwear', 'unwield']¶
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 lid', 'break lid', 'smash']¶
search_index_entry = {'aliases': 'smash lid break lid smash', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash lid break lid smash', '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 = ['feel', 'ex', 'listen', 'examine', 'get', 'l']¶
search_index_entry = {'aliases': 'feel ex listen examine get l', 'category': 'general', 'key': 'look', 'no_prefix': ' feel ex listen examine get l', '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 "}¶
aliases = ['move', 'pull', 'shiftroot', 'push']¶aliases = ['move', 'push', 'shiftroot', 'pull']¶
search_index_entry = {'aliases': 'move pull shiftroot push', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' move pull shiftroot push', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶search_index_entry = {'aliases': 'move push shiftroot pull', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' move push shiftroot pull', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶
aliases = ['push button', 'button', 'press button']¶aliases = ['press button', 'button', 'push 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 button push button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' press button button push button', 'tags': '', 'text': '\n Presses a button.\n '}¶
aliases = ['chop', 'defend', 'stab', 'thrust', 'bash', 'pierce', 'parry', 'kill', 'hit', 'fight', 'slash']¶aliases = ['fight', 'slash', 'defend', 'thrust', 'parry', 'chop', 'hit', 'stab', 'bash', 'kill', 'pierce']¶
search_index_entry = {'aliases': 'chop defend stab thrust bash pierce parry kill hit fight slash', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' chop defend stab thrust bash pierce parry kill hit fight slash', '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': 'fight slash defend thrust parry chop hit stab bash kill pierce', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' fight slash defend thrust parry chop hit stab bash kill pierce', '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 = ['fiddle', 'feel around', 'search', 'feel', 'l']¶aliases = ['fiddle', 'feel', 'feel around', 'search', 'l']¶
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 '}¶search_index_entry = {'aliases': 'fiddle feel feel around search l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' fiddle feel feel around search 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/tmp9ihm7uok/3dd316b5b12359d2cdbdd8d5518435f924814a9d/evennia'¶directory = '/tmp/tmpvr9yti02/5b3ab5761672a866619b5fbbca65ff2c2a6c11f4/evennia'¶
directory = '/tmp/tmp9ihm7uok/3dd316b5b12359d2cdbdd8d5518435f924814a9d/evennia/game_template'¶directory = '/tmp/tmpvr9yti02/5b3ab5761672a866619b5fbbca65ff2c2a6c11f4/evennia/game_template'¶
aliases = [':>', ':q!', ':::', ':dw', ':=', ':<', ':x', ':q', ':echo', ':uu', ':DD', ':fd', ':s', ':y', ':dd', '::', ':wq', ':w', ':i', ':S', ':!', ':fi', ':I', ':j', ':', ':A', ':h', ':r', ':UU', ':p', ':u', ':f']¶aliases = [':q', ':r', ':q!', ':w', ':f', ':dw', ':uu', ':', ':fd', ':h', ':x', ':echo', ':DD', ':S', ':i', ':fi', ':wq', ':=', ':u', ':I', ':A', ':<', ':dd', ':!', ':j', ':y', ':UU', ':::', ':s', ':>', ':p', '::']¶
search_index_entry = {'aliases': ':> :q! ::: :dw := :< :x :q :echo :uu :DD :fd :s :y :dd :: :wq :w :i :S :! :fi :I :j : :A :h :r :UU :p :u :f', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :> :q! ::: :dw := :< :x :q :echo :uu :DD :fd :s :y :dd :: :wq :w :i :S :! :fi :I :j : :A :h :r :UU :p :u :f', 'tags': '', 'text': '\n Commands for the editor\n '}¶search_index_entry = {'aliases': ':q :r :q! :w :f :dw :uu : :fd :h :x :echo :DD :S :i :fi :wq := :u :I :A :< :dd :! :j :y :UU ::: :s :> :p ::', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :q :r :q! :w :f :dw :uu : :fd :h :x :echo :DD :S :i :fi :wq := :u :I :A :< :dd :! :j :y :UU ::: :s :> :p ::', 'tags': '', 'text': '\n Commands for the editor\n '}¶
aliases = ['y', 'n', '__nomatch_command', 'a', 'abort', 'yes', 'no']¶
search_index_entry = {'aliases': 'y n __nomatch_command a abort yes no', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' y n __nomatch_command a abort yes no', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}¶
aliases = ['top', 'p', 'e', 'previous', 'n', 'quit', 't', 'a', 'abort', 'end', 'q', 'next']¶aliases = ['e', 'q', 'n', 'p', 'a', 't', 'quit', 'end', 'abort', 'next', 'top', 'previous']¶
search_index_entry = {'aliases': 'top p e previous n quit t a abort end q next', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' top p e previous n quit t a abort end q next', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶search_index_entry = {'aliases': 'e q n p a t quit end abort next top previous', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' e q n p a t quit end abort next top previous', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
^zpTjrPK!qWEcIeh>nPpb z>M<)f1Xk9Y=c-;d%ixWWyQ;iva<>7H1Gxn11vc;tjU;rEWgDj-ozW2o%w-p>$_m4hm3c_Be03f%E?uEj!sApl zmGL-LO=Ub@Wm8#~tZuj2X32q$gg;IsmM-u;f6>yznvXcQyTYm7A{jI$;7(ZdmKaF| zFfP#?hte+BJO^vAROt;-V5t#V2=}sGM~DW?H|!x=EYe0Ah{@Ns&W;nuB^Q=WbjvI+ z8<-xm1{SIAcBJ0sO(WhxUpC`_lr|BhCCBAGR>3@C1GxOcrh&A1te(Z187#0LhZVL7 ze=FL;ic#_r7?)Y96DUDjh%#` Zxy;C=U$6&+bVhSLTnhj9kC_J`3lu5&_jvD}b$>H0+}mXAyD9PmJfsIlRpToI$S zIj9=a9*IqyK;VoEmx?1)*a_paL%F7`f3O_NIbozUCnbOHdQRq5wcUmcmoQwwNQs4m zy?~MwfoH80>`>6ydE+FC;MQjfdc+~5DezIpkERgBA3QpgCFaP{WUhwJo>%Q1Z(Nom z3vH68V3*Zh^>Ej8_sxoGPU>bMp11=|QyA*(`7Vze+fJgHGS{C*6m@)Q3I!fqf65k& zL)6Kr$plq-*H*g)V-bJwY8p-ak*i5Otg`pdUeC)BJIgo-eyO%``dIZaq6q`lIKr@% zsCdl4)u)NTC(G5nNjqi}D595_CU8tz;F-X)Or?uBJ}?n@X~mZ-LI)id2&B4fHuFxx z1mHpwupWNy$(KZ)f8r&fmzZ=(fAGa7Tt bma;bdaOzhczguh?@nIjpNHU)6uS_^05n)Y zdSI|$>3`>CTkiuWH9dAPXzavh5=HRjW(s=LEMy8n{7mFfmYCVdWUiQd=95XLOnat~ zg|^aDu;ZpbQy8Mg_mc@?f5!NeNaDx&Q)uGHvT-b7 hQny}UW0~orxSTGJz1Nw;^Fu=Z}0>EvP8S0mRb>1#i zeFXGUl}E#0w(96qOI94ow0wD%RL3dJl5VlG9I@s%9s3CCFIvD3S_=$dWA_X~mIHan zfaO3D@&^9~E(dDx!ML&OXH!{%*Uu&rL@aDgWQbaJn#d8qLNfzV%nHpRbW>JNCh~>0 zSrg&oR!%08OjtRY$~0x=WFl98)SAX29HDC(hj7HKX-wsbU(=Y(6u+i1kt%*oBc3RB zP2*681>2nIYZ?c0O&BvpbB0aFCc(zfDyGp)no&%nTCA8w%qFH|A3^;^>&HQ}i4ZnY ziz_0Y$pi)rnM<&MH~8nQDj)LDD{v}B9QKrP>^x*qW7z{KCyi&Pa|YLcoaq#i fS zC$!vg1o89TQ2ZI&@C90b?`7NVW!u!{Thm3_Q4Shp$2Agg?p9gA##@m*gdxgkWGGSS z#5oQx#<*-G^8EeF6vMHR*l}iJBf;mch4G6Kk;oGkAR-x-tC)uxbM^7a1L*E)69fyG zHsR~xA#nK0cpx5@=B!-b6;-yrTW#e~(tF!jp$W!s_d9}36FHoJW0$+rVwbzqfcmo$ zV&lc(;X?7myHjsozeNXMFF0g~gZ7V a+J#7Ao~|Ci)a#%>Gn6?xXY zl~bL03PFzvZ5&qHS(ScGQ~y@91@l)DGyHOSZsA)r-z}WX`_BKgVhk5tW}H8lG}PrX zN2ggdPuNkfC7S(z5%RpPz8QXrM&H6Tf15uhTC9YPsTM6|SMm+9nVbC~@G@;b+reC- zl8lh&tt4jnB`S%9Y5qzwCR(hLjHwo_By@HMz2nR^L_ L4;Po8F7M8+&rfg9@2<|T zFE4IxE nNLF9ylzsK3@fPnH=+>lZ>uTQ<9wCbGC?~)49{MQf ze8k6P>~`y{B}YwN+-jPau&%1s+r&U1Z`*=_POmPm>EG+B3+Nzv*f2ct^=Fz4AqfzG z&(oL#AEvN>JYyTM_N9dNCafBkuY p9b=J@61=w;<)loK4^HUztpyL{~*yu?$AI4oH>#~ce4PYcna1=Pm5 zU=cM?LP5dDfYoD2^A;6YcwD&q8&fP(P%J!4mJ=I)<#NTu#(0#b49FKQD90!yM=l`8 zEgavZV2H)#1q;WRVwnPB;W;^K>MdPRY>eNiuwX~Gs>+s>?E=Fg3nBTMFUPiUpK2mm zvOXNSU$v7iT_?U--zv5q7A!Plie-w7h3Dj`skd}-u`wR8uq@ohm`Ii^Fh_14(N< zns3*C#^l>wL5?t3vk@&+d|YfN-yl7gE=IT6X2HzU(3i=vF~ySEWMEq`Z^Usoy_R3* zU-NSQbaarNG> 5v?isl1oPr($d$KBWIxD|p&;bcDl?T_l zVMBgR+vmLSXZlp4ZT9s|{_wD5TpH4T+AS7=mSpvt>bYEyprIL#24 `x0=vSHTVk#bc^} zLH7YCGpq@-lf=(xEkyzi@^bk6_$G UYc&%tjEK#A-9JoGaN6an(pBt z|2iA~86CuBD_W-JtldM<`D^!xVTsypAepsxkMNgGqS iDykLlt_lG?~5hso*mgymzF3Bz0DB^q^&$skr=r+qm~|4kv@y;Dp1R)kndb zzxt@)OH>~nf7a@wLN7HwQ#qC$nyE~S!r{feL<-e*O)?pQT zu{4>zl&jz~7d&y?X3oMlz?{DT4hfbhgkz3b3*r!dsm^4`vutNFWLq@XXRl^Mf}kdx>6y>S{pe&Wjc> zTd(^Sfgorh5znEKIm}2n=!QIh-hD0ao|fN6qTf0q3xNg*g{5Q T)H z8|^9AB4|LdmO; Gf ZV!n909(TSF E3hts=qw=f@l9h`k&*C|*axIY4 zY-@S;jP7CQ@4W`tOLbjCnuYqUA 1U-%wO+ov)vLwYD-1nY6%|__BzW(Jo zt3CHpXJGPQBb 3o5k=}YB`z+N;GY!G#Z*CB 4e#;4K{~4Bi>KsOx7(2g%VUqfd|Rn-9j~oa zNRMAsRPx1(3R~$~uBi0*%NG@e>v% KI`m1#_OSW~ zj2Di}$&s>uYrwi S{$oFfGVr&uj+StBRc(*Q#x9Q> zk#GL>rvU>$kJKK8 ;>Z$~E~qdl8hV%PEcr)Mr;*qAsd<)wN4#&S95R{fg@P zT-EDqLTmW!F&LpAZ)jwoUMdZ*$%b|@q@I&}^%w!gla=)|e{^iypXPgLahsK2T*r eb{C z!QrGws!MG9HgYt=h2q8|LTKW_VKez5tkdQZvubcyt8t(naYt?EXPrF8pF@dB!{OOj z4{And)MEP3d_E ZW@nf5k3lOOpnVhzthrPrk(!)1E7u }tqMH3Uo~kJDJ_*n?%ke-K z!H+vQrM9WqfzXAimP@)E&Td9@m>52y$7JF8e`N$bC>qxSDtuFj4(T`#r9Pl_3Z~vd zJ&qZ_F@cB- gx<*PE0 z8A`HW+3|pb!xcw9ees{ z4q_ Kuh zOq^F*;=J-D&Z}3k@UJv@PvZO(sr^ry_CNWw|LIjM{3{LKtv$Rfn6f482o^<3P=Ql| zP8Pl`DZ4NZ40--^N>J9>_g3e|A9?R)&2`?xA7)?Jq9K-$g+FPC)+73Hkd7$lnXd z-(`Bz UhFAzglB zP8TpP64Z~gfM6}e+~sbwyiD)wtXw^Yz^TD6>F qB6{9Od(?*yc!&X(jk-BiVzlxdOe ztFBGqO^|geA2Ce3JbkG1to}O*sw#1SALv|J3!Px-L|R5jK3yc={ig{3y*UomQ*h?V zupg=?N9OThKSx0REFdkJe^;&A;L0Gweq6PViU0{$2jOABkMO@4=!w)YRZQjNB&cyQ ziG37qGOW4b+0|8Bt*Ro3s1JN4e%V1`9fWHX4z3AZ373SsxXI#J6nHakP5##9H6D2j zLe|1xD<4MmhV0tl-lz|JLw`B?BN6boF{r T+mDXiM?kT>|p zfwimZHf)f>!lzt-0snA?Ulx4+0(KBK4|~IZ7!h0AVK)U1R)SEq@VCl`8C`7kg;feQ z_-+5&2#qflhk&wxpWuHxQ0R)qD+dtm(n3HW812t&5WJrY1LA>Y_h X~FfBmpA^0*R zIwq7NS<|UmQSG3mOW@>^1(_{Vp%ax#6{!@@{TfrjK slU#jCE4B2E)7`J#80j?m6FA6WP=r>iK1i+vNz;}FTG2o$Ms&Ke7J>o% z5(&P7Lkv)g+eebpkr3`fPLGEP?TkAn)DcEl;25Fdt|mB+f?bnlx@tPimHHK-jM%(P zX_wyZrfW06f4SwKFhJ;bK7H!!DQ_ZbEruV}S*4&QV1hMa;eyB=l>(sBwpTGUd3q&7 zkPnTABLb^DLT{(S6lrqn>`-viMS^6U8D^z_$?z_zfs`9w-Nk3N5 Lm$dDy07yQEJO=9O@-1icdKe`VBT^+=nhw0R_?O{)h$*mdjs z)VaYoP-YB~>KJEzfTVf=Repc~$!f46s42GAQre?JAK0DhGF-|BDN*23s4oS4WMd?Q z44?x|D)*GtIhg1SN=}p5xo}IQn}w3BI@$fKy1Is8AXp{~W42143oq=#xK{#RMm-8P z%M+a-f2~W~wC>6fC2XSanLF}x_k_Be>GK9L8med2l{iL4^K4K)=~y`^HT)p&S%^dl zkuWQ8w3I`LUb%;?E83LrfTuV6vdz94n-Eh#(Vn26*hWv7pPPb}dFI1wTiW#G;}o#c z+hE*U@#;YV*Cf4Z_XROTdK`#FSk4+Ct r%1 z6>Uo%HkOg_8J@oC9X#CdHI;fGi%Iz=ka(Em6LoOF3=2=FW^#rJu8k~Kp&A*)W6PSj zx0I&rbk)?vkvL e`(3(A?X9Vla3F~+k8v4K||;v=mx19HjqcB z1f7h0kj_d1gpdtIZfT|{DQ2W$Q;bzaQ5Z;k!imW0O3(ajQjn}6>4%EOFnx9MqoL%E z!sr785aK}+3}VGr7F=oC*3}bX>!kVSv7rAfIc28z0P$s4#W(4FJqogp(zQ)!e^p5r z6&>qftI$I0IDu*9vz){ l@`yK=gsP4CL_*dn-V`Oc=O4=c3PR}U=?)=d>k`0;u~KXFPql9e|zaG*>F zc;@=9;|(Rw_-AqppGFS82#jl14fU`tehrw6a_8I;s>BU jS$B!ag>=bb-HAh7|i$=4}d3 zH<{;xsy8dE;F53`6A0V1fT30j%N5xdF~x(4Ny_J54;j4SWsJgzF&OPMfp7_pDGP^F zNC=nk*$WG2Q<|UK!I^Z+oYQ^ lgrZ&4MH>NFtSoAo?WOrX>_3kuzAF znl5iiq=ps{p&b-Kk-1nD(c7k(jGk?!VXTKH5>hu+fmGgo!-kHhHeSwbCh$AqK8bw6 zOcV1#Y)N?*vVc~-8&h&4tK+PmL18ZrTYngT<{YZ6AMG2e_*~}*1QVp_B5x7?%$#wC zH7?qJCUpa=!Z@w23PS@v2%()oV>`Y)M8ZQ@pp_L7mV!^*f2B|lV`(CHqfFLpyM-P4 zymjwLTND}#pP^gwjwbkU_t{8a@;jDLv?}MQ)1rbI;7oB(+G;q&G^p|bHfP|3pDf;g zFh!tEJ)fS3>*Pgxivg0XAGX6>gZ3FbfJ4g-A7cOJ$Dg4ey3f~edxF^j2-nbw@{W(v zspl`rTj859UzcjM7-Z{pgce+Y{!Qp#4>Y@Ll&&7h>I+;ffmOIIsW&8!&<+D?FyDVq zgf|}QL~oCFP}cJ{P8BY*;Z-GXJsg{VqACg2wq4geqUP+QDB_4+K%fo!|2zJK0GJ5u zqbNK&!nxl#Wl#dp;fDvkX=(jvP}z0<@E|p}ou0Llx_~wq1Mp`_00CqYC`W4zI^t^A z#KzPhi_2!Re0Z8t$SFA@#T~_}w4O^bYG6gUVjgTLi_ H)sEC{4htmMGsUo2gs-GCOm%%4 zJXbZ&nQ=rOseoDbGjnA_cO!j&Z=uSPH!=Xv9r -jmqn=sz?Y!4u>nYRlQGp z!L*#f>jk _V&-`ll>jUI7@1G{(ph*#2w^Pc%9Y*&!^2PNYco-WbBXy=IS zT(EL3j7#pPrXBaQE472hrfFg8^@-*Mtxmm5uvSixtN!Oxljxofy_70{{xBsQtpI8( z@eq`8HKAYR36g!=wQzPc6=o?zwQ)dPORwaTc_rM-u2IugHNz^}d^bTKE5Hr&NQ6hY zE-*1YK$C&E(1SVqwP2HGnaw=+_rYq| `UMKNpWBORZ7_mEKm zPJ(CKE#S|OS)1a8X0Zo Sr1{VfU-~Zel`1Cl?8X zrmY;zwI#zJ9dXe*?)Xfy$?ILeF~?qKEuEL*88uppV6I)&mSKP?C>s!<4?ANieS9Q% zvKQTP%)isfO_8?Jn_;Hv#P(>nhOM9gO%!3ale=YmLw?o@PUI7RwygvQVD>PEgjG)# zIkxRxldQm>=`L#@r|36@=1o=p>mUE5lTgyKX&A`CSQeICdpR1WNkBBgQ(+()9P<_~ z(xn;G0(C?BBL6~YjoYWYefvliH62h3jdcu#h%w3}St4av)If$-?R|2EG6_HS=8Y;^ z^vPCuwqarc8$n!u^bWy=t;n}|%g(E?@g!}nGDqiVSI36*zIVqF=^1kmQLe0TC88_& zdE@k+w9ka_ Sy0)@n($sUNKm$z%l1#j?A2$NoQCom2G zZbg;07HW17F|@B3gx0$Yc81Z}IuGTQPJ?-c_ZucvtYC+KsYup29VqsvMxk$p?OXE1 zTG(m2dQs0YK%xe~J>e7bgxT2ysvq4>8P%QCR2j6H+FBWvnxVlms2EubjhaPPL@C`k zYhWKtt$Mwy3s^rHg1sdv*>0dO^#` UzHOvxJY1qj(GX)`?@-T^fys?38NgBqh zD91>%HJssX+S+)_$fBD?m rR?%@IaDfSSPWHF(RURh%a27^-;(f^t(w5y zyH%@}hDohL0MK A+}hDtiCMVQ~D>Pv>W zZEn @ir52s$W+l5g3!I2-FC#Vvg}c^^T4*UP+vRvmu1D7<5f5rL3+Zx~Muz#9U# zi{s#XnH%xTMFB4ev3oe!X@v6(1aIkQB0rssG)1Q|>Vj~E0!y@?vAUyu3^s-E2>8B@ zqXlb)LONyA4Dq|~u>}>F-+k{=0xRN*cFz&i%(f&7;m;HJ89=ipYu9$FjfjgeD)te7 zL{?<`30xp0sOawiCOX3`qKQz5@xadjn!J1@b>232Y(N>wC!}$-%850^01cp|-@#Kz zS$rm9E#b0^T|paibE7e&wRc;65YcUMvoWM?Y+yJYUP}X)aNdy}O6P`XNb9PA14b{> z=~|l0yk!32O2U#rOV;LF%`TmE!BhT!DX%YE87HQJCKehyRVZcs0$EQa?d4T=-p7!& zOAR`Y Jrx0?>| zPwg))wO^}^c?m|1S8&(4hMihaeH}>b#t=n8`qI>gJzezmskN(Vh58zt1S2s)E*w03 zkvxsJh_abTn#sDtx4$2XeJGU!flY9dOdOmRo8;8brqHn23XSntZrIc{UP?UBTs`*< zhkx2-RKbcPRl?)YG=xl;m1$akrl`0tvu(bLPL!e88|L6ol7V2FrsQkhPUYpof?cYU zCg Bn;C%%v}hHp<89xz{>dwOv*e`xI7U0=XRkzgEwE)P+|9UN&vm zWdzy|J#+=1!|k~Rwa~0^La>_+%#%+;_uL3u^NUTXUDh>(uhB)7MuXsg6*{qnJ$H#z zdUje<@=Zx_Vu=Pk2hDq$;mvB_5{9PQM090PA>?2`32lcCx|Jlud)(=GX{3*2vu|3m zjZN2~)D3=nQ}p?(RgyOe_fpg2j{|l1Ps<|&u8?9323OLh zuLqrNl{Tm-_j5(oNI3$3cnubqRxv7sWU!gr*Rh+~>cb*D1c*;_Hpym-K~*t9g&_c2 zG-m5aRS}{BJfm?)A`Ij|lY2{^4~)y&rV_(oM&q|mV1w;ad%TQvV{sS%`4c}-V~&vU z7B=hHmkEH|NbA8&3TtqEa35}wbtNv}vMcg297fUi!Vw!W;^xkOOCd*l+-yTaiAQqp z;l3Z&09|a9%AJm=xQ^wN3n1=Ta?=A$UAXJL&Rh3hpH6L;zeSS;ypYju6nsWIeyS?k z4q0T0GRtbaYv!`{wi? I?xPf0dig-DC|JjN-gl_FjqbvS`8|b`Vp>P1ROmI+z5x<*r}k zR1;j?#2eD4S$&_kHBI}7!tauoYP=(DB0XI-K%haoHc|Xcf-_ 3$*(p!=G_Y}7 zx?ArtsSQI${8|LSZW97vVRviRz(ou?Wq`-|`iWJHUS z6rz2J)5(a?>%@#7OYdZBueAb^U&h1hSmNA1YfGXOv%~b-@e6) nB&`vv_6&$ zE;9x(eE@1N9Mul5e{p;v`;_L+Du`|<(|;%b`p5qUr+@w9pI*A)CVMEO(}9zRu8E*& zIJ~8x)}-y~GJVR5j_@;*QKiKte~o?#^J51r-K9mo5f&58k&t{^?4v8 UsfKm_=3_~+;$ zKxChjVjY#Fy##RJmmw*Il}qD E+Of+4t+8e}`X? z#^EU>YzX!kX%E6ZPkPT2>FL#q9nzB-PNP!QcWlq-E *?{3 z=Y!{re})7NiN($N>Gj#K7a!gQMZz<(8>z^{pO43JI rXT*rj|U z*xV^9Ay}^n4t(#}f}|dNf@jrJ0@hs}HDSnMf0jN|924&7(m+}4#epxpP($+xej{$v zM>|ZZKtOdR8Rl~k4vGQ%X3yCB5)W2UaQ7G{Fl1^XI#J%}o=IS$;x*)hw6Y?+?L9)Z zk@9;yI`tT%he7sN>6CCMANLOKB)YHinTZuatWW*7k21E@szPB^SD4J3mcK@6VP!8c ze_vULN2NCgi>P*LU5p)`PS}@=th;ZkUA~HlV=r Zt$t)-zQ?2_A0wW{5-#bcf(LO|@wK%dA35@y$}LQ9-Xz!(#0 zQJHUETOO}ADQpux6GoVsd(yvOe{G;=tB~xii#yh_hfu3xY~a8rZHWqHq!fLI+n%06 zrVEJvrLYzbxx^a7pi0P A+q^;h{+@Z6qK{MlW0|}`Pc#eKfBPF24WvS} zL(JFFwLq2PmEh0d V4ZARFRj!8`2%PdS zTvad r@8kE-91QW1;qh$H0n5-WsDEDPa`f+TBUiho;(aJ$n zlV&?Q8m#f2mQ6#I!G|GVtfj*&CWp;_AHt%VXI!YMz{7qVjp9alf4i)P8DyIBl?MJ` zoapB>y!IEt$?;rhOzH{)CaGA*U_lcts8jPMMy _Tg`#lue?~(L`3WRY>XLGMgp-0HpN&lm^ScX?YN9x$pMV5LMkCxrBoa&NZQO} zH()Tub;x0smNSoCf1C!GXf%ZsG4z|Dj(}42V$as}+F|0;Fegfw6AYu 5<%KE~miK?_2)i#D%poQI#D6%@n`%q^^NSIME_Oq|jI)RV8I0bPNx)-H zYS^{dhx1wyV4+@_KS&RcHchu<7s2Z|9TYiW#!s{m;^5Pof1OE%$BLjeRkmVP)ooU! zr)V0cezMLnM&Wovh0e(-nuh^rCpOj(=E!W#NJ3*ojg$rew-WN4ku7HZK_raQ%`SU} zO&)H%o%@*~wT |&SjJpyVA)nfP7o6JGd}G!>^|(V3WU8+yfP<(MGonE6kKR z$BAQgTqw9qmwFWeFafZas}%u70Tq|=6#*Ios xEPKkXOr1{!J zz;I0k9EjjkSEiwwLb4`VAyc|R_mtGN>j4Fg(INkad9lo5LdiLLS#=SYhRHL>3f96P z* +72;9mjuvJvnYC>O_7LIDT~;zs&ooz4!wNfZ zzU(GAzyHjAZEA6EzI_#%B15Sg{o6wp$ 4zmw~ zG;Sb&J!LuGD@hv#(x|rrY7jdWE=l7gjG_^N-Eq*
83L zP=6S-Cff?%kZv=_kr|05&VTA+Y{%q>Ywl>LEb^@38xbKZZ3?YL@|3x=IjnhsO_1xa zcZ1%DHeIJkK>d+$%)0MDZA%osH^rg9goSp0jQCz2dpS7W N7KYa;)yay-#*5(KJ6SQN z7zl @be>DTxrESb(3S}2KxMnMq66()SW%%`yEkj9vd>Q55cp4 zt#_~>;ZV}^M&%Gz3K-s<975OJ5>bZJ-&XiWaM=*fxCgD6Fo~8P4sF)?!vm=a+_4oF zb=p2e8e&v>q+bN)8yQp@>rsLx7E9BEIDiRbjUdPj@ZV!RI}Mb9w=AQ5qVK% z*ke9c)t88L9E*PJT@rM05dW g@9%dK%y@r{DR1qVB=*oS~u8pAn9Qh||lk1;d~%jg2bz|)Yf zqz8ZAans0y5o2^R;wabK#Ap^4R@=7D?>pCpN1e%y!B2*XaWEaBoJvotR`*?Atd)C$ zggu)Xs*p|mHFp=c3W+Ci@DLzNL4Y=I+0Be-W!xZmkdUA*=qv7(7( zo_3eMt+OqW!$xzPWC+dQW)~h{La%HIm#i8A7=P=vugp1=W5Tc5-%!e~ZC%SVZb~lv zn*9x=TxIooA|Vq!ga1Rxs={#r(M^V;XYhX@8CaK|7&9gccD_Sn_R!V1$w}v_Yu70f zH|+rAE&ERRcc3a8Qj!|>$l5*bh?9bBoewQIb+V$pV;;#3^GJk8sFroU_TA`mE2aRv zqkq2**S8$>f9 !p zg9C8Y`X|lR6)lB)3i4?JB6xKOb|5hh(tq=*Nu-E$wZ_Xdm{gK3Kz|2 W!b-(Q21HUKQ8Xkr%F7Xz3JCf}iPU~!=Bulf#!t~5KyByJt=if)sajrbd( zuP~c$20~p~5b cxo?|7IW{)bc3O;xN(S!DaF3(jCo<{f^##}6wD(*+IZ-9Be< z3Ene9SJ{lRES8CMG|bgU?AxrQCBN=-{8 P z9iZKKva8VcTS!o2qKFNm;(cx;hF;A<&exD|(uvZ6cRMvTd?0)&3jI+T`#nylYM7A| ze>GxH{*4s*_4e|;o1Yy9 ~ygij;eyK8;%!W@B$4HWmR!h^RHUo?d>V&JRHWZErea-$F;gsV(lsyD> zAfX%!qMt^Nd>4w%Ltb22v5Nd5PF-E#J^OMfTS5mCh%Li@fR4t7*nf1}Exg=A`^D@Y z&ZFT;H0&=-&;Oc;d=NLxANp3^Up@%TQP}_?y=1FY=@soauE~nzqe-GaJU5>tSHUuN zYG;Rw `!j&^qT7SyYm8}u4{ z`9266c`LpVinD`@cv3{Uxz|ir+6H*t`y}cWK()~*^3@l-0Rfx#<}uwM41bPZI3{o! zz>dfbHLt$F5r%3<(1K@I7woNAm_^*z)pKJn^#<}lKom{z`F}lvc0g$;_69A?PI#y= z#c@C(9uJ?Ssg593g9C3_!kzuPpi?1pDn2c#LK1^bc0f#Ii|JX>;V5K3ekZOVn81Cxyk9J4$#zK}Ux z>2o_H{tEh-759mw(M4k-MZUsGnEnE2?dZ(S+(v|R;m9wJ)_R9+(nK69n3e(~X>k}~ z6_yU{i6b^GbM(e$@}cl8K8Pg0HR_V!vTO>6B#5n58GnR25lgH5nYEP+fD37)aWH5` z75PFX?RFYEZz82Vng#_NFw&$VdwK^gwWE(;F&3q?k5bz7DHEfb73iRJ6R0??L|fkL zH0x;Rxa)R1(mIQZM^Oi)qB0MKV>dmNPx;ZyNw}}-9uHWQc0!GxUc$ZF(fGim XqRW+g;W^8Vji6 z-{0rpjtRILq4*1ae8VHnii$V4l4l&LA(I23-%Cl*2it0=GI>eSgcV_EM%!*@@0mxc z*nh+?xVz{g66WquV^i7t0Rt@ye!>3wV8yArs8lw}azb(D&X=~f2XpM4=J#^U_}gZa z;%Y 71@}!Z%z9cc^>572G <5GEzC zJBKSi0ml2VS{8-SxTNJW4qT|!GT5kyZrLL)UG1{EArMar_jV{7I&UNEE!kG}o+OnO zW{y8VmjIC7!sQJHxx^p{lCU7Xb{{{!Hr8S4&YxjmcbS)KBLN$KhOZ^zMh5N~h=&}i zd(njX_=7NR`1%y?iHJb>Bm_-49%!sx^XMg~L2hn-9gEUwdsVk&jas1L(3O3=wTH8a z-3WKoSGtdATT+yy^|A0!xA@0`k*1sNY8QsYf-<<||4QCno?Tf{x6L{f6@yCD%bPc2 zRQn0)A?D!Zv^?a0JHUI)SC4W83p?yhx}rrX7rT^R8ZW?S2$5(Zk`){~5L=xQNtw_xA|4iT6gG=`Ag?>%b}4wZa> z!5Ra`dC4AvGFMGK2w$N9Z0Tl$lNN}oRICY;lxSpzNRR1UAZUE3N~BjpLbSr9o1)1; z(3TGWU6q!9-5T^^iHJW3GRgpPU>8bxO9028f3F+|^LmyzG(Kh=*Z^8UrN5a{A31;l zE(>hX{O>Z_PL)_NTlCQv&N{d}H4IV9B4CYIz4sB)AU%Kho3BH#fqdv6f4=VEm-- z=NoAUS=<)3i$F*9+(>iE#=FXHLW6v?3i$32ohoE)nzv}Nf2)a9!i0ct9VOtFX!8K$~!S`X)K}CC6!LrM{4|P*r5*5FD#wM%DB_J zTJIk$f9F6PA=Q_DL?k@mxS>$B{`4I2aIp_nYfPviiFmJvX%){lkoQKidwB4q9E9NI z6MkASaEh?o6??ehLmhmYOH^Iz6h4v+sT@pbIiLyW;Nj7%fGY-|L%M?3cvA6fbp(k) z7`&4+a7(@uPhWrUQ=n;UQf}~>t-PYs)%{due;h!l*bVnjuDE}=l1-c{jkoZysTp44 z%?-BZ?C?WDHlMo`-!96kgh5DUdcDEHr%IhEA8saG#EKz7fiw2k1ub@JVHG$sXAH7( zYZtaby?Mshs)EJ_3aut~rhYldXfo7UMC5q*bNu7LWhbaH8E7GDCe$@6!aL~!<*^B? ze_b0o$BWFzUgRB}4f=BJkrZ&-%<`t1on;{RD}E-I@+~zR--J5di-go;Ji)r7bN&o3 zG-FCk$VNBJrRK{LIV?lrXe~SrmafC5Mv6*f(JStfyx}em;=grpp^1*X>xh;|75WqW zhWnDWs|CV0Vn}S6)uix68R9Lu@Pb6Ze>|us5dydDuOFJ?1%v17S0TW4z5)ALk;$Wr z-Lfx#0 3wwxsl@hk-VZDvuqjo@@Cfq0CKI%;buY&x+M2Jx6+{2`te+dSR zHsTL(b {tm^m>D*+O=m~6 z!eJ{)X&kX89$RYp!?m;vD#LoM5&sB*zkVwng0v`CMb}K^m$GN_X9%Zq?MF+)2_?{h zrQRR9S2HK1M3N^`?^`^>2WMFBf9af4UN(u>(usC1J@GuuJ)!e+;TfRmLst}O)7`UH zA#2ix>@qrbA+|?{{ObB4-_j6?2$8_Ffrn6@8uBSFT3XgxOi*(O@Qydo{5wJgjOXN5 z(1;?G!2}9#3Hh>ayb?l?F9iosm8605f2j2rvY!y~5yA&_U~vYA04?CKf6hZ*H|@km zcp(3=s}uYTZH7f5W~=#d&7~k;r?y5eup8lr+XLLs)*i`=nkg O5Iy4&K^iKAnr$wi#e`@$qMzG*CQ6U}VjDOS43d}+UsuDK#wWuJ3xsAnN0y$xe zs^0PodS+{YVf-eb3)QW+5g4Ra@V=i_pWrP(qXv9IhVTw_ni4}0zK(+hBwvM=3)Vr> z!BI;#Rh>`Gp)t(I9UB=-mq3MZfkt`3YMMSHlpF4leC(|c1!w~ke|z#2&_P=CP~_o; z*7?(=v2!$Xhs??>w9d`Nv!Y^yUT4q70|`S*?8^?utOF^)4xLr#UMP?w;wZ*|NR!kK zT(~J?+6#>_rkPOqg7RG>a%VSK;YlyE`b)QS?}%z4`Dx0v*ac$dfRZiq_0Wh50KCOU zgF@+6QNa <`Dv4En+Vs+jUK=8Gvr{e^IMHj7}wWRm!HLF$*;z46c} zRKXawGM=ZztxGR9PP9YIfX<lrfBB~aj}=1|+!ZGkUJ(l= z3N4NrO+a&`P((FF8c$3!RA~lcFLJ&kHGHIYKCd_czO6YriI|eCHpts$3> EOe9gZ_zrrlEQWOCdP^pQ4S`n4=WB zf;J4eNRWWLmuxHnCVw r~fcBz(gh65(LrX0N%xn+Uj%@2vfLSl$S* zr(fWOh1|HVF%Xg)8Yvg?#n3=HM3|sMOq*)bAf{y )z42Gt!S0rVDJjzO7O(uvWA}4wlYx4hMCjv$Ao_{T9h;N6%j$kmQMf{pM zC*YjmJ7eH%*CHhAds26PpKr6gNZ&I NV4E`aDO=ONvW44s&P?sY@l1U>6%I~R*3;`G z4($gtnrIB=1AocjXA{dO<=*liUZ$9$Fl37<3Qx@{ql2xg+Ilidh7%cu4%gJdiOR-~ zO};79-D6% 7#HS{`z ^c|6N6HkU&pAKC?u znL|3kA%7bkRMEyCZ(QLnpEMhuZ6;{oM7z*Dla;hXo^8T3?b~QNCM!YGic0%&`0B=?QL`_WeAFKQ}C&l_9=S$MI#zBVS4MW!K6Zk|U zj<6N)0LB_a1yUh^j|qCBt`nN%qjh+I51OM}+J9!ZB;@SXKnWAT+l%w}Z<5>d%d7XN zx97?KI{(YfFCIPEZn?L;ACOC_kNk&^rY3*u^4fb-WI!XOuK5oiO~^cSz~S7md z)4I=mtlN)$2d9B@SpIyJ_Sd>Bx<^C53ju(7?VO_tl8 zVSlAfE*ub1&qVR`GDVt!F>%M(f-$h?O!IU@z4Ad4L@Hu~IwWyo%9dHD@Des=7b9yJ zf3K&|>j2_?CU{zQ9i%`|K{pY*i+i=MT6k5rT7BULHm#*y3(6ZHaKm?Z(b0#GZ4tPn zKL_qZ8%Re8Oo^ZEyMZ<(esi!AzZod;n}2vE^u(W{M2|2bJ7Q{;L4%k|HRAqK!W=tq zn$F+c8Mrm^{{
pF(U8cQJ{KkS3YXa~eUmpk@xZbzoyNh1Wfiz~MV&(!*aO$AJWsdO5r1|U zxs|q*8zrVKa{G|}A(f}H8yPAk+v=~muWVY>Jec+L=Ir7kq4LRhu=^>E({X_0)9u^z z4@nP@h)@Xw_&zjw*p)UQnikPsK00Rtr}Q@F(Y*ebP~wPo&qf}ziDp&;j$?$K+qdbU zB7ltt>rs8P0)b1BHulkTllGWj?SI=x&v04`DVF+KndjrlM4(vqv^0eDwri_8&kCw@ zR#cmggtL!j#kMc|LL;6~)l5qZJ|w)N%PtY|(L?&2(>7E%${HP(D^86=nNImNCNZ3W zU~n-I9c8eIafNq!;Lr`NANSen%RJE YjLNJ*Vcm<6IOGL0~aTSga+23Y~k;J2Q;%|uv zmApMUJ^9l~u!`pedGcPH^T_g}=gAYl%nqhz=tPkSXtcQyTTUc6*25=$b)G?|0y<^p z91bb%S|mc5mW-<~roYSRbblKv9qi~G)&LFS=w^_1`_UU}IBXk6H%)4s Brm3I_fxRa_+NHn^oxi3fA?sOU62c>mV!>V|24W*;2$VdN z1OiQpC6oYKWb;~SA;BI#T!&Iyhyx=TLIW3*S(v^RriBn K`McBWH}LD`{Or^9#qD20H0_VUWA9>q=FYF85k@&s-@8sw zY6gYI%0wuF_flx3ihrA$8q^s9aiyS^g1dLN+N;Kv7@D^3Rxr=UR{g13W%pf?)e{Pt z2al~|NN?;PdhY;zA$oV1@bS7~k}=sHCXf>v!iG)qz(UHF1RR35s9=UV6FzK;*!u)3 z$lox-IHmaf_L@x7&xmx!Jm3X1mV)?(_nL%g_n74+Sx>Hm1AqB5_8DIL x$eGUztGS}B1B?^Om4sx{SErp!=JJb+SF zUMS-0%$k%Fnm3e!|3Vn@Cc9^~Nwhl+m`th4)r6YqM0+DV6KMT;nq+NKm8*~%Dvac@ z7ZJA=dl2z}5`X3cJm lkz9c$io<7VrqNtig46l2e!H3N) zEjYaa;(y4Q D-6_|qyQ!bbVg3Iv2z5^fp zvo&VC+)C%Acq{~tbp%mshJ&Hh<9U*rc;8O2seffdlLm#M4#8OtbPm?Bx6V6RF%_b> z@Ef5*KVO7sF(YV`l`(=TQ%@*E%&c0xf^263FF|KzD$fZWtg8)owvs4Y1UgVYK;a>b zI2O#mgVh1k)1^|Br|L7px#A9387|!#DTX%aESCi9pjq2MNq%-T`B;)r!uGkENC=XG z@PGEX3M6c%vAK+i=sZzfhRzi+ztB0Mf~(y~IHf8X*r|jbtQ=CgO&NfN#Q;kNeK6h; z!gq+Z07Wn|lXS+YOwu^FQq>sC2}61t%EW{Sv0pG$!TEyRWnR~wb0jPXfA5?(W6aG4 z7n@~0K~#20F0o>*tch}nSF2r)&K zn7kb75R;+ZSFl+}M-*qm54H7HBu_hgf;_6c*g-|`)Z#zt?%J3WT@Ks73j>NcS_ zolQ!ZaRQSBEL^AjwJ}d)pa*3Me@#*80Ph1{v=UxE7G?ieT0a2G+rG#f6tLj%&3|8M zKLK5X)Ow ^1E6yg475G%80^+3bJm0(D_ zv}yM=I(1h}$|N5mHwyNa`Loi5{t5brC{2p2hAZ0ZeVvyiqoZrujMJ%94l$pgvK#N5 z`6las{o|j1!2tiB+(HOCO~Vi&Dt{}F|EVc6C4sF_$~%H;>Nb)3(K%f)hjI#zqS-Zd z4Oc6o$u?;d(PWRg3-;(~JS!Jue?pkB--hjj^}&V13WXhZ`k8vf7mhOf@}*0gynxs3 zxA~+*8DsqGAOFt>a7=D`$AA6f{|!;7#-50^EgP*ri&M&sGr6C`?H9K7=YL&+HmNg| zhsPChr_i+EY@pwB;|&v-r6~Uq!iUH9*;8)WZdX^?YD&Q{q2Nh>_8gpW3sER!`fF0b zdAD#(^He>PVoK%Yg6z+j>8ktt-$kEm8<+7gY(ORiZY*<35jfbCkc#d%BBa1aw9^_# zL<6m`?by$-nYzX|kc>#ckbknJQ8^3M_0>(UyDhIpAU^u83c{^pCHHuSm?6L&7(Usv z^F-#6#vHYAVk7jvm^z?bzw#6Zm8i(dO-Iuio6hIQya7|p)%`=)tQdJvLD4k`#eC1h zVMEQsB}zE!f{z-3y3bo&EaKpJ4N6|mjZi)W@8I&Jl8|k{f|XrIE`P47#GKq3gw#o$ z)V tCdw8W-at2`TURL?W+eRxgPr@@ `9A7BhYY%Q+*u>%bMMK$2D1}ue-MOTw(5m@y>v( z6D~&l(9C?*I=#oQ&_6iplqP_9Ekcbm4#|UTGv45cab0<8Y#)rJCHsC;na21^*ti~a zKoZr5>ZFYxt8hw1Fg%JOP3n-y-KgFa)t9t60V5MP@Igds1vB(wj+DF23baD|VYip+ zIRPFhR_L0RyH#LQH=;L#geF6s<(@~QSP-7L_}d1fUOMg{?rOpBk#<6bmoPd3E`QOe zL6YDF3%Rk-_E{K4=m9zx-t3}=+^X>B{U+ G*0zP)j8h*>oRF!@gdOY=(tP~{F5#K4ekd4tnx!uJks; 4GO1B`d9e d!67a3FMs&*CKunECJm}&T)GcAV-kJ9+6isN86tLYBUS+$OmJd+ z#^b3aY234@J{U`ERm`&Ju87FPFL@J^%mcE4?3w!IqYays4hg+)lj FCtrz5o- Mb}7l zL2+TFGuQetVKaftby-DYfLCh7ts&gLrBmd#3Yp0dXk9?(!WZic?g00`P6c(tuhA)Q z5`U{1iS_3K+rrGsmX2%J1gc#cya1soqXVTwqzmDlfcFpJoqy~c>l3Pq;oY6CQFvcx zVe_7~(D~Ls#n7~*uDe|u-(n6$FZAy~TF8cpv`q9u|8~;CEv)#4T9JaQTZO-Y28rm1 z^+Le%At*8pZdk{%a4Dc+JKkQNw$921w-BbqYa|aA!f&NxKy0g$q|eztzL@HQAK6zx z$Ijl9ilgEp?0*F+5Bw9UpK|gXg)d}2@*hryX?=_$brsfo)O3hO>iCS& U5bZj z-bg1WJ**kZeJ^~qQ_M{QH82BwX0B|d9N+%*&0xOn|9>7!Ekr^lNIYz8-})-y4nA;P zl!C0FzXSIFhw&JR(*U@h1zAad8&3o@>ANn+;gkE+u^NuQ&(zB)=LO;J5r%g%;kKsy zQqLr&Lf#$ukvd+uL)9&^J G=B3p2j|OEws=cPQaEnmfx{AF}$bhhZ z(Q!k0o;YgYy_ERjV|i|xwyM1|tPxKy*Z=fz-DkD;0LPGr%dkIQ{D$1IMXe^5MIK>p z5*5bF*sdPw2xUc@rizZ4CaZt?c&qguEQ bRCyc;)jo=DysT!o7G>sU1SEL zXevZCATQ~5N2fa8-PJLpl ??lxqxA8G>s6GzkEb>_7LClODXZg z$A5x5N_Sws2}y*lq!&i^g(;xJeaT-lfQgK zT~SOMEr6sPEvPUaMyMUr7}4gKkW^uOjDKOzXOHNl*v9&N_JAmF?}A@m9?=cnS{{J; zsK*ZhhcoN4`lpZAyB08F0}10gfR4 tAt i9Sxqtqr zkBg3=r}U+GT$0K45I(K|i(4ZeCbKmg*&5)78owHmD1uvusjDH~*E=+!bhp~Bn^?xL z!u%4*>QEkDFf?%&Xs}|)J1|nALwR_2ie-UdLLtQedMMaM%saMMG&PR=$|nO+B5MKn zsYHh~_x;_ ?fVF|rrIOI{~ *w8P*0otp zpMd)UBYq}hxh62gCv=$G-x-J?A%vgSPZSUzoqkF`oUNDZe|ovtvEaLa^MBuCKJCc2 z4i(7TOrvZZFM8-i-QYNLFqJB({Pxkcd2F1R2>$N@f7Z_m2Qw&g{Z9{9&=%v6NC@%2 zf})d4Ncz46y0e{#U#sWjw(31da!S+v9i0jNN{XEZl)kA}jSUSwwapDi-d1ua3_^?n z*}>3lRg?6gpiM4p$>2L4cz^oQm<$6#m-uM{UWxExFM^<#MU!3b*xw!z%h0D+7y9`P z9Tpk?)>$uC41v|~ulwH?aJl#mV^gqlhUciORUnsLT$ (7JF`wJV&gq zKgk`XlM6^{2Z6Zd{~Xop19|iWWQY!(s=)IW`#9xB(%Lfwn1b9VK!1&K1aYe!idcMB zh5!!UOc fxmxvT@`CHcDUj!Oc7bAnvF(6!>G~+b+n%LHahfpHy4f|^Wtbe+CMTbr~T;!E61_!|# zC2!C*0oVQoVl#EiUX}{s;z4imj~T72i>4+Iq$cHxJ!1ujY P*w5^*1+ZrQ7WUWBUE(SoJBgRk8EJ4A90c^41!5zD zJ`g(##sg`3^5-iN`H{|>?5fCDEBmnT*vELn#dg)6f 0bb)3u z;9w)PH`bB2pp`>C>yv&1LS5ij=EB(2r~Aw#>#Fos1%CrmFQw7F5zb@I>KO)ea&X7Y zdD1Kn$~BL)XMWBHi75=!m6^HX%;x0af75NZ@BqB($)~&x^U`%4f@mQffaaGcMrbnF znRrWLgd@^wl!XQ`HSC%CHG+j>S+wIapPd^c4};@-WVDNuN9G3j>x_0+aF}ofixOM7 zI>wq8Tz{m<)=wGjL*NCUYJ3)J#2yLuh6hg|c*24w-$Ap5%OE0r!oz<*)O}M__jJq% zhFl5)Rv69pzeZ}><=&xBB7G9!Go;4pD$T}+eB&WgLtbY1h$s9W0yZS8SC7H@JPLk; z4)%O*9_f&M)wNz=8SX~>8bYa0*}K8ikhjXq_J0FFSk%nN*Az!^eYj8JmxQ_~)2kfE zZ;h#GQM`2 gAk+*#n(iH;fNd3`Zyx-4Q<^B zm$qD0QHVvHY&Gth9V|xSv)&okdYH3K1LaxtotpiAdXr>Cp}?0PWqU`vMALZ 0DcoUMg*|&~Qz9>EC7^TJzl$`);~x*z__T#p6DP!l;>oTY!2=M?)27pw)EhQr zjV{+l(M#qSRL)B}I@wh0xrnd3q8d&Pt;`0&4|FKAsn}x^%<123w79Y=GA)cy6M@}K z@!{fVpDVUbD$4FIC#&EB??M0#;FU^TSbr6@fcYs3(R#V=`YJwZVtaqRja7Y&aQv ~Vv|`m#;GKz*XaKKytFQv$S!TSNWYgDHUx1%KK? zMNesp{ hq2KidSblJDp!R5(CrXpGm@_q09OCkkMa zQbB-}fhc5>VMF ZM?O@Qhi0tyiqVkz$=)XqL3!vK{9^~j%Yn3z=V?jkw2Gz%CL8?=wUn(77~jgU zGsi&U<->JF6Bxom(qbOazt~*hIs|9(#364c>8Xf`i;w|)v~h;`;1DdP1Aj0`e#ZZ4 zgz=eg*6jaUJ-1c!!)roEEv54O_1MLD7juF*>uiO;G~qWz6L!2ojKAO>s-8MiwHtz- z%HbS*PS^B-j&2^=kae_)dw{M3*wX|Z*yxu!{BgR%+isn%ihN}J`2b}V$kXKV)0>2S zOxF<>@l)7(g%=-b53-)G5Puk;PjS-#_jYLq1bxt(^QpSu3tw^UYbM3VxU wQPv(K*OCGx@EgTed9 z0{9I;^IFI(k+3l>7&lz+ RslHl;!NitnnG2xqy$^Vgb9VSPtr{ zD;KLi1D5yfGhv^z#f5ii@QP4F3NR@3Sal6qDpEE&-g*9oyBtHa2kx^)bJsPGf|%dO zYnF %Vhs5^hs~E;N&y;w;mIAeEr`oVn`-@7Rg1;a!Fa>H(5fNZcznmaW{WR- zZ%2%BaQRjqp=ax}3q{*cyubiV^r9)BY#%ak9ANRAN}`))v-^WJ 5sA!#Q|>ZvWZ>9pNs477BS~ar&bZ6Gkzs>>%VpytIAm1V z@O9>xfDxc3m8Q}feoi1?IC2hJ8DB7H+Wb4@AP #W|# zoo$H)W&OCMs2*^Cu|}MOELiCI;=sBp`94$izz+$FwIfb=V5T`E8^nKF%J-sZlE^Ta zIEy68eBGcs^0Re_uE>bDVIX}WRmEA`W8|)n`=~{o9dyf^^x!RaccfJwc9JfqlZN(> z@v(WwjBL!)=nTQejSVb`Cnfz2L6bLmeYnQ sXW7H%ERxOl($}#oJo5X zU-> 82{+mn788!(mdLlCZKS9^`gc*oPZwG~7YPVzpWL=Xuvc)Ighn&|k zlCXozq lNb^MO)8f(4_NBwS=(_pbNA07--BhEFNFW%xA@A PQ$C{{XXFVabW-h&Ym{B_{?`M-J2K& z#v=@Kw$(a+*z?2j3lDNkT$jRai2)8wmDxk{ebS{1_bx8Zk92a5eo9s*bN4L`KSs+h zM8WHS*|d`NXDSwpxtI8cpXudi1?Zp_YIT2*W4<&vM!#ya^fOx|y4{+e#VQK*OiT_J z_=~FAEfzID^Cuo6p&`_xI5}7XfDrM?z#6;sG`-1N_VDY+zNSu{LfSz21!8gjF$437 zd5yOPS6P`fIjxuFd~s0k >5SNjOI*i)n|u$?6)}0vG)plR@eU@~4xy=-9(>Bu z9Z?_mQFB<__kPM~P}=Ih>d)iS#t;WJsKb&85~_o^jLyR)uYQrHub^SZffWQ?HidqY zcjTFgQ`U?eHGwQD4AbW)nLdy_vc;P_dFEQq@TI{_OB$}o%sF3jN5?d0T1}lZxuQgW zN9rW)8aN-3qE}m`+v lh2%>89T%Fj=9epVV;U9H#@X!Pd6gF;aLr9!!&;7giYj2uu)0@ zXR&cG1Y<)i8oE(!+2!S~YY*2{y9_IT8t}H7?JlV?G9E^GPgcaW1zUQP=XZ`M^C!Zj z3aMD*xOT%(8Q1i R=-lCWVC|AT(!E6>Ds{n&+xsCSx3Qf8i#G(0~dsZBadi`5`RMCB&Q(roi z?5=Sx_?aDPP9C!-a;TE*ymr$ZKC3ZkERo-{zjG){n?#s6KeGehDWt&yiknzwN`7WR zlG(+~EjDcDLuDlgtp_q=lhDY2a+{Q@MZ_5+!Y0dLp?Gb0z-8vB=}c$rgT4DQcZ}wm z{(B=d)BN8V9dV-fkrYKWi)jN-v`mEJ*zm95#*Q}49L cp-ewE8A)Moc{r&FynWMmeUaFJtCZX92 z_EzJT1}n(Ih0{-eAwsYhUeS6idoGfPm^(q>n^{W+wYX7byM5r +wtA)$Aot7^&f)BIm`mcZdZ{hi`fBbXq=)*I=Xiu1y zsD-1fQC-TfWVfF=QmmnWc+U3N_~UZ}yt>SAz26f{5BEoGp}-sJDZY5XtLe0B{_b>; zCr8k75r5Wb;rN?5`-3WADM>ib9AB~W#1ov}b1MA?%s}XQ#I?Y=4B0XHt%}bhgc?&Dy z^W>#1+CK7Ayw9D`p| &fcb2GeuKRtO6?t~}0ey3{#w`4`;QM{T zU1pDtxZk>Tgd|TNC3&}Y?ntfgYx1yggcwI38T_6*B45aU;b;Iu9|`(3cNB_hmCdjs z cvPZt#TtEHfQftOi8O z4Jvv%wjIMeaF&eA#!n^W9jy{kw)Ml$`7+;`Vm!-u-4eM&N9iVo@f-|H@b3vvCbEXY zu}BQ8WO(of78CACB0Qip#>Y|q_$&`TOdW#jP;3B04$oH$_o;6-3~<5lXtsr8gohRz zgTg)ZJN{!%eN&pZ2hZVLT5|%SdxD>H#Gooy1TU?@bKdK!ByhU_F 6{?ye7Fi})>h8Ik*H{sIz1%#>K_&naB=M5~Sy~si zx`@m#zf6E2{_(!dt4b}cr&MBIBzeGK36=EFIlfy935vH>RRP9vf9d~E+`BDDZfseC z@BJ01vNn@cb38SrQ!_Tk7d11;OtCwu zJX7J{bK`6AWeUyve;#*DwdpBUbK)Z{DZiBEl?CXJ6MQOCxs(|K;y`wa_?(+e&sIA9 zt#u^Sep?UN4W?;dsGbWRc2j cAs{&o3}_4n$cTpH6F_5P z>>$ui(^#E~<$5%Xuf(%L&o6XUqErEcqc;J=^eB B1Jq&G z;?`8aS;Ux}`XG66z_9NJUOg%_2oxAlO$7=dMnFmyQ*1p{#u2WdL?{w6U$JQP`^m|e zs5~ftGFP!2637RG<9x#5l%-Vr# VE!H@p<`BEx)w;;WKW_ z_`IpQb(Kj j>lBkvRB4DG3-M#RIxz!9RmO-yPCyZbFfW9; zU)E*=e=Fnl5MF5Zr~zXp3#~dW#{u6OfPU_+IA#X5TN@m2c=$B{8(KBUSd4&2gNw0_ zdpM5_JGztt81eDGg_s#h7eq+Byr`-iMwh%FBaz-Hs&glmPvTk(oBr+p{PPKPd+zGh zs@fLia#{5m875#DhhYkZ36!@c$D0v{PZ&+Jf6OaBXls|A_Y*iDG1NY)--knqcI#bf zchU<4>RaOCh(NgVK>MW(j?V6W3!Bzwzv%+h?)fqVoxJ#0=>mLlFy;WLhD(%bjQ7FL z7~a42*V+7^J?x-(Xj^ZW(#bY9ys^J?zRixePurpYUU@5W`y^WEkf)XdA{AUdc7pQ3 zfAX&Ch8jlt_=@CEXk!>HD&s2)Gf4l`b~tpzo@yq$u%+&>vi)QtI=S`rV!q47Ov=#> zVup$S$pc@*67#0*o(se3+pYfcT{5kLV%nM+NX3QXIyJa{)?dE!h=fUdxeXXQh4>{u zVFV7NWt>WU(Kzp1JkccNHD|dVDdK5?e^o=OGKpa(oy545_@@(mkD?vC&iw$3Vvl{X z<>lUZk}64?ut%PcHpo?g!6(Xi 9=p7|! KiDCl6BT#Z`t zE^%G- sJr+V1zUV_i?}dFD25+>F|iur{4!!U z#@gO)j-3VOt{h;#0{X2y8=#Nge|9JMkov6Zp;ydnM8J(bS2D2JU+BOtFgR^GQ^BKx zXti$RSQki;L5p)}e5P>Xlm#aS-buHw|_+S@i1eBi4h;*SV&P4e-<(zLQ{XK zc#(cCcF)5Dr*rMONsTj7u#zbXiXTw$ckG!F1wK^qjmf&wvZ4`1rv>E_mz8H0EdzoI z*u@AlDx#@3^&qwYVDF4q8)cwz@@p}Ws2?bh-i;U*^gOC;+v4bXzm*#x@2cUcs>B}1 zJLd+K1ex2GS+GpN61{-^e>s6W8iBsNuL6ydU!pL)#y?RS^~TM88SGabcf4sl7d>s) znpW4eZ7aRTCLB+tJt9%{HjxCY?y vTSNp0* zsxyo87;lRB>{`O9byh_&mNK`la4I@NbureL`6f7JWxfoGyf@b2f6=nq(zH=5c@%#? zUVz8eNW =(Ihxja_ASC9f2|faN{A^lB7G!>aPgWp*~zH1`(Y;*F7K*`^05xIGb2uoCJPTE zG^~FV+9HkBsaPG}k@3SVY(D1_9-->!j(AG@ Q&JX6*T9Wo*wk2g_4e!HJdSVCL+sx8DF_o|@o8f0WB9aVVQFGtvgktW>!f z;W){}(FL7z&Yf=_N^y$8C=h7;(TVA#2Nw%+Quvpaj-_VCTR`9oEFg3m{562@6l6_< zWGb
g$D3+;Hjm0Y`bZQ<4wWbsj7ZDnG}#d*1( z+d~9{ 3wTi~(gO(y|ErVVc_96ueT=PWvIXwm`B z$2eVk%WLUxzr(77f4O@es{Y&Wa(Kb#P>1yr|A_X5e+Sj8g07ca^7bu@8qFA(6(&N2 zW>u~DPcw+fu&`00WKH=zi;LS87Dj}LkD;0wL||5!2oaik`%rcD(BDE|YzCjS$F5%C z#Ed9_f_@7ZewA}F5nmIsE*y9^w{R0s!LEdr@*)M>2x m3vrb_!j=?0xBE%5XwCi}$ z|C$_mJpn4r79*SxStf~fe}n^+I`E}>HN;Bbee;~kg9xlt?}b={1cZej-Kl0=FQvwH ze_S6;>!Lo)hdUSBCtX9thbm5f+%3s*RANY+vlx?G-}AQI)XVJTATuL11Wq_H#$>Fh zzShHBQbxvSQ`B?#!6^Yuu(P0R>LhMqrwbu+SV&I3hxSPe eGXjak96(1{ z0x$&l$&2ljLK~TRO>@6*#DM8pc(dtGe-hQuhGxPLW2a}~E=O){_7FHF?aF;$iJ73R z@<)a=vm^|!CRlDt-JJ5bqF!$+7;ur-u~F?@lz3v1MMn9SF5QkxbQt8JyR%Wtz)Czf zN$6MeR5@eVKlekm$xTtR(#d&kqd1wK9@?VrizP32%5xk2_G2O|M_@G{krINLe@?|G zKln(D_^7?nf@k_d{}9q5ZEc^l0Kg1@*EV2`KPBni#IYvTLDd}=RRA!fy1>)1$x)@L zKbo~@n;HBx$fU`TR=R`GfH8jX7kx VJ=Hm^7_OA&?BU#nU; z6}Z8ZvgcD|rw(iJBC`ltix +E` zDVPh{B}4c$hA({@vv811e-^@53T9{T$3H3Lz-ZkLZ5EFl5~1O_ggZ0fLbU5@D9Y}x z9y-YI^p{Dpb9<)j#p|R*yq$uFv~< mlMBWYQz`m-9vJ{caM1{cUe{EEXTm(Ty; XtZa_UXCHRv^~>{?NDNO?vjg&-LXTncM~KBUAx1L(_gCR;v1eR z%Wsm{v=sxR!a(``f4BdHN5B8}j|dx7cG+xLZ`y3|D9* }G=Gp=&$pdGWvNbT+hN(&}c6 {z;LM$Migxaj@CC07icCl|5 )e=R(iYR74Hp4&qi+CPS~@_IU*$?)ffu^T!Wv!71=gID)m+4WU-@>$+a zukZcCj}WB)?BxLG?^lRm`|Z^zOraDZikK|1t3>_ss$BAS=a%MuZ=sWj*K*`56+2fH zFhgJ_CZZK^;T3YaxOxBK_WI`Z=f(N$;`H6S)7S6Lf3LISqdy)sHpa( x^X_-qhc)1U!jpKh2Jz|}kG zKUb?_Uh<7l>|{I(Q21owdA)-q83?wVHy&u86b!S2lR4pIEfWO@Vi^8p0|ohVON&_| zkmov>>ncH>akI-qPQq$iCT)M3!1;)!lcafhDqSO4`T5QP0C7N$zv-i={sIrRcKC(! z^O6}8W`EZvh?i-9H?+HYnGri}axFjk(1&XI0O#qO$PT{=hcXnq{BCR@FQ2STL?*Xe zKKR%MD)}j~thPkSQ3x=I!xDRLL;Ivy&CT%8Rh4$xGOtuw4G `$k1$nfHC z1a(F_%D%Z_dNx7x(DFB?O(w#?@Q()!reS7g1kCA-GGmGspq-IyY8r{mY?J^MPIhLo zkcG1KV9$txVR8|Z-n6`iPe!KD_^$_V({6(s3C4&ry!h)urA54CP!XK|cp!r_rei?o ztbeHiw%_K)TU)44UhK@+D+Bq#1V&dhC%8YAj|vBUM=#t1BHWmgPn#BffsvayFE`%b zBpp#mOm!tN+z}!?r6MLe{@e AA4brB->J6ziVq;!QWCgPUd% z$WQPswUH^jG%Z19)CP;;jRiI3lPy8mkAIQDB _M5)gRo$lU(W!A{;AE)b+yu}wZ7;`A@3+Mn{)k@JCiqi1yqT(3*(DyW?0*9P z*9p*+%<2OtXRg)HC96*pAd^hgy$|Jf)l}Vy{ng8ONx^=iU{*^eP3<57N`0Zm0p$8N zjS+~xL?a-mU!U;*{e-=^9s>gLFJoK#v|AFAeYOou>?3Us7FZZf!j=JH-PD0&6|5vc zt5AW3Ris7~e545t?CKGgQRrlumw(~sTDP9U0LQF+pktU%(S>IQq{k;I4B`+lMuLnM zW0)yZGCBqPd5j{w%
@ai?Ht}y%8I1SK>YOtPq1?aoL1yyGlF)lR-#$OpJ@g?GrW{SzSruQ-43PUv{6P zsTY*a%r=kHY*$9B-)@U6F7xEfcBMN5P-jS>s{mO* xBa{N{{M!j9wYPzQSJvegyn_FwHoe zDU4jgYk46`pI+79%t$2F<9{@Io8APOl?|rRRXovu-B(Q$T8EnuD2u;{4?gI=-Bj_8 z?F1jpba(dJ1o1K9)#SQ!`A}CK%q>5slj4= u!ea*%Z&iylGc^*w$RaQTrL}roE})(v9m?(V-_! z^{5cuT7sRQsg@2MeJT`YqFjbJJi7E2rBn^t;>xvyX@pHWzEsb71Qa }qm|~@2I^I;NFheBZE%sIw=VI)1B~^xN`_Q) ztfQ6Hjfvsmp>eNcYn(`(P $-v!oy=X z7WpO0ZYs3B-BLKqRM)nf{sjN^(tUtm#oRgu#0MryzwGKA`hOW(CG;z q5?oEjnQ@E_}vcn6N)Hp~ ?jld9-m(fXG*9ykG9x z;&94x3=XQuc*T}985}SLaHX+nlpqDUQ^=l9&Xr+JENclCW{{o^HmUQ3;v}8SrZg1_ zgU&6AlX?>4Lx{ntNqi8K`l)F#wz{^zhnO-c`f!rk?^+&%{kB!E5wMfHUT;gdTi~&* z8#>fNPk;Qh^t+gjmu5_wosNNAY*`#K@U %zx;tLQIOcaj8<|7`6SAuYT%mn>m zh~*W!p^YIB#74V%4)RT8CKe(L<}4)kmdG?Td($J>STDeYr(S-k)UvGg%}<7*tfg4n z& `b zzXZn5MT*PEi8zg^{2>^a%yR#jOz(>TxGJ g%2yvM80>Ic_q$gkus;M_PO0Ek34@`V>Eb+xHqgFT#yKxO#lo zRrmdm=_&z&)#&t*L*Sw@LKL3>`@(_k6=SuKbMnh>FAaoG9%xevIL*TgYvdUK*?%{H z`J4C^v7fm4DVSTmN!bm7St8>u^$CIdu2?PUZeKSm<5)vQck868k>>LFL`AU0>j^9x zxi#SKl?p=*^+20lvy~7CN(Sa~Wt^Q^uwny_E&~NP+(#Xud-|t{wyP(_jz0?{UtPG18yJoY8V~H^ z6w5ya+{TqoC|8xh3fayD%!l*q8y{6dQc3(kLfy6P0Jneb*nL-SDyW`M)PFN@tFs*{ z*zzQQ3=+OpU~go2QMnl`gsAC?*8#dTx!o%Eb_A4>@oV~<#J3-Y(A+_oPZ+ 2?Hzblus3xzbkroSnC Cog!S@iX)Qg;J`X|ds5Am0Aqx+a`*`@w!1kVByI0Dl-DtLup28Iu^W zo~n@5)8aH+j5|`UUM&5TD&EzN6$lG2xLb_uXBZ-&-|#K^!IOJXehJJbkEF>Sh?WF> z405?AfBU6Z{SxTKEr^zPGN!a1(X``2x->6#&3?_tzs0wo#i#H8g&TiP7cHI9ic@F; zMg9Fn`R|mz(2FZcX@4?$ CzRoE_LXbez <~R4TI9z6GTHr!lZ7iz69gBdxx Lch>t&(7(@OGv(>|rDKmeuyXrUSbUL*9UDYRRO){w}o4b%@~C3meSCsb}}0C}*+i6$2>Kl6MN|VivPQILac{wDUri z1~EH?Ajm&DCV#XDlcedw=6I$Yw4JK>>E`lXfSfjeiHB&>X9=L~Wx}43{lW_!5JJAE z)@>F$Ikw_P#_ZfX{yoHllXrM~e6#QF^5}3{5O1hQTfur`Lk7tCSIiU~HPZZ(92e#2 z5HO5jXkU eL3&_MQ&5ZK#8VSc&C9V!*5^VSiAkN?@D^DO{rP!e?1}k|f}D z&(h+pVeW$8w5$65S@t_+*DQ-qL0~zQy)g-K=_L5%SA^$Zq7wv~9 ^KOR$v@8 z>E|m}fXqDI(sQ*QDnn^gFTddCV^}RlFMo#1F9lvoQlUSreb><4ThKkd>)NN@Uo;gK ztSoE)hRZLoC=P(&O@jl{U0*mgEdUoOvkDZ+0hT)}d4EIl z`G5Y)=LBqF!J8(z9TSZI=f6y$X>^x>NCD~51m-L6L~nlhzy9xx=t~oo1ph8E7Sm*) z5Bd&Ku`k5OB7)oZh6 2V&1xSCa%ii=t4TZpmx3TyZJ%uyF;%-qBZ zK^$d4gmVj4xd8CWkPEHz;w~3fm4Efy5nPCxJkC=GKhPApnaP{IHomdJEZ%K}Gio^7 zQ5l|(#N-id(Bb{(YU@`Z5v~zo kYkl>2rs9cf{C~B+*xca| z-yjMp-0Yj7mgmqmaMT*$@F|OQ(%d>tKn8%Aur}ajoK$OG@2h_3Pw)@L%U2@bVn|Un zz-K0c;}0;$N-H=bxVV@?IfyzDS5bJKQVP2ZvU?+gNgum5T5&N#Gl_YTB7gX0Q~w=5 z=xRaKq`tdMm53?EsA3T7IDZOg;bDjfd#GWn3M@i(y#LTR?*oX6LJ(ZxGC+QEAV 2uF}{nctyZQAY`fBjqt53X@3+JDj01ceC@?fvN*gIr<| z1Q9%1T-)BAh*My9*hR+I(_cfrfB#z5Akv6wqxbamwFPCf^ f#pbGQy z`fP;h-`+O{9Bu1Ud)Z8|hkE%SdsPgU)cRt{i$pCKKcXA}z$^g90pL8P0QlsgxR4a7 zilC7HIA0H#2gD${mZD0T-3H6Y9vN5C%FzHTQ>*Ef7Jn}0*o!k_)4{K%uZTv~uRiW7 zOoG;R3fg?IAY3G}Qp4bm4Z?03S&iXFNU*vd!MLcVJ5saqXu2U)nooD6PVx$!i{M3) zD|YuRhm*X^&gi-taCkvK7kAH*5i9t@U{{3o`k9GgsO-_xZJusE-phCLO-8baQEkZ$ zz3?p17JqV{t18q_K8av|E&~~U1zM&+G(I^MaN>I SEuzyn#%oxcsLQuFgsQvyu;Yx#`4nCM@ zXtoP}y|35%jwX~c)o2`M;c!U?#loU+2z%;<%fA!-(Q~qFEa=nqHH8-~jIx&p%XkPI zG00DD-iL>BDCz;7ee{_M5P<;#s|Q91iz#YYg-Ec #I?v{mmFL$iLqn zP IpdSAX&W9-OJ^@OJl e~7H4rZ6qU3?-WVEN)>AGDyeX;$p~bD(To;*k4<44)Xo|Js)lFcFi+v z59Z%ulwcsbL0|=2jKS(uK)~-l8a#T}rxS?qcrLH^f&%*zTxJ*F%FD#Q%i!Q28JaV7 zcNzR#EC^EGNcLTjzaP44yG9rGb${Ezk+a!aBovcSBVE^$>Pk^1Y3%cK^vLE-b?U<6 zA)DIa=fsaqJy&f=z1B m0naX >6}ajzR&pjGS&uYj%JfQt zorxzt)?fFqeVg|eyNvn;jei&!{RIK8;j@ney--)VWt6N$G5tUg!IBD2a1%Q1nxS6( zEBeND_s0pdtJmOpAyd0B6XI_KNLW1u$|q6yUTD3%>Txyf=g>>4(<^MXLt!T?EIwyt zhcx&r{dM6A$B&z8yFd9{u2#3phqhi;pNn?q-ZVHS69AVSz;I81Ab(6^Xj};!lTsE~ zo!85v67!P2U8Zq8Oh7RKrFNN~`bgsH#BC+;EwvBtQYLOL0T|VlKXrk}6p_1(q><57 z2f4~1V{(q+8zkAB(mN;$&1W^iw5w707GoBdF!4%yn^vz+$i 8+jDHcd=m^;mV!1MW_NMc=!Mj}qmeHD97e!xiQ` zK5SE)kzv}|OBIuOzi*nN-``QOgPv@)D|w4v`8<`!wE`rQkgV*Pgj9~o-^55`s%1q* zwdf3uvJR90Z*9O-e$+p^X^u~+ejY)_B*6OkeckoL%xV@^-qD`Q-g^r!MlOpi&9}lv=BD~Ox7JZ$IH@bZ1pKw1 zXsU5^+NJGIKEosY!h0@hJq2|bhAjw0pQIrm)lJZk{QZNeB El&7+%|3d z<@0Q5fQZh*34f54a3-YvB0SEJt8kkuQL1?^sO{z_ods+hI1&NV)U<6c_V9r7ftgwe z1hxkO$U=jHM}rg{qUUuoPk`*r37 G;#|_c#gTSz?JiuxTfUQ z6R()$g_J41m=~x-J2g*%1QCs&oKC<}Q7@AU1GP)Mw|_BI>$a=sW(>hF1Li#eFVvG1 zH8@XTUJ)=$j6_jK_pc@FdwpU*CIyDA)nh`_ kUMHo0W6SeDj~m;hhSt8CHbyup$zDSIrIaIV0)ceW|J zFZ&(s8h;fP8TtMeKg9SD Nsi0Vx6ftROlK~DTqXr|!larZKvYZ@M zXVlD-a4|+1aC`#JIPw;u+UApNaq%Y%jKjawOtJ}Zm?uqfL>I^_MJV=xrj1y}lw$v< zH2%rL3exVnHa7v$ > #!AFF&O1L$bN0t=x;Wu(1NHtEz(4GJC 2D)=*q@8cVmatr0x0{(MzLq?|vRdV3l4NYA5v?EIMo3Fl-Gch>J0@uU{dh z^k3?xsrX f=oY!SkkDdX!AnuC}eID@-XSXC6$y9Io& CSja>1c0RF=2D2?L7=;%ukXz zyy@kO2x!3LIv@yL*5firDxWY%Eb@(y<{zA>9tlYqr76R?Q*Fw+A(tj6^cfD+uB3~f zl*Zv4&Cn5wsC+bzbRtAJ=N^Kvtc-VJA|>N}Fez~h;Ylu;vGLHA(vRheSN_AktA9?6 z&oL4mQZ_8w^!)Kueh%~9^Km!-+vk!gyEo!Pm?kHu##A{u_1G^<-nO^xhW9Ao+VNud zP&aMg?jD|_yvkN~BLILI0A~bwrJjTp7@u>wO;hpX2mU$CmzBsP!kLL&^GEG!znn*D z*j^Z4!jzlxi*+#ZfK( `Fn0a^?nHfxpud&j)NU4GrhW*q zWb~d!L>YZ2O_!2fBc5<_)dSuGvKA+=GmiDX<)# 3Kb(R^7NgjB;miO8|xd(n~j7Y_p29CzUrBYq-?4t9F1p zblT;Y3a&-uUyDB{F5tYijO8VX{2BYRTE}@S5WTbXP6hvVu!4UZDfqWc1?u~31sZ`A ze3IXz3UbQ0gFdH-+keDgwlGqv`+gs2@K&%V=5+zP5+z!TI*?y?XW_W<( zyeIS#4l_qcej=OKWhc)BNsNMig5%jis+6dVS%T5vbp+I)n{vlibr0jYld@mdb-|w$ z-@@Fx@;gDU#&`ua+_V3uP a8Tb3dM-FIK5t6Tm*D~ym=GWos>GXS07mB#gew`gFS85=K+#< PlH^Q~$U`l(+gM(Z3`|Tu)J&&Ig62dN z94W) T6WKcdN3DnBTfQPBZ(l2!#P{Yr7zvnf@+Uc6WX`ot;`V5@cy z2Q~OOkq=Iv+HQ4}D4@Sl2qu|u!?<8#is>dv(2R(RCx6BLtMb*auZ|KU`S_l{3cnUI zRPpB3>8roIN|snP)gx|xEQ?2Rnhs7j^Uk{brJ$3EhZLuC0VRw6qd3Y(OiBZzgN%ad zG)d5mh)Q>kyOIw|p!mXk`C;$&D1y?BBr?ED1GDw|MGp$dkC2+os=n4kp)O-PLPXRw z8Xz-;ynk>K&JZqr5kNfvvw@=b!%=%a8Y#9_wK_^Pq#FdN1(1ijX~4tBEDU)T31af2 z2sz7(Y26uBN=>(wtKxiw7()3X8ePHFbXmHhc^{WDFMgtdec|Yd);<)wu#kC?>xcd7 znPWzMu_Z?Y5g8)Bw+QkD9;I2a6&}>A@J8gR?0?XASXZsfZbf&gEccz`KK770*-!{H zrqGx|J1st)e)##~=eNa&^S7rT&fwGa`Qqb;i<`eiW$Mj^*owHX9*FDH+ZGL&Qx|xy zq9dr8DoIs=KHlLq`kXh!aj3yvxg1F!kk=IOJUZ$T%4mSw58Zx=n?(TXv0avT`vz`v z&3~3h173xP?SX;!I!G523lY1;6weoiiAA;=CWR2Hyq?B9a1MA=C2TqL@FNtBvJ9w& zk0eE%@LW$3!+W<@)jV;+Q9dFuyx)r>Ej$!aX%A(+tyZ(&IbknfxP=9mKu+B#aqWRT z+1=h-{)Xp>qFx)}$`j+To!G=(B+*ABVSnESGN&8uymUkXE!+gjx jhFTH^EH|v=TqRQ7BRIfmon*b+JCNB zmnt#UEtfMzCsb~J9g$s`WKpGG%MD%RqZ=+c?LDU!R(MReUUD9Opi={Wy0}=_aU{FN zv(&*3CJk_I1IGB*)r?*Q7_F;lzaeAQ%|Vi}=w{RQRRw;=p?Uyc N)< z!hgu9NTmeX-&k-_a@d{KRSiw}&8!bh5LpS_Oo3xs=FWSXPT7R@$MhLXn|5|r*`!z9 z >M=K9;=p#5>d=9;#l?7Nu}7krd8fo$ympaDQq-Z61Oz zY3=PL4{7ff!s8dh_F{`?l8Q@>=VeY`2sJs=mp(V;4*mC3ood3gmo~guvD_7W01@@y zdZ~frq|(S~8(y~v3+;&Z+DVcoP SdKbN-fpX80oKV{29{#8Sn+;aC9w@p?MybXlx#OoZ3 81ZWU=_1$p=+{w1gM`HGK}UC7rPx6NOJ&qJQ(b>=TXPh-c=3 zMuQMPW*_Vvb88g)Sm&i1J*X( bb$^H{%vw-au; z;FgCHH`TgaJ{RIi+JCt$mjc3JBb;}HzObH7HEnT&JUP+l#qXcD<(Dt}qOTjceP~k; z5C0rd1RnR;TL~cEC;(vwNb&n`|LbQ&zSa+a|LuQA^@w#ab&!(o9nDuH7QxhEO~N^K zp~p2n^8PzrB%XFa( t@P zhFH%~ED+g>02$&jiFYpfe*f(se-n&1$oQT@L=_u1W|-+bCvlC7Gt30;&5JY4l ?23nl^SsWsr zL90x~hbS3t+@&i8%H6JO%jKNXh?{chx&noAGewT7Nq;$i;^GgUK^bv8wog?vr{oJm z`ZJ~3?f?FF-kc y#Bas5XY?frQ}W*8 z31+&e4Eh1Ce>7|Q4V>1Adv2v_gI$yTxV~2)7xGiOf?Z$jSFQNjsPJgvdR=pa=R?F< z_?lNNoPP`as{|40QKFnkJM|dUjzH@0BWA7t=wk<0vG0eW-JZZXar&650 n>*ZFOvrHBB<)IV zTe*RUb5}ws9&(X*9|D}-OSheht4+dumtUYT|1d!e&?ik{+LYl5OzLB-+EF(?Mscmo z^2@G4sXu1&8HV)JS?lVT8dOOsH>QcCUDH0{>506g1FLgxH6!H|VUjPq5mVTcoyLYw zbbq8J3tj;f@IwJVOj&sB&~Mjvx6G-HZ-m*;yJdEl%%p_RbkQMPot@U$O}G^Z-kvQ% zZWJ`!o$YP&hOVrK{^S+Rp2n(<8w{&F+VSvY=11if@Uq$t-+q^YENlvG?8nD@mC~Ux zI2w5& rO;G$WSjS zDKm)3j6h)Pn!@lB bQectCHGqSqT2w|382j@zMI-kj~#NV#e_b_8NQGXvR zs3H^=Zu6bbCZgBJg19lT&HBPCM(h*Ijj7laMrI!k3>Q%a>lRJ59LN Y86@a8lSHt{I^(X(fK z2a`*K4UD_La1WE61L!T(y~}IAt-p%3;+*vOsLiqy!=!}Itf{|L#@5#7Xn*&3!meQC zx;HH+79SP-!i1k{dcxf|+p6#7&8&S&GJH~I)=jL!c42-Ca;A+6#%$3mNel)YWI`=L z($c29$AmTrlOPvP?692lqBaqcUeXN0l)36LQ*gT4z}6qrX1>Ne+Fs6beHtT9`M*B@ zecjco6JDEl`>Oc!Dxn7X_kX|r$6IbAPk4hN`|}Dbj8g$~=B_3b+g-aKaAV}I93JlL zZG0D ATUGbvz8Q+9TF2KF zEjnSzgyoq4dWT MPt`WZx_U8@=%JRi#)!Z@GH2PQ+CGI$zs3LtzVaPrsyIuFtK)!B}? zvJ>2P_eJJ!rjUMqT52n|L$PgF)%Wmz70Dw$ONv5bfQ0WYGmtKVL;->6ZI3Ny^+Tk+ z(F{Y?b^G1GvMZ^v>3@a&J%tleV