€•cQŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ./translations/zh_CN/admin-guide/nfs/nfs-client”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/zh_TW/admin-guide/nfs/nfs-client”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/it_IT/admin-guide/nfs/nfs-client”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ja_JP/admin-guide/nfs/nfs-client”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ko_KR/admin-guide/nfs/nfs-client”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/sp_SP/admin-guide/nfs/nfs-client”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ NFS Client”h]”hŒ NFS Client”…””}”(hh¨hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hh£hžhhŸŒH/var/lib/git/docbuild/linux/Documentation/admin-guide/nfs/nfs-client.rst”h Kubh¢)”}”(hhh]”(h§)”}”(hŒThe NFS client”h]”hŒThe NFS client”…””}”(hhºhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hh·hžhhŸh¶h KubhŒ paragraph”“”)”}”(hŒÞThe NFS version 2 protocol was first documented in RFC1094 (March 1989). Since then two more major releases of NFS have been published, with NFSv3 being documented in RFC1813 (June 1995), and NFSv4 in RFC3530 (April 2003).”h]”hŒÞThe NFS version 2 protocol was first documented in RFC1094 (March 1989). Since then two more major releases of NFS have been published, with NFSv3 being documented in RFC1813 (June 1995), and NFSv4 in RFC3530 (April 2003).”…””}”(hhÊhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khh·hžhubhÉ)”}”(hŒžThe Linux NFS client currently supports all the above published versions, and work is in progress on adding support for minor version 1 of the NFSv4 protocol.”h]”hŒžThe Linux NFS client currently supports all the above published versions, and work is in progress on adding support for minor version 1 of the NFSv4 protocol.”…””}”(hhØhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K hh·hžhubhÉ)”}”(hŒ™The purpose of this document is to provide information on some of the special features of the NFS client that can be configured by system administrators.”h]”hŒ™The purpose of this document is to provide information on some of the special features of the NFS client that can be configured by system administrators.”…””}”(hhæhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khh·hžhubeh}”(h]”Œthe-nfs-client”ah ]”h"]”Œthe nfs client”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒThe nfs4_unique_id parameter”h]”hŒThe nfs4_unique_id parameter”…””}”(hhÿhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hhühžhhŸh¶h KubhÉ)”}”(hX8NFSv4 requires clients to identify themselves to servers with a unique string. File open and lock state shared between one client and one server is associated with this identity. To support robust NFSv4 state recovery and transparent state migration, this identity string must not change across client reboots.”h]”hX8NFSv4 requires clients to identify themselves to servers with a unique string. File open and lock state shared between one client and one server is associated with this identity. To support robust NFSv4 state recovery and transparent state migration, this identity string must not change across client reboots.”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KhhühžhubhÉ)”}”(hXWithout any other intervention, the Linux client uses a string that contains the local system's node name. System administrators, however, often do not take care to ensure that node names are fully qualified and do not change over the lifetime of a client system. Node names can have other administrative requirements that require particular behavior that does not work well as part of an nfs_client_id4 string.”h]”hXŸWithout any other intervention, the Linux client uses a string that contains the local system’s node name. System administrators, however, often do not take care to ensure that node names are fully qualified and do not change over the lifetime of a client system. Node names can have other administrative requirements that require particular behavior that does not work well as part of an nfs_client_id4 string.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KhhühžhubhÉ)”}”(hXThe nfs.nfs4_unique_id boot parameter specifies a unique string that can be used together with a system's node name when an NFS client identifies itself to a server. Thus, if the system's node name is not unique, its nfs.nfs4_unique_id can help prevent collisions with other clients.”h]”hX!The nfs.nfs4_unique_id boot parameter specifies a unique string that can be used together with a system’s node name when an NFS client identifies itself to a server. Thus, if the system’s node name is not unique, its nfs.nfs4_unique_id can help prevent collisions with other clients.”…””}”(hj)hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K&hhühžhubhÉ)”}”(hX)The nfs.nfs4_unique_id string is typically a UUID, though it can contain anything that is believed to be unique across all NFS clients. An nfs4_unique_id string should be chosen when a client system is installed, just as a system's root file system gets a fresh UUID in its label at install time.”h]”hX+The nfs.nfs4_unique_id string is typically a UUID, though it can contain anything that is believed to be unique across all NFS clients. An nfs4_unique_id string should be chosen when a client system is installed, just as a system’s root file system gets a fresh UUID in its label at install time.”…””}”(hj7hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K+hhühžhubhÉ)”}”(hŒÙThe string should remain fixed for the lifetime of the client. It can be changed safely if care is taken that the client shuts down cleanly and all outstanding NFSv4 state has expired, to prevent loss of NFSv4 state.”h]”hŒÙThe string should remain fixed for the lifetime of the client. It can be changed safely if care is taken that the client shuts down cleanly and all outstanding NFSv4 state has expired, to prevent loss of NFSv4 state.”…””}”(hjEhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K1hhühžhubhÉ)”}”(hŒ«This string can be stored in an NFS client's grub.conf, or it can be provided via a net boot facility such as PXE. It may also be specified as an nfs.ko module parameter.”h]”hŒ­This string can be stored in an NFS client’s grub.conf, or it can be provided via a net boot facility such as PXE. It may also be specified as an nfs.ko module parameter.”…””}”(hjShžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K5hhühžhubhÉ)”}”(hŒïThis uniquifier string will be the same for all NFS clients running in containers unless it is overridden by a value written to /sys/fs/nfs/net/nfs_client/identifier which will be local to the network namespace of the process which writes.”h]”hŒïThis uniquifier string will be the same for all NFS clients running in containers unless it is overridden by a value written to /sys/fs/nfs/net/nfs_client/identifier which will be local to the network namespace of the process which writes.”…””}”(hjahžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K9hhühžhubeh}”(h]”Œthe-nfs4-unique-id-parameter”ah ]”h"]”Œthe nfs4_unique_id parameter”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒThe DNS resolver”h]”hŒThe DNS resolver”…””}”(hjzhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjwhžhhŸh¶h K@ubhÉ)”}”(hX NFSv4 allows for one server to refer the NFS client to data that has been migrated onto another server by means of the special "fs_locations" attribute. See `RFC3530 Section 6: Filesystem Migration and Replication`_ and `Implementation Guide for Referrals in NFSv4`_.”h]”(hŒ¡NFSv4 allows for one server to refer the NFS client to data that has been migrated onto another server by means of the special “fs_locations†attribute. See ”…””}”(hjˆhžhhŸNh NubhŒ reference”“”)”}”(hŒ:`RFC3530 Section 6: Filesystem Migration and Replication`_”h]”hŒ7RFC3530 Section 6: Filesystem Migration and Replication”…””}”(hj’hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ7RFC3530 Section 6: Filesystem Migration and Replication”Œrefuri”Œ-https://tools.ietf.org/html/rfc3530#section-6”uh1jhjˆŒresolved”KubhŒ and ”…””}”(hjˆhžhhŸNh Nubj‘)”}”(hŒ.`Implementation Guide for Referrals in NFSv4`_”h]”hŒ+Implementation Guide for Referrals in NFSv4”…””}”(hj©hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ+Implementation Guide for Referrals in NFSv4”j¢Œ9https://tools.ietf.org/html/draft-ietf-nfsv4-referrals-00”uh1jhjˆj¤KubhŒ.”…””}”(hjˆhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KBhjwhžhubhŒtarget”“”)”}”(hŒk.. _RFC3530 Section 6\: Filesystem Migration and Replication: https://tools.ietf.org/html/rfc3530#section-6”h]”h}”(h]”Œ6rfc3530-section-6-filesystem-migration-and-replication”ah ]”h"]”Œ7rfc3530 section 6: filesystem migration and replication”ah$]”h&]”j¢j£uh1jÄh KGhjwhžhhŸh¶Œ referenced”KubjÅ)”}”(hŒj.. _Implementation Guide for Referrals in NFSv4: https://tools.ietf.org/html/draft-ietf-nfsv4-referrals-00”h]”h}”(h]”Œ+implementation-guide-for-referrals-in-nfsv4”ah ]”h"]”Œ+implementation guide for referrals in nfsv4”ah$]”h&]”j¢j¹uh1jÄh KHhjwhžhhŸh¶jÒKubhÉ)”}”(hXThe fs_locations information can take the form of either an ip address and a path, or a DNS hostname and a path. The latter requires the NFS client to do a DNS lookup in order to mount the new volume, and hence the need for an upcall to allow userland to provide this service.”h]”hXThe fs_locations information can take the form of either an ip address and a path, or a DNS hostname and a path. The latter requires the NFS client to do a DNS lookup in order to mount the new volume, and hence the need for an upcall to allow userland to provide this service.”…””}”(hjßhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KJhjwhžhubhÉ)”}”(hŒAssuming that the user has the 'rpc_pipefs' filesystem mounted in the usual /var/lib/nfs/rpc_pipefs, the upcall consists of the following steps:”h]”hŒ”Assuming that the user has the ‘rpc_pipefs’ filesystem mounted in the usual /var/lib/nfs/rpc_pipefs, the upcall consists of the following steps:”…””}”(hjíhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KOhjwhžhubhŒ block_quote”“”)”}”(hXw(1) The process checks the dns_resolve cache to see if it contains a valid entry. If so, it returns that entry and exits. (2) If no valid entry exists, the helper script '/sbin/nfs_cache_getent' (may be changed using the 'nfs.cache_getent' kernel boot parameter) is run, with two arguments: - the cache name, "dns_resolve" - the hostname to resolve (3) After looking up the corresponding ip address, the helper script writes the result into the rpc_pipefs pseudo-file '/var/lib/nfs/rpc_pipefs/cache/dns_resolve/channel' in the following (text) format: " \n" Where is in the usual IPv4 (123.456.78.90) or IPv6 (ffee:ddcc:bbaa:9988:7766:5544:3322:1100, ffee::1100, ...) format. is identical to the second argument of the helper script, and is the 'time to live' of this cache entry (in units of seconds). .. note:: If is invalid, say the string "0", then a negative entry is created, which will cause the kernel to treat the hostname as having no valid DNS translation. ”h]”hŒenumerated_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒvThe process checks the dns_resolve cache to see if it contains a valid entry. If so, it returns that entry and exits. ”h]”hÉ)”}”(hŒuThe process checks the dns_resolve cache to see if it contains a valid entry. If so, it returns that entry and exits.”h]”hŒuThe process checks the dns_resolve cache to see if it contains a valid entry. If so, it returns that entry and exits.”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)”}”(hŒßIf no valid entry exists, the helper script '/sbin/nfs_cache_getent' (may be changed using the 'nfs.cache_getent' kernel boot parameter) is run, with two arguments: - the cache name, "dns_resolve" - the hostname to resolve ”h]”hÉ)”}”(hŒÞIf no valid entry exists, the helper script '/sbin/nfs_cache_getent' (may be changed using the 'nfs.cache_getent' kernel boot parameter) is run, with two arguments: - the cache name, "dns_resolve" - the hostname to resolve”h]”hŒêIf no valid entry exists, the helper script ‘/sbin/nfs_cache_getent’ (may be changed using the ‘nfs.cache_getent’ kernel boot parameter) is run, with two arguments: - the cache name, “dns_resolve†- the hostname to resolve”…””}”(hj$hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KUhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)”}”(hXÌAfter looking up the corresponding ip address, the helper script writes the result into the rpc_pipefs pseudo-file '/var/lib/nfs/rpc_pipefs/cache/dns_resolve/channel' in the following (text) format: " \n" Where is in the usual IPv4 (123.456.78.90) or IPv6 (ffee:ddcc:bbaa:9988:7766:5544:3322:1100, ffee::1100, ...) format. is identical to the second argument of the helper script, and is the 'time to live' of this cache entry (in units of seconds). .. note:: If is invalid, say the string "0", then a negative entry is created, which will cause the kernel to treat the hostname as having no valid DNS translation. ”h]”(hÉ)”}”(hŒÆAfter looking up the corresponding ip address, the helper script writes the result into the rpc_pipefs pseudo-file '/var/lib/nfs/rpc_pipefs/cache/dns_resolve/channel' in the following (text) format:”h]”hŒÊAfter looking up the corresponding ip address, the helper script writes the result into the rpc_pipefs pseudo-file ‘/var/lib/nfs/rpc_pipefs/cache/dns_resolve/channel’ in the following (text) format:”…””}”(hj<hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K[hj8ubjü)”}”(hŒ"" \n" ”h]”hÉ)”}”(hŒ!" \n"”h]”hŒ%“ n—…””}”(hjNhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K`hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jûhŸh¶h K`hj8ubhÉ)”}”(hXWhere is in the usual IPv4 (123.456.78.90) or IPv6 (ffee:ddcc:bbaa:9988:7766:5544:3322:1100, ffee::1100, ...) format. is identical to the second argument of the helper script, and is the 'time to live' of this cache entry (in units of seconds).”h]”hXWhere is in the usual IPv4 (123.456.78.90) or IPv6 (ffee:ddcc:bbaa:9988:7766:5544:3322:1100, ffee::1100, ...) format. is identical to the second argument of the helper script, and is the ‘time to live’ of this cache entry (in units of seconds).”…””}”(hjbhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Kbhj8ubhŒnote”“”)”}”(hŒ§If is invalid, say the string "0", then a negative entry is created, which will cause the kernel to treat the hostname as having no valid DNS translation.”h]”hÉ)”}”(hŒ§If is invalid, say the string "0", then a negative entry is created, which will cause the kernel to treat the hostname as having no valid DNS translation.”h]”hŒ«If is invalid, say the string “0â€, then a negative entry is created, which will cause the kernel to treat the hostname as having no valid DNS translation.”…””}”(hjvhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Kihjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jphj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”Œ(”Œsuffix”Œ)”uh1jhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jûhŸh¶h KRhjwhžhubeh}”(h]”Œthe-dns-resolver”ah ]”h"]”Œthe dns resolver”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K@ubh¢)”}”(hhh]”(h§)”}”(hŒ%A basic sample /sbin/nfs_cache_getent”h]”hŒ%A basic sample /sbin/nfs_cache_getent”…””}”(hj­hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjªhžhhŸh¶h KqubhŒ literal_block”“”)”}”(hXû#!/bin/bash # ttl=600 # cut=/usr/bin/cut getent=/usr/bin/getent rpc_pipefs=/var/lib/nfs/rpc_pipefs # die() { echo "Usage: $0 cache_name entry_name" exit 1 } [ $# -lt 2 ] && die cachename="$1" cache_path=${rpc_pipefs}/cache/${cachename}/channel case "${cachename}" in dns_resolve) name="$2" result="$(${getent} hosts ${name} | ${cut} -f1 -d\ )" [ -z "${result}" ] && result="0" ;; *) die ;; esac echo "${result} ${name} ${ttl}" >${cache_path}”h]”hXû#!/bin/bash # ttl=600 # cut=/usr/bin/cut getent=/usr/bin/getent rpc_pipefs=/var/lib/nfs/rpc_pipefs # die() { echo "Usage: $0 cache_name entry_name" exit 1 } [ $# -lt 2 ] && die cachename="$1" cache_path=${rpc_pipefs}/cache/${cachename}/channel case "${cachename}" in dns_resolve) name="$2" result="$(${getent} hosts ${name} | ${cut} -f1 -d\ )" [ -z "${result}" ] && result="0" ;; *) die ;; esac echo "${result} ${name} ${ttl}" >${cache_path}”…””}”hj½sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”Œforce”‰Œlanguage”Œsh”Œhighlight_args”}”uh1j»hŸh¶h Krhjªhžhubeh}”(h]”Œ$a-basic-sample-sbin-nfs-cache-getent”ah ]”h"]”Œ%a basic sample /sbin/nfs_cache_getent”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Kqubeh}”(h]”Œ nfs-client”ah ]”h"]”Œ nfs client”ah$]”h&]”uh1h¡hhhžhhŸh¶h Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h¶uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¦NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h¶Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”(Œ7rfc3530 section 6: filesystem migration and replication”]”j’aŒ+implementation guide for referrals in nfsv4”]”j©auŒrefids”}”Œnameids”}”(jßjÜhùhöjtjqj§j¤jÏjÌjÜjÙj×jÔuŒ nametypes”}”(j߉hù‰jt‰j§‰jψj܈j׉uh}”(jÜh£höh·jqhüj¤jwjÌjÆjÙjÓjÔjªuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nhžhub.