|  | <?xml version='1.0'?> | 
|  | <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" | 
|  | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> | 
|  |  | 
|  | <article> | 
|  | <section> | 
|  | <title>alsactl init</title> | 
|  | <refentry> | 
|  | <refentryinfo> | 
|  | <title>alsactl init</title> | 
|  | <date>July 2008</date> | 
|  | <productname>alsactl</productname> | 
|  | </refentryinfo> | 
|  |  | 
|  | <refmeta> | 
|  | <refentrytitle>alsactl_init</refentrytitle> | 
|  | <manvolnum>7</manvolnum> | 
|  | <refmiscinfo class="version"></refmiscinfo> | 
|  | </refmeta> | 
|  |  | 
|  | <refnamediv> | 
|  | <refname>alsactl init</refname> | 
|  | <refpurpose>alsa control management - initialization</refpurpose> | 
|  | </refnamediv> | 
|  |  | 
|  | <refsect1><title>DESCRIPTION</title> | 
|  | <para>"alsactl init" provides soundcard specific initialization.</para> | 
|  | </refsect1> | 
|  |  | 
|  | <refsect1><title>CONFIGURATION</title> | 
|  | <para>All "alsactl init" configuration files are placed in | 
|  | <filename>/usr/share/alsa/init/</filename> directory. The top level | 
|  | configuration file is <filename>/usr/share/alsa/init/00main</filename>. | 
|  | The default top-level file can be also specified using -i or | 
|  | --initfile parameter for the alsactl tool. | 
|  | Every file consists of a set of lines of text. All empty lines or | 
|  | lines beginning with '#' will be ignored.</para> | 
|  |  | 
|  | <refsect2><title>Rules files</title> | 
|  | <para>The "alsactl init" rules are read from the files located | 
|  | in the <filename>/usr/share/alsa/init/*</filename>. The top | 
|  | level configuration file is <filename>/usr/share/alsa/init/00main</filename>. | 
|  | Every line in the rules file contains at least one key value pair. | 
|  | There are two kind of keys, match and assignment keys. If all match | 
|  | keys are matching against its value, the rule gets applied and the | 
|  | assign keys get the specified value assigned.</para> | 
|  |  | 
|  | <para>A rule may consists of a list of one or more key value pairs | 
|  | separated by a comma. Each key has a distinct operation, depending | 
|  | on the used operator. Valid operators are:</para> | 
|  | <variablelist> | 
|  | <varlistentry> | 
|  | <term><option>==</option></term> | 
|  | <listitem> | 
|  | <para>Compare for equality.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>!=</option></term> | 
|  | <listitem> | 
|  | <para>Compare for non-equality.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>=</option></term> | 
|  | <listitem> | 
|  | <para>Assign a value to a key. Keys that represent a list, | 
|  | are reset and only this single value is assigned.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>+=</option></term> | 
|  | <listitem> | 
|  | <para>Add the value to a key that holds a list | 
|  | of entries.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>:=</option></term> | 
|  | <listitem> | 
|  | <para>Assign  a  value  to  a key finally; disallow any | 
|  | later changes, which may be used to prevent changes by | 
|  | any later rules.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | </variablelist> | 
|  |  | 
|  | <para>The following key names can be used to match against device | 
|  | properties:</para> | 
|  | <variablelist> | 
|  | <varlistentry> | 
|  | <term><option>CARDINDEX</option></term> | 
|  | <listitem> | 
|  | <para>Match the card index of the ALSA driver.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>CTL{<replaceable>attribute</replaceable>}</option></term> | 
|  | <listitem> | 
|  | <para>Set or test universal control attribute. Possible | 
|  | attributes:</para> | 
|  | <variablelist> | 
|  | <varlistentry> | 
|  | <term><option>numid</option></term> | 
|  | <listitem> | 
|  | <para>Numeric control identification.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>iface</option>, <option>interface</option></term> | 
|  | <listitem> | 
|  | <para>Control interface name (CARD, HWEDEP, MIXER, PCM, RAWMIDI, TIMER, SEQUENCER)</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>subdev</option>, <option>subdevice</option></term> | 
|  | <listitem> | 
|  | <para>Subdevice number.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>name</option></term> | 
|  | <listitem> | 
|  | <para>Control name</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>index</option></term> | 
|  | <listitem> | 
|  | <para>Control index</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>type</option></term> | 
|  | <listitem> | 
|  | <para>Control type (BOOLEAN, INTEGER, INTEGER64, ENUMERATED, BYTES, IEC958)</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>attr</option>, <option>attribute</option></term> | 
|  | <listitem> | 
|  | <para>Attributes (stored in a string - use match characters * and ?):</para> | 
|  | <variablelist> | 
|  | <varlistentry> | 
|  | <term><option>r</option></term> | 
|  | <listitem> | 
|  | <para>control is readable</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>w</option></term> | 
|  | <listitem> | 
|  | <para>control is writable</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>v</option></term> | 
|  | <listitem> | 
|  | <para>control is volatile</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>i</option></term> | 
|  | <listitem> | 
|  | <para>control is inactive</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>l</option></term> | 
|  | <listitem> | 
|  | <para>control is locked</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>R</option></term> | 
|  | <listitem> | 
|  | <para>control is TLV readable</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>W</option></term> | 
|  | <listitem> | 
|  | <para>control is TLV writable</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>C</option></term> | 
|  | <listitem> | 
|  | <para>control is TLV commandable</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>o</option></term> | 
|  | <listitem> | 
|  | <para>process is owner of this control</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>u</option></term> | 
|  | <listitem> | 
|  | <para>control created in user space</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | </variablelist> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>owner</option></term> | 
|  | <listitem> | 
|  | <para>Control owner process PID number</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>count</option></term> | 
|  | <listitem> | 
|  | <para>Control count of values</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>min</option></term> | 
|  | <listitem> | 
|  | <para>Value range - minimum value</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>max</option></term> | 
|  | <listitem> | 
|  | <para>Value range - maximum value</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>step</option></term> | 
|  | <listitem> | 
|  | <para>Value range - step value</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>dBmin</option></term> | 
|  | <listitem> | 
|  | <para>Value range - minimum dB value</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>dBmax</option></term> | 
|  | <listitem> | 
|  | <para>Value range - maximum dB value</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>items</option></term> | 
|  | <listitem> | 
|  | <para>Enumerated value - number of text items</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>enums</option></term> | 
|  | <listitem> | 
|  | <para>Enumerated value - list of text names stored between '|' character</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>value</option></term> | 
|  | <listitem> | 
|  | <para>Value of control stored to a string delimited by | 
|  | comma (,).</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>do_search</option></term> | 
|  | <listitem> | 
|  | <para>Search for a control. Value "1" is returned | 
|  | if a control was found. The CTL{name} key might | 
|  | contain match characters * and ?. An control index | 
|  | might be specified as first argument starting from | 
|  | zero (e.g. CTL{do_search 2}="1").</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>do_count</option></term> | 
|  | <listitem> | 
|  | <para>Search for a controls and return total count | 
|  | of matched ones. The CTL{name} key might contain match | 
|  | characters * and ?.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | </variablelist> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>CONFIG{sysfs_device}</option></term> | 
|  | <listitem> | 
|  | <para>The relative path to sysfs subsystem specifying | 
|  | the root directory of a soundcard device. Usually, | 
|  | it should be set to "/class/sound/card$cardinfo{card}/device". | 
|  | </para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>ATTR{<replaceable>filename</replaceable>}</option></term> | 
|  | <listitem> | 
|  | <para>Match sysfs attribute values of the soundcard device. | 
|  | The relative path to sysfs tree must be defined by | 
|  | CONFIG{sysfs_device} key. Trailing whitespace in the attribute | 
|  | values is ignored, if the specified match value does | 
|  | not contain trailing whitespace itself. Depending on | 
|  | the type of operator, this key is also used to set | 
|  | the value of a sysfs attribute. | 
|  | </para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>ENV{<replaceable>key</replaceable>}</option></term> | 
|  | <listitem> | 
|  | <para>Match against the value of an environment variable. Up | 
|  | to five <option>ENV</option> keys can be specified per rule. | 
|  | Depending on the type of operator, this key is also used | 
|  | to export a variable to the environment.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>PROGRAM</option></term> | 
|  | <listitem> | 
|  | <para>Execute external program. The key is true, if | 
|  | the program returns without exit code zero. The whole event | 
|  | environment is available to the executed program. The | 
|  | program's output printed to stdout is available for | 
|  | the RESULT key.</para> | 
|  | <para>Several buildin commands are available:</para> | 
|  | <variablelist> | 
|  | <varlistentry> | 
|  | <term><option>__ctl_search</option></term> | 
|  | <listitem> | 
|  | <para>Search for a control. The CTL{name} key might | 
|  | contain match characters * and ?. An control index | 
|  | might be specified as first argument starting from | 
|  | zero (e.g. PROGRAM="__ctl_search 2").</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>__ctl_count</option></term> | 
|  | <listitem> | 
|  | <para>Search for a controls and return total count | 
|  | of matched ones. The CTL{name} key might contain match | 
|  | characters * and ?.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | </variablelist> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>RESULT</option></term> | 
|  | <listitem> | 
|  | <para>Match the returned string of the last PROGRAM call. | 
|  | This key can be used in the same or in any later rule | 
|  | after a PROGRAM call.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | </variablelist> | 
|  |  | 
|  | <para>Most of the fields support a shell style pattern matching. | 
|  | The following pattern characters are supported:</para> | 
|  | <variablelist> | 
|  | <varlistentry> | 
|  | <term><option>*</option></term> | 
|  | <listitem> | 
|  | <para>Matches zero, or any number of characters.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>?</option></term> | 
|  | <listitem> | 
|  | <para>Matches any single character.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>[]</option></term> | 
|  | <listitem> | 
|  | <para>Matches any single character specified within | 
|  | the brackets. For example, the pattern string 'tty[SR]' | 
|  | would match either 'ttyS' or 'ttyR'. Ranges are also | 
|  | supported within this match with the '-' character. | 
|  | For example, to match on the range of all digits, | 
|  | the pattern [0-9] would be used. If the first character | 
|  | following the '[' is a '!', any characters | 
|  | not enclosed are matched.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | </variablelist> | 
|  |  | 
|  | <para>The following keys can get values assigned:</para> | 
|  | <variablelist> | 
|  | <varlistentry> | 
|  | <term><option>CTL{numid}</option>, <option>CTL{iface}</option>, | 
|  | <option>CTL{device}</option>, <option>CTL{subdev}</option>, | 
|  | <option>CTL{name}</option>,  <option>CTL{index}</option>, | 
|  | </term> | 
|  | <listitem> | 
|  | <para>Select universal control element.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>CTL{value}</option></term> | 
|  | <listitem> | 
|  | <para>Value is set (written) also to soundcard's control | 
|  | device and RESULT key is set to errno code. The result of | 
|  | set operation is always true (it means continue with | 
|  | next key on line).</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>CTL{values}</option></term> | 
|  | <listitem> | 
|  | <para>Value is set (written) also to soundcard's control | 
|  | device (all control values are set to specified value) and | 
|  | RESULT key is set to errno code. The result of | 
|  | set operation is always true (it means continue with | 
|  | next key on line).</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><option>CTL{write}</option></term> | 
|  | <listitem> | 
|  | <para>Value is set (written) also to soundcard's control | 
|  | device (all control values are set to specified value). | 
|  | The result of set operation is true when operation | 
|  | succeed (it means continue with next key on line).</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>ENV{<replaceable>key</replaceable>}</option></term> | 
|  | <listitem> | 
|  | <para>Export a variable to the environment. Depending on the type of operator, | 
|  | this key is also to match against an environment variable.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>RESULT</option></term> | 
|  | <listitem> | 
|  | <para>Set RESULT variable. Note that PROGRAM also sets | 
|  | this variable, but setting this variable manually | 
|  | might be useful to change code execution order (included | 
|  | files).</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>LABEL</option></term> | 
|  | <listitem> | 
|  | <para>Named label where a GOTO can jump to.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>GOTO</option></term> | 
|  | <listitem> | 
|  | <para>Jumps to the next LABEL with a matching name. | 
|  | The goto cannot jump backward.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>INCLUDE</option></term> | 
|  | <listitem> | 
|  | <para>Include specified filename or all files in specified directory</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>ACCESS</option></term> | 
|  | <listitem> | 
|  | <para>Check if specified file or directory exists</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>CONFIG{sysfs_device}</option></term> | 
|  | <listitem> | 
|  | <para>The relative path to sysfs subsystem specifying | 
|  | the root directory of a soundcard device. Usually, | 
|  | it should be set to "/class/sound/card$cardinfo{card}/device". | 
|  | </para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>PRINT</option></term> | 
|  | <listitem> | 
|  | <para>PRINT value to stdout.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>ERROR</option></term> | 
|  | <listitem> | 
|  | <para>PRINT value to stderr.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>EXIT</option></term> | 
|  | <listitem> | 
|  | <para>Exit immediately and set program exit code to value | 
|  | (should be integer). If value is "return" string, | 
|  | parser leaves current included file and returns to parent | 
|  | configuration file.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | </variablelist> | 
|  |  | 
|  | <para>The <option>PROGRAM</option>, <option>RESULT</option>, | 
|  | <option>CTL{value}</option>, | 
|  | <option>PRINT</option>, <option>ERROR</option>, | 
|  | <option>EXIT</option>, <option>CONFIG{}</option> | 
|  | fields support simple printf-like string substitutions. | 
|  | It allows the use of the complete environment set by earlier matching | 
|  | rules. For all other fields, substitutions are applied while the individual rule is | 
|  | being processed. The available substitutions are:</para> | 
|  | <variablelist> | 
|  | <varlistentry> | 
|  | <term><option>$cardinfo{<replaceable>attribute</replaceable>}</option>, <option>%i{<replaceable>attribute</replaceable>}</option></term> | 
|  | <listitem> | 
|  | <para>See CARDINFO{} for more details.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>$ctl{<replaceable>attribute</replaceable>}</option>, <option>%C{<replaceable>attribute</replaceable>}</option></term> | 
|  | <listitem> | 
|  | <para>See CTL{} for more details.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>$attr{<replaceable>file</replaceable>}</option>, <option>%s{<replaceable>file</replaceable>}</option></term> | 
|  | <listitem> | 
|  | <para>The value of a sysfs attribute found at the device, where | 
|  | all keys of the rule have matched. | 
|  | If the attribute is a symlink, the last element of the symlink target is | 
|  | returned as the value.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>$env{<replaceable>key</replaceable>}</option>, <option>%E{<replaceable>key</replaceable>}</option></term> | 
|  | <listitem> | 
|  | <para>The value of an environment variable.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>$result</option>, <option>%c</option></term> | 
|  | <listitem> | 
|  | <para>The string returned by the external program requested with PROGRAM. | 
|  | A single part of the string, separated by a space character may be selected | 
|  | by specifying the part number as an attribute: <option>%c{N}</option>. | 
|  | If the number is followed by the '+' char this part plus all remaining parts | 
|  | of the result string are substituted: <option>%c{N+}</option></para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>$sysfsroot</option>, <option>%r</option></term> | 
|  | <listitem> | 
|  | <para>Root directory where sysfs file-system is mounted. | 
|  | Ususally, this value is just "/sys".</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>$config{<replaceable>key</replaceable>}</option>, <option>%g{<replaceable>key</replaceable>}</option></term> | 
|  | <listitem> | 
|  | <para>The value of a configuration variable. See CONFIG{} for more details.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>%%</option></term> | 
|  | <listitem> | 
|  | <para>The '%' character itself.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  |  | 
|  | <varlistentry> | 
|  | <term><option>$$</option></term> | 
|  | <listitem> | 
|  | <para>The '$' character itself.</para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | </variablelist> | 
|  | <para>The count of characters to be substituted may be limited | 
|  | by specifying the format length value. For example, '%3s{file}' | 
|  | will only insert the first three characters of the sysfs | 
|  | attribute</para> | 
|  | </refsect2> | 
|  | </refsect1> | 
|  |  | 
|  | <refsect1><title>AUTHOR</title> | 
|  | <para>Written by Jaroslav Kysela <email>perex@perex.cz</email></para> | 
|  | <para>Some portions are written by Greg Kroah-Hartman <email>greg@kroah.com</email> and | 
|  | Kay Sievers <email>kay.sievers@vrfy.org</email>.</para> | 
|  | </refsect1> | 
|  |  | 
|  | <refsect1> | 
|  | <title>SEE ALSO</title> | 
|  | <para><citerefentry> | 
|  | <refentrytitle>alsactl</refentrytitle><manvolnum>1</manvolnum> | 
|  | </citerefentry></para> | 
|  | </refsect1> | 
|  | </refentry> | 
|  | </section> | 
|  | </article> |