sgpemv2/po/sgpemv2.pot

863 lines
20 KiB
Plaintext
Raw Normal View History

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR University of Padova, dept. of Pure and Applied Mathematics
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: matteo@member.fsf.org\n"
"POT-Creation-Date: 2006-09-18 02:44+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/gui_builder.cc:176 src/gui_builder.cc:299
msgid "Please choose a file"
msgstr ""
#: src/gui_builder.cc:196 src/gui_builder.cc:313
msgid "Any files"
msgstr ""
#: src/gui_builder.cc:208 src/gui_builder.cc:258 src/gui_builder.cc:332
msgid "File: "
msgstr ""
#: src/gui_builder.cc:208
msgid " loaded."
msgstr ""
#: src/gui_builder.cc:215 src/gui_builder.cc:263 src/gui_builder.cc:339
msgid ""
"<b>No serializer available.</b>\n"
"There's no registered serializer. Please check the loaded plugins."
msgstr ""
#: src/gui_builder.cc:218 src/gui_builder.cc:266 src/gui_builder.cc:342
msgid "ERROR: No registered serializer available"
msgstr ""
#: src/gui_builder.cc:224 src/gui_builder.cc:272 src/gui_builder.cc:348
#: src/text_simulation.cc:399 src/text_simulation.cc:405
#: src/text_simulation.cc:424 src/text_simulation.cc:490
#: src/text_simulation.cc:496 src/text_simulation.cc:515
#: src/text_simulation.cc:863 src/text_simulation.cc:885
#: src/text_simulation.cc:1601 src/text_simulation.cc:1638
msgid "ERROR: "
msgstr ""
#: src/gui_builder.cc:258 src/gui_builder.cc:332
msgid " saved."
msgstr ""
#: src/gui_builder.cc:371 src/gui_builder.cc:399
msgid ""
"<b>No CPU policy is currently selected.</b>\n"
"Please choose one before trying to configure it."
msgstr ""
#: src/gui_builder.cc:377 src/gui_builder.cc:406
msgid "Configuring CPU Policy "
msgstr ""
#: src/gui_builder.cc:465
msgid "Selected CPU policy "
msgstr ""
#: src/gui_builder.cc:473
msgid "<b>Impossible to select this CPU Policy.</b>\n"
msgstr ""
#: src/gui_builder.cc:479
msgid "No CPU policy selected. Please select one."
msgstr ""
#: src/gui_builder.cc:527
msgid "Current resource policy deselected."
msgstr ""
#: src/gui_builder.cc:529
msgid "Selected resource policy "
msgstr ""
#: src/gui_builder.cc:553
msgid ""
"<b>Want to save?</b>\n"
"You'll lose your changes if you don't."
msgstr ""
#: src/gui_builder.cc:744
msgid "Filename to open: "
msgstr ""
#: src/parse_opts.cc:69
msgid "starts the program in command line mode"
msgstr ""
#: src/parse_opts.cc:70
msgid "adds this directory to the default modules search path"
msgstr ""
#: src/parse_opts.cc:71
msgid "adds this directory to default plugin search path"
msgstr ""
#: src/parse_opts.cc:72
msgid "a list of savefiles; only the first will be opened"
msgstr ""
#: src/parse_opts.cc:92
msgid ""
"SGPEMv2, a graphical simulator for process scheduling in a multitasking "
"computer"
msgstr ""
#: src/parse_opts.cc:113
msgid "Error while loading preferences"
msgstr ""
#: src/parse_opts.cc:143
msgid ""
" [II] To see a list of commands available,\n"
" [II] please type \"help\" and hit the ENTER key."
msgstr ""
#: src/parse_opts.cc:167
msgid "Bad invocation: "
msgstr ""
#: src/parse_opts.cc:168
msgid "Use the `-?' or `--help' option to see the help"
msgstr ""
#: src/ready_queue_widget.cc:37
msgid "<b>Ready queue: { </b>"
msgstr ""
#: src/ready_queue_widget.cc:38
msgid "<b> } at instant </b>"
msgstr ""
#: src/simulation_controller.cc:194 src/jump_to_dialog.cc:106
msgid "<b>The selected user CPU policy stopped before returning:</b>\n"
msgstr ""
#: src/simulation_controller.cc:201 src/jump_to_dialog.cc:113
msgid ""
"<b>The selected user CPU policy was malformed and failed to sort the queue:</"
"b>\n"
msgstr ""
#: src/simulation_controller.cc:213 src/jump_to_dialog.cc:125
msgid " [EE] Fatal error. Impossible to deactivate the policy in "
msgstr ""
#: src/simulation_controller.cc:214 src/jump_to_dialog.cc:126
msgid " [EE] "
msgstr ""
#: src/simulation_controller.cc:221 src/jump_to_dialog.cc:132
msgid "<b>No active policy selected:</b>\n"
msgstr ""
#: src/simulation_controller.cc:228 src/jump_to_dialog.cc:139
msgid "<b>Unexpected error</b>:\n"
msgstr ""
#: src/add_request_dialog.cc:95
msgid "key"
msgstr ""
#: src/add_request_dialog.cc:96
msgid "resource"
msgstr ""
#: src/add_request_dialog.cc:97 src/text_simulation.cc:1329
msgid "duration"
msgstr ""
#: src/graphical_preferences_editor.cc:305
#: src/graphical_preferences_editor.cc:355
msgid "Select a directory to add"
msgstr ""
#: src/backend/global_preferences.cc:90
msgid "Unable to obtain Application Data directory"
msgstr ""
#: src/backend/concrete_history.cc:402
msgid "History::add_thread() : Parent process not part of this History"
msgstr ""
#: src/backend/concrete_history.cc:438
msgid "History::add_request() : Parent process not part of this History"
msgstr ""
#: src/backend/concrete_history.cc:440
msgid "History::add_request() : Parent thread not part of this History"
msgstr ""
#: src/backend/concrete_history.cc:473
msgid "History::add_subrequest() : Parent process not part of this History"
msgstr ""
#: src/backend/concrete_history.cc:475
msgid "History::add_subrequest() : Parent thread not part of this History"
msgstr ""
#: src/backend/concrete_history.cc:477
msgid "History::add_subrequest() : Parent request not part of this History"
msgstr ""
#: src/backend/concrete_simulation.cc:235
msgid "unable to change policy and to restore the previous: "
msgstr ""
#: src/backend/concrete_simulation.cc:241
msgid "unable to change policy: "
msgstr ""
#: src/backend/resource_policies_gatekeeper.cc:88
msgid "No active policy associated with this history is available."
msgstr ""
#: src/backend/string_utils.cc:62 src/backend/string_utils.cc:102
msgid "too few or too many tokens"
msgstr ""
#: src/backend/string_utils.cc:85
msgid "incorrect number format"
msgstr ""
#: src/backend/string_utils.cc:125
msgid "incorrect boolean"
msgstr ""
#: src/backend/resource_policy_lifo.cc:78
msgid ""
"A resource policy which allows a request to be immediately allocated if "
"there is enough space."
msgstr ""
#: src/backend/resource_policy_lifo.cc:84
msgid "Last In, First Out"
msgstr ""
#: src/schedulables_tree_widget.cc:65
msgid "Arrival"
msgstr ""
#: src/schedulables_tree_widget.cc:69
msgid "Entity"
msgstr ""
#: src/schedulables_tree_widget.cc:73
msgid "State"
msgstr ""
#: src/schedulables_tree_widget.cc:178
msgid "Add Process"
msgstr ""
#: src/schedulables_tree_widget.cc:181
msgid "Add Thread"
msgstr ""
#: src/schedulables_tree_widget.cc:184
msgid "Add Request"
msgstr ""
#: src/schedulables_tree_widget.cc:187
msgid "Edit Process"
msgstr ""
#: src/schedulables_tree_widget.cc:190
msgid "Edit Thread"
msgstr ""
#: src/schedulables_tree_widget.cc:193
msgid "Edit Request"
msgstr ""
#: src/schedulables_tree_widget.cc:196
msgid "Remove Process"
msgstr ""
#: src/schedulables_tree_widget.cc:199
msgid "Remove Thread"
msgstr ""
#: src/schedulables_tree_widget.cc:202
msgid "Remove Request"
msgstr ""
#: src/schedulables_tree_widget.cc:615
msgid "<b>ERROR<b>"
msgstr ""
#: src/schedulables_tree_widget.cc:646
msgid "<big><b>ERROR<b></big>"
msgstr ""
#: src/schedulables_tree_widget.cc:664
msgid " ("
msgstr ""
#: src/schedulables_tree_widget.cc:665
msgid "/"
msgstr ""
#: src/schedulables_tree_widget.cc:666
msgid ", current priority: "
msgstr ""
#: src/schedulables_tree_widget.cc:681
msgid "request:"
msgstr ""
#: src/schedulables_tree_widget.cc:740
msgid "RUNNING"
msgstr ""
#: src/schedulables_tree_widget.cc:743 src/text_simulation.cc:1726
msgid "READY"
msgstr ""
#: src/schedulables_tree_widget.cc:746 src/text_simulation.cc:1729
msgid "BLOCKED"
msgstr ""
#: src/schedulables_tree_widget.cc:749 src/schedulables_tree_widget.cc:778
#: src/text_simulation.cc:1732 src/text_simulation.cc:1756
msgid "FUTURE"
msgstr ""
#: src/schedulables_tree_widget.cc:752 src/text_simulation.cc:1735
msgid "TERMINATED"
msgstr ""
#: src/schedulables_tree_widget.cc:755 src/schedulables_tree_widget.cc:784
msgid "@@@ ERROR @@@"
msgstr ""
#: src/schedulables_tree_widget.cc:769 src/text_simulation.cc:1753
msgid "ALLOCATED"
msgstr ""
#: src/schedulables_tree_widget.cc:772 src/text_simulation.cc:1762
msgid "ALLOCABLE"
msgstr ""
#: src/schedulables_tree_widget.cc:775 src/text_simulation.cc:1750
msgid "UNALLOCABLE"
msgstr ""
#: src/schedulables_tree_widget.cc:781 src/text_simulation.cc:1759
msgid "EXHAUSTED"
msgstr ""
#: src/simulation_widget.cc:140
msgid ""
"Nothing to see here... add some processes! Right-click on the Schedulables "
"view in this window."
msgstr ""
#: src/holt_container_window.cc:39
msgid "Holt Graph"
msgstr ""
#: src/text_simulation.cc:129
msgid "ERROR: this command requires at least "
msgstr ""
#: src/text_simulation.cc:129
msgid " arguments\n"
msgstr ""
#: src/text_simulation.cc:135
msgid "WARNING: some arguments will be ignored\n"
msgstr ""
#: src/text_simulation.cc:145
msgid ""
"WARNING: Simulation was not recently saved. If you continue some changes to "
"the simulation might be lost.\n"
msgstr ""
#: src/text_simulation.cc:151
msgid "Continue? [y/n] "
msgstr ""
#: src/text_simulation.cc:159
msgid "n"
msgstr ""
#: src/text_simulation.cc:161
msgid "y"
msgstr ""
#: src/text_simulation.cc:261
msgid "ERROR: Provided value is out of range\n"
msgstr ""
#: src/text_simulation.cc:267
msgid "ERROR: Please provide a valid numeric value\n"
msgstr ""
#: src/text_simulation.cc:276
msgid "ERROR: This is a mandatory attribute; you MUST provide a valid value!\n"
msgstr ""
#: src/text_simulation.cc:311 src/text_simulation.cc:360
msgid "ERROR: This is a mandatory atribute; you MUST provide a valid value!\n"
msgstr ""
#: src/text_simulation.cc:353
msgid "ERROR: Please provide a valid boolean value ('true' or 'false')\n"
msgstr ""
#: src/text_simulation.cc:401 src/text_simulation.cc:426
#: src/text_simulation.cc:492 src/text_simulation.cc:517
msgid ""
"\n"
"Simulation is now stopped\n"
msgstr ""
#: src/text_simulation.cc:407 src/text_simulation.cc:498
msgid ""
"\n"
"Simulation is now stopped, and the current policy will be deactivated\n"
msgstr ""
#: src/text_simulation.cc:417 src/text_simulation.cc:508
msgid "FATAL ERROR: unable to deactivate the policy: "
msgstr ""
#: src/text_simulation.cc:430 src/text_simulation.cc:521
msgid "UNKNOWN ERROR: "
msgstr ""
#: src/text_simulation.cc:465
msgid "ERROR: provided instant is out of range.\n"
msgstr ""
#: src/text_simulation.cc:473
msgid "ERROR: provided instant is not a valid integer\n"
msgstr ""
#: src/text_simulation.cc:478
msgid "ERROR: the instant is not within range.\n"
msgstr ""
#: src/text_simulation.cc:556
msgid "Please provide a value for each attribute:\n"
msgstr ""
#: src/text_simulation.cc:557
msgid ""
"Mandatory arguments are marked with an asterisk (*)\n"
"\n"
msgstr ""
#: src/text_simulation.cc:560
msgid "Nothing to configure for this policy.\n"
msgstr ""
#: src/text_simulation.cc:563
msgid "Integer arguments:\n"
msgstr ""
#: src/text_simulation.cc:583
msgid ""
"\n"
"Floating-point arguments:\n"
msgstr ""
#: src/text_simulation.cc:599
msgid ""
"\n"
"String arguments:\n"
msgstr ""
#: src/text_simulation.cc:629
msgid "ERROR: No CPU policy actually selected for the simulation\n"
msgstr ""
#: src/text_simulation.cc:638
msgid "ERROR: No resource policy actually selected for the simulation\n"
msgstr ""
#: src/text_simulation.cc:643
msgid "ERROR: Nothing to configure for "
msgstr ""
#: src/text_simulation.cc:659
msgid ""
"Avaiable commands:\n"
"RUN\n"
"STOP\n"
"PAUSE\n"
"CONFIGURE\n"
"HELP\n"
"GET\n"
"SET\n"
"SHOW\n"
"ADD\n"
"REMOVE\n"
"SAVE\n"
"LOAD\n"
"QUIT\n"
"\n"
"HELP followed by a command name shows help about it.\n"
"ex. `HELP RUN` shows help about the command RUN\n"
msgstr ""
#: src/text_simulation.cc:665
msgid ""
"-- RUN COMMAND --\n"
"Starts the simulation. It can be continuous or step-by-step depending on the "
"mode configured with SET CONTINUOUS (default=true).\n"
"\n"
"The output of RUN is a snapshot of the state of the simulation at each "
"instant.\n"
"The instant 0 represents the initial state, during which no process is "
"running. The scheduler activity begins at instant 1.\n"
msgstr ""
#: src/text_simulation.cc:674
msgid ""
"-- STOP COMMAND --\n"
"Stops the simulation. The next call to RUN will bring the simulation to the "
"first instant and start it.\n"
msgstr ""
#: src/text_simulation.cc:677
msgid ""
"-- PAUSE COMMAND --\n"
"Pauses the simulation. The next call to RUN will continue it.\n"
msgstr ""
#: src/text_simulation.cc:680
msgid ""
"-- JUMPTO COMMAND --\n"
"Pauses the simulation and jumps to the specified instant.\n"
msgstr ""
#: src/text_simulation.cc:682
msgid ""
"-- CONFIGURE COMMAND --\n"
"Configures a configurable entity.\n"
"\n"
"Syntax: CONFIGURE <entity>\n"
"\twhere <entity> may be cpu-policy or resource-policy.\n"
"This is currently the only way to control the behaviour of policies without "
"modifying their source code.\n"
msgstr ""
#: src/text_simulation.cc:688
msgid ""
"-- HELP COMMAND --\n"
"The help you're reading.\n"
msgstr ""
#: src/text_simulation.cc:690
msgid ""
"-- GET COMMAND --\n"
"Syntax: GET <attr_name>\n"
"\twhere <attr_name> may be simulation-tick or continuous.\n"
msgstr ""
#: src/text_simulation.cc:693
msgid ""
"-- SET COMMAND --\n"
"Syntax: SET <attr_name> [=] <value>\n"
"\twhere <attr_name> may be simulation-tick, continuous, cpu-policy or "
"resource-policy.\n"
msgstr ""
#: src/text_simulation.cc:696
msgid ""
"-- SHOW COMMAND --\n"
"Displays the name of the entities (if available) and other informations "
"prefixed by its numeric identifier.\n"
"\n"
"Syntax depends from entities being displayed:\n"
"`SHOW processes|resources|cpu-policies|resource-policies`\n"
"`SHOW threads <process_id>` with <process_id> being the numeric identifier "
"of the parent process\n"
"`SHOW requests <process_id> <thread_id>` with <thread_id> being the numeric "
"identifier of the thread child of process identified by <process_id>\n"
"`SHOW subrequests <process_id> <thread_id> <request_id>` where the numeric "
"ids follow the same logic of the previous commands\n"
"`SHOW statistics`\n"
msgstr ""
#: src/text_simulation.cc:708
msgid ""
"-- ADD COMMAND --\n"
"Adds an entity by using a questionary-like approach.\n"
"\n"
"Syntax depends from entity being added:\n"
"`ADD process|resource`\n"
"`ADD thread <process_id>` with <process_id> being the numeric identifier of "
"the parent process\n"
"`ADD request <process_id> <thread_id>` with <thread_id> being the numeric "
"identifier of the thread child of process identified by <process_id>\n"
"`ADD subrequest <process_id> <thread_id> <request_id>` where the numeric ids "
"follow the same logic of the previous commands\n"
msgstr ""
#: src/text_simulation.cc:718
msgid ""
"-- REMOVE COMMAND --\n"
"Removes an entity.\n"
"\n"
"Syntax depends from entity being removed:\n"
"`REMOVE process|resource <id>` where <id> is the process or resource "
"identifier\n"
"`REMOVE thread <process_id> <thread_id>` with <process_id> being the "
"identifier of the parent process, and <thread_id> the id of the thread to be "
"removed\n"
"`REMOVE request <process_id> <thread_id> <request_id>` where the numeric ids "
"follow the same logic of the previous commands\n"
"`REMOVE subrequest <process_id> <thread_id> <request_id> <subrequest_id>` "
"where the numeric ids follow the same logic of the previous commands\n"
msgstr ""
#: src/text_simulation.cc:728
msgid ""
"-- SAVE COMMAND --\n"
"Saves the simulation.\n"
"\n"
"Syntax: SAVE <filename>\n"
msgstr ""
#: src/text_simulation.cc:731
msgid ""
"-- LOAD COMMAND --\n"
"Loads the simulation.\n"
"\n"
"Syntax: LOAD <filename>\n"
msgstr ""
#: src/text_simulation.cc:734
msgid ""
"-- QUIT COMMAND --\n"
"Gently closes the program.\n"
msgstr ""
#: src/text_simulation.cc:736
msgid "ERROR: Sorry, no help available for this command.\n"
msgstr ""
#: src/text_simulation.cc:748
msgid ""
"\n"
"Bye.\n"
"\n"
msgstr ""
#: src/text_simulation.cc:775 src/text_simulation.cc:905
msgid "ERROR: invalid attribute name.\n"
msgstr ""
#: src/text_simulation.cc:843
msgid "ERROR: you must provide a valid unsigned integer value\n"
msgstr ""
#: src/text_simulation.cc:855
msgid " scheduling policy selected.\n"
msgstr ""
#: src/text_simulation.cc:859
msgid ""
"ERROR: invalid unsigned integer or not a valid scheduling policy index\n"
msgstr ""
#: src/text_simulation.cc:877
msgid " resource policy selected.\n"
msgstr ""
#: src/text_simulation.cc:881
msgid "ERROR: invalid unsigned integer or not a valid resource policy index\n"
msgstr ""
#: src/text_simulation.cc:901
msgid "ERROR: you must provide a valid boolean value ('true' or 'false')\n"
msgstr ""
#: src/text_simulation.cc:937 src/text_simulation.cc:1166
#: src/text_simulation.cc:1378
msgid "ERROR: invalid argument\n"
msgstr ""
#: src/text_simulation.cc:984
msgid "ERROR: provided process identifier is not a valid integer\n"
msgstr ""
#: src/text_simulation.cc:989
msgid "ERROR: this process identifier does not belong to an existing process\n"
msgstr ""
#: src/text_simulation.cc:1020 src/text_simulation.cc:1058
#: src/text_simulation.cc:1224 src/text_simulation.cc:1273
#: src/text_simulation.cc:1319 src/text_simulation.cc:1402
#: src/text_simulation.cc:1439 src/text_simulation.cc:1475
#: src/text_simulation.cc:1515 src/text_simulation.cc:1558
msgid "ERROR: provided identifier(s) not a valid integer\n"
msgstr ""
#: src/text_simulation.cc:1025 src/text_simulation.cc:1063
#: src/text_simulation.cc:1229 src/text_simulation.cc:1278
#: src/text_simulation.cc:1324 src/text_simulation.cc:1407
#: src/text_simulation.cc:1444 src/text_simulation.cc:1480
#: src/text_simulation.cc:1520 src/text_simulation.cc:1563
msgid "ERROR: the identifier(s) do not belong to an existing entity\n"
msgstr ""
#: src/text_simulation.cc:1146
msgid "WARNING: Simulation is not stopped, it will be automatically stopped\n"
msgstr ""
#: src/text_simulation.cc:1176 src/text_simulation.cc:1194
#: src/text_simulation.cc:1233
msgid "name"
msgstr ""
#: src/text_simulation.cc:1177 src/text_simulation.cc:1235
msgid "arrival time"
msgstr ""
#: src/text_simulation.cc:1178 src/text_simulation.cc:1859
msgid "priority"
msgstr ""
#: src/text_simulation.cc:1195
msgid "places"
msgstr ""
#: src/text_simulation.cc:1234
msgid "cpu time"
msgstr ""
#: src/text_simulation.cc:1236
msgid "base priority"
msgstr ""
#: src/text_simulation.cc:1282
msgid "instant"
msgstr ""
#: src/text_simulation.cc:1328
msgid "resource key"
msgstr ""
#: src/text_simulation.cc:1338
msgid "ERROR: invalid resource identifier\n"
msgstr ""
#: src/text_simulation.cc:1360
msgid "WARNING: Simulation is not stopped, it will be automatically stopped"
msgstr ""
#: src/text_simulation.cc:1435
msgid "invalid resource id"
msgstr ""
#: src/text_simulation.cc:1597 src/text_simulation.cc:1634
msgid "ERROR: No registered serializer available\n"
msgstr ""
#: src/text_simulation.cc:1705
msgid "ERROR: command not supported\n"
msgstr ""
#: src/text_simulation.cc:1723
msgid ">> RUNNING <<"
msgstr ""
#: src/text_simulation.cc:1784
msgid "READY QUEUE: { "
msgstr ""
#: src/text_simulation.cc:1792
msgid " ~ "
msgstr ""
#: src/text_simulation.cc:1795
msgid "}"
msgstr ""
#: src/text_simulation.cc:1806
msgid "RESOURCES:"
msgstr ""
#: src/text_simulation.cc:1812
msgid ", with "
msgstr ""
#: src/text_simulation.cc:1813
msgid " places"
msgstr ""
#: src/text_simulation.cc:1818
msgid "queue: { "
msgstr ""
#: src/text_simulation.cc:1834
msgid " }"
msgstr ""
#: src/text_simulation.cc:1853
msgid "PROCESSES:"
msgstr ""
#: src/text_simulation.cc:1855
msgid "state"
msgstr ""
#: src/text_simulation.cc:1856
msgid "arrival"
msgstr ""
#: src/text_simulation.cc:1857
msgid "requiring"
msgstr ""
#: src/text_simulation.cc:1858
msgid "elapsed"
msgstr ""
#: src/text_simulation.cc:1860
msgid "resource_id"
msgstr ""
#: src/resources_widget.cc:66
msgid "resources"
msgstr ""
#: src/configure_policy_dialog.cc:61
msgid "Policy description"
msgstr ""
#: src/configure_policy_dialog.cc:74
msgid "Integer values"
msgstr ""
#: src/configure_policy_dialog.cc:92
msgid "Floating point values"
msgstr ""
#: src/configure_policy_dialog.cc:109
msgid "Alphanumerical values"
msgstr ""
#: src/configure_policy_dialog.cc:124
msgid "No options to configure for this policy"
msgstr ""