(************************************) (* Never edit options files when *) (* the daemon is running *) (************************************) (* SECTION : Main *) (* Main options *) (************************************) (* small name of client *) client_name = ipfire (************************************) (* SECTION : Interfaces *) (* Options to control ports used by mldonkey interfaces *) (************************************) (* list of IP address allowed to connect to the core via telnet/GUI/WEB for internal command set: list separated by spaces example for internal command: set allowed_ips "127.0.0.1 192.168.1.2" or for editing the ini-file: list separated by semi-colon example for ini-file: allowed_ips = [ "127.0.0.1"; "192.168.1.2";] wildcard=255 ie: use 192.168.0.255 for 192.168.0.* *) allowed_ips = [ "255.255.255.255";] (* port for Graphical Interfaces *) gui_port = 4001 (* port for GiFT Graphical Interfaces interaction. It was 1213, but the default is now 0 for disabled, because it does not check for a password. *) gift_port = 0 (* The port used to connect to your client with a WEB browser *) http_port = 4080 (* port for user interaction *) telnet_port = 4000 (* Aliases to commands. The alias (fist string) has to be whitespaceless, the outcome of the alias (second string) may have spaces (put it in quotation then). *) alias_commands = [ (quit, q); (exit, q);] (************************************) (* SECTION : Bandwidth *) (* *) (************************************) (* The maximal upload rate you can tolerate on your link in kBytes/s (0 = no limit) The limit will apply on all your connections (clients and servers) and both control and data messages. *) max_hard_upload_rate = 10 (* The maximal download rate you can tolerate on your link in kBytes/s (0 = no limit) The limit will apply on all your connections (clients and servers) and both control and data messages. *) max_hard_download_rate = 50 (* Maximal number of opened connections *) max_opened_connections = 200 (* Amount of indirect connections in percent (min 30, max 70) of max_opened_connections *) max_indirect_connections = 30 (* How many slots can be used for upload *) max_upload_slots = 5 (* Set aside a single reserved slot to upload to friends *) friends_upload_slot = true (* Maximum file size to benefit from the reserved slot for small files (0 to disable) *) small_files_slot_limit = 10240 (* Set this to true if you want to have dynamic upload slot allocation (experimental) *) dynamic_slots = false (* Maximal number of connections that can be opened per second *) max_connections_per_second = 5 (* list of IP addresses allowed to connect to the core with no limit on upload/download and upload slots. List separated by spaces, wildcard=255 ie: use 192.168.0.255 for 192.168.0.* *) nolimit_ips = [ "127.0.0.1";] (* This option enables MLdonkey to always read as much data as possible from a channel, but use more CPU as it must then copy the data in the channel buffer. *) copy_read_buffer = true (************************************) (* SECTION : Networks *) (* Networks options *) (************************************) (* Set to true if you also want mldonkey to run as an overnet client (enable_donkey must be true) *) enable_overnet = true (* Set to true if you also want mldonkey to run as an kademlia client (enable_donkey must be true, and only experimental) *) enable_kademlia = false (* Set to true if you want mldonkey to connect to edonkey servers (enable_donkey must be true, and only experimental) *) enable_servers = true (* Set to true if you also want mldonkey to run as an Bittorrent client *) enable_bittorrent = true (* Set to true if you also want mldonkey to run as a donkey client *) enable_donkey = true (* Set to true if you also want mldonkey to run as a napster client (experimental) *) enable_opennap = false (* Set to true if you also want mldonkey to run as a soulseek client (experimental) *) enable_soulseek = false (* Set to true if you also want mldonkey to run as a gnutella1 sub node (experimental) *) enable_gnutella = false (* Set to true if you also want mldonkey to run as a gnutella2 sub node (experimental) *) enable_gnutella2 = false (* Set to true if you also want mldonkey to run as a Fasttrack sub node (experimental) *) enable_fasttrack = false (* Set to true if you also want mldonkey to run as a direct-connect node (experimental) *) enable_directconnect = false (* Set to true if you also want mldonkey to download HTTP files (experimental) *) enable_fileTP = true (************************************) (* SECTION : Network Config *) (* Network config options *) (************************************) (* The last IP address used for this client *) client_ip = "127.0.0.1" (* Use the IP specified by 'client_ip' instead of trying to determine it ourself. Don't set this option to true if you have dynamic IP. *) force_client_ip = false (* User agent string (default = "default") *) user_agent = default (* A list of lines to download on the WEB: each line has the format: (kind, period, url), where kind is either 'server.met' for a server.met file (also in gz/bz2/zip format) containing ed2k server, or 'comments.met' for a file of comments, or 'guarding.p2p' for a blocklist file (also in gz/bz2/zip format), or 'ocl' for file in the ocl format containing overnet peers, or 'contact.dat' for an contact.dat file containing overnet peers, 'nodes.gzip' for a fasttrack nodes.gzip, and period is the period between updates (in hours), a period of zero means the file is only loaded once on startup, and url is the url of the file to download. IMPORTANT: Put the URL and the kind between quotes. EXAMPLE: web_infos = [ ("server.met", 0, "http://www.jd2k.com/server.met"); ("guarding.p2p", 96, "http://www.bluetack.co.uk/config/level1.gz"); ("ocl", 24, "http://members.lycos.co.uk/appbyhp2/FlockHelpApp/contact-files/contact.ocl"); ("contact.dat", 168, "http://download.overnet.org/contact.dat"); ] *) web_infos = [ ("guarding.p2p", 96, "http://www.bluetack.co.uk/config/level1.gz"); ("server.met", 0, "http://www.jd2k.com/server.met"); ("contact.dat", 168, "http://download.overnet.org/contact.dat"); ("geoip.dat", 0, "http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz"); ("nodes.gzip", 0, "http://update.kceasy.com/update/fasttrack/nodes.gzip");] (* Cookies send with a http request (used for .torrent files and web_infos) *) referers = [ (".*suprnova.*", "http://www.suprnova.org/");] (* Cookies send with a http request (used for .torrent files and web_infos) *) cookies = [] (* Direct HTTP queries to HTTP proxy *) http_proxy_server = "" (* Port of HTTP proxy *) http_proxy_port = 800 (* Direct TCP connections to HTTP proxy (the proxy should support CONNECT) *) http_proxy_tcp = false (************************************) (* SECTION : HTML mods *) (* Options to configure HTML mode *) (************************************) (* bw_stats refresh delay (seconds) *) html_mods_bw_refresh_delay = 11 (* html_mods_theme to use (located in relative html_themes/ directory leave blank to use internal theme *) html_mods_theme = "" (************************************) (* SECTION : Download *) (* Download options *) (************************************) (* Set to false if you don't want mldonkey to automatically put completed files in incoming directory *) auto_commit = true (* Set to true if you want all new downloads be paused immediatly will be set to false on core start. *) pause_new_downloads = false (* The maximal number of files in Downloading state (other ones are Queued) *) max_concurrent_downloads = 50 (* The maximal length of zero bytes between non-zero bytes in a file that should be interpreted as downloaded during a recovery *) max_recover_zeroes_gap = 16 (* A command that is called when a file is committed, does not work on MinGW. Arguments are (kept for compatability): $1 - temp file name, without path $2 - file size $3 - filename of the committed file Also these environment variables can be used (prefered way): $TEMPNAME - temp file name, including path $FILEID - same as $1 $FILESIZE - same as $2 $FILENAME - same as $3 $FILEHASH - internal hash $DURATION - download duration $INCOMING - directory used for commit $NETWORK - network used for downloading $ED2K_HASH - ed2k hash if MD4 is known *) file_completed_cmd = "" (* The command which is called when a download is started. Arguments are '-file ' *) file_started_cmd = "" (************************************) (* SECTION : Startup *) (* Startup options *) (************************************) (* The login of the user you want mldonkey to run as, after the ports have been bound (can be use not to run with root priviledges when a port < 1024 is needed) *) run_as_user = "" (* The UID of the user (0=disabled) you want mldonkey to run as, after the ports have been bound (can be use not to run with root priviledges when a port < 1024 is needed) *) run_as_useruid = 0 (* Ask for GUI start *) ask_for_gui = false (* Automatically Start the GUI *) start_gui = false (* Should MLdonkey try to recover downloads of files in temp/ at startup *) recover_temp_on_startup = true (************************************) (* SECTION : Mail *) (* Mail options *) (************************************) (* The mail server you want to use (must be SMTP). Use hostname or IP address *) smtp_server = "127.0.0.1" (* The port to use on the mail server (default 25) *) smtp_port = 25 (* Your e-mail if you want to receive mails when downloads are completed *) mail = "" (* Does your mail-server need <...> around addresses *) add_mail_brackets = false (* Send filename in mail subject *) filename_in_subject = true (* Put a prefix for the filename here which shows up in the notification mail *) url_in_mail = "" (************************************) (* SECTION : Paths *) (* Paths options *) (************************************) (* The directory where temporary files should be put *) temp_directory = "/var/log/mldonkey/temp" (* New directories in incoming_directories are created with these rights *) create_dir_mask = 755 (* Create new files as sparse, only valid on MinGW for files on NTFS drives *) create_file_sparse = true (* Mininum free space in MB on temp_directory, minimum 50 *) hdd_temp_minfree = 50 (* If true core shuts down when free space on temp dir is below hdd_temp_minfree, otherwise all downloads are paused and a warning email is sent. *) hdd_temp_stop_core = false (* Mininum free space in MB on core directory, minimum 20 *) hdd_coredir_minfree = 50 (* If true core shuts down when free space on core dir is below hdd_coredir_minfree, otherwise all downloads are paused and a warning email is sent. *) hdd_coredir_stop_core = true (* Send a warning mail each hours for each directory, 0 to deactivate mail warnings. *) hdd_send_warning_interval = 1 (* Incoming and shared directories. At least two entries have to be present here, one with strategy incoming_files and one with strategy incoming_directories. Both entries can point to the same directory. If one of the two strategies is missing, MLDonkey will create a default directory with its entry here. Finished BT multifile downloads are committed to the first directory with strategy incoming_directories. Other downloads are committed to the first directory with the strategy incoming_files. If more than one directory has one of the incoming_* strategies it will be ignored on commit, but they are shared nonetheless. Other strategies can be found in searches.ini, section customized_sharing. *) shared_directories = [ { dirname = "/var/log/mldonkey/incoming/files" networks = [] strategy = incoming_files priority = 0 }; { dirname = "/var/log/mldonkey/incoming/directories" networks = [] strategy = incoming_directories priority = 0 };] (************************************) (* SECTION : Security *) (* Security options *) (************************************) (* Commands that you are allowed to be call from the interface. These commands should short, so that the core is not blocked more than necessary. *) allowed_commands = [ (df, df); (ls, "ls incoming");] (* Allow you to use any command with ! in the interface instead of only the ones in allowed_commands *) allow_any_command = false (* Are all users allowed to change MLDonkey options? *) enable_user_config = true (* Allow others to browse our share list (0: none, 1: friends only, 2: everyone *) allow_browse_share = 1 (* Regexp of messages to filter out, example: string1|string2|string3 *) messages_filter = "Your client is connecting too fast" (************************************) (* SECTION : Other *) (* Other options *) (************************************) (* (experimental) *) save_results = 0 (* filters on replies (replies will be kept). *) filters = "" (* Buffer writes and flush after buffer_writes_delay seconds (experimental) *) buffer_writes = false (* build statistics about eMule mods *) emule_mods_count = false (* show all eMule mods in statistics *) emule_mods_showall = false (* How often (in hours) should a backup of the ini files be written into old_config. A value of zero means that a backup is written only when the core shuts down. *) backup_options_delay = 0 (* Define the total number of options archives in old_config. *) backup_options_generations = 10 (* Define the format of the archive, zip or tar.gz are valid. *) backup_options_format = "tar.gz" (* The maximum time in seconds to wait for networks to cleanly shutdown. *) shutdown_timeout = 3 (* The IP address used to bind the p2p clients *) client_bind_addr = "0.0.0.0" (*****************************************************************) (* *) (* ADVANCED OPTIONS *) (* *) (* All the options after this line are for the expert *) (* user. Do not modify them if you are not sure. *) (* *) (*****************************************************************) (************************************) (* SECTION : Interfaces FOR EXPERTS *) (* Options to control ports used by mldonkey interfaces *) (************************************) (* The IP address used to bind the http server *) http_bind_addr = "0.0.0.0" (* The IP address used to bind the gui server *) gui_bind_addr = "0.0.0.0" (* The IP address used to bind the telnet server *) telnet_bind_addr = "0.0.0.0" (* Should *all* sources for a file be shown on HTML/telnet vd *) print_all_sources = true (* Improved telnet interface *) improved_telnet = true (* A space-separated list of keywords. Each keyword triggers printing information on the corresponding messages: verb : verbose mode (interesting not only for coders) mc : debug client messages mr|raw : debug raw messages mct : debug emule clients tags ms : debug server messages sm : debug source management net : debug net gui : debug gui no-login : disable login messages file : debug file handling do : some download warnings up : some upload warnings unk : unknown messages ov : overnet loc : debug source research/master servers share: debug sharing md4 : md4 computation connect : debug connections udp : udp messages ultra|super : debug supernode swarming : debug swarming hc : http_client messages hs : http_server messages act : debug activity bw : debug bandwidth unexp : debug unexpected messages *) verbosity = "" (************************************) (* SECTION : Bandwidth FOR EXPERTS *) (* *) (************************************) (* The delay in milliseconds to wait in the event loop. Can be decreased to increase the bandwidth usage, or increased to lower the CPU usage. *) loop_delay = 20 (************************************) (* SECTION : Networks FOR EXPERTS *) (* Networks options *) (************************************) (* Set to true if you also want mldonkey to run as a OpenFT sub node (experimental) *) enable_openft = false (************************************) (* SECTION : Network Config FOR EXPERTS *) (* Network config options *) (************************************) (* URLs of RSS feeds *) rss_feeds = [] (* Keep IP blocking ranges descriptions in memory *) ip_blocking_descriptions = false (* IP blocking list filename (peerguardian format), can also be in gz/bz2/zip format Zip files must contain either a file named guarding.p2p or guarding_full.p2p. *) ip_blocking = "" (* List of countries to block connections from/to (requires Geoip). Names are in ISO 3166 format, see http://www.maxmind.com/app/iso3166 You can also at your own risk use "Unknown" for IPs Geoip won't recognize. *) ip_blocking_countries = [] (* false: use ip_blocking_countries as block list, all other countries are allowed true: use ip_blocking_countries as allow list, all other countries are blocked *) ip_blocking_countries_block = false (* Location of GeoIP.dat (Get one from http://www.maxmind.com/download/geoip/database/) *) geoip_dat = "" (* The size of the header of a TCP/IP packet on your connection (ppp adds 14 bytes sometimes, so modify to take that into account) *) tcpip_packet_size = 40 (* The size of the MTU of a TCP/IP packet on your connection *) mtu_packet_size = 1500 (* The size of the frame packet on your network (on my cable link, it is 250) *) packet_frame_size = 250 (* The size of the minimal packet you want mldonkey to send when data is available on the connection *) minimal_packet_size = 600 (* Should a connection check if the peer we are connected to is still alive? This implies some bandwidth-cost (with 200 connections ~10-20%) *) socket_keepalive = false (************************************) (* SECTION : HTML mods FOR EXPERTS *) (* Options to configure HTML mode *) (************************************) (* Whether to use the modified WEB interface *) html_mods = true (* Which html_mods style to use (set with html_mods_style command) *) html_mods_style = 0 (* Whether to use human readable GMk number format *) html_mods_human_readable = true (* Whether to use relative availability in the WEB interface *) html_mods_use_relative_availability = true (* Whether to display the Net column in vd output *) html_mods_vd_network = true (* Whether to display the Active Sources column in vd output *) html_mods_vd_active_sources = true (* Whether to display the Age column in vd output *) html_mods_vd_age = true (* Show graph in vd output *) html_mods_vd_gfx = true (* Remove graph files on core shutdown *) html_mods_vd_gfx_remove = false (* Fill graph in vd output *) html_mods_vd_gfx_fill = true (* Split download and upload graph in vd output *) html_mods_vd_gfx_split = false (* Stacked download and upload graph *) html_mods_vd_gfx_stack = true (* Flip up/side graph position in vd output *) html_mods_vd_gfx_flip = true (* Show mean line on graph in vd output *) html_mods_vd_gfx_mean = true (* Show transparent graph in vd output (only for png) *) html_mods_vd_gfx_transparent = true (* Draw graph as png if true, else draw as jpg in vd output *) html_mods_vd_gfx_png = true (* Show hourly graph in vd output *) html_mods_vd_gfx_h = true (* Graph x size in vd output ( 320 < x < 3600 ) *) html_mods_vd_gfx_x_size = 630 (* Graph y size in vd output ( 200 < y < 1200 ) *) html_mods_vd_gfx_y_size = 200 (* Draw tag graph *) html_mods_vd_gfx_tag = false (* Use tag source image *) html_mods_vd_gfx_tag_use_source = false (* Tag source image name *) html_mods_vd_gfx_tag_source = image (* Draw tag as png if true, else draw as jpg in vd output *) html_mods_vd_gfx_tag_png = true (* Enable tag graph title *) html_mods_vd_gfx_tag_enable_title = true (* Tag graph title *) html_mods_vd_gfx_tag_title = "MLNet traffic" (* Tag graph title x pos in vd output *) html_mods_vd_gfx_tag_title_x_pos = 4 (* Tag graph title y pos in vd output *) html_mods_vd_gfx_tag_title_y_pos = 1 (* Tag graph download x pos in vd output *) html_mods_vd_gfx_tag_dl_x_pos = 4 (* Tag graph download y pos in vd output *) html_mods_vd_gfx_tag_dl_y_pos = 17 (* Tag graph upload x pos in vd output *) html_mods_vd_gfx_tag_ul_x_pos = 4 (* Tag graph upload y pos in vd output *) html_mods_vd_gfx_tag_ul_y_pos = 33 (* Tag graph x size in vd output ( 130 < x < 3600 ) *) html_mods_vd_gfx_tag_x_size = 80 (* Tag graph y size in vd output ( 50 < x < 1200 ) *) html_mods_vd_gfx_tag_y_size = 50 (* Whether to display the Last column in vd output *) html_mods_vd_last = true (* Whether to display the Priority column in vd output *) html_mods_vd_prio = true (* Whether to display the Queues in vd # output *) html_mods_vd_queues = true (* Change height of download indicator bar in vd output *) html_vd_barheight = 2 (* Whether to display chunks list as graph or text in vd output *) html_vd_chunk_graph = true (* Change style of chunk graph *) html_vd_chunk_graph_style = 0 (* Change max width of chunk graph *) html_vd_chunk_graph_max_width = 200 (* Whether to display the pending slots in uploaders command *) html_mods_show_pending = true (* Whether to load the mldonkey_messages.ini file (false=use internal settings) *) html_mods_load_message_file = false (* Maximum chat messages to log in memory *) html_mods_max_messages = 50 (* Whether to use checkboxes in the WEB interface for download list *) html_checkbox_vd_file_list = true (* Whether to use checkboxes in the WEB interface for search result list *) html_checkbox_search_file_list = false (* Use gzip compression on web pages *) html_use_gzip = false (* Whether to use the fancy javascript tooltips or plain html-title *) html_mods_use_js_tooltips = true (* How long to wait before displaying the tooltips *) html_mods_js_tooltips_wait = 0 (* How long to display the tooltips *) html_mods_js_tooltips_timeout = 100000 (* Use javascript to display option help text as js popup (true=use js, false=use html tables) *) html_mods_use_js_helptext = true (************************************) (* SECTION : Debug FOR EXPERTS *) (* Debug options *) (************************************) (* If this option is set, IP addresses on the local network are allowed (only for debugging) *) allow_local_network = false (* size of log in number of records *) log_size = 300 (* Maximum size of log_file in MB *) log_file_size = 2 (* The file in which you want mldonkey to log its debug messages. If you set this option, mldonkey will log this info in the file until you use the 'close_log' command. The log file may become very large. You can also enable logging in a file after startup using the 'log_file' command. *) log_file = "mlnet.log" (* number of lines for GUI console messages *) gui_log_size = 30 (************************************) (* SECTION : Download FOR EXPERTS *) (* Download options *) (************************************) (* Set to true if you want MLdonkey to emulate sparse files on your disk. Files will use less space, but and won't work anymore. Works only on Edonkey plugin. EXPERIMENTAL. *) emulate_sparsefiles = false (* How many sources to use to download each chunk *) sources_per_chunk = 3 (* What algorithm to use to select blocks (currently 1 or 2) *) swarming_block_selection_algorithm = 1 (************************************) (* SECTION : Startup FOR EXPERTS *) (* Startup options *) (************************************) (* How many megabytes should MLdonkey keep for saving configuration files. *) config_files_security_space = 10 (************************************) (* SECTION : Paths FOR EXPERTS *) (* Paths options *) (************************************) (* Name of program used for preview (first arg is local filename, second arg is name of file as searched on eDonkey *) previewer = mldonkey_previewer (* Directory where mldonkey binaries are installed *) mldonkey_bin = "." (* Name of GUI to start *) mldonkey_gui = "./mlgui" (************************************) (* SECTION : MLChat FOR EXPERTS *) (* MLChat options *) (************************************) (* port of the external chat application *) chat_app_port = 5036 (* hostname of the external chat application *) chat_app_host = localhost (* port used by the external chat application to use the core as a proxy *) chat_port = 4002 (* The IP address used to bind the chat server *) chat_bind_addr = "0.0.0.0" (* the id to use for communicating with the core console through chat interface *) chat_console_id = "donkey console" (* use the chat to indicate when a file has been downloaded *) chat_warning_for_downloaded = true (************************************) (* SECTION : Other FOR EXPERTS *) (* Other options *) (************************************) (* keep seen files in history to allow local search (can be expensive in memory) *) use_file_history = false (* Buffer writes and flush after buffer_writes_delay seconds (experimental) *) buffer_writes_delay = 30. (* Flush buffers if buffers exceed buffer_writes_threshold kB (experimental) *) buffer_writes_threshold = 1024 (* The conversions to apply on Unicode characters *) utf8_filename_conversions = [] (* The size of the buffer between the client and its GUI. Can be useful to increase when the connection between them has a small bandwith *) interface_buffer = 1000000 (* The size long names will be shortened to in the interface *) max_name_len = 50 (* The size long client names will be shortened to in the interface *) max_client_name_len = 25 (* Is the default terminal an ANSI terminal (escape sequences can be used) *) term_ansi = true (* Delay between updates to the GUI *) update_gui_delay = 1. (* The realm shown when connecting with a WEB browser *) http_realm = MLdonkey (* This option controls whether the WEB interface should use frames or not *) use_html_frames = true (* This option controls whether the WEB interface should show frame borders or not *) html_frame_border = true (* The height of the command frame in pixel (depends on your screen and browser sizes) *) commands_frame_height = 46 (* Force compaction every hours (in [1..24]) *) compaction_delay = 2 (* The delay between reloads of the vd output in the WEB interface *) vd_reload_delay = 120 (* (experimental) *) dp500_pclink = false (* (experimental) *) dp500_port = 8000 (* (experimental) *) dp500_buffer = 2000000 (* (experimental) *) dp500_directory = dp500 (* Should the MLSUBMIT.REG file be created *) create_mlsubmit = true (* Size of the minor heap in kB *) minor_heap_size = 32 (* The source queues to display in source lists (see 'sources' command) *) relevant_queues = [ 0; 1; 2; 3; 4; 5; 6; 8; 9; 10;] (* The minimal delay between two connections to the same client (in seconds) *) min_reask_delay = 600 (* Whether to display results already downloaded *) display_downloaded_results = true (* Minimal number of results for filter form to appear *) filter_table_threshold = 50 (* Maximal size of the buffers of a client *) client_buffer_size = 500000 (* The delay between two saves of the 'downloads.ini' file (default is 15 minutes). Changes to this option require a core restart. *) save_options_delay = 900. (* timeout when connecting to a server *) server_connection_timeout = 30. (* The delay between one glance at a file and another *) download_sample_rate = 1. (* How many samples go into an estimate of transfer rates *) download_sample_size = 10 (* This option defines a set of date at which some commands have to be executed. For each tuple, the first argument is a list of week days (from 0 to 6), the second is a list of hours (from 0 to 23) and the last one a command to execute. Can be used with 'pause all' and 'resume all' for example to resume and pause downloads automatically for the night. *) calendar = [] (* The percentage of free memory before a compaction is triggered *) compaction_overhead = 25 (* The major GC speed is computed from this parameter. This is the memory that will be "wasted" because the GC does not immediatly collect unreachable blocks. It is expressed as a percentage of the memory used for live data. The GC will work more (use more CPU time and collect blocks more eagerly) if space_overhead is smaller. *) space_overhead = 80 (* Maximal number of results displayed for a search *) max_displayed_results = 1000 (* (internal option) *) options_version = 13