-xml(last, #elem{name = <<"query">>, xmlns = <<"jabber:iq:last">>, result = {last, '$seconds', '$status'}, attrs = [#attr{name = <<"seconds">>, enc = {enc_int, []}, dec = {dec_int, [0, infinity]}}], cdata = #cdata{default = <<"">>, label = '$status'}}). -xml(version_name, #elem{name = <<"name">>, xmlns = <<"jabber:iq:version">>, result = '$cdata', cdata = #cdata{label = '$cdata', required = true}}). -xml(version_ver, #elem{name = <<"version">>, xmlns = <<"jabber:iq:version">>, result = '$cdata', cdata = #cdata{label = '$cdata', required = true}}). -xml(version_os, #elem{name = <<"os">>, xmlns = <<"jabber:iq:version">>, result = '$cdata', cdata = #cdata{label = '$cdata', required = true}}). -xml(version, #elem{name = <<"query">>, xmlns = <<"jabber:iq:version">>, result = {version, '$name', '$ver', '$os'}, refs = [#ref{name = version_name, label = '$name', min = 0, max = 1}, #ref{name = version_ver, label = '$ver', min = 0, max = 1}, #ref{name = version_os, label = '$os', min = 0, max = 1}]}). -xml(roster_group, #elem{name = <<"group">>, xmlns = <<"jabber:iq:roster">>, result = '$cdata', cdata = #cdata{required = true, label = '$cdata'}}). -xml(roster_item, #elem{name = <<"item">>, xmlns = <<"jabber:iq:roster">>, result = {roster_item, '$jid', '$name', '$groups', '$subscription', '$ask'}, attrs = [#attr{name = <<"jid">>, required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"name">>, default = <<"">>}, #attr{name = <<"subscription">>, default = none, enc = {enc_enum, []}, dec = {dec_enum, [[none,to,from,both,remove]]}}, #attr{name = <<"ask">>, enc = {enc_enum, []}, dec = {dec_enum, [[subscribe]]}}], refs = [#ref{name = roster_group, label = '$groups'}]}). -xml(roster_query, #elem{name = <<"query">>, xmlns = <<"jabber:iq:roster">>, result = {roster_query, '$items', '$ver'}, attrs = [#attr{name = <<"ver">>, default = undefined}], refs = [#ref{name = roster_item, label = '$items'}]}). -xml(rosterver_feature, #elem{name = <<"ver">>, xmlns = <<"urn:xmpp:features:rosterver">>, result = {rosterver_feature}}). -xml(privacy_message, #elem{name = <<"message">>, xmlns = <<"jabber:iq:privacy">>, result = true}). -xml(privacy_iq, #elem{name = <<"iq">>, xmlns = <<"jabber:iq:privacy">>, result = true}). -xml(privacy_presence_in, #elem{name = <<"presence-in">>, xmlns = <<"jabber:iq:privacy">>, result = true}). -xml(privacy_presence_out, #elem{name = <<"presence-out">>, xmlns = <<"jabber:iq:privacy">>, result = true}). -xml(privacy_item, #elem{name = <<"item">>, xmlns = <<"jabber:iq:privacy">>, result = {privacy_item, '$order', '$action', '$type', '$value', '$message', '$iq', '$presence_in', '$presence_out'}, attrs = [#attr{name = <<"action">>, required = true, dec = {dec_enum, [[allow, deny]]}, enc = {enc_enum, []}}, #attr{name = <<"order">>, required = true, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"type">>, dec = {dec_enum, [[group, jid, subscription]]}, enc = {enc_enum, []}}, #attr{name = <<"value">>}], refs = [#ref{name = privacy_message, default = false, min = 0, max = 1, label = '$message'}, #ref{name = privacy_iq, default = false, min = 0, max = 1, label = '$iq'}, #ref{name = privacy_presence_in, default = false, min = 0, max = 1, label = '$presence_in'}, #ref{name = privacy_presence_out, default = false, min = 0, max = 1, label = '$presence_out'}]}). -xml(privacy_list, #elem{name = <<"list">>, xmlns = <<"jabber:iq:privacy">>, result = {privacy_list, '$name', '$items'}, attrs = [#attr{name = <<"name">>, required = true}], refs = [#ref{name = privacy_item, label = '$items'}]}). -xml(privacy_default_list, #elem{name = <<"default">>, xmlns = <<"jabber:iq:privacy">>, result = '$name', attrs = [#attr{name = <<"name">>, default = none}]}). -xml(privacy_active_list, #elem{name = <<"active">>, xmlns = <<"jabber:iq:privacy">>, result = '$name', attrs = [#attr{name = <<"name">>, default = none}]}). -xml(privacy, #elem{name = <<"query">>, xmlns = <<"jabber:iq:privacy">>, result = {privacy_query, '$lists', '$default', '$active'}, refs = [#ref{name = privacy_list, label = '$lists'}, #ref{name = privacy_default_list, min = 0, max = 1, label = '$default'}, #ref{name = privacy_active_list, min = 0, max = 1, label = '$active'}]}). -xml(block_item, #elem{name = <<"item">>, xmlns = <<"urn:xmpp:blocking">>, result = '$jid', attrs = [#attr{name = <<"jid">>, required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}]}). -xml(block, #elem{name = <<"block">>, xmlns = <<"urn:xmpp:blocking">>, result = {block, '$items'}, refs = [#ref{name = block_item, label = '$items'}]}). -xml(unblock, #elem{name = <<"unblock">>, xmlns = <<"urn:xmpp:blocking">>, result = {unblock, '$items'}, refs = [#ref{name = block_item, label = '$items'}]}). -xml(block_list, #elem{name = <<"blocklist">>, xmlns = <<"urn:xmpp:blocking">>, result = {block_list, '$items'}, refs = [#ref{name = block_item, label = '$items'}]}). -xml(disco_identity, #elem{name = <<"identity">>, xmlns = <<"http://jabber.org/protocol/disco#info">>, result = {identity, '$category', '$type', '$lang', '$name'}, attrs = [#attr{name = <<"category">>, required = true}, #attr{name = <<"type">>, required = true}, #attr{name = <<"xml:lang">>, label = '$lang'}, #attr{name = <<"name">>}]}). -xml(disco_feature, #elem{name = <<"feature">>, xmlns = <<"http://jabber.org/protocol/disco#info">>, result = '$var', attrs = [#attr{name = <<"var">>, required = true}]}). -xml(disco_info, #elem{name = <<"query">>, xmlns = <<"http://jabber.org/protocol/disco#info">>, result = {disco_info, '$node', '$identities', '$features', '$xdata'}, attrs = [#attr{name = <<"node">>}], refs = [#ref{name = disco_identity, label = '$identities'}, #ref{name = disco_feature, label = '$features'}, #ref{name = xdata, label = '$xdata'}]}). -xml(disco_item, #elem{name = <<"item">>, xmlns = <<"http://jabber.org/protocol/disco#items">>, result = {disco_item, '$jid', '$name', '$node'}, attrs = [#attr{name = <<"jid">>, dec = {dec_jid, []}, enc = {enc_jid, []}, required = true}, #attr{name = <<"name">>}, #attr{name = <<"node">>}]}). -xml(disco_items, #elem{name = <<"query">>, xmlns = <<"http://jabber.org/protocol/disco#items">>, result = {disco_items, '$node', '$items', '$rsm'}, attrs = [#attr{name = <<"node">>}], refs = [#ref{name = disco_item, label = '$items'}, #ref{name = rsm_set, min = 0, max = 1, label = '$rsm'}]}). -xml(private, #elem{name = <<"query">>, xmlns = <<"jabber:iq:private">>, result = {private, '$_xmls'}}). -xml(conference_nick, #elem{name = <<"nick">>, xmlns = <<"storage:bookmarks">>, result = '$cdata'}). -xml(conference_password, #elem{name = <<"password">>, xmlns = <<"storage:bookmarks">>, result = '$cdata'}). -xml(bookmark_conference, #elem{name = <<"conference">>, xmlns = <<"storage:bookmarks">>, result = {bookmark_conference, '$name', '$jid', '$autojoin', '$nick', '$password'}, attrs = [#attr{name = <<"name">>, required = true}, #attr{name = <<"jid">>, required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"autojoin">>, default = false, dec = {dec_bool, []}, enc = {enc_bool, []}}], refs = [#ref{name = conference_nick, label = '$nick', min = 0, max = 1}, #ref{name = conference_password, label = '$password', min = 0, max = 1}]}). -xml(bookmark_url, #elem{name = <<"url">>, xmlns = <<"storage:bookmarks">>, result = {bookmark_url, '$name', '$url'}, attrs = [#attr{name = <<"name">>, required = true}, #attr{name = <<"url">>, required = true}]}). -xml(bookmarks_storage, #elem{name = <<"storage">>, xmlns = <<"storage:bookmarks">>, result = {bookmark_storage, '$conference', '$url'}, refs = [#ref{name = bookmark_conference, label = '$conference'}, #ref{name = bookmark_url, label = '$url'}]}). -xml(stat_error, #elem{name = <<"error">>, xmlns = <<"http://jabber.org/protocol/stats">>, result = {stat_error, '$code', '$reason'}, cdata = #cdata{default = <<"">>, label = '$reason'}, attrs = [#attr{name = <<"code">>, required = true, enc = {enc_int, []}, dec = {dec_int, []}}]}). -xml(stat, #elem{name = <<"stat">>, xmlns = <<"http://jabber.org/protocol/stats">>, result = {stat, '$name', '$units', '$value', '$error'}, attrs = [#attr{name = <<"name">>, required = true}, #attr{name = <<"units">>, default = <<"">>}, #attr{name = <<"value">>, default = <<"">>}], refs = [#ref{name = stat_error, label = '$error', min = 0, max = 1}]}). -xml(stats, #elem{name = <<"query">>, xmlns = <<"http://jabber.org/protocol/stats">>, result = {stats, '$list', '$node'}, attrs = [#attr{name = <<"node">>, default = <<"">>}], refs = [#ref{name = stat, label = '$list'}]}). -xml(iq, #elem{name = <<"iq">>, xmlns = <<"jabber:client">>, result = {iq, '$id', '$type', '$lang', '$from', '$to', '$_els'}, attrs = [#attr{name = <<"id">>, required = true}, #attr{name = <<"type">>, required = true, enc = {enc_enum, []}, dec = {dec_enum, [[get, set, result, error]]}}, #attr{name = <<"from">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"to">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"xml:lang">>, label = '$lang'}]}). -xml(message_subject, #elem{name = <<"subject">>, xmlns = <<"jabber:client">>, result = {text, '$lang', '$data'}, cdata = #cdata{label = '$data'}, attrs = [#attr{name = <<"xml:lang">>, label = '$lang'}]}). -xml(message_body, #elem{name = <<"body">>, xmlns = <<"jabber:client">>, result = {text, '$lang', '$data'}, cdata = #cdata{label = '$data'}, attrs = [#attr{name = <<"xml:lang">>, label = '$lang'}]}). -xml(message_thread, #elem{name = <<"thread">>, xmlns = <<"jabber:client">>, result = '$cdata'}). -xml(message, #elem{name = <<"message">>, xmlns = <<"jabber:client">>, result = {message, '$id', '$type', '$lang', '$from', '$to', '$subject', '$body', '$thread', '$_els'}, attrs = [#attr{name = <<"id">>}, #attr{name = <<"type">>, default = normal, enc = {enc_enum, []}, dec = {dec_enum, [[chat, normal, groupchat, headline, error]]}}, #attr{name = <<"from">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"to">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"xml:lang">>, label = '$lang'}], refs = [#ref{name = message_subject, label = '$subject'}, #ref{name = message_thread, min = 0, max = 1, label = '$thread'}, #ref{name = message_body, label = '$body'}]}). -xml(presence_show, #elem{name = <<"show">>, xmlns = <<"jabber:client">>, result = '$cdata', cdata = #cdata{enc = {enc_enum, []}, dec = {dec_enum, [[away, chat, dnd, xa]]}}}). -xml(presence_status, #elem{name = <<"status">>, xmlns = <<"jabber:client">>, result = {text, '$lang', '$data'}, cdata = #cdata{label = '$data'}, attrs = [#attr{name = <<"xml:lang">>, label = '$lang'}]}). -xml(presence_priority, #elem{name = <<"priority">>, xmlns = <<"jabber:client">>, result = '$cdata', cdata = #cdata{enc = {enc_int, []}, dec = {dec_int, []}}}). -xml(presence, #elem{name = <<"presence">>, xmlns = <<"jabber:client">>, result = {presence, '$id', '$type', '$lang', '$from', '$to', '$show', '$status', '$priority', '$_els'}, attrs = [#attr{name = <<"id">>}, #attr{name = <<"type">>, default = available, enc = {enc_enum, []}, dec = {dec_enum, [[unavailable, subscribe, subscribed, unsubscribe, unsubscribed, available, probe, error]]}}, #attr{name = <<"from">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"to">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"xml:lang">>, label = '$lang'}], refs = [#ref{name = presence_show, min = 0, max = 1, label = '$show'}, #ref{name = presence_status, label = '$status'}, #ref{name = presence_priority, min = 0, max = 1, label = '$priority'}]}). -xml(error_bad_request, #elem{name = <<"bad-request">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'bad-request'}). -xml(error_conflict, #elem{name = <<"conflict">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'conflict'}). -xml(error_feature_not_implemented, #elem{name = <<"feature-not-implemented">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'feature-not-implemented'}). -xml(error_forbidden, #elem{name = <<"forbidden">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'forbidden'}). -xml(error_gone, #elem{name = <<"gone">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, cdata = #cdata{label = '$uri'}, result = {'gone', '$uri'}}). -xml(error_internal_server_error, #elem{name = <<"internal-server-error">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'internal-server-error'}). -xml(error_item_not_found, #elem{name = <<"item-not-found">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'item-not-found'}). -xml(error_jid_malformed, #elem{name = <<"jid-malformed">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'jid-malformed'}). -xml(error_not_acceptable, #elem{name = <<"not-acceptable">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'not-acceptable'}). -xml(error_not_allowed, #elem{name = <<"not-allowed">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'not-allowed'}). -xml(error_not_authorized, #elem{name = <<"not-authorized">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'not-authorized'}). -xml(error_payment_required, #elem{name = <<"payment-required">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'payment-required'}). -xml(error_policy_violation, #elem{name = <<"policy-violation">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'policy-violation'}). -xml(error_recipient_unavailable, #elem{name = <<"recipient-unavailable">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'recipient-unavailable'}). -xml(error_redirect, #elem{name = <<"redirect">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, cdata = #cdata{label = '$uri'}, result = {'redirect', '$uri'}}). -xml(error_registration_required, #elem{name = <<"registration-required">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'registration-required'}). -xml(error_remote_server_not_found, #elem{name = <<"remote-server-not-found">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'remote-server-not-found'}). -xml(error_remote_server_timeout, #elem{name = <<"remote-server-timeout">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'remote-server-timeout'}). -xml(error_resource_constraint, #elem{name = <<"resource-constraint">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'resource-constraint'}). -xml(error_service_unavailable, #elem{name = <<"service-unavailable">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'service-unavailable'}). -xml(error_subscription_required, #elem{name = <<"subscription-required">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'subscription-required'}). -xml(error_undefined_condition, #elem{name = <<"undefined-condition">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'undefined-condition'}). -xml(error_unexpected_request, #elem{name = <<"unexpected-request">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, result = 'unexpected-request'}). -xml(error_text, #elem{name = <<"text">>, result = {text, '$lang', '$data'}, cdata = #cdata{label = '$data'}, xmlns = <<"urn:ietf:params:xml:ns:xmpp-stanzas">>, attrs = [#attr{name = <<"xml:lang">>, label = '$lang'}]}). -xml(error, #elem{name = <<"error">>, xmlns = <<"jabber:client">>, result = {error, '$type', '$code', '$by', '$reason', '$text', '$_els'}, attrs = [#attr{name = <<"type">>, label = '$type', required = true, dec = {dec_enum, [[auth, cancel, continue, modify, wait]]}, enc = {enc_enum, []}}, #attr{name = <<"code">>, label = '$code', enc = {enc_int, []}, dec = {dec_int, [0, infinity]}}, #attr{name = <<"by">>}], refs = [#ref{name = error_text, min = 0, max = 1, label = '$text'}, #ref{name = error_bad_request, min = 0, max = 1, label = '$reason'}, #ref{name = error_conflict, min = 0, max = 1, label = '$reason'}, #ref{name = error_feature_not_implemented, min = 0, max = 1, label = '$reason'}, #ref{name = error_forbidden, min = 0, max = 1, label = '$reason'}, #ref{name = error_gone, min = 0, max = 1, label = '$reason'}, #ref{name = error_internal_server_error, min = 0, max = 1, label = '$reason'}, #ref{name = error_item_not_found, min = 0, max = 1, label = '$reason'}, #ref{name = error_jid_malformed, min = 0, max = 1, label = '$reason'}, #ref{name = error_not_acceptable, min = 0, max = 1, label = '$reason'}, #ref{name = error_not_allowed, min = 0, max = 1, label = '$reason'}, #ref{name = error_not_authorized, min = 0, max = 1, label = '$reason'}, #ref{name = error_payment_required, min = 0, max = 1, label = '$reason'}, #ref{name = error_policy_violation, min = 0, max = 1, label = '$reason'}, #ref{name = error_recipient_unavailable, min = 0, max = 1, label = '$reason'}, #ref{name = error_redirect, min = 0, max = 1, label = '$reason'}, #ref{name = error_registration_required, min = 0, max = 1, label = '$reason'}, #ref{name = error_remote_server_not_found, min = 0, max = 1, label = '$reason'}, #ref{name = error_remote_server_timeout, min = 0, max = 1, label = '$reason'}, #ref{name = error_resource_constraint, min = 0, max = 1, label = '$reason'}, #ref{name = error_service_unavailable, min = 0, max = 1, label = '$reason'}, #ref{name = error_subscription_required, min = 0, max = 1, label = '$reason'}, #ref{name = error_undefined_condition, min = 0, max = 1, label = '$reason'}, #ref{name = error_unexpected_request, min = 0, max = 1, label = '$reason'}]}). -xml(bind_jid, #elem{name = <<"jid">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-bind">>, result = '$cdata', cdata = #cdata{dec = {dec_jid, []}, enc = {enc_jid, []}}}). -xml(bind_resource, #elem{name = <<"resource">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-bind">>, result = '$cdata', cdata = #cdata{dec = {resourceprep, []}, enc = {resourceprep, []}}}). -xml(bind, #elem{name = <<"bind">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-bind">>, result = {bind, '$jid', '$resource'}, refs = [#ref{name = bind_jid, label = '$jid', min = 0, max = 1}, #ref{name = bind_resource, min = 0, max = 1, label = '$resource'}]}). -xml(legacy_auth_username, #elem{name = <<"username">>, xmlns = <<"jabber:iq:auth">>, result = '$cdata'}). -xml(legacy_auth_password, #elem{name = <<"password">>, xmlns = <<"jabber:iq:auth">>, result = '$cdata'}). -xml(legacy_auth_digest, #elem{name = <<"digest">>, xmlns = <<"jabber:iq:auth">>, result = '$cdata'}). -xml(legacy_auth_resource, #elem{name = <<"resource">>, xmlns = <<"jabber:iq:auth">>, result = '$cdata'}). -xml(legacy_auth, #elem{name = <<"query">>, xmlns = <<"jabber:iq:auth">>, result = {legacy_auth, '$username', '$password', '$digest', '$resource'}, refs = [#ref{name = legacy_auth_username, min = 0, max = 1, label = '$username'}, #ref{name = legacy_auth_password, min = 0, max = 1, label = '$password'}, #ref{name = legacy_auth_digest, min = 0, max = 1, label = '$digest'}, #ref{name = legacy_auth_resource, min = 0, max = 1, label = '$resource'}]}). -xml(sasl_auth, #elem{name = <<"auth">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, cdata = #cdata{label = '$text', dec = {base64, decode, []}, enc = {base64, encode, []}}, result = {sasl_auth, '$mechanism', '$text'}, attrs = [#attr{name = <<"mechanism">>, required = true}]}). -xml(sasl_abort, #elem{name = <<"abort">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, result = {sasl_abort}}). -xml(sasl_challenge, #elem{name = <<"challenge">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, cdata = #cdata{label = '$text', dec = {base64, decode, []}, enc = {base64, encode, []}}, result = {sasl_challenge, '$text'}}). -xml(sasl_response, #elem{name = <<"response">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, cdata = #cdata{label = '$text', dec = {base64, decode, []}, enc = {base64, encode, []}}, result = {sasl_response, '$text'}}). -xml(sasl_success, #elem{name = <<"success">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, cdata = #cdata{label = '$text', dec = {base64, decode, []}, enc = {base64, encode, []}}, result = {sasl_success, '$text'}}). -xml(sasl_failure_text, #elem{name = <<"text">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, result = {text, '$lang', '$data'}, cdata = #cdata{label = '$data'}, attrs = [#attr{name = <<"xml:lang">>, label = '$lang'}]}). -xml(sasl_failure_aborted, #elem{name = <<"aborted">>, result = 'aborted', xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). -xml(sasl_failure_account_disabled, #elem{name = <<"account-disabled">>, result = 'account-disabled', xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). -xml(sasl_failure_credentials_expired, #elem{name = <<"credentials-expired">>, result = 'credentials-expired', xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). -xml(sasl_failure_encryption_required, #elem{name = <<"encryption-required">>, result = 'encryption-required', xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). -xml(sasl_failure_incorrect_encoding, #elem{name = <<"incorrect-encoding">>, result = 'incorrect-encoding', xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). -xml(sasl_failure_invalid_authzid, #elem{name = <<"invalid-authzid">>, result = 'invalid-authzid', xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). -xml(sasl_failure_invalid_mechanism, #elem{name = <<"invalid-mechanism">>, result = 'invalid-mechanism', xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). -xml(sasl_failure_malformed_request, #elem{name = <<"malformed-request">>, result = 'malformed-request', xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). -xml(sasl_failure_mechanism_too_weak, #elem{name = <<"mechanism-too-weak">>, result = 'mechanism-too-weak', xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). -xml(sasl_failure_not_authorized, #elem{name = <<"not-authorized">>, result = 'not-authorized', xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). -xml(sasl_failure_bad_protocol, #elem{name = <<"bad-protocol">>, result = 'bad-protocol', xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). -xml(sasl_failure_temporary_auth_failure, #elem{name = <<"temporary-auth-failure">>, result = 'temporary-auth-failure', xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>}). -xml(sasl_failure, #elem{name = <<"failure">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, result = {sasl_failure, '$reason', '$text'}, refs = [#ref{name = sasl_failure_text, label = '$text'}, #ref{name = sasl_failure_aborted, min = 0, max = 1, label = '$reason'}, #ref{name = sasl_failure_account_disabled, min = 0, max = 1, label = '$reason'}, #ref{name = sasl_failure_credentials_expired, min = 0, max = 1, label = '$reason'}, #ref{name = sasl_failure_encryption_required, min = 0, max = 1, label = '$reason'}, #ref{name = sasl_failure_incorrect_encoding, min = 0, max = 1, label = '$reason'}, #ref{name = sasl_failure_invalid_authzid, min = 0, max = 1, label = '$reason'}, #ref{name = sasl_failure_invalid_mechanism, min = 0, max = 1, label = '$reason'}, #ref{name = sasl_failure_malformed_request, min = 0, max = 1, label = '$reason'}, #ref{name = sasl_failure_mechanism_too_weak, min = 0, max = 1, label = '$reason'}, #ref{name = sasl_failure_not_authorized, min = 0, max = 1, label = '$reason'}, #ref{name = sasl_failure_bad_protocol, min = 0, max = 1, label = '$reason'}, #ref{name = sasl_failure_temporary_auth_failure, min = 0, max = 1, label = '$reason'}]}). -xml(sasl_mechanism, #elem{name = <<"mechanism">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, result = '$cdata'}). -xml(sasl_mechanisms, #elem{name = <<"mechanisms">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-sasl">>, result = {sasl_mechanisms, '$list'}, refs = [#ref{name = sasl_mechanism, label = '$list'}]}). -xml(starttls_required, #elem{name = <<"required">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-tls">>, result = true}). -xml(starttls, #elem{name = <<"starttls">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-tls">>, result = {starttls, '$required'}, refs = [#ref{name = starttls_required, label = '$required', min = 0, max = 1, default = false}]}). -xml(starttls_proceed, #elem{name = <<"proceed">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-tls">>, result = {starttls_proceed}}). -xml(starttls_failure, #elem{name = <<"failure">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-tls">>, result = {starttls_failure}}). -xml(compress_failure_setup_failed, #elem{name = <<"setup-failed">>, xmlns = <<"http://jabber.org/protocol/compress">>, result = 'setup-failed'}). -xml(compress_failure_processing_failed, #elem{name = <<"processing-failed">>, xmlns = <<"http://jabber.org/protocol/compress">>, result = 'processing-failed'}). -xml(compress_failure_unsupported_method, #elem{name = <<"unsupported-method">>, xmlns = <<"http://jabber.org/protocol/compress">>, result = 'unsupported-method'}). -xml(compress_failure, #elem{name = <<"failure">>, xmlns = <<"http://jabber.org/protocol/compress">>, result = {compress_failure, '$reason'}, refs = [#ref{name = compress_failure_setup_failed, min = 0, max = 1, label = '$reason'}, #ref{name = compress_failure_processing_failed, min = 0, max = 1, label = '$reason'}, #ref{name = compress_failure_unsupported_method, min = 0, max = 1, label = '$reason'}]}). -xml(compress_method, #elem{name = <<"method">>, xmlns = <<"http://jabber.org/protocol/compress">>, result = '$cdata'}). -xml(compress, #elem{name = <<"compress">>, xmlns = <<"http://jabber.org/protocol/compress">>, result = {compress, '$methods'}, refs = [#ref{name = compress_method, label = '$methods'}]}). -xml(compressed, #elem{name = <<"compressed">>, xmlns = <<"http://jabber.org/protocol/compress">>, result = {compressed}}). -xml(compression_method, #elem{name = <<"method">>, xmlns = <<"http://jabber.org/features/compress">>, result = '$cdata'}). -xml(compression, #elem{name = <<"compression">>, xmlns = <<"http://jabber.org/features/compress">>, result = {compression, '$methods'}, refs = [#ref{name = compression_method, label = '$methods'}]}). -xml(stream_features, #elem{name = <<"stream:features">>, xmlns = <<"http://etherx.jabber.org/streams">>, result = {stream_features, '$_els'}}). -xml(p1_push, #elem{name = <<"push">>, result = {p1_push}, xmlns = <<"p1:push">>}). -xml(p1_rebind, #elem{name = <<"rebind">>, result = {p1_rebind}, xmlns = <<"p1:rebind">>}). -xml(p1_ack, #elem{name = <<"ack">>, result = {p1_ack}, xmlns = <<"p1:ack">>}). -xml(caps, #elem{name = <<"c">>, xmlns = <<"http://jabber.org/protocol/caps">>, result = {caps, '$node', '$version', '$hash', '$exts'}, attrs = [#attr{name = <<"hash">>}, #attr{name = <<"node">>}, #attr{name = <<"ext">>, label = '$exts', default = [], dec = {re, split, ["\\h+"]}, enc = {join, [$ ]}}, #attr{name = <<"ver">>, label = '$version'}]}). -xml(feature_register, #elem{name = <<"register">>, xmlns = <<"http://jabber.org/features/iq-register">>, result = {feature_register}}). -xml(register_registered, #elem{name = <<"registered">>, xmlns = <<"jabber:iq:register">>, result = true}). -xml(register_remove, #elem{name = <<"remove">>, xmlns = <<"jabber:iq:register">>, result = true}). -xml(register_instructions, #elem{name = <<"instructions">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_username, #elem{name = <<"username">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_nick, #elem{name = <<"nick">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_password, #elem{name = <<"password">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_name, #elem{name = <<"name">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_first, #elem{name = <<"first">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_last, #elem{name = <<"last">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_email, #elem{name = <<"email">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_address, #elem{name = <<"address">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_city, #elem{name = <<"city">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_state, #elem{name = <<"state">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_zip, #elem{name = <<"zip">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_phone, #elem{name = <<"phone">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_url, #elem{name = <<"url">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_date, #elem{name = <<"date">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_misc, #elem{name = <<"misc">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_text, #elem{name = <<"text">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register_key, #elem{name = <<"key">>, xmlns = <<"jabber:iq:register">>, result = '$cdata'}). -xml(register, #elem{name = <<"query">>, xmlns = <<"jabber:iq:register">>, result = {register, '$registered', '$remove', '$instructions', '$username', '$nick', '$password', '$name', '$first', '$last', '$email', '$address', '$city', '$state', '$zip', '$phone', '$url', '$date', '$misc', '$text', '$key', '$xdata', '$_els'}, refs = [#ref{name = xdata, min = 0, max = 1, label = '$xdata'}, #ref{name = register_registered, min = 0, max = 1, default = false, label = '$registered'}, #ref{name = register_remove, min = 0, max = 1, default = false, label = '$remove'}, #ref{name = register_instructions, min = 0, max = 1, label = '$instructions'}, #ref{name = register_username, min = 0, max = 1, label = '$username'}, #ref{name = register_nick, min = 0, max = 1, label = '$nick'}, #ref{name = register_password, min = 0, max = 1, label = '$password'}, #ref{name = register_name, min = 0, max = 1, label = '$name'}, #ref{name = register_first, min = 0, max = 1, label = '$first'}, #ref{name = register_last, min = 0, max = 1, label = '$last'}, #ref{name = register_email, min = 0, max = 1, label = '$email'}, #ref{name = register_address, min = 0, max = 1, label = '$address'}, #ref{name = register_city, min = 0, max = 1, label = '$city'}, #ref{name = register_state, min = 0, max = 1, label = '$state'}, #ref{name = register_zip, min = 0, max = 1, label = '$zip'}, #ref{name = register_phone, min = 0, max = 1, label = '$phone'}, #ref{name = register_url, min = 0, max = 1, label = '$url'}, #ref{name = register_date, min = 0, max = 1, label = '$date'}, #ref{name = register_misc, min = 0, max = 1, label = '$misc'}, #ref{name = register_text, min = 0, max = 1, label = '$text'}, #ref{name = register_key, min = 0, max = 1, label = '$key'}]}). -xml(session_optional, #elem{name = <<"optional">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-session">>, result = true}). -xml(session, #elem{name = <<"session">>, xmlns = <<"urn:ietf:params:xml:ns:xmpp-session">>, result = {xmpp_session, '$optional'}, refs = [#ref{name = session_optional, min = 0, max = 1, default = false, label = '$optional'}]}). -xml(ping, #elem{name = <<"ping">>, xmlns = <<"urn:xmpp:ping">>, result = {ping}}). -xml(time_utc, #elem{name = <<"utc">>, xmlns = <<"urn:xmpp:time">>, result = '$cdata', cdata = #cdata{dec = {dec_utc, []}, enc = {enc_utc, []}}}). -xml(time_tzo, #elem{name = <<"tzo">>, xmlns = <<"urn:xmpp:time">>, result = '$cdata', cdata = #cdata{dec = {dec_tzo, []}, enc = {enc_tzo, []}}}). -xml(time, #elem{name = <<"time">>, xmlns = <<"urn:xmpp:time">>, result = {time, '$tzo', '$utc'}, refs = [#ref{name = time_tzo, label = '$tzo', min = 0, max = 1}, #ref{name = time_utc, label = '$utc', min = 0, max = 1}]}). -xml(stream_error_text, #elem{name = <<"text">>, result = {text, '$lang', '$data'}, cdata = #cdata{label = '$data'}, xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>, attrs = [#attr{name = <<"xml:lang">>, label = '$lang'}]}). -xml(stream_error_bad_format, #elem{name = <<"bad-format">>, result = 'bad-format', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_bad_namespace_prefix, #elem{name = <<"bad-namespace-prefix">>, result = 'bad-namespace-prefix', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_conflict, #elem{name = <<"conflict">>, result = 'conflict', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_connection_timeout, #elem{name = <<"connection-timeout">>, result = 'connection-timeout', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_host_gone, #elem{name = <<"host-gone">>, result = 'host-gone', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_host_unknown, #elem{name = <<"host-unknown">>, result = 'host-unknown', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_improper_addressing, #elem{name = <<"improper-addressing">>, result = 'improper-addressing', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_internal_server_error, #elem{name = <<"internal-server-error">>, result = 'internal-server-error', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_invalid_from, #elem{name = <<"invalid-from">>, result = 'invalid-from', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_invalid_id, #elem{name = <<"invalid-id">>, result = 'invalid-id', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_invalid_namespace, #elem{name = <<"invalid-namespace">>, result = 'invalid-namespace', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_invalid_xml, #elem{name = <<"invalid-xml">>, result = 'invalid-xml', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_not_authorized, #elem{name = <<"not-authorized">>, result = 'not-authorized', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_not_well_formed, #elem{name = <<"not-well-formed">>, result = 'not-well-formed', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_policy_violation, #elem{name = <<"policy-violation">>, result = 'policy-violation', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_remote_connection_failed, #elem{name = <<"remote-connection-failed">>, result = 'remote-connection-failed', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_reset, #elem{name = <<"reset">>, result = 'reset', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_resource_constraint, #elem{name = <<"resource-constraint">>, result = 'resource-constraint', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_restricted_xml, #elem{name = <<"restricted-xml">>, result = 'restricted-xml', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_see_other_host, #elem{name = <<"see-other-host">>, cdata = #cdata{required = true, label = '$host', dec = {dec_host_port, []}, enc = {enc_host_port, []}}, result = {'see-other-host', '$host'}, xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_system_shutdown, #elem{name = <<"system-shutdown">>, result = 'system-shutdown', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_undefined_condition, #elem{name = <<"undefined-condition">>, result = 'undefined-condition', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_unsupported_encoding, #elem{name = <<"unsupported-encoding">>, result = 'unsupported-encoding', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_unsupported_stanza_type, #elem{name = <<"unsupported-stanza-type">>, result = 'unsupported-stanza-type', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error_unsupported_version, #elem{name = <<"unsupported-version">>, result = 'unsupported-version', xmlns = <<"urn:ietf:params:xml:ns:xmpp-streams">>}). -xml(stream_error, #elem{name = <<"stream:error">>, xmlns = <<"http://etherx.jabber.org/streams">>, result = {stream_error, '$reason', '$text'}, refs = [#ref{name = stream_error_text, label = '$text', min = 0, max = 1}, #ref{name = stream_error_bad_format, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_bad_namespace_prefix, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_conflict, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_connection_timeout, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_host_gone, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_host_unknown, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_improper_addressing, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_internal_server_error, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_invalid_from, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_invalid_id, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_invalid_namespace, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_invalid_xml, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_not_authorized, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_not_well_formed, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_policy_violation, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_remote_connection_failed, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_reset, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_resource_constraint, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_restricted_xml, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_see_other_host, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_system_shutdown, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_undefined_condition, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_unsupported_encoding, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_unsupported_stanza_type, min = 0, max = 1, label = '$reason'}, #ref{name = stream_error_unsupported_version, min = 0, max = 1, label = '$reason'} ]}). -xml(vcard_HOME, #elem{name = <<"HOME">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_WORK, #elem{name = <<"WORK">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_VOICE, #elem{name = <<"VOICE">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_FAX, #elem{name = <<"FAX">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_PAGER, #elem{name = <<"PAGER">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_MSG, #elem{name = <<"MSG">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_CELL, #elem{name = <<"CELL">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_VIDEO, #elem{name = <<"VIDEO">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_BBS, #elem{name = <<"BBS">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_MODEM, #elem{name = <<"MODEM">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_ISDN, #elem{name = <<"ISDN">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_PCS, #elem{name = <<"PCS">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_POSTAL, #elem{name = <<"POSTAL">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_PARCEL, #elem{name = <<"PARCEL">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_DOM, #elem{name = <<"DOM">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_INTL, #elem{name = <<"INTL">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_PREF, #elem{name = <<"PREF">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_INTERNET, #elem{name = <<"INTERNET">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_X400, #elem{name = <<"X400">>, xmlns = <<"vcard-temp">>, result = true}). -xml(vcard_FAMILY, #elem{name = <<"FAMILY">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_GIVEN, #elem{name = <<"GIVEN">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_MIDDLE, #elem{name = <<"MIDDLE">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_PREFIX, #elem{name = <<"PREFIX">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_SUFFIX, #elem{name = <<"SUFFIX">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_POBOX, #elem{name = <<"POBOX">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_EXTADD, #elem{name = <<"EXTADD">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_STREET, #elem{name = <<"STREET">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_LOCALITY, #elem{name = <<"LOCALITY">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_REGION, #elem{name = <<"REGION">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_PCODE, #elem{name = <<"PCODE">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_CTRY, #elem{name = <<"CTRY">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_LINE, #elem{name = <<"LINE">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_NUMBER, #elem{name = <<"NUMBER">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_USERID, #elem{name = <<"USERID">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_LAT, #elem{name = <<"LAT">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_LON, #elem{name = <<"LON">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_ORGNAME, #elem{name = <<"ORGNAME">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_ORGUNIT, #elem{name = <<"ORGUNIT">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_PHONETIC, #elem{name = <<"PHONETIC">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_CRED, #elem{name = <<"CRED">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_VERSION, #elem{name = <<"VERSION">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_FN, #elem{name = <<"FN">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_NICKNAME, #elem{name = <<"NICKNAME">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_BDAY, #elem{name = <<"BDAY">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_JABBERID, #elem{name = <<"JABBERID">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_MAILER, #elem{name = <<"MAILER">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_TZ, #elem{name = <<"TZ">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_TITLE, #elem{name = <<"TITLE">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_ROLE, #elem{name = <<"ROLE">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_KEYWORD, #elem{name = <<"KEYWORD">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_NOTE, #elem{name = <<"NOTE">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_PRODID, #elem{name = <<"PRODID">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_REV, #elem{name = <<"REV">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_SORT_STRING, #elem{name = <<"SORT-STRING">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_UID, #elem{name = <<"UID">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_URL, #elem{name = <<"URL">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_DESC, #elem{name = <<"DESC">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_TYPE, #elem{name = <<"TYPE">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_EXTVAL, #elem{name = <<"EXTVAL">>, xmlns = <<"vcard-temp">>, result = '$cdata'}). -xml(vcard_PUBLIC, #elem{name = <<"PUBLIC">>, xmlns = <<"vcard-temp">>, result = public}). -xml(vcard_PRIVATE, #elem{name = <<"PRIVATE">>, xmlns = <<"vcard-temp">>, result = private}). -xml(vcard_CONFIDENTIAL, #elem{name = <<"CONFIDENTIAL">>, xmlns = <<"vcard-temp">>, result = confidential}). -xml(vcard_N, #elem{name = <<"N">>, xmlns = <<"vcard-temp">>, result = {vcard_name, '$family', '$given', '$middle', '$prefix', '$suffix'}, refs = [#ref{name = vcard_FAMILY, min = 0, max = 1, label = '$family'}, #ref{name = vcard_GIVEN, min = 0, max = 1, label = '$given'}, #ref{name = vcard_MIDDLE, min = 0, max = 1, label = '$middle'}, #ref{name = vcard_PREFIX, min = 0, max = 1, label = '$prefix'}, #ref{name = vcard_SUFFIX, min = 0, max = 1, label = '$suffix'}]}). -xml(vcard_ADR, #elem{name = <<"ADR">>, xmlns = <<"vcard-temp">>, result = {vcard_adr, '$home', '$work', '$postal', '$parcel', '$dom', '$intl', '$pref', '$pobox', '$extadd', '$street', '$locality', '$region', '$pcode', '$ctry'}, refs = [#ref{name = vcard_HOME, default = false, min = 0, max = 1, label = '$home'}, #ref{name = vcard_WORK, default = false, min = 0, max = 1, label = '$work'}, #ref{name = vcard_POSTAL, default = false, min = 0, max = 1, label = '$postal'}, #ref{name = vcard_PARCEL, default = false, min = 0, max = 1, label = '$parcel'}, #ref{name = vcard_DOM, default = false, min = 0, max = 1, label = '$dom'}, #ref{name = vcard_INTL, default = false, min = 0, max = 1, label = '$intl'}, #ref{name = vcard_PREF, default = false, min = 0, max = 1, label = '$pref'}, #ref{name = vcard_POBOX, min = 0, max = 1, label = '$pobox'}, #ref{name = vcard_EXTADD, min = 0, max = 1, label = '$extadd'}, #ref{name = vcard_STREET, min = 0, max = 1, label = '$street'}, #ref{name = vcard_LOCALITY, min = 0, max = 1, label = '$locality'}, #ref{name = vcard_REGION, min = 0, max = 1, label = '$region'}, #ref{name = vcard_PCODE, min = 0, max = 1, label = '$pcode'}, #ref{name = vcard_CTRY, min = 0, max = 1, label = '$ctry'}]}). -xml(vcard_LABEL, #elem{name = <<"LABEL">>, xmlns = <<"vcard-temp">>, result = {vcard_label, '$home', '$work', '$postal', '$parcel', '$dom', '$intl', '$pref', '$line'}, refs = [#ref{name = vcard_HOME, default = false, min = 0, max = 1, label = '$home'}, #ref{name = vcard_WORK, default = false, min = 0, max = 1, label = '$work'}, #ref{name = vcard_POSTAL, default = false, min = 0, max = 1, label = '$postal'}, #ref{name = vcard_PARCEL, default = false, min = 0, max = 1, label = '$parcel'}, #ref{name = vcard_DOM, default = false, min = 0, max = 1, label = '$dom'}, #ref{name = vcard_INTL, default = false, min = 0, max = 1, label = '$intl'}, #ref{name = vcard_PREF, default = false, min = 0, max = 1, label = '$pref'}, #ref{name = vcard_LINE, label = '$line'}]}). -xml(vcard_TEL, #elem{name = <<"TEL">>, xmlns = <<"vcard-temp">>, result = {vcard_tel, '$home', '$work', '$voice', '$fax', '$pager', '$msg', '$cell', '$video', '$bbs', '$modem', '$isdn', '$pcs', '$pref', '$number'}, refs = [#ref{name = vcard_HOME, default = false, min = 0, max = 1, label = '$home'}, #ref{name = vcard_WORK, default = false, min = 0, max = 1, label = '$work'}, #ref{name = vcard_VOICE, default = false, min = 0, max = 1, label = '$voice'}, #ref{name = vcard_FAX, default = false, min = 0, max = 1, label = '$fax'}, #ref{name = vcard_PAGER, default = false, min = 0, max = 1, label = '$pager'}, #ref{name = vcard_MSG, default = false, min = 0, max = 1, label = '$msg'}, #ref{name = vcard_CELL, default = false, min = 0, max = 1, label = '$cell'}, #ref{name = vcard_VIDEO, default = false, min = 0, max = 1, label = '$video'}, #ref{name = vcard_BBS, default = false, min = 0, max = 1, label = '$bbs'}, #ref{name = vcard_MODEM, default = false, min = 0, max = 1, label = '$modem'}, #ref{name = vcard_ISDN, default = false, min = 0, max = 1, label = '$isdn'}, #ref{name = vcard_PCS, default = false, min = 0, max = 1, label = '$pcs'}, #ref{name = vcard_PREF, default = false, min = 0, max = 1, label = '$pref'}, #ref{name = vcard_NUMBER, min = 0, max = 1, label = '$number'}]}). -xml(vcard_EMAIL, #elem{name = <<"EMAIL">>, xmlns = <<"vcard-temp">>, result = {vcard_email, '$home', '$work', '$internet', '$pref', '$x400', '$userid'}, refs = [#ref{name = vcard_HOME, default = false, min = 0, max = 1, label = '$home'}, #ref{name = vcard_WORK, default = false, min = 0, max = 1, label = '$work'}, #ref{name = vcard_INTERNET, default = false, min = 0, max = 1, label = '$internet'}, #ref{name = vcard_PREF, default = false, min = 0, max = 1, label = '$pref'}, #ref{name = vcard_X400, default = false, min = 0, max = 1, label = '$x400'}, #ref{name = vcard_USERID, min = 0, max = 1, label = '$userid'}]}). -xml(vcard_GEO, #elem{name = <<"GEO">>, xmlns = <<"vcard-temp">>, result = {vcard_geo, '$lat', '$lon'}, refs = [#ref{name = vcard_LAT, min = 0, max = 1, label = '$lat'}, #ref{name = vcard_LON, min = 0, max = 1, label = '$lon'}]}). -xml(vcard_BINVAL, #elem{name = <<"BINVAL">>, xmlns = <<"vcard-temp">>, cdata = #cdata{dec = {base64, decode, []}, enc = {base64, encode, []}}, result = '$cdata'}). -xml(vcard_LOGO, #elem{name = <<"LOGO">>, xmlns = <<"vcard-temp">>, result = {vcard_logo, '$type', '$binval', '$extval'}, refs = [#ref{name = vcard_TYPE, min = 0, max = 1, label = '$type'}, #ref{name = vcard_BINVAL, min = 0, max = 1, label = '$binval'}, #ref{name = vcard_EXTVAL, min = 0, max = 1, label = '$extval'}]}). -xml(vcard_PHOTO, #elem{name = <<"PHOTO">>, xmlns = <<"vcard-temp">>, result = {vcard_photo, '$type', '$binval', '$extval'}, refs = [#ref{name = vcard_TYPE, min = 0, max = 1, label = '$type'}, #ref{name = vcard_BINVAL, min = 0, max = 1, label = '$binval'}, #ref{name = vcard_EXTVAL, min = 0, max = 1, label = '$extval'}]}). -xml(vcard_ORG, #elem{name = <<"ORG">>, xmlns = <<"vcard-temp">>, result = {vcard_org, '$name', '$units'}, refs = [#ref{name = vcard_ORGNAME, label = '$name', min = 0, max = 1}, #ref{name = vcard_ORGUNIT, label = '$units'}]}). -xml(vcard_SOUND, #elem{name = <<"SOUND">>, xmlns = <<"vcard-temp">>, result = {vcard_sound, '$phonetic', '$binval', '$extval'}, refs = [#ref{name = vcard_BINVAL, min = 0, max = 1, label = '$binval'}, #ref{name = vcard_EXTVAL, min = 0, max = 1, label = '$extval'}, #ref{name = vcard_PHONETIC, min = 0, max = 1, label = '$phonetic'}]}). -xml(vcard_KEY, #elem{name = <<"KEY">>, xmlns = <<"vcard-temp">>, result = {vcard_key, '$type', '$cred'}, refs = [#ref{name = vcard_TYPE, min = 0, max = 1, label = '$type'}, #ref{name = vcard_CRED, min = 0, max = 1, label = '$cred'}]}). -xml(vcard_CATEGORIES, #elem{name = <<"CATEGORIES">>, xmlns = <<"vcard-temp">>, result = '$keywords', refs = [#ref{name = vcard_KEYWORD, label = '$keywords'}]}). -xml(vcard_CLASS, #elem{name = <<"CLASS">>, xmlns = <<"vcard-temp">>, result = '$class', refs = [#ref{name = vcard_PUBLIC, min = 0, max = 1, label = '$class'}, #ref{name = vcard_PRIVATE, min = 0, max = 1, label = '$class'}, #ref{name = vcard_CONFIDENTIAL, min = 0, max = 1, label = '$class'}]}). %% {vcard_AGENT, %% #elem{name = <<"AGENT">>, %% xmlns = <<"vcard-temp">>, %% result = {vcard_agent, '$vcard', '$extval'}, %% refs = [#ref{name = vcard, min = 0, max = 1, label = '$vcard'}, %% #ref{name = vcard_EXTVAL, min = 0, max = 1, label = '$extval'}]}). -xml(vcard_temp, #elem{name = <<"vCard">>, xmlns = <<"vcard-temp">>, result = {vcard_temp, '$version', '$fn', '$n', '$nickname', '$photo', '$bday', '$adr', '$label', '$tel', '$email', '$jabberid', '$mailer', '$tz', '$geo', '$title', '$role', '$logo', '$org', '$categories', '$note', '$prodid', %% '$agent', '$rev', '$sort_string', '$sound', '$uid', '$url', '$class', '$key', '$desc'}, refs = [#ref{name = vcard_N, min = 0, max = 1, label = '$n'}, #ref{name = vcard_ADR, label = '$adr'}, #ref{name = vcard_LABEL, label = '$label'}, #ref{name = vcard_TEL, label = '$tel'}, #ref{name = vcard_EMAIL, label = '$email'}, #ref{name = vcard_GEO, min = 0, max = 1, label = '$geo'}, #ref{name = vcard_LOGO, min = 0, max = 1, label = '$logo'}, #ref{name = vcard_PHOTO, min = 0, max = 1, label = '$photo'}, #ref{name = vcard_ORG, min = 0, max = 1, label = '$org'}, #ref{name = vcard_SOUND, min = 0, max = 1, label = '$sound'}, #ref{name = vcard_KEY, min = 0, max = 1, label = '$key'}, #ref{name = vcard_VERSION, min = 0, max = 1, label = '$version'}, #ref{name = vcard_FN, min = 0, max = 1, label = '$fn'}, #ref{name = vcard_NICKNAME, min = 0, max = 1, label = '$nickname'}, #ref{name = vcard_BDAY, min = 0, max = 1, label = '$bday'}, #ref{name = vcard_JABBERID, min = 0, max = 1, label = '$jabberid'}, #ref{name = vcard_MAILER, min = 0, max = 1, label = '$mailer'}, #ref{name = vcard_TZ, min = 0, max = 1, label = '$tz'}, #ref{name = vcard_TITLE, min = 0, max = 1, label = '$title'}, #ref{name = vcard_ROLE, min = 0, max = 1, label = '$role'}, #ref{name = vcard_NOTE, min = 0, max = 1, label = '$note'}, #ref{name = vcard_PRODID, min = 0, max = 1, label = '$prodid'}, #ref{name = vcard_REV, min = 0, max = 1, label = '$rev'}, %%#ref{name = vcard_AGENT, min = 0, max = 1, label = '$agent'}, #ref{name = vcard_SORT_STRING, min = 0, max = 1, label = '$sort_string'}, #ref{name = vcard_UID, min = 0, max = 1, label = '$uid'}, #ref{name = vcard_URL, min = 0, max = 1, label = '$url'}, #ref{name = vcard_DESC, min = 0, max = 1, label = '$desc'}, #ref{name = vcard_CATEGORIES, default = [], min = 0, max = 1, label = '$categories'}, #ref{name = vcard_CLASS, min = 0, max = 1, label = '$class'}]}). -xml(vcard_xupdate_photo, #elem{name = <<"photo">>, xmlns = <<"vcard-temp:x:update">>, result = '$cdata'}). -record(vcard_xupdate, {us = {<<>>, <<>>} :: {binary(), binary()}, hash :: binary()}). -type vcard_xupdate() :: #vcard_xupdate{}. -xml(vcard_xupdate, #elem{name = <<"x">>, xmlns = <<"vcard-temp:x:update">>, result = {vcard_xupdate, '$_', '$hash'}, refs = [#ref{name = vcard_xupdate_photo, min = 0, max = 1, label = '$hash'}]}). -xml(xdata_field_required, #elem{name = <<"required">>, xmlns = <<"jabber:x:data">>, result = true}). -xml(xdata_field_desc, #elem{name = <<"desc">>, xmlns = <<"jabber:x:data">>, result = '$cdata'}). -xml(xdata_field_value, #elem{name = <<"value">>, xmlns = <<"jabber:x:data">>, result = '$cdata'}). -xml(xdata_field_option, #elem{name = <<"option">>, xmlns = <<"jabber:x:data">>, result = {xdata_option, '$label', '$value'}, attrs = [#attr{name = <<"label">>}], refs = [#ref{name = xdata_field_value, label = '$value', min = 1, max = 1}]}). -xml(xdata_field, #elem{name = <<"field">>, xmlns = <<"jabber:x:data">>, result = {xdata_field, '$label', '$type', '$var', '$required', '$desc', '$values', '$options', '$_els'}, attrs = [#attr{name = <<"label">>}, #attr{name = <<"type">>, enc = {enc_enum, []}, dec = {dec_enum, [['boolean', 'fixed', 'hidden', 'jid-multi', 'jid-single', 'list-multi', 'list-single', 'text-multi', 'text-private', 'text-single']]}}, #attr{name = <<"var">>}], refs = [#ref{name = xdata_field_required, label = '$required', default = false, min = 0, max = 1}, #ref{name = xdata_field_desc, label = '$desc', min = 0, max = 1}, #ref{name = xdata_field_value, label = '$values'}, #ref{name = xdata_field_option, label = '$options'}]}). -xml(xdata_instructions, #elem{name = <<"instructions">>, xmlns = <<"jabber:x:data">>, result = '$cdata'}). -xml(xdata_title, #elem{name = <<"title">>, xmlns = <<"jabber:x:data">>, result = '$cdata'}). -xml(xdata_reported, #elem{name = <<"reported">>, xmlns = <<"jabber:x:data">>, result = '$fields', refs = [#ref{name = xdata_field, label = '$fields'}]}). -xml(xdata_item, #elem{name = <<"item">>, xmlns = <<"jabber:x:data">>, result = '$fields', refs = [#ref{name = xdata_field, label = '$fields'}]}). -xml(xdata, #elem{name = <<"x">>, xmlns = <<"jabber:x:data">>, result = {xdata, '$type', '$instructions', '$title', '$reported', '$items', '$fields'}, attrs = [#attr{name = <<"type">>, required = true, dec = {dec_enum, [[cancel, form, result, submit]]}, enc = {enc_enum, []}}], refs = [#ref{name = xdata_instructions, label = '$instructions'}, #ref{name = xdata_title, label = '$title', min = 0, max = 1}, #ref{name = xdata_reported, label = '$reported', min = 0, max = 1}, #ref{name = xdata_item, label = '$items'}, #ref{name = xdata_field, label = '$fields'}]}). -xml(pubsub_subscription, #elem{name = <<"subscription">>, xmlns = [<<"http://jabber.org/protocol/pubsub">>, <<"http://jabber.org/protocol/pubsub#owner">>, <<"http://jabber.org/protocol/pubsub#event">>], result = {ps_subscription, '$xmlns', '$jid', '$type', '$node', '$subid', '$expiry'}, attrs = [#attr{name = <<"xmlns">>}, #attr{name = <<"jid">>, required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"node">>}, #attr{name = <<"subid">>}, #attr{name = <<"subscription">>, label = '$type', dec = {dec_enum, [[none, pending, subscribed, unconfigured]]}, enc = {enc_enum, []}}, #attr{name = <<"expiry">>, dec = {dec_utc, []}, enc = {enc_utc, []}}]}). -record(ps_affiliation, {xmlns = <<>> :: binary(), node = <<>> :: binary(), type :: member | none | outcast | owner | publisher | 'publish-only', jid :: jid:jid()}). -type ps_affiliation() :: #ps_affiliation{}. -xml(pubsub_affiliation, #elem{name = <<"affiliation">>, xmlns = <<"http://jabber.org/protocol/pubsub">>, result = {ps_affiliation, '$xmlns', '$node', '$type', '$_'}, attrs = [#attr{name = <<"node">>, required = true}, #attr{name = <<"xmlns">>}, #attr{name = <<"affiliation">>, label = '$type', required = true, dec = {dec_enum, [[member, none, outcast, owner, publisher, 'publish-only']]}, enc = {enc_enum, []}}]}). -xml(pubsub_owner_affiliation, #elem{name = <<"affiliation">>, xmlns = <<"http://jabber.org/protocol/pubsub#owner">>, result = {ps_affiliation, '$xmlns', '$_', '$type', '$jid'}, attrs = [#attr{name = <<"jid">>, required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"xmlns">>}, #attr{name = <<"affiliation">>, label = '$type', required = true, dec = {dec_enum, [[member, none, outcast, owner, publisher, 'publish-only']]}, enc = {enc_enum, []}}]}). -xml(pubsub_event_configuration, #elem{name = <<"configuration">>, xmlns = <<"http://jabber.org/protocol/pubsub#event">>, result = {'$node', '$xdata'}, attrs = [#attr{name = <<"node">>, required = true}], refs = [#ref{name = xdata, min = 0, max = 1}]}). -xml(pubsub_event_retract, #elem{name = <<"retract">>, xmlns = <<"http://jabber.org/protocol/pubsub#event">>, result = '$id', attrs = [#attr{name = <<"id">>, required = true}]}). -xml(pubsub_item, #elem{name = <<"item">>, xmlns = [<<"http://jabber.org/protocol/pubsub">>, <<"http://jabber.org/protocol/pubsub#event">>], result = {ps_item, '$xmlns', '$id', '$_xmls', '$node', '$publisher'}, attrs = [#attr{name = <<"id">>}, #attr{name = <<"xmlns">>}, #attr{name = <<"node">>}, #attr{name = <<"publisher">>}]}). -xml(pubsub_items, #elem{name = <<"items">>, xmlns = [<<"http://jabber.org/protocol/pubsub">>, <<"http://jabber.org/protocol/pubsub#event">>], result = {ps_items, '$xmlns', '$node', '$items', '$max_items', '$subid', '$retract'}, attrs = [#attr{name = <<"xmlns">>}, #attr{name = <<"max_items">>, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"node">>, required = true}, #attr{name = <<"subid">>}], refs = [#ref{name = pubsub_event_retract, label = '$retract', min = 0, max = 1}, #ref{name = pubsub_item, label = '$items'}]}). -xml(pubsub_event, #elem{name = <<"event">>, xmlns = <<"http://jabber.org/protocol/pubsub#event">>, result = {ps_event, '$items', '$purge', '$subscription', '$delete', '$create', '$configuration'}, refs = [#ref{name = pubsub_items, label = '$items', min = 0, max = 1}, #ref{name = pubsub_subscription, min = 0, max = 1, label = '$subscription'}, #ref{name = pubsub_purge, min = 0, max = 1, label = '$purge'}, #ref{name = pubsub_delete, min = 0, max = 1, label = '$delete'}, #ref{name = pubsub_create, min = 0, max = 1, label = '$create'}, #ref{name = pubsub_event_configuration, min = 0, max = 1, label = '$configuration'}]}). -xml(pubsub_subscriptions, #elem{name = <<"subscriptions">>, xmlns = [<<"http://jabber.org/protocol/pubsub">>, <<"http://jabber.org/protocol/pubsub#owner">>], result = {'$node', '$subscriptions'}, attrs = [#attr{name = <<"node">>}], refs = [#ref{name = pubsub_subscription, label = '$subscriptions'}]}). -xml(pubsub_affiliations, #elem{name = <<"affiliations">>, xmlns = <<"http://jabber.org/protocol/pubsub">>, result = {'$node', '$affiliations'}, attrs = [#attr{name = <<"node">>}], refs = [#ref{name = pubsub_affiliation, label = '$affiliations'}]}). -xml(pubsub_owner_affiliations, #elem{name = <<"affiliations">>, xmlns = <<"http://jabber.org/protocol/pubsub#owner">>, result = {'$node', '$affiliations'}, attrs = [#attr{name = <<"node">>}], refs = [#ref{name = pubsub_owner_affiliation, label = '$affiliations'}]}). -xml(pubsub_subscribe, #elem{name = <<"subscribe">>, xmlns = <<"http://jabber.org/protocol/pubsub">>, result = {ps_subscribe, '$node', '$jid'}, attrs = [#attr{name = <<"node">>}, #attr{name = <<"jid">>, required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}]}). -xml(pubsub_unsubscribe, #elem{name = <<"unsubscribe">>, xmlns = <<"http://jabber.org/protocol/pubsub">>, result = {ps_unsubscribe, '$node', '$jid', '$subid'}, attrs = [#attr{name = <<"node">>}, #attr{name = <<"subid">>}, #attr{name = <<"jid">>, required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}]}). -xml(pubsub_publish, #elem{name = <<"publish">>, xmlns = <<"http://jabber.org/protocol/pubsub">>, result = {ps_publish, '$node', '$items'}, attrs = [#attr{name = <<"node">>, required = true}], refs = [#ref{name = pubsub_item, label = '$items'}]}). -xml(pubsub_options, #elem{name = <<"options">>, xmlns = <<"http://jabber.org/protocol/pubsub">>, result = {ps_options, '$node', '$jid', '$subid', '$xdata'}, attrs = [#attr{name = <<"node">>}, #attr{name = <<"subid">>}, #attr{name = <<"jid">>, required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}], refs = [#ref{name = xdata, min = 0, max = 1, label = '$xdata'}]}). -xml(pubsub_retract, #elem{name = <<"retract">>, xmlns = <<"http://jabber.org/protocol/pubsub">>, result = {ps_retract, '$node', '$notify', '$items'}, attrs = [#attr{name = <<"node">>, required = true}, #attr{name = <<"notify">>, default = false, dec = {dec_bool, []}, enc = {enc_bool, []}}], refs = [#ref{name = pubsub_item, label = '$items'}]}). -xml(pubsub_create, #elem{name = <<"create">>, xmlns = [<<"http://jabber.org/protocol/pubsub">>, <<"http://jabber.org/protocol/pubsub#event">>], result = '$node', attrs = [#attr{name = <<"node">>}]}). -xml(pubsub_configure, #elem{name = <<"configure">>, xmlns = [<<"http://jabber.org/protocol/pubsub">>, <<"http://jabber.org/protocol/pubsub#owner">>], result = {'$node', '$xdata'}, attrs = [#attr{name = <<"node">>}], refs = [#ref{name = xdata, min = 0, max = 1}]}). -xml(pubsub_publish_options, #elem{name = <<"publish-options">>, xmlns = <<"http://jabber.org/protocol/pubsub">>, result = '$xdata', refs = [#ref{name = xdata, min = 0, max = 1}]}). -xml(pubsub_default, #elem{name = <<"default">>, xmlns = [<<"http://jabber.org/protocol/pubsub">>, <<"http://jabber.org/protocol/pubsub#owner">>], result = {'$node', '$xdata'}, attrs = [#attr{name = <<"node">>}], refs = [#ref{name = xdata, min = 0, max = 1}]}). -xml(pubsub_redirect, #elem{name = <<"redirect">>, xmlns = [<<"http://jabber.org/protocol/pubsub">>, <<"http://jabber.org/protocol/pubsub#owner">>, <<"http://jabber.org/protocol/pubsub#event">>], result = '$uri', attrs = [#attr{name = <<"uri">>, required = true}]}). -xml(pubsub_delete, #elem{name = <<"delete">>, xmlns = [<<"http://jabber.org/protocol/pubsub">>, <<"http://jabber.org/protocol/pubsub#owner">>, <<"http://jabber.org/protocol/pubsub#event">>], result = {'$node', '$uri'}, attrs = [#attr{name = <<"node">>, required = true}], refs = [#ref{name = pubsub_redirect, min = 0, max = 1, label = '$uri', default = <<>>}]}). -xml(pubsub_purge, #elem{name = <<"purge">>, xmlns = [<<"http://jabber.org/protocol/pubsub">>, <<"http://jabber.org/protocol/pubsub#owner">>, <<"http://jabber.org/protocol/pubsub#event">>], result = '$node', attrs = [#attr{name = <<"node">>, required = true}]}). -xml(pubsub, #elem{name = <<"pubsub">>, xmlns = <<"http://jabber.org/protocol/pubsub">>, result = {pubsub, '$subscriptions', '$subscription', '$affiliations', '$publish', '$publish_options', '$subscribe', '$unsubscribe', '$options', '$items', '$retract', '$create', '$configure', '$default', '$delete', '$purge', '$rsm'}, refs = [#ref{name = pubsub_subscriptions, label = '$subscriptions', min = 0, max = 1}, #ref{name = pubsub_affiliations, label = '$affiliations', min = 0, max = 1}, #ref{name = pubsub_subscribe, label = '$subscribe', min = 0, max = 1}, #ref{name = pubsub_unsubscribe, label = '$unsubscribe', min = 0, max = 1}, #ref{name = pubsub_options, label = '$options', min = 0, max = 1}, #ref{name = pubsub_items, label = '$items', min = 0, max = 1}, #ref{name = pubsub_retract, label = '$retract', min = 0, max = 1}, #ref{name = pubsub_create, label = '$create', min = 0, max = 1}, #ref{name = pubsub_configure, label = '$configure', min = 0, max = 1}, #ref{name = pubsub_publish_options, min = 0, max = 1, label = '$publish_options'}, #ref{name = pubsub_default, label = '$default', min = 0, max = 1}, #ref{name = pubsub_delete, label = '$delete', min = 0, max = 1}, #ref{name = pubsub_purge, label = '$purge', min = 0, max = 1}, #ref{name = pubsub_subscription, label = '$subscription', min = 0, max = 1}, #ref{name = rsm_set, min = 0, max = 1, label = '$rsm'}, #ref{name = pubsub_publish, label = '$publish', min = 0, max = 1}]}). -xml(pubsub_owner, #elem{name = <<"pubsub">>, xmlns = <<"http://jabber.org/protocol/pubsub#owner">>, result = {pubsub_owner, '$affiliations', '$configure', '$default', '$delete', '$purge', '$subscriptions'}, refs = [#ref{name = pubsub_owner_affiliations, label = '$affiliations', min = 0, max = 1}, #ref{name = pubsub_configure, label = '$configure', min = 0, max = 1}, #ref{name = pubsub_default, label = '$default', min = 0, max = 1}, #ref{name = pubsub_delete, label = '$delete', min = 0, max = 1}, #ref{name = pubsub_purge, label = '$purge', min = 0, max = 1}, #ref{name = pubsub_subscriptions, label = '$subscriptions', min = 0, max = 1}]}). -type ps_error_type() :: 'closed-node' | 'configuration-required' | 'invalid-jid' | 'invalid-options' | 'invalid-payload' | 'invalid-subid' | 'item-forbidden' | 'item-required' | 'jid-required' | 'max-items-exceeded' | 'max-nodes-exceeded' | 'nodeid-required' | 'not-in-roster-group' | 'not-subscribed' | 'payload-too-big' | 'payload-required' | 'pending-subscription' | 'presence-subscription-required' | 'subid-required' | 'too-many-subscriptions' | 'unsupported' | 'unsupported-access-model'. -type ps_feature() :: 'access-authorize' | 'access-open' | 'access-presence' | 'access-roster' | 'access-whitelist' | 'auto-create' | 'auto-subscribe' | 'collections' | 'config-node' | 'create-and-configure' | 'create-nodes' | 'delete-items' | 'delete-nodes' | 'filtered-notifications' | 'get-pending' | 'instant-nodes' | 'item-ids' | 'last-published' | 'leased-subscription' | 'manage-subscriptions' | 'member-affiliation' | 'meta-data' | 'modify-affiliations' | 'multi-collection' | 'multi-subscribe' | 'outcast-affiliation' | 'persistent-items' | 'presence-notifications' | 'presence-subscribe' | 'publish' | 'publish-options' | 'publish-only-affiliation' | 'publisher-affiliation' | 'purge-nodes' | 'retract-items' | 'retrieve-affiliations' | 'retrieve-default' | 'retrieve-items' | 'retrieve-subscriptions' | 'subscribe' | 'subscription-options' | 'subscription-notifications'. -record(ps_error, {type :: ps_error_type(), feature :: ps_feature()}). -type ps_error() :: #ps_error{}. -xml(pubsub_error_closed_node, #elem{name = <<"closed-node">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'closed-node', '$_'}}). -xml(pubsub_error_configuration_required, #elem{name = <<"configuration-required">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'configuration-required', '$_'}}). -xml(pubsub_error_invalid_jid, #elem{name = <<"invalid-jid">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'invalid-jid', '$_'}}). -xml(pubsub_error_invalid_options, #elem{name = <<"invalid-options">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'invalid-options', '$_'}}). -xml(pubsub_error_invalid_payload, #elem{name = <<"invalid-payload">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'invalid-payload', '$_'}}). -xml(pubsub_error_invalid_subid, #elem{name = <<"invalid-subid">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'invalid-subid', '$_'}}). -xml(pubsub_error_item_forbidden, #elem{name = <<"item-forbidden">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'item-forbidden', '$_'}}). -xml(pubsub_error_item_required, #elem{name = <<"item-required">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'item-required', '$_'}}). -xml(pubsub_error_jid_required, #elem{name = <<"jid-required">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'jid-required', '$_'}}). -xml(pubsub_error_max_items_exceeded, #elem{name = <<"max-items-exceeded">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'max-items-exceeded', '$_'}}). -xml(pubsub_error_max_nodes_exceeded, #elem{name = <<"max-nodes-exceeded">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'max-nodes-exceeded', '$_'}}). -xml(pubsub_error_nodeid_required, #elem{name = <<"nodeid-required">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'nodeid-required', '$_'}}). -xml(pubsub_error_not_in_roster_group, #elem{name = <<"not-in-roster-group">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'not-in-roster-group', '$_'}}). -xml(pubsub_error_not_subscribed, #elem{name = <<"not-subscribed">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'not-subscribed', '$_'}}). -xml(pubsub_error_payload_too_big, #elem{name = <<"payload-too-big">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'payload-too-big', '$_'}}). -xml(pubsub_error_payload_required, #elem{name = <<"payload-required">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'payload-required', '$_'}}). -xml(pubsub_error_pending_subscription, #elem{name = <<"pending-subscription">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'pending-subscription', '$_'}}). -xml(pubsub_error_presence_subscription_required, #elem{name = <<"presence-subscription-required">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'presence-subscription-required', '$_'}}). -xml(pubsub_error_subid_required, #elem{name = <<"subid-required">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'subid-required', '$_'}}). -xml(pubsub_error_too_many_subscriptions, #elem{name = <<"too-many-subscriptions">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'too-many-subscriptions', '$_'}}). -xml(pubsub_error_unsupported, #elem{name = <<"unsupported">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'unsupported', '$feature'}, attrs = [#attr{name = <<"feature">>, required = true, dec = {dec_enum, [['access-authorize', 'access-open', 'access-presence', 'access-roster', 'access-whitelist', 'auto-create', 'auto-subscribe', 'collections', 'config-node', 'create-and-configure', 'create-nodes', 'delete-items', 'delete-nodes', 'filtered-notifications', 'get-pending', 'instant-nodes', 'item-ids', 'last-published', 'leased-subscription', 'manage-subscriptions', 'member-affiliation', 'meta-data', 'modify-affiliations', 'multi-collection', 'multi-subscribe', 'outcast-affiliation', 'persistent-items', 'presence-notifications', 'presence-subscribe', 'publish', 'publish-options', 'publish-only-affiliation', 'publisher-affiliation', 'purge-nodes', 'retract-items', 'retrieve-affiliations', 'retrieve-default', 'retrieve-items', 'retrieve-subscriptions', 'subscribe', 'subscription-options', 'subscription-notifications']]}, enc = {enc_enum, []}}]}). -xml(pubsub_error_unsupported_access_model, #elem{name = <<"unsupported-access-model">>, xmlns = <<"http://jabber.org/protocol/pubsub#errors">>, result = {ps_error, 'unsupported-access-model', '$_'}}). -xml(shim_header, #elem{name = <<"header">>, xmlns = <<"http://jabber.org/protocol/shim">>, result = {'$name', '$cdata'}, attrs = [#attr{name = <<"name">>, required = true}]}). -xml(shim_headers, #elem{name = <<"headers">>, xmlns = <<"http://jabber.org/protocol/shim">>, result = {shim, '$headers'}, refs = [#ref{name = shim_header, label = '$headers'}]}). -record(chatstate, {type :: active | composing | gone | inactive | paused}). -type chatstate() :: #chatstate{}. -xml(chatstate_active, #elem{name = <<"active">>, xmlns = <<"http://jabber.org/protocol/chatstates">>, result = {chatstate, active}}). -xml(chatstate_composing, #elem{name = <<"composing">>, xmlns = <<"http://jabber.org/protocol/chatstates">>, result = {chatstate, composing}}). -xml(chatstate_gone, #elem{name = <<"gone">>, xmlns = <<"http://jabber.org/protocol/chatstates">>, result = {chatstate, gone}}). -xml(chatstate_inactive, #elem{name = <<"inactive">>, xmlns = <<"http://jabber.org/protocol/chatstates">>, result = {chatstate, inactive}}). -xml(chatstate_paused, #elem{name = <<"paused">>, xmlns = <<"http://jabber.org/protocol/chatstates">>, result = {chatstate, paused}}). -xml(delay, #elem{name = <<"delay">>, xmlns = <<"urn:xmpp:delay">>, result = {delay, '$stamp', '$from', '$desc'}, cdata = #cdata{label = '$desc', default = <<"">>}, attrs = [#attr{name = <<"stamp">>, required = true, dec = {dec_utc, []}, enc = {enc_utc, []}}, #attr{name = <<"from">>, dec = {dec_jid, []}, enc = {enc_jid, []}}]}). -xml(bytestreams_streamhost, #elem{name = <<"streamhost">>, xmlns = <<"http://jabber.org/protocol/bytestreams">>, result = {streamhost, '$jid', '$host', '$port'}, attrs = [#attr{name = <<"jid">>, required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"host">>, required = true}, #attr{name = <<"port">>, default = 1080, dec = {dec_int, [0, 65535]}, enc = {enc_int, []}}]}). -xml(bytestreams_streamhost_used, #elem{name = <<"streamhost-used">>, xmlns = <<"http://jabber.org/protocol/bytestreams">>, result = '$jid', attrs = [#attr{name = <<"jid">>, required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}]}). -xml(bytestreams_activate, #elem{name = <<"activate">>, xmlns = <<"http://jabber.org/protocol/bytestreams">>, cdata = #cdata{enc = {enc_jid, []}, dec = {dec_jid, []}}, result = '$cdata'}). -xml(bytestreams, #elem{name = <<"query">>, xmlns = <<"http://jabber.org/protocol/bytestreams">>, result = {bytestreams, '$hosts', '$used', '$activate', '$dstaddr', '$mode', '$sid'}, attrs = [#attr{name = <<"dstaddr">>}, #attr{name = <<"sid">>}, #attr{name = <<"mode">>, default = tcp, dec = {dec_enum, [[tcp, udp]]}, enc = {enc_enum, []}}], refs = [#ref{name = bytestreams_streamhost, label = '$hosts'}, #ref{name = bytestreams_streamhost_used, min = 0, max = 1, label = '$used'}, #ref{name = bytestreams_activate, min = 0, max = 1, label = '$activate'}]}). -xml(muc_history, #elem{name = <<"history">>, xmlns = <<"http://jabber.org/protocol/muc">>, result = {muc_history, '$maxchars', '$maxstanzas', '$seconds', '$since'}, attrs = [#attr{name = <<"maxchars">>, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"maxstanzas">>, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"seconds">>, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"since">>, dec = {dec_utc, []}, enc = {enc_utc, []}}]}). -xml(muc_reason, #elem{name = <<"reason">>, xmlns = [<<"http://jabber.org/protocol/muc#user">>, <<"http://jabber.org/protocol/muc#admin">>, <<"http://jabber.org/protocol/muc#owner">>], result = '$cdata'}). -xml(muc_user_decline, #elem{name = <<"decline">>, xmlns = <<"http://jabber.org/protocol/muc#user">>, result = {muc_decline, '$reason', '$from', '$to'}, attrs = [#attr{name = <<"to">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"from">>, dec = {dec_jid, []}, enc = {enc_jid, []}}], refs = [#ref{name = muc_reason, min = 0, default = <<"">>, max = 1, label = '$reason'}]}). -xml(muc_destroy, #elem{name = <<"destroy">>, xmlns = [<<"http://jabber.org/protocol/muc#user">>, <<"http://jabber.org/protocol/muc#owner">>], result = {muc_destroy, '$xmlns', '$jid', '$reason', '$password'}, attrs = [#attr{name = <<"jid">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"xmlns">>}], refs = [#ref{name = muc_reason, min = 0, default = <<"">>, max = 1, label = '$reason'}, #ref{name = muc_password, min = 0, max = 1, label = '$password'}]}). -xml(muc_user_invite, #elem{name = <<"invite">>, xmlns = <<"http://jabber.org/protocol/muc#user">>, result = {muc_invite, '$reason', '$from', '$to', '$continue'}, attrs = [#attr{name = <<"to">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"from">>, dec = {dec_jid, []}, enc = {enc_jid, []}}], refs = [#ref{name = muc_reason, min = 0, default = <<"">>, max = 1, label = '$reason'}, #ref{name = muc_user_continue, min = 0, max = 1, label = '$continue'}]}). -xml(muc_user_actor, #elem{name = <<"actor">>, xmlns = <<"http://jabber.org/protocol/muc#user">>, result = {muc_actor, '$jid', '$nick'}, attrs = [#attr{name = <<"jid">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"nick">>}]}). -xml(muc_user_continue, #elem{name = <<"continue">>, xmlns = <<"http://jabber.org/protocol/muc#user">>, result = '$thread', attrs = [#attr{name = <<"thread">>}]}). -xml(muc_user_status, #elem{name = <<"status">>, xmlns = <<"http://jabber.org/protocol/muc#user">>, result = '$code', attrs = [#attr{name = <<"code">>, dec = {dec_int, [100, 999]}, enc = {enc_int, []}}]}). -xml(muc_user_item, #elem{name = <<"item">>, xmlns = <<"http://jabber.org/protocol/muc#user">>, result = {muc_item, '$actor', '$continue', '$reason', '$affiliation', '$role', '$jid', '$nick'}, refs = [#ref{name = muc_user_actor, min = 0, max = 1, label = '$actor'}, #ref{name = muc_user_continue, min = 0, max = 1, label = '$continue'}, #ref{name = muc_reason, default = <<"">>, min = 0, max = 1, label = '$reason'}], attrs = [#attr{name = <<"affiliation">>, dec = {dec_enum, [[admin, member, none, outcast, owner]]}, enc = {enc_enum, []}}, #attr{name = <<"role">>, dec = {dec_enum, [[moderator, none, participant, visitor]]}, enc = {enc_enum, []}}, #attr{name = <<"jid">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"nick">>}]}). -xml(muc_user, #elem{name = <<"x">>, xmlns = <<"http://jabber.org/protocol/muc#user">>, result = {muc_user, '$decline', '$destroy', '$invites', '$items', '$status_codes', '$password'}, refs = [#ref{name = muc_user_decline, min = 0, max = 1, label = '$decline'}, #ref{name = muc_destroy, min = 0, max = 1, label = '$destroy'}, #ref{name = muc_password, min = 0, max = 1, label = '$password'}, #ref{name = muc_user_invite, label = '$invites'}, #ref{name = muc_user_item, label = '$items'}, #ref{name = muc_user_status, label = '$status_codes'}]}). -xml(muc_password, #elem{name = <<"password">>, xmlns = [<<"http://jabber.org/protocol/muc#owner">>, <<"http://jabber.org/protocol/muc#user">>, <<"http://jabber.org/protocol/muc">>], result = '$cdata'}). -xml(muc_owner, #elem{name = <<"query">>, xmlns = <<"http://jabber.org/protocol/muc#owner">>, result = {muc_owner, '$destroy', '$config', '$items'}, refs = [#ref{name = muc_destroy, min = 0, max = 1, label = '$destroy'}, #ref{name = xdata, min = 0, max = 1, label = '$config'}, #ref{name = muc_owner_item, label = '$items'}]}). -xml(muc_owner_item, #elem{name = <<"item">>, xmlns = <<"http://jabber.org/protocol/muc#owner">>, result = {muc_item, '$actor', '$continue', '$reason', '$affiliation', '$role', '$jid', '$nick'}, refs = [#ref{name = muc_admin_actor, min = 0, max = 1, label = '$actor'}, #ref{name = muc_admin_continue, min = 0, max = 1, label = '$continue'}, #ref{name = muc_reason, default = <<"">>, min = 0, max = 1, label = '$reason'}], attrs = [#attr{name = <<"affiliation">>, dec = {dec_enum, [[admin, member, none, outcast, owner]]}, enc = {enc_enum, []}}, #attr{name = <<"role">>, dec = {dec_enum, [[moderator, none, participant, visitor]]}, enc = {enc_enum, []}}, #attr{name = <<"jid">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"nick">>}]}). -xml(muc_admin_item, #elem{name = <<"item">>, xmlns = <<"http://jabber.org/protocol/muc#admin">>, result = {muc_item, '$actor', '$continue', '$reason', '$affiliation', '$role', '$jid', '$nick'}, refs = [#ref{name = muc_admin_actor, min = 0, max = 1, label = '$actor'}, #ref{name = muc_admin_continue, min = 0, max = 1, label = '$continue'}, #ref{name = muc_reason, default = <<"">>, min = 0, max = 1, label = '$reason'}], attrs = [#attr{name = <<"affiliation">>, dec = {dec_enum, [[admin, member, none, outcast, owner]]}, enc = {enc_enum, []}}, #attr{name = <<"role">>, dec = {dec_enum, [[moderator, none, participant, visitor]]}, enc = {enc_enum, []}}, #attr{name = <<"jid">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"nick">>}]}). -xml(muc_admin_actor, #elem{name = <<"actor">>, xmlns = <<"http://jabber.org/protocol/muc#admin">>, result = {muc_actor, '$jid', '$nick'}, attrs = [#attr{name = <<"jid">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"nick">>}]}). -xml(muc_admin_continue, #elem{name = <<"continue">>, xmlns = <<"http://jabber.org/protocol/muc#admin">>, result = '$thread', attrs = [#attr{name = <<"thread">>}]}). -xml(muc_admin, #elem{name = <<"query">>, xmlns = <<"http://jabber.org/protocol/muc#admin">>, result = {muc_admin, '$items'}, refs = [#ref{name = muc_admin_item, label = '$items'}]}). -xml(muc, #elem{name = <<"x">>, xmlns = <<"http://jabber.org/protocol/muc">>, result = {muc, '$history', '$password'}, refs = [#ref{name = muc_history, min = 0, max = 1, label = '$history'}, #ref{name = muc_password, min = 0, max = 1, label = '$password'}]}). -xml(muc_unique, #elem{name = <<"unique">>, xmlns = <<"http://jabber.org/protocol/muc#unique">>, result = {muc_unique, '$name'}, cdata = #cdata{default = <<"">>, label = '$name'}}). -xml(x_conference, #elem{name = <<"x">>, xmlns = <<"jabber:x:conference">>, result = {x_conference, '$jid', '$password', '$reason', '$continue', '$thread'}, attrs = [#attr{name = <<"jid">>, required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"password">>, default = <<"">>}, #attr{name = <<"reason">>, default = <<"">>}, #attr{name = <<"thread">>, default = <<"">>}, #attr{name = <<"continue">>, dec = {dec_bool, []}, enc = {enc_bool, []}}]}). -xml(muc_subscription, #elem{name = <<"subscription">>, xmlns = <<"urn:xmpp:mucsub:0">>, result = '$jid', attrs = [#attr{name = <<"jid">>, required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}]}). -xml(muc_subscriptions, #elem{name = <<"subscriptions">>, xmlns = <<"urn:xmpp:mucsub:0">>, result = {muc_subscriptions, '$list'}, refs = [#ref{name = muc_subscription, label = '$list'}]}). -xml(muc_subscribe_event, #elem{name = <<"event">>, xmlns = <<"urn:xmpp:mucsub:0">>, result = '$node', attrs = [#attr{name = <<"node">>, required = true}]}). -xml(muc_subscribe, #elem{name = <<"subscribe">>, xmlns = <<"urn:xmpp:mucsub:0">>, result = {muc_subscribe, '$nick', '$events'}, attrs = [#attr{name = <<"nick">>, required = true}], refs = [#ref{name = muc_subscribe_event, label = '$events'}]}). -xml(muc_unsubscribe, #elem{name = <<"unsubscribe">>, xmlns = <<"urn:xmpp:mucsub:0">>, result = {muc_unsubscribe}}). -xml(rsm_after, #elem{name = <<"after">>, xmlns = <<"http://jabber.org/protocol/rsm">>, result = '$cdata'}). -xml(rsm_before, #elem{name = <<"before">>, xmlns = <<"http://jabber.org/protocol/rsm">>, cdata = #cdata{default = <<"">>}, result = '$cdata'}). -xml(rsm_last, #elem{name = <<"last">>, xmlns = <<"http://jabber.org/protocol/rsm">>, result = '$cdata'}). -xml(rsm_count, #elem{name = <<"count">>, result = '$cdata', xmlns = <<"http://jabber.org/protocol/rsm">>, cdata = #cdata{dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}}). -xml(rsm_index, #elem{name = <<"index">>, result = '$cdata', xmlns = <<"http://jabber.org/protocol/rsm">>, cdata = #cdata{dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}}). -xml(rsm_max, #elem{name = <<"max">>, result = '$cdata', xmlns = <<"http://jabber.org/protocol/rsm">>, cdata = #cdata{dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}}). -xml(rsm_first, #elem{name = <<"first">>, xmlns = <<"http://jabber.org/protocol/rsm">>, result = {rsm_first, '$index', '$data'}, cdata = #cdata{label = '$data'}, attrs = [#attr{name = <<"index">>, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}]}). -xml(rsm_set, #elem{name = <<"set">>, xmlns = <<"http://jabber.org/protocol/rsm">>, result = {rsm_set, '$after', '$before', '$count', '$first', '$index', '$last', '$max'}, refs = [#ref{name = rsm_after, label = '$after', min = 0, max = 1}, #ref{name = rsm_before, label = '$before', min = 0, max = 1}, #ref{name = rsm_count, label = '$count', min = 0, max = 1}, #ref{name = rsm_first, label = '$first', min = 0, max = 1}, #ref{name = rsm_index, label = '$index', min = 0, max = 1}, #ref{name = rsm_last, label = '$last', min = 0, max = 1}, #ref{name = rsm_max, label = '$max', min = 0, max = 1}]}). -xml(mam_start, #elem{name = <<"start">>, xmlns = <<"urn:xmpp:mam:tmp">>, result = '$cdata', cdata = #cdata{required = true, dec = {dec_utc, []}, enc = {enc_utc, []}}}). -xml(mam_end, #elem{name = <<"end">>, xmlns = <<"urn:xmpp:mam:tmp">>, result = '$cdata', cdata = #cdata{required = true, dec = {dec_utc, []}, enc = {enc_utc, []}}}). -xml(mam_with, #elem{name = <<"with">>, xmlns = <<"urn:xmpp:mam:tmp">>, result = '$cdata', cdata = #cdata{required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}}). -xml(mam_withtext, #elem{name = <<"withtext">>, xmlns = <<"urn:xmpp:mam:tmp">>, result = '$cdata', cdata = #cdata{required = true}}). -xml(mam_query, #elem{name = <<"query">>, xmlns = [<<"urn:xmpp:mam:0">>, <<"urn:xmpp:mam:1">>, <<"urn:xmpp:mam:tmp">>], result = {mam_query, '$xmlns', '$id', '$start', '$end', '$with', '$withtext', '$rsm', '$xdata'}, attrs = [#attr{name = <<"queryid">>, label = '$id'}, #attr{name = <<"xmlns">>}], refs = [#ref{name = mam_start, min = 0, max = 1, label = '$start'}, #ref{name = mam_end, min = 0, max = 1, label = '$end'}, #ref{name = mam_with, min = 0, max = 1, label = '$with'}, #ref{name = mam_withtext, min = 0, max = 1, label = '$withtext'}, #ref{name = rsm_set, min = 0, max = 1, label = '$rsm'}, #ref{name = xdata, min = 0, max = 1, label = '$xdata'}]}). -xml(mam_archived, #elem{name = <<"archived">>, xmlns = <<"urn:xmpp:mam:tmp">>, result = {mam_archived, '$by', '$id'}, attrs = [#attr{name = <<"id">>}, #attr{name = <<"by">>, required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}]}). -xml(mam_result, #elem{name = <<"result">>, xmlns = [<<"urn:xmpp:mam:0">>, <<"urn:xmpp:mam:1">>, <<"urn:xmpp:mam:tmp">>], result = {mam_result, '$xmlns', '$queryid', '$id', '$_els'}, attrs = [#attr{name = <<"queryid">>}, #attr{name = <<"xmlns">>}, #attr{name = <<"id">>}]}). -xml(mam_jid, #elem{name = <<"jid">>, xmlns = [<<"urn:xmpp:mam:0">>, <<"urn:xmpp:mam:1">>, <<"urn:xmpp:mam:tmp">>], result = '$cdata', cdata = #cdata{required = true, dec = {dec_jid, []}, enc = {enc_jid, []}}}). -xml(mam_never, #elem{name = <<"never">>, xmlns = [<<"urn:xmpp:mam:0">>, <<"urn:xmpp:mam:1">>, <<"urn:xmpp:mam:tmp">>], result = '$jids', refs = [#ref{name = mam_jid, label = '$jids'}]}). -xml(mam_always, #elem{name = <<"always">>, xmlns = [<<"urn:xmpp:mam:0">>, <<"urn:xmpp:mam:1">>, <<"urn:xmpp:mam:tmp">>], result = '$jids', refs = [#ref{name = mam_jid, label = '$jids'}]}). -xml(mam_prefs, #elem{name = <<"prefs">>, xmlns = [<<"urn:xmpp:mam:0">>, <<"urn:xmpp:mam:1">>, <<"urn:xmpp:mam:tmp">>], result = {mam_prefs, '$xmlns', '$default', '$always', '$never'}, attrs = [#attr{name = <<"default">>, dec = {dec_enum, [[always, never, roster]]}, enc = {enc_enum, []}}, #attr{name = <<"xmlns">>}], refs = [#ref{name = mam_always, label = '$always', min = 0, max = 1}, #ref{name = mam_never, label = '$never', min = 0, max = 1}]}). -xml(mam_fin, #elem{name = <<"fin">>, xmlns = <<"urn:xmpp:mam:0">>, result = {mam_fin, '$id', '$rsm', '$stable', '$complete'}, attrs = [#attr{name = <<"queryid">>, label = '$id'}, #attr{name = <<"stable">>, label = '$stable', dec = {dec_bool, []}, enc = {enc_bool, []}}, #attr{name = <<"complete">>, label = '$complete', dec = {dec_bool, []}, enc = {enc_bool, []}}], refs = [#ref{name = rsm_set, min = 0, max = 1, label = '$rsm'}]}). -xml(forwarded, #elem{name = <<"forwarded">>, xmlns = <<"urn:xmpp:forward:0">>, result = {forwarded, '$delay', '$_els'}, refs = [#ref{name = delay, min = 0, max = 1, label = '$delay'}]}). -xml(carbons_disable, #elem{name = <<"disable">>, xmlns = <<"urn:xmpp:carbons:2">>, result = {carbons_disable}}). -xml(carbons_enable, #elem{name = <<"enable">>, xmlns = <<"urn:xmpp:carbons:2">>, result = {carbons_enable}}). -xml(carbons_private, #elem{name = <<"private">>, xmlns = <<"urn:xmpp:carbons:2">>, result = {carbons_private}}). -xml(carbons_received, #elem{name = <<"received">>, xmlns = <<"urn:xmpp:carbons:2">>, result = {carbons_received, '$forwarded'}, refs = [#ref{name = forwarded, min = 1, max = 1, label = '$forwarded'}]}). -xml(carbons_sent, #elem{name = <<"sent">>, xmlns = <<"urn:xmpp:carbons:2">>, result = {carbons_sent, '$forwarded'}, refs = [#ref{name = forwarded, min = 1, max = 1, label = '$forwarded'}]}). -xml(feature_csi, #elem{name = <<"csi">>, xmlns = <<"urn:xmpp:csi:0">>, result = {feature_csi, '$xmlns'}, attrs = [#attr{name = <<"xmlns">>}]}). -record(csi, {type :: active | inactive}). -type csi() :: #csi{}. -xml(csi_active, #elem{name = <<"active">>, xmlns = <<"urn:xmpp:csi:0">>, result = {csi, active}}). -xml(csi_inactive, #elem{name = <<"inactive">>, xmlns = <<"urn:xmpp:csi:0">>, result = {csi, inactive}}). -xml(feature_sm, #elem{name = <<"sm">>, xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], result = {feature_sm, '$xmlns'}, attrs = [#attr{name = <<"xmlns">>}]}). -xml(sm_enable, #elem{name = <<"enable">>, xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], result = {sm_enable, '$max', '$resume', '$xmlns'}, attrs = [#attr{name = <<"max">>, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"xmlns">>}, #attr{name = <<"resume">>, default = false, dec = {dec_bool, []}, enc = {enc_bool, []}}]}). -xml(sm_enabled, #elem{name = <<"enabled">>, xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], result = {sm_enabled, '$id', '$location', '$max', '$resume', '$xmlns'}, attrs = [#attr{name = <<"id">>}, #attr{name = <<"location">>}, #attr{name = <<"xmlns">>}, #attr{name = <<"max">>, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"resume">>, default = false, dec = {dec_bool, []}, enc = {enc_bool, []}}]}). -xml(sm_resume, #elem{name = <<"resume">>, xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], result = {sm_resume, '$h', '$previd', '$xmlns'}, attrs = [#attr{name = <<"h">>, required = true, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"xmlns">>}, #attr{name = <<"previd">>, required = true}]}). -xml(sm_resumed, #elem{name = <<"resumed">>, xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], result = {sm_resumed, '$h', '$previd', '$xmlns'}, attrs = [#attr{name = <<"h">>, required = true, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"xmlns">>}, #attr{name = <<"previd">>, required = true}]}). -xml(sm_r, #elem{name = <<"r">>, xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], result = {sm_r, '$xmlns'}, attrs = [#attr{name = <<"xmlns">>}]}). -xml(sm_a, #elem{name = <<"a">>, xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], result = {sm_a, '$h', '$xmlns'}, attrs = [#attr{name = <<"h">>, required = true, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"xmlns">>}]}). -xml(sm_failed, #elem{name = <<"failed">>, xmlns = [<<"urn:xmpp:sm:2">>, <<"urn:xmpp:sm:3">>], result = {sm_failed, '$reason', '$h', '$xmlns'}, attrs = [#attr{name = <<"h">>, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"xmlns">>}], refs = [#ref{name = error_bad_request, min = 0, max = 1, label = '$reason'}, #ref{name = error_conflict, min = 0, max = 1, label = '$reason'}, #ref{name = error_feature_not_implemented, min = 0, max = 1, label = '$reason'}, #ref{name = error_forbidden, min = 0, max = 1, label = '$reason'}, #ref{name = error_gone, min = 0, max = 1, label = '$reason'}, #ref{name = error_internal_server_error, min = 0, max = 1, label = '$reason'}, #ref{name = error_item_not_found, min = 0, max = 1, label = '$reason'}, #ref{name = error_jid_malformed, min = 0, max = 1, label = '$reason'}, #ref{name = error_not_acceptable, min = 0, max = 1, label = '$reason'}, #ref{name = error_not_allowed, min = 0, max = 1, label = '$reason'}, #ref{name = error_not_authorized, min = 0, max = 1, label = '$reason'}, #ref{name = error_policy_violation, min = 0, max = 1, label = '$reason'}, #ref{name = error_recipient_unavailable, min = 0, max = 1, label = '$reason'}, #ref{name = error_redirect, min = 0, max = 1, label = '$reason'}, #ref{name = error_registration_required, min = 0, max = 1, label = '$reason'}, #ref{name = error_remote_server_not_found, min = 0, max = 1, label = '$reason'}, #ref{name = error_remote_server_timeout, min = 0, max = 1, label = '$reason'}, #ref{name = error_resource_constraint, min = 0, max = 1, label = '$reason'}, #ref{name = error_service_unavailable, min = 0, max = 1, label = '$reason'}, #ref{name = error_subscription_required, min = 0, max = 1, label = '$reason'}, #ref{name = error_undefined_condition, min = 0, max = 1, label = '$reason'}, #ref{name = error_unexpected_request, min = 0, max = 1, label = '$reason'}]}). -xml(offline_purge, #elem{name = <<"purge">>, xmlns = <<"http://jabber.org/protocol/offline">>, result = true}). -xml(offline_fetch, #elem{name = <<"fetch">>, xmlns = <<"http://jabber.org/protocol/offline">>, result = true}). -xml(offline_item, #elem{name = <<"item">>, xmlns = <<"http://jabber.org/protocol/offline">>, result = {offline_item, '$node', '$action'}, attrs = [#attr{name = <<"node">>}, #attr{name = <<"action">>, dec = {dec_enum, [[view, remove]]}, enc = {enc_enum, []}}]}). -xml(offline, #elem{name = <<"offline">>, xmlns = <<"http://jabber.org/protocol/offline">>, result = {offline, '$items', '$purge', '$fetch'}, refs = [#ref{name = offline_purge, min = 0, max = 1, label = '$purge', default = false}, #ref{name = offline_fetch, min = 0, max = 1, label = '$fetch', default = false}, #ref{name = offline_item, min = 0, label = '$items'}]}). -xml(mix_subscribe, #elem{name = <<"subscribe">>, xmlns = <<"urn:xmpp:mix:0">>, result = '$node', attrs = [#attr{name = <<"node">>, required = true, label = '$node'}]}). -xml(mix_join, #elem{name = <<"join">>, xmlns = <<"urn:xmpp:mix:0">>, result = {mix_join, '$jid', '$subscribe'}, attrs = [#attr{name = <<"jid">>, label = '$jid', dec = {dec_jid, []}, enc = {enc_jid, []}}], refs = [#ref{name = mix_subscribe, min = 0, label = '$subscribe'}]}). -xml(mix_leave, #elem{name = <<"leave">>, xmlns = <<"urn:xmpp:mix:0">>, result = {mix_leave}}). -xml(mix_participant, #elem{name = <<"participant">>, xmlns = <<"urn:xmpp:mix:0">>, result = {mix_participant, '$jid', '$nick'}, attrs = [#attr{name = <<"jid">>, required = true, label = '$jid', dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"nick">>, label = '$nick'}]}). -record(hint, {type :: 'no-copy' | 'no-store' | 'no-storage' | 'store' | 'no-permanent-store' | 'no-permanent-storage'}). -type hint() :: #hint{}. -xml(hint_no_copy, #elem{name = <<"no-copy">>, xmlns = <<"urn:xmpp:hints">>, result = {hint, 'no-copy'}}). -xml(hint_no_store, #elem{name = <<"no-store">>, xmlns = <<"urn:xmpp:hints">>, result = {hint, 'no-store'}}). -xml(hint_no_storage, #elem{name = <<"no-storage">>, xmlns = <<"urn:xmpp:hints">>, result = {hint, 'no-storage'}}). -xml(hint_store, #elem{name = <<"store">>, xmlns = <<"urn:xmpp:hints">>, result = {hint, 'store'}}). -xml(hint_no_permanent_store, #elem{name = <<"no-permanent-store">>, xmlns = <<"urn:xmpp:hints">>, result = {hint, 'no-permanent-store'}}). -xml(hint_no_permanent_storage, #elem{name = <<"no-permanent-storage">>, xmlns = <<"urn:xmpp:hints">>, result = {hint, 'no-permanent-storage'}}). -xml(search_instructions, #elem{name = <<"instructions">>, xmlns = <<"jabber:iq:search">>, result = '$cdata'}). -xml(search_first, #elem{name = <<"first">>, xmlns = <<"jabber:iq:search">>, cdata = #cdata{default = <<"">>}, result = '$cdata'}). -xml(search_last, #elem{name = <<"last">>, xmlns = <<"jabber:iq:search">>, cdata = #cdata{default = <<"">>}, result = '$cdata'}). -xml(search_nick, #elem{name = <<"nick">>, xmlns = <<"jabber:iq:search">>, cdata = #cdata{default = <<"">>}, result = '$cdata'}). -xml(search_email, #elem{name = <<"email">>, xmlns = <<"jabber:iq:search">>, cdata = #cdata{default = <<"">>}, result = '$cdata'}). -xml(search_item, #elem{name = <<"item">>, xmlns = <<"jabber:iq:search">>, result = {search_item, '$jid', '$first', '$last', '$nick', '$email'}, attrs = [#attr{name = <<"jid">>, required = true, enc = {enc_jid, []}, dec = {dec_jid, []}}], refs = [#ref{name = search_first, min = 0, max = 1, label = '$first'}, #ref{name = search_last, min = 0, max = 1, label = '$last'}, #ref{name = search_nick, min = 0, max = 1, label = '$nick'}, #ref{name = search_email, min = 0, max = 1, label = '$email'}]}). -xml(search, #elem{name = <<"query">>, xmlns = <<"jabber:iq:search">>, result = {search, '$instructions', '$first', '$last', '$nick', '$email', '$items', '$xdata'}, refs = [#ref{name = search_instructions, min = 0, max = 1, label = '$instructions'}, #ref{name = search_first, min = 0, max = 1, label = '$first'}, #ref{name = search_last, min = 0, max = 1, label = '$last'}, #ref{name = search_nick, min = 0, max = 1, label = '$nick'}, #ref{name = search_email, min = 0, max = 1, label = '$email'}, #ref{name = search_item, label = '$items'}, #ref{name = xdata, min = 0, max = 1, label = '$xdata'}]}). -xml(xevent_offline, #elem{name = <<"offline">>, xmlns = <<"jabber:x:event">>, result = true}). -xml(xevent_delivered, #elem{name = <<"delivered">>, xmlns = <<"jabber:x:event">>, result = true}). -xml(xevent_displayed, #elem{name = <<"displayed">>, xmlns = <<"jabber:x:event">>, result = true}). -xml(xevent_composing, #elem{name = <<"composing">>, xmlns = <<"jabber:x:event">>, result = true}). -xml(xevent_id, #elem{name = <<"id">>, xmlns = <<"jabber:x:event">>, cdata = #cdata{}, result = '$cdata'}). -xml(xevent, #elem{name = <<"x">>, xmlns = <<"jabber:x:event">>, result = {xevent, '$offline', '$delivered', '$displayed', '$composing', '$id'}, refs = [#ref{name = xevent_offline, min = 0, max = 1, label = '$offline', default = false}, #ref{name = xevent_delivered, min = 0, max = 1, label = '$delivered', default = false}, #ref{name = xevent_displayed, min = 0, max = 1, label = '$displayed', default = false}, #ref{name = xevent_composing, min = 0, max = 1, label = '$composing', default = false}, #ref{name = xevent_id, min = 0, max = 1, label = '$id'}]}). -xml(expire, #elem{name = <<"x">>, xmlns = <<"jabber:x:expire">>, result = {expire, '$seconds', '$stored'}, attrs = [#attr{name = <<"seconds">>, required = true, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"stored">>, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}]}). -xml(nick, #elem{name = <<"nick">>, xmlns = <<"http://jabber.org/protocol/nick">>, result = {nick, '$name'}, cdata = #cdata{label = '$name', required = true}}). -xml(address, #elem{name = <<"address">>, xmlns = <<"http://jabber.org/protocol/address">>, result = {address, '$type', '$jid', '$desc', '$node', '$delivered'}, attrs = [#attr{name = <<"type">>, required = true, dec = {dec_enum, [[bcc, cc, noreply, ofrom, replyroom, replyto, to]]}, enc = {enc_enum, []}}, #attr{name = <<"jid">>, enc = {enc_jid, []}, dec = {dec_jid, []}}, #attr{name = <<"desc">>}, #attr{name = <<"node">>}, #attr{name = <<"delivered">>, enc = {enc_bool, []}, dec = {dec_bool, []}}]}). -xml(addresses, #elem{name = <<"addresses">>, xmlns = <<"http://jabber.org/protocol/address">>, result = {addresses, '$list'}, %% TODO: 'min' should be '1', but this is not implemented refs = [#ref{name = address, label = '$list'}]}). -xml(stanza_id, #elem{name = <<"stanza-id">>, xmlns = <<"urn:xmpp:sid:0">>, result = {stanza_id, '$by', '$id'}, attrs = [#attr{name = <<"id">>, required = true}, #attr{name = <<"by">>, required = true, enc = {enc_jid, []}, dec = {dec_jid, []}}]}). -xml(client_id, #elem{name = <<"client-id">>, xmlns = <<"urn:xmpp:sid:0">>, result = {client_id, '$id'}, attrs = [#attr{name = <<"id">>, required = true}]}). -xml(adhoc_command_prev, #elem{name = <<"prev">>, xmlns = <<"http://jabber.org/protocol/commands">>, result = true}). -xml(adhoc_command_next, #elem{name = <<"next">>, xmlns = <<"http://jabber.org/protocol/commands">>, result = true}). -xml(adhoc_command_complete, #elem{name = <<"complete">>, xmlns = <<"http://jabber.org/protocol/commands">>, result = true}). -xml(adhoc_command_actions, #elem{name = <<"actions">>, xmlns = <<"http://jabber.org/protocol/commands">>, result = {adhoc_actions, '$execute', '$prev', '$next', '$complete'}, attrs = [#attr{name = <<"execute">>, dec = {dec_enum, [[complete, next, prev]]}, enc = {enc_enum, []}}], refs = [#ref{name = adhoc_command_prev, min = 0, max = 1, default = false, label = '$prev'}, #ref{name = adhoc_command_next, min = 0, max = 1, default = false, label = '$next'}, #ref{name = adhoc_command_complete, min = 0, max = 1, default = false, label = '$complete'}]}). -xml(adhoc_command_notes, #elem{name = <<"note">>, xmlns = <<"http://jabber.org/protocol/commands">>, result = {adhoc_note, '$type', '$data'}, attrs = [#attr{name = <<"type">>, default = info, dec = {dec_enum, [[info, warn, error]]}, enc = {enc_enum, []}}], cdata = #cdata{default = <<"">>, label = '$data'}}). -xml(adhoc_command, #elem{name = <<"command">>, xmlns = <<"http://jabber.org/protocol/commands">>, result = {adhoc_command, '$node', '$action', '$sid', '$status', '$lang', '$actions', '$notes', '$xdata'}, attrs = [#attr{name = <<"node">>, required = true}, #attr{name = <<"xml:lang">>, label = '$lang'}, #attr{name = <<"sessionid">>, label = '$sid'}, #attr{name = <<"status">>, dec = {dec_enum, [[canceled, completed, executing]]}, enc = {enc_enum, []}}, #attr{name = <<"action">>, default = execute, dec = {dec_enum, [[cancel, complete, execute, next, prev]]}, enc = {enc_enum, []}}], refs = [#ref{name = adhoc_command_actions, min = 0, max = 1, label = '$actions'}, #ref{name = xdata, min = 0, max = 1}, #ref{name = adhoc_command_notes, label = '$notes'}]}). -xml(db_result, #elem{name = <<"db:result">>, xmlns = <<"jabber:client">>, result = {db_result, '$from', '$to', '$type', '$key', '$_els'}, cdata = #cdata{default = <<"">>, label = '$key'}, attrs = [#attr{name = <<"from">>, required = true, dec = {nameprep, []}, enc = {nameprep, []}}, #attr{name = <<"to">>, required = true, dec = {nameprep, []}, enc = {nameprep, []}}, #attr{name = <<"type">>, dec = {dec_enum, [[valid, invalid, error]]}, enc = {enc_enum, []}}]}). -xml(db_verify, #elem{name = <<"db:verify">>, xmlns = <<"jabber:client">>, result = {db_verify, '$from', '$to', '$id', '$type', '$key', '$_els'}, cdata = #cdata{default = <<"">>, label = '$key'}, attrs = [#attr{name = <<"from">>, required = true, dec = {nameprep, []}, enc = {nameprep, []}}, #attr{name = <<"to">>, required = true, dec = {nameprep, []}, enc = {nameprep, []}}, #attr{name = <<"id">>, required = true}, #attr{name = <<"type">>, dec = {dec_enum, [[valid, invalid, error]]}, enc = {enc_enum, []}}]}). -xml(handshake, #elem{name = <<"handshake">>, xmlns = <<"jabber:client">>, result = {handshake, '$data'}, cdata = #cdata{default = <<"">>, label = '$data'}}). -xml(stream_start, #elem{name = <<"stream:stream">>, xmlns = [<<"jabber:client">>, <<"jabber:server">>, <<"jabber:component:accept">>], result = {stream_start, '$from', '$to', '$id', '$version', '$xmlns', '$stream_xmlns', '$db_xmlns', '$lang'}, attrs = [#attr{name = <<"from">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"to">>, dec = {dec_jid, []}, enc = {enc_jid, []}}, #attr{name = <<"xmlns">>}, #attr{name = <<"xmlns:stream">>, label = '$stream_xmlns', default = <<"">>}, #attr{name = <<"xmlns:db">>, label = '$db_xmlns', default = <<"">>}, #attr{name = <<"xml:lang">>, label = '$lang', default = <<"">>}, #attr{name = <<"version">>, default = <<"">>}, #attr{name = <<"id">>, default = <<"">>}]}). -xml(bob_data, #elem{name = <<"data">>, xmlns = <<"urn:xmpp:bob">>, result = {bob_data, '$cid', '$max-age', '$type', '$data'}, attrs = [#attr{name = <<"cid">>, required = true}, #attr{name = <<"max-age">>, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"type">>}], cdata = #cdata{label = '$data', default = <<"">>, dec = {base64, decode, []}, enc = {base64, encode, []}}}). -xml(captcha, #elem{name = <<"captcha">>, xmlns = <<"urn:xmpp:captcha">>, result = {xcaptcha, '$xdata'}, refs = [#ref{name = xdata, min = 1, max = 1}]}). -xml(media_uri, #elem{name = <<"uri">>, xmlns = <<"urn:xmpp:media-element">>, result = {media_uri, '$type', '$uri'}, attrs = [#attr{name = <<"type">>, required = true}], cdata = #cdata{label = '$uri', default = <<"">>}}). -xml(media, #elem{name = <<"media">>, xmlns = <<"urn:xmpp:media-element">>, result = {media, '$height', '$width', '$uri'}, attrs = [#attr{name = <<"height">>, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"width">>, dec = {dec_int, [0, inifinity]}, enc = {enc_int, []}}], refs = [#ref{name = media_uri, label = '$uri'}]}). -xml(oob_url, #elem{name = <<"url">>, xmlns = <<"jabber:x:oob">>, result = '$cdata', cdata = #cdata{required = true}}). -xml(oob_desc, #elem{name = <<"desc">>, xmlns = <<"jabber:x:oob">>, result = '$cdata', cdata = #cdata{default = <<"">>}}). -xml(oob_x, #elem{name = <<"x">>, xmlns = <<"jabber:x:oob">>, result = {oob_x, '$url', '$desc', '$sid'}, attrs = [#attr{name = <<"sid">>, default = <<"">>}], refs = [#ref{name = oob_url, min = 1, max = 1, label = '$url'}, #ref{name = oob_desc, default = <<"">>, min = 0, max = 1, label = '$desc'}]}). -xml(sic_ip, #elem{name = <<"ip">>, xmlns = [<<"urn:xmpp:sic:0">>, <<"urn:xmpp:sic:1">>], result = '$cdata', cdata = #cdata{required = true, dec = {dec_ip, []}, enc = {enc_ip, []}}}). -xml(sip_port, #elem{name = <<"port">>, xmlns = <<"urn:xmpp:sic:1">>, result = '$cdata', cdata = #cdata{required = true, dec = {dec_int, [0, 65535]}, enc = {enc_int, []}}}). -xml(sic, #elem{name = <<"address">>, xmlns = [<<"urn:xmpp:sic:0">>, <<"urn:xmpp:sic:1">>], result = {sic, '$ip', '$port', '$xmlns'}, attrs = [#attr{name = <<"xmlns">>}], refs = [#ref{name = sic_ip, min = 0, max = 1, label = '$ip'}, #ref{name = sip_port, min = 0, max = 1, label = '$port'}]}). -xml(upload_filename, #elem{name = <<"filename">>, xmlns = [<<"urn:xmpp:http:upload">>, <<"eu:siacs:conversations:http:upload">>], result = '$cdata', cdata = #cdata{required = true}}). -xml(upload_size, #elem{name = <<"size">>, xmlns = [<<"urn:xmpp:http:upload">>, <<"eu:siacs:conversations:http:upload">>], result = '$cdata', cdata = #cdata{required = true, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}}). -xml(upload_content_type, #elem{name = <<"content-type">>, xmlns = [<<"urn:xmpp:http:upload">>, <<"eu:siacs:conversations:http:upload">>], result = '$cdata', cdata = #cdata{default = <<"">>}}). -xml(upload_request, #elem{name = <<"request">>, xmlns = [<<"urn:xmpp:http:upload">>, <<"eu:siacs:conversations:http:upload">>], result = {upload_request, '$filename', '$size', '$content-type', '$xmlns'}, attrs = [#attr{name = <<"xmlns">>}], refs = [#ref{name = upload_filename, label = '$filename', min = 1, max = 1}, #ref{name = upload_size, label = '$size', min = 1, max = 1}, #ref{name = upload_content_type, label = '$content-type', min = 0, max = 1, default = <<"">>}]}). -xml(upload_get, #elem{name = <<"get">>, xmlns = [<<"urn:xmpp:http:upload">>, <<"eu:siacs:conversations:http:upload">>], result = '$cdata', cdata = #cdata{required = true}}). -xml(upload_put, #elem{name = <<"put">>, xmlns = [<<"urn:xmpp:http:upload">>, <<"eu:siacs:conversations:http:upload">>], result = '$cdata', cdata = #cdata{required = true}}). -xml(upload_slot, #elem{name = <<"slot">>, xmlns = [<<"urn:xmpp:http:upload">>, <<"eu:siacs:conversations:http:upload">>], result = {upload_slot, '$get', '$put', '$xmlns'}, attrs = [#attr{name = <<"xmlns">>}], refs = [#ref{name = upload_get, min = 0, max = 1, label = '$get'}, #ref{name = upload_put, min = 0, max = 1, label = '$put'}]}). -xml(thumbnail, #elem{name = <<"thumbnail">>, xmlns = <<"urn:xmpp:thumbs:1">>, result = {thumbnail, '$uri', '$media-type', '$width', '$height'}, attrs = [#attr{name = <<"uri">>, required = true}, #attr{name = <<"media-type">>, default = <<"">>}, #attr{name = <<"width">>, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}, #attr{name = <<"height">>, dec = {dec_int, [0, infinity]}, enc = {enc_int, []}}]}). -spec dec_tzo(_) -> {integer(), integer()}. dec_tzo(Val) -> [H1, M1] = str:tokens(Val, <<":">>), H = jlib:binary_to_integer(H1), M = jlib:binary_to_integer(M1), if H >= -12, H =< 12, M >= 0, M < 60 -> {H, M} end. enc_tzo({H, M}) -> Sign = if H >= 0 -> <<>>; true -> <<"-">> end, list_to_binary([Sign, io_lib:format("~2..0w:~2..0w", [H, M])]). -spec dec_utc(_) -> erlang:timestamp(). dec_utc(Val) -> {_, _, _} = jlib:datetime_string_to_timestamp(Val). enc_utc(Val) -> jlib:now_to_utc_string(Val). -spec dec_jid(_) -> jid:jid(). dec_jid(Val) -> case jid:from_string(Val) of error -> erlang:error(badarg); J -> J end. enc_jid(J) -> jid:to_string(J). -spec resourceprep(_) -> binary(). resourceprep(R) -> case jid:resourceprep(R) of error -> erlang:error(badarg); R1 -> R1 end. -spec nameprep(_) -> binary(). nameprep(S) -> case jid:nameprep(S) of error -> erlang:error(badarg); S1 -> S1 end. -spec dec_bool(_) -> boolean(). dec_bool(<<"false">>) -> false; dec_bool(<<"0">>) -> false; dec_bool(<<"true">>) -> true; dec_bool(<<"1">>) -> true. enc_bool(false) -> <<"false">>; enc_bool(true) -> <<"true">>. join([], _Sep) -> <<>>; join([H | T], Sep) -> <> || X <- T >>)/binary>>. -spec dec_ip(_) -> inet:ip_address(). dec_ip(S) -> {ok, Addr} = inet_parse:address(binary_to_list(S)), Addr. enc_ip({0,0,0,0,0,16#ffff,A,B}) -> enc_ip({(A bsr 8) band 16#ff, A band 16#ff, (B bsr 8) band 16#ff, B band 16#ff}); enc_ip(Addr) -> list_to_binary(inet_parse:ntoa(Addr)). -spec re:split(_, _) -> [binary()]. -spec base64:decode(_) -> binary(). -spec dec_host_port(_) -> binary() | inet:ip_address() | {binary() | inet:ip_address(), non_neg_integer()}. dec_host_port(<<$[, T/binary>>) -> [IP, <<$:, Port/binary>>] = binary:split(T, <<$]>>), {dec_ip(IP), dec_int(Port, 0, 65535)}; dec_host_port(S) -> case binary:split(S, <<$:>>) of [S] -> try dec_ip(S) catch _:_ -> S end; [S, P] -> {try dec_ip(S) catch _:_ -> S end, dec_int(P, 0, 65535)} end. enc_host_port(Host) when is_binary(Host) -> Host; enc_host_port({{_,_,_,_,_,_,_,_} = IPv6, Port}) -> enc_host_port({<<$[, (enc_ip(IPv6))/binary, $]>>, Port}); enc_host_port({{_,_,_,_} = IPv4, Port}) -> enc_host_port({enc_ip(IPv4), Port}); enc_host_port({Host, Port}) -> <>; enc_host_port(Addr) -> enc_ip(Addr). %% Local Variables: %% mode: erlang %% End: %% vim: set filetype=erlang tabstop=8: