From dae3a94670f31f61bcc02383d292c96490294aee Mon Sep 17 00:00:00 2001 From: Ivan Dyachkov Date: Tue, 30 Jan 2024 18:57:50 +0100 Subject: [PATCH 01/11] chore: 5.5.0-rc.1 --- apps/emqx/include/emqx_release.hrl | 4 ++-- deploy/charts/emqx-enterprise/Chart.yaml | 4 ++-- deploy/charts/emqx/Chart.yaml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/emqx/include/emqx_release.hrl b/apps/emqx/include/emqx_release.hrl index 6d9a1c22b..18b7fa24a 100644 --- a/apps/emqx/include/emqx_release.hrl +++ b/apps/emqx/include/emqx_release.hrl @@ -32,10 +32,10 @@ %% `apps/emqx/src/bpapi/README.md' %% Opensource edition --define(EMQX_RELEASE_CE, "5.5.0"). +-define(EMQX_RELEASE_CE, "5.5.0-rc.1"). %% Enterprise edition --define(EMQX_RELEASE_EE, "5.5.0-alpha.1"). +-define(EMQX_RELEASE_EE, "5.5.0-rc.1"). %% The HTTP API version -define(EMQX_API_VERSION, "5.0"). diff --git a/deploy/charts/emqx-enterprise/Chart.yaml b/deploy/charts/emqx-enterprise/Chart.yaml index 59d92aa02..751cf40f1 100644 --- a/deploy/charts/emqx-enterprise/Chart.yaml +++ b/deploy/charts/emqx-enterprise/Chart.yaml @@ -14,8 +14,8 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. -version: 5.5.0-alpha.1 +version: 5.5.0-rc.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. -appVersion: 5.5.0-alpha.1 +appVersion: 5.5.0-rc.1 diff --git a/deploy/charts/emqx/Chart.yaml b/deploy/charts/emqx/Chart.yaml index 41f0b37b6..11fd3a645 100644 --- a/deploy/charts/emqx/Chart.yaml +++ b/deploy/charts/emqx/Chart.yaml @@ -14,8 +14,8 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. -version: 5.5.0 +version: 5.5.0-rc.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. -appVersion: 5.5.0 +appVersion: 5.5.0-rc.1 From 4d61975f2c2267c9546de824cbbd2f11e2e53a64 Mon Sep 17 00:00:00 2001 From: YuShifan <894402575bt@gmail.com> Date: Tue, 30 Jan 2024 22:45:37 +0800 Subject: [PATCH 02/11] chore(dashboard): bump dashboard version to v1.7.0 & e1.5.0 --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index cc6c74b70..694cb75c0 100644 --- a/Makefile +++ b/Makefile @@ -20,8 +20,8 @@ endif # Dashboard version # from https://github.com/emqx/emqx-dashboard5 -export EMQX_DASHBOARD_VERSION ?= v1.6.1 -export EMQX_EE_DASHBOARD_VERSION ?= e1.5.0-beta.10 +export EMQX_DASHBOARD_VERSION ?= v1.7.0 +export EMQX_EE_DASHBOARD_VERSION ?= e1.5.0 PROFILE ?= emqx REL_PROFILES := emqx emqx-enterprise From 92ef848b306d418cf0619965d5afdbec354dcb9a Mon Sep 17 00:00:00 2001 From: Ivan Dyachkov Date: Tue, 30 Jan 2024 20:38:46 +0100 Subject: [PATCH 03/11] ci: fix publish artifacts --- .github/workflows/build_packages.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_packages.yaml b/.github/workflows/build_packages.yaml index abde2672e..b48e47cd0 100644 --- a/.github/workflows/build_packages.yaml +++ b/.github/workflows/build_packages.yaml @@ -215,6 +215,7 @@ jobs: with: pattern: ${{ matrix.profile }}-* path: packages/${{ matrix.profile }} + merge-multiple: true - name: install dos2unix run: sudo apt-get update -y && sudo apt install -y dos2unix - name: get packages From 9aad7997ca641b1e35742f27424a98f3f0fd67ff Mon Sep 17 00:00:00 2001 From: JianBo He Date: Wed, 31 Jan 2024 17:49:46 +0800 Subject: [PATCH 04/11] chore: compatible the contet-type sytanx --- .../src/emqx_authn/emqx_authn_user_import_api.erl | 4 ++-- .../test/emqx_authn_api_mnesia_SUITE.erl | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/emqx_auth/src/emqx_authn/emqx_authn_user_import_api.erl b/apps/emqx_auth/src/emqx_authn/emqx_authn_user_import_api.erl index 2b2ccecac..db6bbccda 100644 --- a/apps/emqx_auth/src/emqx_authn/emqx_authn_user_import_api.erl +++ b/apps/emqx_auth/src/emqx_authn/emqx_authn_user_import_api.erl @@ -126,7 +126,7 @@ authenticator_import_users( PasswordType = password_type(Req), Result = case maps:get(<<"content-type">>, Headers, undefined) of - <<"application/json">> -> + <<"application/json", _/binary>> -> emqx_authn_chains:import_users( ?GLOBAL, AuthenticatorID, {PasswordType, prepared_user_list, Body} ); @@ -172,7 +172,7 @@ listener_authenticator_import_users( ) end, case maps:get(<<"content-type">>, Headers, undefined) of - <<"application/json">> -> + <<"application/json", _/binary>> -> DoImport(prepared_user_list, Body); _ -> case Body of diff --git a/apps/emqx_auth_mnesia/test/emqx_authn_api_mnesia_SUITE.erl b/apps/emqx_auth_mnesia/test/emqx_authn_api_mnesia_SUITE.erl index 71da75c1b..660c8c1cc 100644 --- a/apps/emqx_auth_mnesia/test/emqx_authn_api_mnesia_SUITE.erl +++ b/apps/emqx_auth_mnesia/test/emqx_authn_api_mnesia_SUITE.erl @@ -342,6 +342,9 @@ test_authenticator_import_users(PathPrefix) -> {ok, 204, _} = request(post, ImportUri ++ "?type=hash", emqx_utils_json:decode(JSONData)), {ok, JSONData1} = file:read_file(filename:join([Dir, <<"data/user-credentials-plain.json">>])), {ok, 204, _} = request(post, ImportUri ++ "?type=plain", emqx_utils_json:decode(JSONData1)), + + %% test application/json; charset=utf-8 + {ok, 204, _} = request_with_charset(post, ImportUri ++ "?type=plain", JSONData1), ok. %%------------------------------------------------------------------------------ @@ -350,3 +353,9 @@ test_authenticator_import_users(PathPrefix) -> request(Method, Url) -> request(Method, Url, []). + +request_with_charset(Method, Url, Body) -> + Headers = [emqx_mgmt_api_test_util:auth_header_()], + Opts = #{compatible_mode => true, httpc_req_opts => [{body_format, binary}]}, + Request = {Url, Headers, "application/json; charset=utf-8", Body}, + emqx_mgmt_api_test_util:do_request_api(Method, Request, Opts). From ee305f2dd05d8e4ea3833e2a6e34acd9626c4f5d Mon Sep 17 00:00:00 2001 From: Ivan Dyachkov Date: Wed, 31 Jan 2024 16:54:50 +0100 Subject: [PATCH 05/11] ci: use OTP 25.3.2-2 for building docker due to segfault on 26 https://github.com/erlang/otp/issues/8051 --- .github/workflows/_push-entrypoint.yaml | 3 ++- .github/workflows/build_and_push_docker_images.yaml | 8 ++++---- build | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/_push-entrypoint.yaml b/.github/workflows/_push-entrypoint.yaml index a6d0e178e..486335534 100644 --- a/.github/workflows/_push-entrypoint.yaml +++ b/.github/workflows/_push-entrypoint.yaml @@ -107,7 +107,8 @@ jobs: version: ${{ needs.prepare.outputs.version }} publish: ${{ needs.prepare.outputs.release }} latest: ${{ needs.prepare.outputs.latest }} - otp_vsn: ${{ needs.prepare.outputs.otp_vsn }} + # TODO: revert this back to needs.prepare.outputs.otp_vsn when OTP 26 bug is fixed + otp_vsn: 25.3.2 elixir_vsn: ${{ needs.prepare.outputs.elixir_vsn }} builder_vsn: ${{ needs.prepare.outputs.builder_vsn }} secrets: inherit diff --git a/.github/workflows/build_and_push_docker_images.yaml b/.github/workflows/build_and_push_docker_images.yaml index 49416db92..1ab553840 100644 --- a/.github/workflows/build_and_push_docker_images.yaml +++ b/.github/workflows/build_and_push_docker_images.yaml @@ -58,7 +58,7 @@ on: otp_vsn: required: false type: string - default: '26.2.1-2' + default: '25.3.2-2' elixir_vsn: required: false type: string @@ -127,8 +127,8 @@ jobs: EMQX_RUNNER: 'debian:11-slim' EMQX_DOCKERFILE: 'deploy/docker/Dockerfile' PKG_VSN: ${{ inputs.version }} - EMQX_BUILDER_VSN: ${{ inputs.builder_vsn }} - EMQX_OTP_VSN: ${{ inputs.otp_vsn }} - EMQX_ELIXIR_VSN: ${{ inputs.elixir_vsn }} + EMQX_BUILDER_VERSION: ${{ inputs.builder_vsn }} + EMQX_BUILDER_OTP: ${{ inputs.otp_vsn }} + EMQX_BUILDER_ELIXIR: ${{ inputs.elixir_vsn }} run: | ./build ${PROFILE} docker diff --git a/build b/build index eca2d734b..4a5e01f7e 100755 --- a/build +++ b/build @@ -389,7 +389,7 @@ docker_cleanup() { make_docker() { local EMQX_BUILDER_VERSION="${EMQX_BUILDER_VERSION:-5.3-2}" local EMQX_BUILDER_PLATFORM="${EMQX_BUILDER_PLATFORM:-debian11}" - local EMQX_BUILDER_OTP="${EMQX_BUILDER_OTP:-26.2.1-2}" + local EMQX_BUILDER_OTP="${EMQX_BUILDER_OTP:-25.3.2-2}" local EMQX_BUILDER_ELIXIR="${EMQX_BUILDER_ELIXIR:-1.15.7}" local EMQX_BUILDER=${EMQX_BUILDER:-ghcr.io/emqx/emqx-builder/${EMQX_BUILDER_VERSION}:${EMQX_BUILDER_ELIXIR}-${EMQX_BUILDER_OTP}-${EMQX_BUILDER_PLATFORM}} local EMQX_RUNNER="${EMQX_RUNNER:-${EMQX_DEFAULT_RUNNER}}" From f1c7e716ce2b27b3f9e90b15f3832b1958d5928f Mon Sep 17 00:00:00 2001 From: Ivan Dyachkov Date: Wed, 31 Jan 2024 17:01:16 +0100 Subject: [PATCH 06/11] chore: 5.5.0-rc.2 --- apps/emqx/include/emqx_release.hrl | 4 ++-- deploy/charts/emqx-enterprise/Chart.yaml | 4 ++-- deploy/charts/emqx/Chart.yaml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/emqx/include/emqx_release.hrl b/apps/emqx/include/emqx_release.hrl index 18b7fa24a..63b87f5d4 100644 --- a/apps/emqx/include/emqx_release.hrl +++ b/apps/emqx/include/emqx_release.hrl @@ -32,10 +32,10 @@ %% `apps/emqx/src/bpapi/README.md' %% Opensource edition --define(EMQX_RELEASE_CE, "5.5.0-rc.1"). +-define(EMQX_RELEASE_CE, "5.5.0-rc.2"). %% Enterprise edition --define(EMQX_RELEASE_EE, "5.5.0-rc.1"). +-define(EMQX_RELEASE_EE, "5.5.0-rc.2"). %% The HTTP API version -define(EMQX_API_VERSION, "5.0"). diff --git a/deploy/charts/emqx-enterprise/Chart.yaml b/deploy/charts/emqx-enterprise/Chart.yaml index 751cf40f1..3610a815a 100644 --- a/deploy/charts/emqx-enterprise/Chart.yaml +++ b/deploy/charts/emqx-enterprise/Chart.yaml @@ -14,8 +14,8 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. -version: 5.5.0-rc.1 +version: 5.5.0-rc.2 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. -appVersion: 5.5.0-rc.1 +appVersion: 5.5.0-rc.2 diff --git a/deploy/charts/emqx/Chart.yaml b/deploy/charts/emqx/Chart.yaml index 11fd3a645..679456299 100644 --- a/deploy/charts/emqx/Chart.yaml +++ b/deploy/charts/emqx/Chart.yaml @@ -14,8 +14,8 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. -version: 5.5.0-rc.1 +version: 5.5.0-rc.2 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. -appVersion: 5.5.0-rc.1 +appVersion: 5.5.0-rc.2 From 1501f5b89d24d2e3f875add4dc26b3d48056e861 Mon Sep 17 00:00:00 2001 From: Ivan Dyachkov Date: Wed, 31 Jan 2024 18:02:31 +0100 Subject: [PATCH 07/11] ci: fix otp version --- .github/workflows/_push-entrypoint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/_push-entrypoint.yaml b/.github/workflows/_push-entrypoint.yaml index 486335534..7b309e592 100644 --- a/.github/workflows/_push-entrypoint.yaml +++ b/.github/workflows/_push-entrypoint.yaml @@ -108,7 +108,7 @@ jobs: publish: ${{ needs.prepare.outputs.release }} latest: ${{ needs.prepare.outputs.latest }} # TODO: revert this back to needs.prepare.outputs.otp_vsn when OTP 26 bug is fixed - otp_vsn: 25.3.2 + otp_vsn: 25.3.2-2 elixir_vsn: ${{ needs.prepare.outputs.elixir_vsn }} builder_vsn: ${{ needs.prepare.outputs.builder_vsn }} secrets: inherit From dd490de2e123817ff199417296f80f506f3da604 Mon Sep 17 00:00:00 2001 From: Ivan Dyachkov Date: Thu, 1 Feb 2024 10:35:17 +0100 Subject: [PATCH 08/11] chore: emqx 5.5.0 --- apps/emqx/include/emqx_release.hrl | 4 +- .../test/emqx_static_checks_data/5.5.bpapi2 | 1 + changes/e5.5.0.en.md | 125 ++++++++++++++++++ changes/v5.5.0.en.md | 100 ++++++++++++++ deploy/charts/emqx-enterprise/Chart.yaml | 4 +- deploy/charts/emqx/Chart.yaml | 4 +- scripts/rel/cut.sh | 2 +- 7 files changed, 233 insertions(+), 7 deletions(-) create mode 100644 apps/emqx/test/emqx_static_checks_data/5.5.bpapi2 create mode 100644 changes/e5.5.0.en.md create mode 100644 changes/v5.5.0.en.md diff --git a/apps/emqx/include/emqx_release.hrl b/apps/emqx/include/emqx_release.hrl index 63b87f5d4..7886ec786 100644 --- a/apps/emqx/include/emqx_release.hrl +++ b/apps/emqx/include/emqx_release.hrl @@ -32,10 +32,10 @@ %% `apps/emqx/src/bpapi/README.md' %% Opensource edition --define(EMQX_RELEASE_CE, "5.5.0-rc.2"). +-define(EMQX_RELEASE_CE, "5.5.0"). %% Enterprise edition --define(EMQX_RELEASE_EE, "5.5.0-rc.2"). +-define(EMQX_RELEASE_EE, "5.5.0"). %% The HTTP API version -define(EMQX_API_VERSION, "5.0"). diff --git a/apps/emqx/test/emqx_static_checks_data/5.5.bpapi2 b/apps/emqx/test/emqx_static_checks_data/5.5.bpapi2 new file mode 100644 index 000000000..6192442f1 --- /dev/null +++ b/apps/emqx/test/emqx_static_checks_data/5.5.bpapi2 @@ -0,0 +1 @@ +#{api => #{{emqx_node_rebalance_api,1} => #{calls => [{{emqx_node_rebalance_api_proto_v1,node_rebalance_stop,['Node']},{emqx_node_rebalance,stop,[]}},{{emqx_node_rebalance_api_proto_v1,node_rebalance_start,['Node','Opts']},{emqx_node_rebalance,start,['Opts']}},{{emqx_node_rebalance_api_proto_v1,node_rebalance_evacuation_stop,['Node']},{emqx_node_rebalance_evacuation,stop,[]}},{{emqx_node_rebalance_api_proto_v1,node_rebalance_evacuation_start,['Node','Opts']},{emqx_node_rebalance_evacuation,start,['Opts']}}],casts => []},{emqx_bridge,1} => #{calls => [{{emqx_bridge_proto_v1,lookup_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,lookup_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v1,stop_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v1,restart_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v1,stop_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v1,restart_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v1,list_bridges,['Node']},{emqx_bridge,list,[]}}],casts => []},{emqx_topic_metrics,1} => #{calls => [{{emqx_topic_metrics_proto_v1,reset,['Nodes','Topic']},{emqx_topic_metrics,reset,['Topic']}},{{emqx_topic_metrics_proto_v1,reset,['Nodes']},{emqx_topic_metrics,reset,[]}},{{emqx_topic_metrics_proto_v1,metrics,['Nodes','Topic']},{emqx_topic_metrics,metrics,['Topic']}},{{emqx_topic_metrics_proto_v1,metrics,['Nodes']},{emqx_topic_metrics,metrics,[]}}],casts => []},{emqx_license,1} => #{calls => [{{emqx_license_proto_v1,remote_connection_counts,['Nodes']},{emqx_license_resources,local_connection_count,[]}}],casts => []},{emqx_persistent_session_ds,1} => #{calls => [{{emqx_persistent_session_ds_proto_v1,close_all_iterators,['Nodes','DSSessionID']},{emqx_persistent_session_ds,do_ensure_all_iterators_closed,['DSSessionID']}},{{emqx_persistent_session_ds_proto_v1,close_iterator,['Nodes','IteratorID']},{emqx_persistent_session_ds,do_ensure_iterator_closed,['IteratorID']}},{{emqx_persistent_session_ds_proto_v1,open_iterator,['Nodes','TopicFilter','StartMS','IteratorID']},{emqx_persistent_session_ds,do_open_iterator,['TopicFilter','StartMS','IteratorID']}}],casts => []},{emqx,1} => #{calls => [{{emqx_proto_v1,delete_all_deactivated_alarms,['Node']},{emqx_alarm,delete_all_deactivated_alarms,[]}},{{emqx_proto_v1,deactivate_alarm,['Node','Name']},{emqx_alarm,deactivate,['Name']}},{{emqx_proto_v1,clean_pem_cache,['Node']},{ssl_pem_cache,clear,[]}},{{emqx_proto_v1,clean_authz_cache,['Node']},{emqx_authz_cache,drain_cache,[]}},{{emqx_proto_v1,clean_authz_cache,['Node','ClientId']},{emqx_authz_cache,drain_cache,['ClientId']}},{{emqx_proto_v1,get_metrics,['Node']},{emqx_metrics,all,[]}},{{emqx_proto_v1,get_stats,['Node']},{emqx_stats,getstats,[]}},{{emqx_proto_v1,get_alarms,['Node','Type']},{emqx_alarm,get_alarms,['Type']}},{{emqx_proto_v1,is_running,['Node']},{emqx,is_running,[]}}],casts => []},{emqx_mgmt_trace,1} => #{calls => [{{emqx_mgmt_trace_proto_v1,read_trace_file,['Node','Name','Position','Limit']},{emqx_mgmt_api_trace,read_trace_file,['Name','Position','Limit']}},{{emqx_mgmt_trace_proto_v1,trace_file,['Nodes','File']},{emqx_trace,trace_file,['File']}},{{emqx_mgmt_trace_proto_v1,get_trace_size,['Nodes']},{emqx_mgmt_api_trace,get_trace_size,[]}}],casts => []},{emqx_license,2} => #{calls => [{{emqx_license_proto_v2,remote_connection_counts,['Nodes']},{emqx_license_resources,local_connection_count,[]}}],casts => []},{emqx_management,4} => #{calls => [{{emqx_management_proto_v4,kickout_clients,['Node','ClientIds']},{emqx_mgmt,do_kickout_clients,['ClientIds']}},{{emqx_management_proto_v4,get_full_config,['Node']},{emqx_mgmt_api_configs,get_full_config,[]}},{{emqx_management_proto_v4,call_client,['Node','ClientId','Req']},{emqx_mgmt,do_call_client,['ClientId','Req']}},{{emqx_management_proto_v4,unsubscribe,['Node','ClientId','Topic']},{emqx_mgmt,do_unsubscribe,['ClientId','Topic']}},{{emqx_management_proto_v4,subscribe,['Node','ClientId','TopicTables']},{emqx_mgmt,do_subscribe,['ClientId','TopicTables']}},{{emqx_management_proto_v4,list_listeners,['Node']},{emqx_mgmt_api_listeners,do_list_listeners,[]}},{{emqx_management_proto_v4,list_subscriptions,['Node']},{emqx_mgmt,do_list_subscriptions,[]}},{{emqx_management_proto_v4,broker_info,['Nodes']},{emqx_mgmt,broker_info,[]}},{{emqx_management_proto_v4,node_info,['Nodes']},{emqx_mgmt,node_info,[]}},{{emqx_management_proto_v4,unsubscribe_batch,['Node','ClientId','Topics']},{emqx_mgmt,do_unsubscribe_batch,['ClientId','Topics']}}],casts => []},{emqx_management,1} => #{calls => [{{emqx_management_proto_v1,get_full_config,['Node']},{emqx_mgmt_api_configs,get_full_config,[]}},{{emqx_management_proto_v1,call_client,['Node','ClientId','Req']},{emqx_mgmt,do_call_client,['ClientId','Req']}},{{emqx_management_proto_v1,unsubscribe,['Node','ClientId','Topic']},{emqx_mgmt,do_unsubscribe,['ClientId','Topic']}},{{emqx_management_proto_v1,subscribe,['Node','ClientId','TopicTables']},{emqx_mgmt,do_subscribe,['ClientId','TopicTables']}},{{emqx_management_proto_v1,list_listeners,['Node']},{emqx_mgmt_api_listeners,do_list_listeners,[]}},{{emqx_management_proto_v1,list_subscriptions,['Node']},{emqx_mgmt,do_list_subscriptions,[]}},{{emqx_management_proto_v1,broker_info,['Node']},{emqx_mgmt,broker_info,[]}},{{emqx_management_proto_v1,node_info,['Node']},{emqx_mgmt,node_info,[]}}],casts => []},{emqx_management,2} => #{calls => [{{emqx_management_proto_v2,get_full_config,['Node']},{emqx_mgmt_api_configs,get_full_config,[]}},{{emqx_management_proto_v2,call_client,['Node','ClientId','Req']},{emqx_mgmt,do_call_client,['ClientId','Req']}},{{emqx_management_proto_v2,unsubscribe,['Node','ClientId','Topic']},{emqx_mgmt,do_unsubscribe,['ClientId','Topic']}},{{emqx_management_proto_v2,subscribe,['Node','ClientId','TopicTables']},{emqx_mgmt,do_subscribe,['ClientId','TopicTables']}},{{emqx_management_proto_v2,list_listeners,['Node']},{emqx_mgmt_api_listeners,do_list_listeners,[]}},{{emqx_management_proto_v2,list_subscriptions,['Node']},{emqx_mgmt,do_list_subscriptions,[]}},{{emqx_management_proto_v2,broker_info,['Node']},{emqx_mgmt,broker_info,[]}},{{emqx_management_proto_v2,node_info,['Node']},{emqx_mgmt,node_info,[]}},{{emqx_management_proto_v2,unsubscribe_batch,['Node','ClientId','Topics']},{emqx_mgmt,do_unsubscribe_batch,['ClientId','Topics']}}],casts => []},{emqx_bridge,4} => #{calls => [{{emqx_bridge_proto_v4,get_metrics_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,get_metrics_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,lookup_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,lookup_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,stop_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,start_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,restart_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,stop_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,start_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,restart_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,list_bridges_on_nodes,['Nodes']},{emqx_bridge,list,[]}}],casts => []},{emqx_cm,2} => #{calls => [{{emqx_cm_proto_v2,kick_session,['Action','ClientId','ChanPid']},{emqx_cm,do_kick_session,['Action','ClientId','ChanPid']}},{{emqx_cm_proto_v2,takeover_finish,['ConnMod','ChanPid']},{emqx_cm,takeover_finish,['ConnMod','ChanPid']}},{{emqx_cm_proto_v2,takeover_session,['ClientId','ChanPid']},{emqx_cm,takeover_session,['ClientId','ChanPid']}},{{emqx_cm_proto_v2,get_chann_conn_mod,['ClientId','ChanPid']},{emqx_cm,do_get_chann_conn_mod,['ClientId','ChanPid']}},{{emqx_cm_proto_v2,get_chan_info,['ClientId','ChanPid']},{emqx_cm,do_get_chan_info,['ClientId','ChanPid']}},{{emqx_cm_proto_v2,get_chan_stats,['ClientId','ChanPid']},{emqx_cm,do_get_chan_stats,['ClientId','ChanPid']}},{{emqx_cm_proto_v2,lookup_client,['Node','Key']},{emqx_cm,lookup_client,['Key']}},{{emqx_cm_proto_v2,kickout_client,['Node','ClientId']},{emqx_cm,kick_session,['ClientId']}}],casts => []},{emqx_telemetry,1} => #{calls => [{{emqx_telemetry_proto_v1,get_cluster_uuid,['Node']},{emqx_telemetry,get_cluster_uuid,[]}},{{emqx_telemetry_proto_v1,get_node_uuid,['Node']},{emqx_telemetry,get_node_uuid,[]}}],casts => []},{emqx_dashboard,1} => #{calls => [{{emqx_dashboard_proto_v1,current_rate,['Node']},{emqx_dashboard_monitor,current_rate,['Node']}},{{emqx_dashboard_proto_v1,do_sample,['Node','Latest']},{emqx_dashboard_monitor,do_sample,['Node','Latest']}}],casts => []},{emqx_node_rebalance_status,2} => #{calls => [{{emqx_node_rebalance_status_proto_v2,purge_status,['Nodes']},{emqx_node_rebalance_status,purge_status,[]}},{{emqx_node_rebalance_status_proto_v2,evacuation_status,['Nodes']},{emqx_node_rebalance_status,evacuation_status,[]}},{{emqx_node_rebalance_status_proto_v2,rebalance_status,['Nodes']},{emqx_node_rebalance_status,rebalance_status,[]}},{{emqx_node_rebalance_status_proto_v2,local_status,['Node']},{emqx_node_rebalance_status,local_status,[]}}],casts => []},{emqx_connector,1} => #{calls => [{{emqx_connector_proto_v1,start_connectors_to_all_nodes,['Nodes','ConnectorType','ConnectorName']},{emqx_connector_resource,start,['ConnectorType','ConnectorName']}},{{emqx_connector_proto_v1,start_connector_to_node,['Node','ConnectorType','ConnectorName']},{emqx_connector_resource,start,['ConnectorType','ConnectorName']}},{{emqx_connector_proto_v1,lookup_from_all_nodes,['Nodes','ConnectorType','ConnectorName']},{emqx_connector_api,lookup_from_local_node,['ConnectorType','ConnectorName']}},{{emqx_connector_proto_v1,list_connectors_on_nodes,['Nodes']},{emqx_connector,list,[]}}],casts => []},{emqx_broker,1} => #{calls => [{{emqx_broker_proto_v1,list_subscriptions_via_topic,['Node','Topic']},{emqx_broker,subscriptions_via_topic,['Topic']}},{{emqx_broker_proto_v1,list_client_subscriptions,['Node','ClientId']},{emqx_broker,subscriptions,['ClientId']}},{{emqx_broker_proto_v1,forward,['Node','Topic','Delivery']},{emqx_broker,dispatch,['Topic','Delivery']}}],casts => [{{emqx_broker_proto_v1,forward_async,['Node','Topic','Delivery']},{emqx_broker,dispatch,['Topic','Delivery']}}]},{emqx_gateway_http,1} => #{calls => [{{emqx_gateway_http_proto_v1,get_cluster_status,['Nodes','GwName']},{emqx_gateway_http,gateway_status,['GwName']}}],casts => []},{emqx_bridge,6} => #{calls => [{{emqx_bridge_proto_v6,v2_start_bridge_on_node_v6,['Node','ConfRootKey','BridgeType','BridgeName']},{emqx_bridge_v2,start,['ConfRootKey','BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,v2_start_bridge_on_all_nodes_v6,['Nodes','ConfRootKey','BridgeType','BridgeName']},{emqx_bridge_v2,start,['ConfRootKey','BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,v2_get_metrics_from_all_nodes_v6,['Nodes','ConfRootKey','ActionType','ActionName']},{emqx_bridge_v2_api,get_metrics_from_local_node_v6,['ConfRootKey','ActionType','ActionName']}},{{emqx_bridge_proto_v6,v2_list_bridges_on_nodes_v6,['Nodes','ConfRootKey']},{emqx_bridge_v2,list,['ConfRootKey']}},{{emqx_bridge_proto_v6,v2_lookup_from_all_nodes_v6,['Nodes','ConfRootKey','BridgeType','BridgeName']},{emqx_bridge_v2_api,lookup_from_local_node_v6,['ConfRootKey','BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,get_metrics_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,get_metrics_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,lookup_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,lookup_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,stop_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,start_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,restart_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,stop_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,start_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,restart_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,list_bridges_on_nodes,['Nodes']},{emqx_bridge,list,[]}}],casts => []},{emqx,2} => #{calls => [{{emqx_proto_v2,delete_all_deactivated_alarms,['Node']},{emqx_alarm,delete_all_deactivated_alarms,[]}},{{emqx_proto_v2,deactivate_alarm,['Node','Name']},{emqx_alarm,deactivate,['Name']}},{{emqx_proto_v2,clean_pem_cache,['Node']},{ssl_pem_cache,clear,[]}},{{emqx_proto_v2,clean_authz_cache,['Node']},{emqx_authz_cache,drain_cache,[]}},{{emqx_proto_v2,clean_authz_cache,['Node','ClientId']},{emqx_authz_cache,drain_cache,['ClientId']}},{{emqx_proto_v2,get_metrics,['Node']},{emqx_metrics,all,[]}},{{emqx_proto_v2,get_stats,['Node']},{emqx_stats,getstats,[]}},{{emqx_proto_v2,get_alarms,['Node','Type']},{emqx_alarm,get_alarms,['Type']}},{{emqx_proto_v2,are_running,['Nodes']},{emqx,is_running,[]}},{{emqx_proto_v2,is_running,['Node']},{emqx,is_running,[]}}],casts => []},{emqx_ft_storage_fs_reader,1} => #{calls => [{{emqx_ft_storage_fs_reader_proto_v1,read,['Node','Pid','Bytes']},{emqx_ft_storage_fs_reader,read,['Pid','Bytes']}}],casts => []},{emqx_node_rebalance,1} => #{calls => [{{emqx_node_rebalance_proto_v1,disconnected_session_counts,['Nodes']},{emqx_node_rebalance,disconnected_session_count,[]}},{{emqx_node_rebalance_proto_v1,disable_rebalance_agent,['Nodes','OwnerPid']},{emqx_node_rebalance_agent,disable,['OwnerPid']}},{{emqx_node_rebalance_proto_v1,enable_rebalance_agent,['Nodes','OwnerPid']},{emqx_node_rebalance_agent,enable,['OwnerPid']}},{{emqx_node_rebalance_proto_v1,session_counts,['Nodes']},{emqx_node_rebalance,session_count,[]}},{{emqx_node_rebalance_proto_v1,connection_counts,['Nodes']},{emqx_node_rebalance,connection_count,[]}},{{emqx_node_rebalance_proto_v1,evict_sessions,['Nodes','Count','RecipientNodes','ConnState']},{emqx_eviction_agent,evict_sessions,['Count','RecipientNodes','ConnState']}},{{emqx_node_rebalance_proto_v1,evict_connections,['Nodes','Count']},{emqx_eviction_agent,evict_connections,['Count']}},{{emqx_node_rebalance_proto_v1,available_nodes,['Nodes']},{emqx_node_rebalance,is_node_available,[]}}],casts => []},{emqx_exhook,1} => #{calls => [{{emqx_exhook_proto_v1,server_hooks_metrics,['Nodes','Name']},{emqx_exhook_mgr,server_hooks_metrics,['Name']}},{{emqx_exhook_proto_v1,server_info,['Nodes','Name']},{emqx_exhook_mgr,server_info,['Name']}},{{emqx_exhook_proto_v1,all_servers_info,['Nodes']},{emqx_exhook_mgr,all_servers_info,[]}}],casts => []},{emqx_node_rebalance_api,2} => #{calls => [{{emqx_node_rebalance_api_proto_v2,node_rebalance_purge_stop,['Node']},{emqx_node_rebalance_purge,stop,[]}},{{emqx_node_rebalance_api_proto_v2,node_rebalance_purge_start,['Node','Opts']},{emqx_node_rebalance_purge,start,['Opts']}},{{emqx_node_rebalance_api_proto_v2,node_rebalance_stop,['Node']},{emqx_node_rebalance,stop,[]}},{{emqx_node_rebalance_api_proto_v2,node_rebalance_start,['Node','Opts']},{emqx_node_rebalance,start,['Opts']}},{{emqx_node_rebalance_api_proto_v2,node_rebalance_evacuation_stop,['Node']},{emqx_node_rebalance_evacuation,stop,[]}},{{emqx_node_rebalance_api_proto_v2,node_rebalance_evacuation_start,['Node','Opts']},{emqx_node_rebalance_evacuation,start,['Opts']}}],casts => []},{emqx_plugins,1} => #{calls => [{{emqx_plugins_proto_v1,get_tar,['Node','NameVsn','Timeout']},{emqx_plugins,get_tar,['NameVsn']}}],casts => []},{emqx_node_rebalance_status,1} => #{calls => [{{emqx_node_rebalance_status_proto_v1,evacuation_status,['Nodes']},{emqx_node_rebalance_status,evacuation_status,[]}},{{emqx_node_rebalance_status_proto_v1,rebalance_status,['Nodes']},{emqx_node_rebalance_status,rebalance_status,[]}},{{emqx_node_rebalance_status_proto_v1,local_status,['Node']},{emqx_node_rebalance_status,local_status,[]}}],casts => []},{emqx_conf,1} => #{calls => [{{emqx_conf_proto_v1,get_override_config_file,['Nodes']},{emqx_conf_app,get_override_config_file,[]}},{{emqx_conf_proto_v1,reset,['Node','KeyPath','Opts']},{emqx,reset_config,['KeyPath','Opts']}},{{emqx_conf_proto_v1,reset,['KeyPath','Opts']},{emqx,reset_config,['KeyPath','Opts']}},{{emqx_conf_proto_v1,remove_config,['Node','KeyPath','Opts']},{emqx,remove_config,['KeyPath','Opts']}},{{emqx_conf_proto_v1,remove_config,['KeyPath','Opts']},{emqx,remove_config,['KeyPath','Opts']}},{{emqx_conf_proto_v1,update,['Node','KeyPath','UpdateReq','Opts']},{emqx,update_config,['KeyPath','UpdateReq','Opts']}},{{emqx_conf_proto_v1,update,['KeyPath','UpdateReq','Opts']},{emqx,update_config,['KeyPath','UpdateReq','Opts']}},{{emqx_conf_proto_v1,get_all,['KeyPath']},{emqx_conf,get_node_and_config,['KeyPath']}},{{emqx_conf_proto_v1,get_config,['Node','KeyPath','Default']},{emqx,get_config,['KeyPath','Default']}},{{emqx_conf_proto_v1,get_config,['Node','KeyPath']},{emqx,get_config,['KeyPath']}}],casts => []},{emqx_prometheus,2} => #{calls => [{{emqx_prometheus_proto_v2,raw_prom_data,['Nodes','M','F','A']},{emqx_prometheus_api,lookup_from_local_nodes,['M','F','A']}},{{emqx_prometheus_proto_v2,stop,['Nodes']},{emqx_prometheus,do_stop,[]}},{{emqx_prometheus_proto_v2,start,['Nodes']},{emqx_prometheus,do_start,[]}}],casts => []},{emqx_ft_storage_exporter_fs,1} => #{calls => [{{emqx_ft_storage_exporter_fs_proto_v1,read_export_file,['Node','Filepath','CallerPid']},{emqx_ft_storage_exporter_fs_proxy,read_export_file_local,['Filepath','CallerPid']}},{{emqx_ft_storage_exporter_fs_proto_v1,list_exports,['Nodes','Query']},{emqx_ft_storage_exporter_fs_proxy,list_exports_local,['Query']}}],casts => []},{emqx_metrics,1} => #{calls => [{{emqx_metrics_proto_v1,get_metrics,['Nodes','HandlerName','MetricId','Timeout']},{emqx_metrics_worker,get_metrics,['HandlerName','MetricId']}}],casts => []},{emqx_conf,3} => #{calls => [{{emqx_conf_proto_v3,get_hocon_config,['Node','Key']},{emqx_conf_cli,get_config,['Key']}},{{emqx_conf_proto_v3,get_hocon_config,['Node']},{emqx_conf_cli,get_config,[]}},{{emqx_conf_proto_v3,get_override_config_file,['Nodes']},{emqx_conf_app,get_override_config_file,[]}},{{emqx_conf_proto_v3,reset,['Node','KeyPath','Opts']},{emqx,reset_config,['KeyPath','Opts']}},{{emqx_conf_proto_v3,reset,['KeyPath','Opts']},{emqx,reset_config,['KeyPath','Opts']}},{{emqx_conf_proto_v3,remove_config,['Node','KeyPath','Opts']},{emqx,remove_config,['KeyPath','Opts']}},{{emqx_conf_proto_v3,remove_config,['KeyPath','Opts']},{emqx,remove_config,['KeyPath','Opts']}},{{emqx_conf_proto_v3,update,['Node','KeyPath','UpdateReq','Opts']},{emqx,update_config,['KeyPath','UpdateReq','Opts']}},{{emqx_conf_proto_v3,update,['KeyPath','UpdateReq','Opts']},{emqx,update_config,['KeyPath','UpdateReq','Opts']}},{{emqx_conf_proto_v3,get_all,['KeyPath']},{emqx_conf,get_node_and_config,['KeyPath']}},{{emqx_conf_proto_v3,get_config,['Node','KeyPath','Default']},{emqx,get_config,['KeyPath','Default']}},{{emqx_conf_proto_v3,get_config,['Node','KeyPath']},{emqx,get_config,['KeyPath']}},{{emqx_conf_proto_v3,sync_data_from_node,['Node']},{emqx_conf_app,sync_data_from_node,[]}}],casts => []},{emqx_mgmt_cluster,2} => #{calls => [{{emqx_mgmt_cluster_proto_v2,connected_replicants,['Nodes']},{emqx_mgmt_api_cluster,connected_replicants,[]}},{{emqx_mgmt_cluster_proto_v2,invite_node,['Node','Self']},{emqx_mgmt_api_cluster,join,['Self']}}],casts => []},{emqx_retainer,2} => #{calls => [{{emqx_retainer_proto_v2,active_mnesia_indices,['Nodes']},{emqx_retainer_mnesia,active_indices,[]}},{{emqx_retainer_proto_v2,wait_dispatch_complete,['Nodes','Timeout']},{emqx_retainer_dispatcher,wait_dispatch_complete,['Timeout']}}],casts => []},{emqx_node_rebalance,3} => #{calls => [{{emqx_node_rebalance_proto_v3,enable_rebalance_agent,['Nodes','OwnerPid','Kind','Options']},{emqx_node_rebalance_agent,enable,['OwnerPid','Kind','Options']}},{{emqx_node_rebalance_proto_v3,purge_sessions,['Nodes','Count']},{emqx_eviction_agent,purge_sessions,['Count']}},{{emqx_node_rebalance_proto_v3,disable_rebalance_agent,['Nodes','OwnerPid','Kind']},{emqx_node_rebalance_agent,disable,['OwnerPid','Kind']}},{{emqx_node_rebalance_proto_v3,enable_rebalance_agent,['Nodes','OwnerPid','Kind']},{emqx_node_rebalance_agent,enable,['OwnerPid','Kind']}},{{emqx_node_rebalance_proto_v3,disconnected_session_counts,['Nodes']},{emqx_node_rebalance,disconnected_session_count,[]}},{{emqx_node_rebalance_proto_v3,disable_rebalance_agent,['Nodes','OwnerPid']},{emqx_node_rebalance_agent,disable,['OwnerPid']}},{{emqx_node_rebalance_proto_v3,enable_rebalance_agent,['Nodes','OwnerPid']},{emqx_node_rebalance_agent,enable,['OwnerPid']}},{{emqx_node_rebalance_proto_v3,session_counts,['Nodes']},{emqx_node_rebalance,session_count,[]}},{{emqx_node_rebalance_proto_v3,connection_counts,['Nodes']},{emqx_node_rebalance,connection_count,[]}},{{emqx_node_rebalance_proto_v3,evict_sessions,['Nodes','Count','RecipientNodes','ConnState']},{emqx_eviction_agent,evict_sessions,['Count','RecipientNodes','ConnState']}},{{emqx_node_rebalance_proto_v3,evict_connections,['Nodes','Count']},{emqx_eviction_agent,evict_connections,['Count']}},{{emqx_node_rebalance_proto_v3,available_nodes,['Nodes']},{emqx_node_rebalance,is_node_available,[]}}],casts => []},{emqx_delayed,3} => #{calls => [{{emqx_delayed_proto_v3,delete_delayed_messages_by_topic_name,['Nodes','TopicName']},{emqx_delayed,do_delete_delayed_messages_by_topic_name,['TopicName']}},{{emqx_delayed_proto_v3,clear_all,['Nodes']},{emqx_delayed,clear_all_local,[]}},{{emqx_delayed_proto_v3,delete_delayed_message,['Node','Id']},{emqx_delayed,delete_delayed_message,['Id']}},{{emqx_delayed_proto_v3,get_delayed_message,['Node','Id']},{emqx_delayed,get_delayed_message,['Id']}}],casts => []},{emqx_eviction_agent,2} => #{calls => [{{emqx_eviction_agent_proto_v2,all_channels_count,['Nodes','Timeout']},{emqx_eviction_agent,all_local_channels_count,[]}},{{emqx_eviction_agent_proto_v2,evict_session_channel,['Node','ClientId','ConnInfo','ClientInfo']},{emqx_eviction_agent,evict_session_channel,['ClientId','ConnInfo','ClientInfo']}}],casts => []},{emqx_ds,1} => #{calls => [{{emqx_ds_proto_v1,store_batch,['Node','DB','Shard','Batch','Options']},{emqx_ds_replication_layer,do_store_batch_v1,['DB','Shard','Batch','Options']}},{{emqx_ds_proto_v1,next,['Node','DB','Shard','Iter','BatchSize']},{emqx_ds_replication_layer,do_next_v1,['DB','Shard','Iter','BatchSize']}},{{emqx_ds_proto_v1,make_iterator,['Node','DB','Shard','Stream','TopicFilter','StartTime']},{emqx_ds_replication_layer,do_make_iterator_v1,['DB','Shard','Stream','TopicFilter','StartTime']}},{{emqx_ds_proto_v1,get_streams,['Node','DB','Shard','TopicFilter','Time']},{emqx_ds_replication_layer,do_get_streams_v1,['DB','Shard','TopicFilter','Time']}},{{emqx_ds_proto_v1,drop_db,['Node','DB']},{emqx_ds_replication_layer,do_drop_db_v1,['DB']}}],casts => []},{emqx_node_rebalance_purge,1} => #{calls => [{{emqx_node_rebalance_purge_proto_v1,stop,['Nodes']},{emqx_node_rebalance_purge,stop,[]}},{{emqx_node_rebalance_purge_proto_v1,start,['Nodes','Opts']},{emqx_node_rebalance_purge,start,['Opts']}}],casts => []},{emqx_gateway_api_listeners,1} => #{calls => [{{emqx_gateway_api_listeners_proto_v1,listeners_cluster_status,['Nodes','Listeners']},{emqx_gateway_api_listeners,do_listeners_cluster_status,['Listeners']}}],casts => []},{emqx_mgmt_trace,2} => #{calls => [{{emqx_mgmt_trace_proto_v2,read_trace_file,['Node','Name','Position','Limit']},{emqx_mgmt_api_trace,read_trace_file,['Name','Position','Limit']}},{{emqx_mgmt_trace_proto_v2,trace_file_detail,['Nodes','File']},{emqx_trace,trace_file_detail,['File']}},{{emqx_mgmt_trace_proto_v2,trace_file,['Nodes','File']},{emqx_trace,trace_file,['File']}},{{emqx_mgmt_trace_proto_v2,get_trace_size,['Nodes']},{emqx_mgmt_api_trace,get_trace_size,[]}}],casts => []},{emqx_slow_subs,1} => #{calls => [{{emqx_slow_subs_proto_v1,get_history,['Nodes']},{emqx_slow_subs_api,get_history,[]}},{{emqx_slow_subs_proto_v1,clear_history,['Nodes']},{emqx_slow_subs,clear_history,[]}}],casts => []},{emqx_mgmt_api_plugins,1} => #{calls => [{{emqx_mgmt_api_plugins_proto_v1,ensure_action,['Name','Action']},{emqx_mgmt_api_plugins,ensure_action,['Name','Action']}},{{emqx_mgmt_api_plugins_proto_v1,delete_package,['Name']},{emqx_mgmt_api_plugins,delete_package,['Name']}},{{emqx_mgmt_api_plugins_proto_v1,describe_package,['Name']},{emqx_mgmt_api_plugins,describe_package,['Name']}},{{emqx_mgmt_api_plugins_proto_v1,install_package,['Filename','Bin']},{emqx_mgmt_api_plugins,install_package,['Filename','Bin']}},{{emqx_mgmt_api_plugins_proto_v1,get_plugins,[]},{emqx_mgmt_api_plugins,get_plugins,[]}}],casts => []},{emqx_conf,2} => #{calls => [{{emqx_conf_proto_v2,get_override_config_file,['Nodes']},{emqx_conf_app,get_override_config_file,[]}},{{emqx_conf_proto_v2,reset,['Node','KeyPath','Opts']},{emqx,reset_config,['KeyPath','Opts']}},{{emqx_conf_proto_v2,reset,['KeyPath','Opts']},{emqx,reset_config,['KeyPath','Opts']}},{{emqx_conf_proto_v2,remove_config,['Node','KeyPath','Opts']},{emqx,remove_config,['KeyPath','Opts']}},{{emqx_conf_proto_v2,remove_config,['KeyPath','Opts']},{emqx,remove_config,['KeyPath','Opts']}},{{emqx_conf_proto_v2,update,['Node','KeyPath','UpdateReq','Opts']},{emqx,update_config,['KeyPath','UpdateReq','Opts']}},{{emqx_conf_proto_v2,update,['KeyPath','UpdateReq','Opts']},{emqx,update_config,['KeyPath','UpdateReq','Opts']}},{{emqx_conf_proto_v2,get_all,['KeyPath']},{emqx_conf,get_node_and_config,['KeyPath']}},{{emqx_conf_proto_v2,get_config,['Node','KeyPath','Default']},{emqx,get_config,['KeyPath','Default']}},{{emqx_conf_proto_v2,get_config,['Node','KeyPath']},{emqx,get_config,['KeyPath']}},{{emqx_conf_proto_v2,sync_data_from_node,['Node']},{emqx_conf_app,sync_data_from_node,[]}}],casts => []},{emqx_ds,2} => #{calls => [{{emqx_ds_proto_v2,add_generation,['Node','DB']},{emqx_ds_replication_layer,do_add_generation_v2,['DB']}},{{emqx_ds_proto_v2,update_iterator,['Node','DB','Shard','OldIter','DSKey']},{emqx_ds_replication_layer,do_update_iterator_v2,['DB','Shard','OldIter','DSKey']}},{{emqx_ds_proto_v2,store_batch,['Node','DB','Shard','Batch','Options']},{emqx_ds_replication_layer,do_store_batch_v1,['DB','Shard','Batch','Options']}},{{emqx_ds_proto_v2,next,['Node','DB','Shard','Iter','BatchSize']},{emqx_ds_replication_layer,do_next_v1,['DB','Shard','Iter','BatchSize']}},{{emqx_ds_proto_v2,make_iterator,['Node','DB','Shard','Stream','TopicFilter','StartTime']},{emqx_ds_replication_layer,do_make_iterator_v1,['DB','Shard','Stream','TopicFilter','StartTime']}},{{emqx_ds_proto_v2,get_streams,['Node','DB','Shard','TopicFilter','Time']},{emqx_ds_replication_layer,do_get_streams_v1,['DB','Shard','TopicFilter','Time']}},{{emqx_ds_proto_v2,drop_db,['Node','DB']},{emqx_ds_replication_layer,do_drop_db_v1,['DB']}}],casts => []},{emqx_shared_sub,1} => #{calls => [{{emqx_shared_sub_proto_v1,dispatch_with_ack,['Pid','Group','Topic','Msg','Timeout']},{emqx_shared_sub,do_dispatch_with_ack,['Pid','Group','Topic','Msg']}}],casts => [{{emqx_shared_sub_proto_v1,send,['Node','Pid','Topic','Msg']},{erlang,send,['Pid','Msg']}}]},{emqx_ft_storage_fs,1} => #{calls => [{{emqx_ft_storage_fs_proto_v1,list_assemblers,['Nodes','Transfer']},{emqx_ft_storage_fs_proxy,lookup_local_assembler,['Transfer']}},{{emqx_ft_storage_fs_proto_v1,pread,['Node','Transfer','Frag','Offset','Size']},{emqx_ft_storage_fs_proxy,pread_local,['Transfer','Frag','Offset','Size']}},{{emqx_ft_storage_fs_proto_v1,multilist,['Nodes','Transfer','What']},{emqx_ft_storage_fs_proxy,list_local,['Transfer','What']}}],casts => []},{emqx_cm,1} => #{calls => [{{emqx_cm_proto_v1,kick_session,['Action','ClientId','ChanPid']},{emqx_cm,do_kick_session,['Action','ClientId','ChanPid']}},{{emqx_cm_proto_v1,takeover_session,['ClientId','ChanPid']},{emqx_cm,takeover_session,['ClientId','ChanPid']}},{{emqx_cm_proto_v1,get_chann_conn_mod,['ClientId','ChanPid']},{emqx_cm,do_get_chann_conn_mod,['ClientId','ChanPid']}},{{emqx_cm_proto_v1,get_chan_info,['ClientId','ChanPid']},{emqx_cm,do_get_chan_info,['ClientId','ChanPid']}},{{emqx_cm_proto_v1,get_chan_stats,['ClientId','ChanPid']},{emqx_cm,do_get_chan_stats,['ClientId','ChanPid']}},{{emqx_cm_proto_v1,lookup_client,['Node','Key']},{emqx_cm,lookup_client,['Key']}},{{emqx_cm_proto_v1,kickout_client,['Node','ClientId']},{emqx_cm,kick_session,['ClientId']}}],casts => []},{emqx_authn,1} => #{calls => [{{emqx_authn_proto_v1,lookup_from_all_nodes,['Nodes','ChainName','AuthenticatorID']},{emqx_authn_api,lookup_from_local_node,['ChainName','AuthenticatorID']}}],casts => []},{emqx_resource,1} => #{calls => [{{emqx_resource_proto_v1,reset_metrics,['ResId']},{emqx_resource,reset_metrics_local,['ResId']}},{{emqx_resource_proto_v1,remove,['ResId']},{emqx_resource,remove_local,['ResId']}},{{emqx_resource_proto_v1,recreate,['ResId','ResourceType','Config','Opts']},{emqx_resource,recreate_local,['ResId','ResourceType','Config','Opts']}},{{emqx_resource_proto_v1,create_dry_run,['ResourceType','Config']},{emqx_resource,create_dry_run_local,['ResourceType','Config']}},{{emqx_resource_proto_v1,create,['ResId','Group','ResourceType','Config','Opts']},{emqx_resource,create_local,['ResId','Group','ResourceType','Config','Opts']}}],casts => []},{emqx_bridge,5} => #{calls => [{{emqx_bridge_proto_v5,v2_start_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_v2,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,v2_start_bridge_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_v2,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,v2_get_metrics_from_all_nodes,['Nodes','ActionType','ActionName']},{emqx_bridge_v2_api,get_metrics_from_local_node,['ActionType','ActionName']}},{{emqx_bridge_proto_v5,v2_lookup_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_v2_api,lookup_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,v2_list_bridges_on_nodes,['Nodes']},{emqx_bridge_v2,list,[]}},{{emqx_bridge_proto_v5,get_metrics_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,get_metrics_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,lookup_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,lookup_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,stop_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,start_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,restart_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,stop_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,start_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,restart_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,list_bridges_on_nodes,['Nodes']},{emqx_bridge,list,[]}}],casts => []},{emqx_eviction_agent,1} => #{calls => [{{emqx_eviction_agent_proto_v1,evict_session_channel,['Node','ClientId','ConnInfo','ClientInfo']},{emqx_eviction_agent,evict_session_channel,['ClientId','ConnInfo','ClientInfo']}}],casts => []},{emqx_authz,1} => #{calls => [{{emqx_authz_proto_v1,lookup_from_all_nodes,['Nodes','Type']},{emqx_authz_api_sources,lookup_from_local_node,['Type']}}],casts => []},{emqx_gateway_cm,1} => #{calls => [{{emqx_gateway_cm_proto_v1,cast,['GwName','ClientId','ChanPid','Req']},{emqx_gateway_cm,do_cast,['GwName','ClientId','ChanPid','Req']}},{{emqx_gateway_cm_proto_v1,call,['GwName','ClientId','ChanPid','Req']},{emqx_gateway_cm,do_call,['GwName','ClientId','ChanPid','Req']}},{{emqx_gateway_cm_proto_v1,call,['GwName','ClientId','ChanPid','Req','Timeout']},{emqx_gateway_cm,do_call,['GwName','ClientId','ChanPid','Req','Timeout']}},{{emqx_gateway_cm_proto_v1,takeover_session,['GwName','ClientId','ChanPid']},{emqx_gateway_cm,do_takeover_session,['GwName','ClientId','ChanPid']}},{{emqx_gateway_cm_proto_v1,get_chann_conn_mod,['GwName','ClientId','ChanPid']},{emqx_gateway_cm,do_get_chann_conn_mod,['GwName','ClientId','ChanPid']}},{{emqx_gateway_cm_proto_v1,kick_session,['GwName','Action','ClientId','ChanPid']},{emqx_gateway_cm,do_kick_session,['GwName','Action','ClientId','ChanPid']}},{{emqx_gateway_cm_proto_v1,set_chan_stats,['GwName','ClientId','ChanPid','Stats']},{emqx_gateway_cm,do_set_chan_stats,['GwName','ClientId','ChanPid','Stats']}},{{emqx_gateway_cm_proto_v1,get_chan_stats,['GwName','ClientId','ChanPid']},{emqx_gateway_cm,do_get_chan_stats,['GwName','ClientId','ChanPid']}},{{emqx_gateway_cm_proto_v1,set_chan_info,['GwName','ClientId','ChanPid','Infos']},{emqx_gateway_cm,do_set_chan_info,['GwName','ClientId','ChanPid','Infos']}},{{emqx_gateway_cm_proto_v1,get_chan_info,['GwName','ClientId','ChanPid']},{emqx_gateway_cm,do_get_chan_info,['GwName','ClientId','ChanPid']}},{{emqx_gateway_cm_proto_v1,lookup_by_clientid,['Nodes','GwName','ClientId']},{emqx_gateway_cm,do_lookup_by_clientid,['GwName','ClientId']}}],casts => []},{emqx_bridge,3} => #{calls => [{{emqx_bridge_proto_v3,lookup_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,lookup_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v3,stop_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v3,start_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v3,restart_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v3,stop_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v3,start_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v3,restart_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v3,list_bridges_on_nodes,['Nodes']},{emqx_bridge,list,[]}},{{emqx_bridge_proto_v3,list_bridges,['Node']},{emqx_bridge,list,[]}}],casts => []},{emqx_rule_engine,1} => #{calls => [{{emqx_rule_engine_proto_v1,reset_metrics,['RuleId']},{emqx_rule_engine,reset_metrics_for_rule,['RuleId']}}],casts => []},{emqx_node_rebalance_evacuation,1} => #{calls => [{{emqx_node_rebalance_evacuation_proto_v1,available_nodes,['Nodes']},{emqx_node_rebalance_evacuation,is_node_available,[]}}],casts => []},{emqx_bridge,2} => #{calls => [{{emqx_bridge_proto_v2,lookup_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,lookup_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v2,stop_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v2,start_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v2,restart_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v2,stop_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v2,start_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v2,restart_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v2,list_bridges,['Node']},{emqx_bridge,list,[]}}],casts => []},{emqx_node_rebalance,2} => #{calls => [{{emqx_node_rebalance_proto_v2,purge_sessions,['Nodes','Count']},{emqx_eviction_agent,purge_sessions,['Count']}},{{emqx_node_rebalance_proto_v2,disable_rebalance_agent,['Nodes','OwnerPid','Kind']},{emqx_node_rebalance_agent,disable,['OwnerPid','Kind']}},{{emqx_node_rebalance_proto_v2,enable_rebalance_agent,['Nodes','OwnerPid','Kind']},{emqx_node_rebalance_agent,enable,['OwnerPid','Kind']}},{{emqx_node_rebalance_proto_v2,disconnected_session_counts,['Nodes']},{emqx_node_rebalance,disconnected_session_count,[]}},{{emqx_node_rebalance_proto_v2,disable_rebalance_agent,['Nodes','OwnerPid']},{emqx_node_rebalance_agent,disable,['OwnerPid']}},{{emqx_node_rebalance_proto_v2,enable_rebalance_agent,['Nodes','OwnerPid']},{emqx_node_rebalance_agent,enable,['OwnerPid']}},{{emqx_node_rebalance_proto_v2,session_counts,['Nodes']},{emqx_node_rebalance,session_count,[]}},{{emqx_node_rebalance_proto_v2,connection_counts,['Nodes']},{emqx_node_rebalance,connection_count,[]}},{{emqx_node_rebalance_proto_v2,evict_sessions,['Nodes','Count','RecipientNodes','ConnState']},{emqx_eviction_agent,evict_sessions,['Count','RecipientNodes','ConnState']}},{{emqx_node_rebalance_proto_v2,evict_connections,['Nodes','Count']},{emqx_eviction_agent,evict_connections,['Count']}},{{emqx_node_rebalance_proto_v2,available_nodes,['Nodes']},{emqx_node_rebalance,is_node_available,[]}}],casts => []},{emqx_mgmt_data_backup,1} => #{calls => [{{emqx_mgmt_data_backup_proto_v1,delete_file,['Node','FileName','Timeout']},{emqx_mgmt_data_backup,delete_file,['FileName']}},{{emqx_mgmt_data_backup_proto_v1,read_file,['Node','FileName','Timeout']},{emqx_mgmt_data_backup,read_file,['FileName']}},{{emqx_mgmt_data_backup_proto_v1,import_file,['Node','FileNode','FileName','Timeout']},{emqx_mgmt_data_backup,maybe_copy_and_import,['FileNode','FileName']}},{{emqx_mgmt_data_backup_proto_v1,list_files,['Nodes','Timeout']},{emqx_mgmt_data_backup,list_files,[]}}],casts => []},{emqx_retainer,1} => #{calls => [{{emqx_retainer_proto_v1,wait_dispatch_complete,['Nodes','Timeout']},{emqx_retainer_dispatcher,wait_dispatch_complete,['Timeout']}}],casts => []},{emqx_delayed,2} => #{calls => [{{emqx_delayed_proto_v2,clear_all,['Nodes']},{emqx_delayed,clear_all_local,[]}},{{emqx_delayed_proto_v2,delete_delayed_message,['Node','Id']},{emqx_delayed,delete_delayed_message,['Id']}},{{emqx_delayed_proto_v2,get_delayed_message,['Node','Id']},{emqx_delayed,get_delayed_message,['Id']}}],casts => []},{emqx_mgmt_api_plugins,2} => #{calls => [{{emqx_mgmt_api_plugins_proto_v2,ensure_action,['Name','Action']},{emqx_mgmt_api_plugins,ensure_action,['Name','Action']}},{{emqx_mgmt_api_plugins_proto_v2,delete_package,['Name']},{emqx_mgmt_api_plugins,delete_package,['Name']}},{{emqx_mgmt_api_plugins_proto_v2,describe_package,['Nodes','Name']},{emqx_mgmt_api_plugins,describe_package,['Name']}},{{emqx_mgmt_api_plugins_proto_v2,install_package,['Nodes','Filename','Bin']},{emqx_mgmt_api_plugins,install_package,['Filename','Bin']}},{{emqx_mgmt_api_plugins_proto_v2,get_plugins,['Nodes']},{emqx_mgmt_api_plugins,get_plugins,[]}}],casts => []},{emqx_mgmt_cluster,1} => #{calls => [{{emqx_mgmt_cluster_proto_v1,invite_node,['Node','Self']},{emqx_mgmt_api_cluster,join,['Self']}}],casts => []},{emqx_mgmt_cluster,3} => #{calls => [{{emqx_mgmt_cluster_proto_v3,connected_replicants,['Nodes']},{emqx_mgmt_api_cluster,connected_replicants,[]}},{{emqx_mgmt_cluster_proto_v3,invite_node,['Node','Self','Timeout']},{emqx_mgmt_api_cluster,join,['Self']}}],casts => []},{emqx_prometheus,1} => #{calls => [{{emqx_prometheus_proto_v1,stop,['Nodes']},{emqx_prometheus,do_stop,[]}},{{emqx_prometheus_proto_v1,start,['Nodes']},{emqx_prometheus,do_start,[]}}],casts => []},{emqx_delayed,1} => #{calls => [{{emqx_delayed_proto_v1,delete_delayed_message,['Node','Id']},{emqx_delayed,delete_delayed_message,['Id']}},{{emqx_delayed_proto_v1,get_delayed_message,['Node','Id']},{emqx_delayed,get_delayed_message,['Id']}}],casts => []},{emqx_management,3} => #{calls => [{{emqx_management_proto_v3,get_full_config,['Node']},{emqx_mgmt_api_configs,get_full_config,[]}},{{emqx_management_proto_v3,call_client,['Node','ClientId','Req']},{emqx_mgmt,do_call_client,['ClientId','Req']}},{{emqx_management_proto_v3,unsubscribe,['Node','ClientId','Topic']},{emqx_mgmt,do_unsubscribe,['ClientId','Topic']}},{{emqx_management_proto_v3,subscribe,['Node','ClientId','TopicTables']},{emqx_mgmt,do_subscribe,['ClientId','TopicTables']}},{{emqx_management_proto_v3,list_listeners,['Node']},{emqx_mgmt_api_listeners,do_list_listeners,[]}},{{emqx_management_proto_v3,list_subscriptions,['Node']},{emqx_mgmt,do_list_subscriptions,[]}},{{emqx_management_proto_v3,broker_info,['Nodes']},{emqx_mgmt,broker_info,[]}},{{emqx_management_proto_v3,node_info,['Nodes']},{emqx_mgmt,node_info,[]}},{{emqx_management_proto_v3,unsubscribe_batch,['Node','ClientId','Topics']},{emqx_mgmt,do_unsubscribe_batch,['ClientId','Topics']}}],casts => []}},release => "master",signatures => #{{emqx_retainer_proto_v1,wait_dispatch_complete,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_bridge_proto_v6,restart_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_ft_storage_fs_proxy,pread_local,4} => {any,[any,any,any,any]},{emqx_bridge_proto_v2,stop_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_proto_v2,disable_rebalance_agent,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown}]},{emqx_node_rebalance_proto_v2,disconnected_session_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_shared_sub_proto_v1,dispatch_with_ack,5} => {any,[{c,identifier,[pid],unknown},{c,union,[{c,atom,['_'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,binary,{8,0},unknown},{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],{c,atom,any,unknown},{c,atom,[false,true],unknown}},unknown},{c,map,{[{{c,atom,[allow_publish],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[peerhost],unknown},optional,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[properties],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[protocol],unknown},optional,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_bridge_proto_v3,restart_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_dashboard_monitor,current_rate,1} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[badrpc],unknown},any],{2,{c,atom,[badrpc],unknown}}},{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,atom,any,unknown}]},{emqx_ft_storage_exporter_fs_proxy,list_exports_local,1} => {any,[any]},{emqx_management_proto_v3,list_subscriptions,1} => {any,[{c,atom,any,unknown}]},{emqx_connector_proto_v1,list_connectors_on_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_management_proto_v2,broker_info,1} => {any,[{c,atom,any,unknown}]},{emqx_gateway_cm,do_lookup_by_clientid,2} => {{c,list,{any,{c,nil,[],unknown}},unknown},[{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},{c,number,any,unknown},none,none,none],unknown},any]},{emqx_persistent_session_ds,do_open_iterator,3} => {{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_implemented],unknown}],{2,{c,atom,[error],unknown}}},[any,any,any]},{emqx_cm,do_get_chann_conn_mod,2} => {any,[any,any]},{emqx_persistent_session_ds_proto_v1,close_iterator,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},any]},{emqx_mgmt_data_backup,read_file,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,any,unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,binary,{8,0},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},none,none],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_proto_v2,purge_sessions,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_resource,create_local,5} => {{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[added_channels],unknown},mandatory,any},{{c,atom,[callback_mode],unknown},mandatory,{c,atom,[always_sync,async_if_possible],unknown}},{{c,atom,[config],unknown},mandatory,any},{{c,atom,[error],unknown},mandatory,any},{{c,atom,[id],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[mod],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[query_mode],unknown},mandatory,{c,atom,[async,no_queries,simple_async,simple_async_internal_buffer,simple_sync,simple_sync_internal_buffer,sync],unknown}},{{c,atom,[state],unknown},mandatory,any},{{c,atom,[status],unknown},mandatory,{c,atom,[connected,connecting,disconnected,stopped],unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}},[{c,binary,{8,0},unknown},{c,binary,{8,0},unknown},{c,atom,any,unknown},any,{c,map,{[{{c,atom,[auto_restart_interval],unknown},optional,{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,1,pos_inf},integer},none,none,none],unknown}},{{c,atom,[auto_retry_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[batch_size],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[batch_time],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[health_check_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[health_check_timeout],unknown},optional,{c,number,any,integer}},{{c,atom,[inflight_window],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[max_buffer_bytes],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[query_mode],unknown},optional,{c,atom,[async,no_queries,simple_async,simple_async_internal_buffer,simple_sync,simple_sync_internal_buffer,sync],unknown}},{{c,atom,[resume_interval],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[spawn_buffer_workers],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_after_created],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_timeout],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_for_resource_ready],unknown},optional,{c,number,any,integer}},{{c,atom,[worker_pool_size],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}}],none,none},unknown}]},{emqx_authz_api_sources,lookup_from_local_node,1} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,tuple,[{c,atom,any,unknown},{c,union,[{c,atom,[not_found_resource],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}],{2,any}}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,tuple,[{c,atom,any,unknown},{c,atom,[connected,connecting,disconnected,stopped],unknown},{c,map,{[{{c,atom,[counters],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[gauges],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[rate],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[slides],unknown},mandatory,{c,map,{[],any,any},unknown}}],none,none},unknown},{c,map,{[{{c,atom,[counters],unknown},optional,{c,map,{[],any,any},unknown}},{{c,atom,[gauges],unknown},optional,{c,map,{[],any,any},unknown}},{{c,atom,[rate],unknown},optional,{c,map,{[],any,any},unknown}},{{c,atom,[slides],unknown},optional,{c,map,{[],any,any},unknown}}],none,none},unknown}],{4,any}}],{2,{c,atom,[ok],unknown}}}]}],unknown},[any]},{emqx_management_proto_v3,node_info,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_ft_storage_exporter_fs_proto_v1,list_exports,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,map,{[{{c,atom,[following],unknown},optional,any},{{c,atom,[limit],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[transfer],unknown},optional,{c,tuple,[{c,binary,{8,0},unknown},{c,binary,{8,0},unknown}],{2,any}}}],none,none},unknown}]},{emqx,get_config,1} => {any,[{c,list,{any,{c,nil,[],unknown}},unknown}]},{emqx_resource_proto_v1,remove,1} => {any,[{c,binary,{8,0},unknown}]},{emqx_management_proto_v2,list_listeners,1} => {any,[{c,atom,any,unknown}]},{emqx_broker_proto_v1,list_client_subscriptions,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_bridge_proto_v4,restart_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_resource_proto_v1,reset_metrics,1} => {any,[{c,binary,{8,0},unknown}]},{emqx_delayed,clear_all_local,0} => {{c,atom,[ok],unknown},[]},{emqx_bridge_proto_v5,v2_list_bridges_on_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx,reset_config,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[config],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,{c,map,{[],{c,atom,any,unknown},any},unknown}],unknown}},{{c,atom,[post_config_update],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[raw_config],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,{c,map,{[],{c,binary,{8,0},unknown},any},unknown}],unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any]},{emqx_mgmt_api_plugins,delete_package,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_data_backup_proto_v1,list_files,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_mgmt_data_backup_proto_v1,import_file,4} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_retainer_mnesia,active_indices,0} => {{c,tuple,[any,any],{2,any}},[]},{emqx_cm,do_get_chan_stats,2} => {any,[any,any]},{emqx_node_rebalance_proto_v3,disconnected_session_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_mgmt_api_listeners,do_list_listeners,0} => {{c,map,{[],{c,binary,{40,32},unknown},{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{{c,map,{[],any,any},unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},unknown},[]},{emqx_conf_app,get_override_config_file,0} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,map,{[{{c,atom,[msg],unknown},mandatory,any},{{c,atom,[node],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[release],unknown},mandatory,{c,list,{any,{c,nil,[],unknown}},nonempty}},{{c,atom,[wall_clock],unknown},mandatory,{c,tuple,[any,any],{2,any}}}],none,none},unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}}]}],unknown},[]},{emqx_management_proto_v4,list_listeners,1} => {any,[{c,atom,any,unknown}]},{emqx_node_rebalance_proto_v2,evict_sessions,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer},{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,[connected,connecting,disconnected,idle,reauthenticating],unknown}]},{emqx_persistent_session_ds,do_ensure_all_iterators_closed,1} => {{c,atom,[ok],unknown},[any]},{emqx_ds_replication_layer,do_make_iterator_v1,5} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,stream,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[1]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,list,{{c,union,[{c,atom,['','#','+'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_authz_proto_v1,lookup_from_all_nodes,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown}]},{emqx_ft_storage_fs_reader_proto_v1,read,3} => {any,[{c,atom,any,unknown},{c,identifier,[pid],unknown},{c,number,{int_rng,1,pos_inf},integer}]},{emqx_slow_subs,clear_history,0} => {any,[]},{emqx_proto_v1,get_stats,1} => {any,[{c,atom,any,unknown}]},{emqx_cm,do_kick_session,3} => {{c,atom,[ok],unknown},[any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_gateway_cm_proto_v1,get_chann_conn_mod,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_eviction_agent_proto_v2,evict_session_channel,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[{{c,atom,[clean_start],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[clientid],unknown},optional,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[conn_mod],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[conn_props],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[connected],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[connected_at],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[disconnected_at],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[expiry_interval],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[keepalive],unknown},optional,{c,number,{int_rng,0,1114111},integer}},{{c,atom,[peercert],unknown},optional,{c,union,[{c,atom,[nossl,undefined],unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,none,none,{c,tuple,any,{any,any}},none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[peername],unknown},mandatory,{c,tuple,[{c,union,[{c,atom,[local,undefined,unspec],unknown},none,none,none,none,none,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown},none,none],unknown},any],{2,any}}},{{c,atom,[proto_name],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[receive_maximum],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[sockname],unknown},mandatory,{c,tuple,[{c,union,[{c,atom,[local,undefined,unspec],unknown},none,none,none,none,none,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown},none,none],unknown},any],{2,any}}},{{c,atom,[socktype],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,map,{[{{c,atom,[anonymous],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[auth_result],unknown},optional,{c,atom,[bad_authentication_method,bad_clientid_or_password,bad_username_or_password,banned,client_identifier_not_valid,not_authorized,server_busy,server_unavailable,success],unknown}},{{c,atom,[clientid],unknown},mandatory,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[cn],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[dn],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[is_bridge],unknown},mandatory,{c,atom,[false,true],unknown}},{{c,atom,[is_superuser],unknown},mandatory,{c,atom,[false,true],unknown}},{{c,atom,[mountpoint],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[password],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[peerhost],unknown},mandatory,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[protocol],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[sockport],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[username],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[ws_cookie],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[zone],unknown},mandatory,{c,atom,any,unknown}}],{c,atom,any,unknown},any},unknown}]},{emqx_mgmt_api_plugins_proto_v1,install_package,2} => {any,[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,binary,{8,0},unknown}]},{emqx_bridge_proto_v6,list_bridges_on_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_management_proto_v1,call_client,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},any]},{emqx_bridge_v2_api,get_metrics_from_local_node,2} => {{c,map,{[{{c,atom,[dropped],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.expired'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.other'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.queue_full'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.resource_not_found'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.resource_stopped'],unknown},mandatory,{c,number,any,integer}},{{c,atom,[failed],unknown},mandatory,{c,number,any,integer}},{{c,atom,[inflight],unknown},mandatory,any},{{c,atom,[late_reply],unknown},mandatory,{c,number,any,integer}},{{c,atom,[matched],unknown},mandatory,{c,number,any,integer}},{{c,atom,[queuing],unknown},mandatory,any},{{c,atom,[rate],unknown},mandatory,any},{{c,atom,[rate_last5m],unknown},mandatory,any},{{c,atom,[rate_max],unknown},mandatory,any},{{c,atom,[received],unknown},mandatory,{c,number,any,integer}},{{c,atom,[retried],unknown},mandatory,{c,number,any,integer}},{{c,atom,[success],unknown},mandatory,{c,number,any,integer}}],none,none},unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_trace_proto_v1,get_trace_size,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_topic_metrics,reset,1} => {any,[any]},{emqx_bridge_proto_v1,restart_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_management_proto_v3,subscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,list,{{c,tuple,[{c,binary,{8,0},unknown},{c,map,{[{{c,atom,[nl],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[qos],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}},{{c,atom,[rap],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[rh],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}}],{c,atom,any,unknown},any},unknown}],{2,any}},{c,nil,[],unknown}},unknown}]},{emqx_cm_proto_v2,kick_session,3} => {any,[{c,atom,[discard,kick],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_bridge_proto_v5,v2_get_metrics_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v5,stop_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_delayed,delete_delayed_message,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[any]},{emqx_bridge_proto_v6,start_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_api_proto_v2,node_rebalance_evacuation_start,2} => {any,[{c,atom,any,unknown},{c,map,{[{{c,atom,[conn_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[migrate_to],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[server_reference],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[sess_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_health_check],unknown},optional,{c,number,any,unknown}},{{c,atom,[wait_takeover],unknown},optional,{c,number,any,unknown}}],none,none},unknown}]},{emqx_conf_proto_v2,get_all,1} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_mgmt_api_plugins_proto_v1,delete_package,1} => {any,[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_gateway_api_listeners_proto_v1,listeners_cluster_status,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,list,{any,{c,nil,[],unknown}},unknown}]},{emqx_conf_proto_v3,get_hocon_config,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_exhook_mgr,server_info,1} => {any,[any]},{emqx_management_proto_v2,call_client,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},any]},{emqx_management_proto_v4,node_info,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_gateway_cm,do_call,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},any]},{emqx_cm_proto_v1,get_chann_conn_mod,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_dashboard_proto_v1,do_sample,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,1,pos_inf},integer},none,none,none],unknown}]},{emqx_node_rebalance_api_proto_v1,node_rebalance_stop,1} => {any,[{c,atom,any,unknown}]},{emqx_conf_proto_v2,get_override_config_file,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v5,start_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_status_proto_v2,evacuation_status,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{ssl_pem_cache,clear,0} => {any,[]},{emqx_mgmt_api_plugins,ensure_action,2} => {{c,atom,[ok],unknown},[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,atom,[restart,start,stop],unknown}]},{emqx_conf_proto_v3,reset,2} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_resource_proto_v1,recreate,4} => {any,[{c,binary,{8,0},unknown},{c,atom,any,unknown},any,{c,map,{[{{c,atom,[auto_restart_interval],unknown},optional,{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,1,pos_inf},integer},none,none,none],unknown}},{{c,atom,[auto_retry_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[batch_size],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[batch_time],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[health_check_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[health_check_timeout],unknown},optional,{c,number,any,integer}},{{c,atom,[inflight_window],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[max_buffer_bytes],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[query_mode],unknown},optional,{c,atom,[async,no_queries,simple_async,simple_async_internal_buffer,simple_sync,simple_sync_internal_buffer,sync],unknown}},{{c,atom,[resume_interval],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[spawn_buffer_workers],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_after_created],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_timeout],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_for_resource_ready],unknown},optional,{c,number,any,integer}},{{c,atom,[worker_pool_size],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}}],none,none},unknown}]},{emqx_conf_proto_v3,remove_config,2} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_gateway_api_listeners,do_listeners_cluster_status,1} => {{c,map,{[],any,any},unknown},[{c,list,{any,{c,nil,[],unknown}},unknown}]},{emqx_bridge_v2_api,lookup_from_local_node_v6,3} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,atom,[actions,sources],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_telemetry_proto_v1,get_cluster_uuid,1} => {any,[{c,atom,any,unknown}]},{emqx_management_proto_v1,unsubscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,binary,{8,0},unknown}]},{emqx_resource,create_dry_run_local,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,atom,any,unknown},any]},{emqx_gateway_cm,do_set_chan_info,4} => {{c,atom,[false,true],unknown},[any,any,any,any]},{emqx_mgmt_api_cluster,connected_replicants,0} => {{c,list,{{c,tuple,[{c,atom,any,unknown},{c,atom,any,unknown},{c,identifier,[pid],unknown}],{3,any}},{c,nil,[],unknown}},unknown},[]},{emqx_mgmt,do_list_subscriptions,0} => {none,[]},{emqx_node_rebalance_api_proto_v2,node_rebalance_purge_stop,1} => {any,[{c,atom,any,unknown}]},{emqx_bridge_v2,list,1} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_status,rebalance_status,0} => {{c,tuple,[{c,atom,any,unknown},{c,union,[{c,atom,[disabled],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[enabled],unknown},{c,map,{[],any,any},unknown}],{2,{c,atom,[enabled],unknown}}},none,none],unknown}],{2,any}},[]},{emqx_bridge_proto_v5,stop_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_status,evacuation_status,0} => {{c,tuple,[{c,atom,any,unknown},{c,union,[{c,atom,[disabled],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[enabled],unknown},{c,map,{[{{c,atom,[conn_evict_rate],unknown},mandatory,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[current_conns],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[current_sessions],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[initial_conns],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[initial_sessions],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[migrate_to],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[server_reference],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[sess_evict_rate],unknown},mandatory,{c,number,{int_rng,1,pos_inf},integer}}],none,none},unknown}],{2,{c,atom,[enabled],unknown}}},none,none],unknown}],{2,any}},[]},{emqx_mgmt_trace_proto_v2,trace_file,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_management_proto_v3,get_full_config,1} => {any,[{c,atom,any,unknown}]},{emqx_gateway_cm,do_takeover_session,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_gateway_cm_proto_v1,set_chan_stats,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},{c,list,{{c,tuple,[{c,atom,any,unknown},any],{2,any}},{c,nil,[],unknown}},unknown}]},{emqx,get_config,2} => {any,[any,any]},{emqx_proto_v2,delete_all_deactivated_alarms,1} => {any,[{c,atom,any,unknown}]},{emqx_ds_proto_v1,make_iterator,6} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,stream,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[1]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,list,{{c,union,[{c,atom,['','#','+'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_topic_metrics,metrics,0} => {{c,list,{{c,map,{[{{c,atom,[create_time],unknown},mandatory,any},{{c,atom,[metrics],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[reset_time],unknown},optional,any},{{c,atom,[topic],unknown},mandatory,any}],none,none},unknown},{c,nil,[],unknown}},unknown},[]},{emqx_node_rebalance_agent,enable,3} => {any,[any,any,any]},{emqx_ft_storage_fs_proto_v1,pread,5} => {any,[{c,atom,any,unknown},{c,tuple,[{c,binary,{8,0},unknown},{c,binary,{8,0},unknown}],{2,any}},{c,map,{[{{c,atom,[fragment],unknown},mandatory,{c,tuple_set,[{2,[{c,tuple,[{c,atom,[filemeta],unknown},{c,map,{[{{c,atom,[checksum],unknown},optional,{c,tuple,[{c,atom,any,unknown},{c,binary,{8,0},unknown}],{2,any}}},{{c,atom,[expire_at],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[name],unknown},mandatory,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown}},{{c,atom,[segments_ttl],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[size],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[user_data],unknown},optional,{c,union,[{c,atom,[false,null,true],unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,[false,null,true],unknown},{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,any,unknown},none,none,{c,map,{[],{c,binary,{8,0},unknown},any},unknown}],unknown},{c,nil,[],unknown}},unknown},{c,number,any,unknown},none,none,{c,map,{[],{c,binary,{8,0},unknown},{c,union,[{c,atom,[false,null,true],unknown},{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,any,unknown},none,none,{c,map,{[],{c,binary,{8,0},unknown},any},unknown}],unknown}},unknown}],unknown}}],none,none},unknown}],{2,{c,atom,[filemeta],unknown}}},{c,tuple,[{c,atom,[segment],unknown},{c,map,{[{{c,atom,[offset],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[size],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}}],none,none},unknown}],{2,{c,atom,[segment],unknown}}}]}],unknown}},{{c,atom,[path],unknown},mandatory,{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[size],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[timestamp],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}}],none,none},unknown},{c,number,{int_rng,0,pos_inf},integer},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_ft_storage_exporter_fs_proxy,read_export_file_local,2} => {any,[any,any]},{emqx_trace,trace_file,1} => {{c,tuple_set,[{3,[{c,tuple,[{c,atom,[error],unknown},{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},{c,atom,any,unknown}],{3,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},{c,binary,{8,0},unknown}],{3,{c,atom,[ok],unknown}}}]}],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_topic_metrics,reset,0} => {any,[]},{emqx_conf_proto_v1,get_config,2} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_gateway_cm_proto_v1,takeover_session,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_cm_proto_v1,get_chan_stats,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_topic_metrics_proto_v1,reset,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_mgmt_api_plugins,get_plugins,0} => {{c,tuple,[{c,atom,any,unknown},{c,list,{{c,map,{[],any,any},unknown},{c,nil,[],unknown}},unknown}],{2,any}},[]},{emqx_node_rebalance_proto_v3,disable_rebalance_agent,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown}]},{emqx_conf_proto_v3,get_override_config_file,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_management_proto_v2,unsubscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,binary,{8,0},unknown}]},{emqx_exhook_proto_v1,all_servers_info,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_cm_proto_v1,takeover_session,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_management_proto_v1,subscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,list,{{c,tuple,[{c,binary,{8,0},unknown},{c,map,{[{{c,atom,[nl],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[qos],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}},{{c,atom,[rap],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[rh],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}}],{c,atom,any,unknown},any},unknown}],{2,any}},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v1,evict_connections,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_conf_proto_v3,get_all,1} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v1,disconnected_session_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_proto_v2,clean_authz_cache,1} => {any,[{c,atom,any,unknown}]},{emqx_prometheus_proto_v1,stop,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v1,list_bridges,1} => {any,[{c,atom,any,unknown}]},{emqx_bridge_proto_v5,v2_start_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_telemetry,get_cluster_uuid,0} => {any,[]},{emqx_proto_v1,deactivate_alarm,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_node_rebalance_status,purge_status,0} => {{c,tuple,[{c,atom,any,unknown},{c,union,[{c,atom,[disabled],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[enabled],unknown},{c,map,{[{{c,atom,[current_sessions],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[initial_sessions],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[purge_rate],unknown},mandatory,{c,number,{int_rng,1,pos_inf},integer}}],none,none},unknown}],{2,{c,atom,[enabled],unknown}}},none,none],unknown}],{2,any}},[]},{emqx_resource_proto_v1,create_dry_run,2} => {any,[{c,atom,any,unknown},any]},{emqx_mgmt_data_backup,delete_file,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,any,unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,binary,{8,0},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},none,none],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_rule_engine_proto_v1,reset_metrics,1} => {any,[{c,binary,{8,0},unknown}]},{emqx_mgmt_data_backup,list_files,0} => {{c,list,{any,{c,nil,[],unknown}},unknown},[]},{emqx_proto_v1,get_metrics,1} => {any,[{c,atom,any,unknown}]},{emqx_topic_metrics_proto_v1,metrics,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_v2,start,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_delayed_proto_v2,get_delayed_message,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_management_proto_v1,broker_info,1} => {any,[{c,atom,any,unknown}]},{emqx_connector_proto_v1,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_api_plugins,describe_package,1} => {{c,tuple,[{c,atom,any,unknown},{c,list,{{c,map,{[],any,any},unknown},{c,nil,[],unknown}},unknown}],{2,any}},[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_delayed_proto_v2,delete_delayed_message,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_bridge_proto_v6,v2_get_metrics_from_all_nodes_v6,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,[actions,sources],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v2,start_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_dashboard_proto_v1,current_rate,1} => {any,[{c,atom,any,unknown}]},{emqx_gateway_cm_proto_v1,set_chan_info,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},{c,map,{[],{c,atom,any,unknown},any},unknown}]},{emqx_node_rebalance_proto_v2,available_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_gateway_cm,do_set_chan_stats,4} => {{c,atom,[false,true],unknown},[any,any,any,any]},{emqx_mgmt_trace_proto_v2,trace_file_detail,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_proto_v1,delete_all_deactivated_alarms,1} => {any,[{c,atom,any,unknown}]},{emqx_connector_proto_v1,start_connector_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_v2,list,0} => {any,[]},{emqx_node_rebalance_proto_v2,evict_connections,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_conf_proto_v2,update,3} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any,{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_slow_subs_proto_v1,clear_history,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_delayed,get_delayed_message,1} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[delayed_interval],unknown},mandatory,any},{{c,atom,[delayed_remaining],unknown},mandatory,{c,number,any,integer}},{{c,atom,[expected_at],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[from_clientid],unknown},mandatory,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[from_username],unknown},mandatory,any},{{c,atom,[msgid],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[node],unknown},mandatory,any},{{c,atom,[payload],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[publish_at],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[qos],unknown},mandatory,any},{{c,atom,[topic],unknown},mandatory,{c,binary,{8,0},unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[any]},{emqx_node_rebalance_proto_v2,disable_rebalance_agent,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown},any]},{emqx_mgmt,do_unsubscribe,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[channel_not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[unsubscribe],unknown},{c,list,{{c,tuple,[{c,union,[none,{c,binary,{8,0},unknown},none,none,none,none,{c,tuple,[any,any,any],{3,any}},none,none],unknown},{c,map,{[],any,any},unknown}],{2,any}},{c,nil,[],unknown}},nonempty}],{2,{c,atom,[unsubscribe],unknown}}}]}],unknown},[any,any]},{emqx_mgmt_api_plugins_proto_v2,install_package,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,binary,{8,0},unknown}]},{emqx_gateway_cm,do_call,5} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},any,any]},{emqx_mgmt,do_call_client,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},any]},{emqx_cm_proto_v2,lookup_client,2} => {any,[{c,atom,any,unknown},{c,tuple_set,[{2,[{c,tuple,[{c,atom,[clientid],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}],{2,{c,atom,[clientid],unknown}}},{c,tuple,[{c,atom,[username],unknown},{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}],{2,{c,atom,[username],unknown}}}]}],unknown}]},{emqx_ds_replication_layer,do_drop_db_v1,1} => {{c,atom,[ok],unknown},[{c,atom,any,unknown}]},{emqx_eviction_agent,all_local_channels_count,0} => {any,[]},{emqx_bridge_proto_v4,restart_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_cluster_proto_v3,connected_replicants,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_status_proto_v1,rebalance_status,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v2,enable_rebalance_agent,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown},any]},{emqx_persistent_session_ds_proto_v1,open_iterator,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,list,{{c,union,[{c,atom,['','#','+'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer},any]},{emqx_cm_proto_v2,kickout_client,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_proto_v1,clean_authz_cache,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_node_rebalance_evacuation_proto_v1,available_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_mgmt_cluster_proto_v1,invite_node,2} => {any,[{c,atom,any,unknown},{c,atom,any,unknown}]},{emqx_prometheus_proto_v2,stop,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_ds_proto_v2,get_streams,5} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,list,{{c,union,[{c,atom,['','#','+'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_bridge_proto_v3,start_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_eviction_agent,evict_sessions,3} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[disabled],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[any,{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,none],unknown},any]},{emqx_gateway_http,gateway_status,1} => {{c,map,{[{{c,atom,[current_connections],unknown},optional,any},{{c,atom,[max_connections],unknown},optional,{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[node],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[status],unknown},mandatory,{c,atom,[running,stopped,unloaded],unknown}}],none,none},unknown},[{c,atom,any,unknown}]},{emqx_bridge_proto_v4,get_metrics_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_data_backup_proto_v1,read_file,3} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_cm_proto_v1,get_chan_info,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_delayed_proto_v3,clear_all,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v3,enable_rebalance_agent,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown},any]},{emqx_conf_proto_v1,update,4} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any,{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_bridge_proto_v3,list_bridges,1} => {any,[{c,atom,any,unknown}]},{emqx_management_proto_v2,unsubscribe_batch,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,list,{{c,binary,{8,0},unknown},{c,nil,[],unknown}},unknown}]},{emqx_topic_metrics_proto_v1,reset,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,binary,{8,0},unknown}]},{emqx_bridge_proto_v5,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v1,get_all,1} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v3,stop_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_ds_replication_layer,do_store_batch_v1,4} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[3]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,list,{{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],any,any},unknown},{c,map,{[],any,any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}},{c,nil,[],unknown}},unknown}}],any,any},unknown},{c,map,{[],none,none},unknown}]},{emqx_management_proto_v1,list_subscriptions,1} => {any,[{c,atom,any,unknown}]},{emqx_conf_cli,get_config,1} => {{c,union,[none,none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,list,{{c,number,{int_set,"_defknotuy"},integer},{c,nil,[],unknown}},nonempty}],{2,{c,atom,[error],unknown}}},none,{c,map,{[],any,any},unknown}],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_management_proto_v4,subscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,list,{{c,tuple,[{c,binary,{8,0},unknown},{c,map,{[{{c,atom,[nl],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[qos],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}},{{c,atom,[rap],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[rh],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}}],{c,atom,any,unknown},any},unknown}],{2,any}},{c,nil,[],unknown}},unknown}]},{emqx_trace,trace_file_detail,1} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,map,{[{{c,atom,[file],unknown},mandatory,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[node],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[reason],unknown},mandatory,{c,atom,any,unknown}}],none,none},unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[mtime],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},{c,tuple,[{c,tuple,[any,any,any],{3,any}},{c,tuple,[any,any,any],{3,any}}],{2,any}},none,none],unknown}},{{c,atom,[node],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[size],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v6,v2_start_bridge_on_node_v6,4} => {any,[{c,atom,any,unknown},{c,atom,[actions,sources],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v6,stop_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_api_trace,get_trace_size,0} => {{c,map,{[],any,any},unknown},[]},{emqx_prometheus_proto_v1,start,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_topic_metrics_proto_v1,metrics,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,binary,{8,0},unknown}]},{emqx_retainer_proto_v2,active_mnesia_indices,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v3,evict_connections,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_stats,getstats,0} => {{c,list,{{c,tuple,any,{any,any}},{c,nil,[],unknown}},unknown},[]},{emqx_alarm,deactivate,1} => {any,[any]},{emqx_conf_proto_v2,remove_config,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_bridge_proto_v3,start_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_license_resources,local_connection_count,0} => {any,[]},{emqx_bridge_resource,start,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_persistent_session_ds_proto_v1,close_all_iterators,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,binary,{8,0},unknown}]},{emqx_bridge_proto_v2,list_bridges,1} => {any,[{c,atom,any,unknown}]},{emqx_ds_proto_v1,drop_db,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown}]},{emqx_management_proto_v3,broker_info,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v3,session_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v5,get_metrics_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_license_proto_v2,remote_connection_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v1,evict_sessions,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer},{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,[connected,connecting,disconnected,idle,reauthenticating],unknown}]},{emqx_broker_proto_v1,forward,3} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,tuple,[{c,atom,[delivery],unknown},{c,identifier,[pid],unknown},{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],{c,atom,any,unknown},{c,atom,[false,true],unknown}},unknown},{c,map,{[{{c,atom,[allow_publish],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[peerhost],unknown},optional,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[properties],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[protocol],unknown},optional,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}}],{3,{c,atom,[delivery],unknown}}}]},{emqx_node_rebalance_proto_v1,connection_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v1,stop_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v3,remove_config,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_exhook_proto_v1,server_hooks_metrics,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,binary,{8,0},unknown}]},{emqx_prometheus_api,lookup_from_local_nodes,3} => {any,[{c,union,[{c,atom,any,unknown},none,none,none,none,none,{c,tuple,any,{any,any}},none,none],unknown},{c,atom,any,unknown},{c,list,{any,{c,nil,[],unknown}},unknown}]},{emqx_proto_v2,get_metrics,1} => {any,[{c,atom,any,unknown}]},{emqx_eviction_agent_proto_v2,all_channels_count,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_bridge_proto_v4,stop_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_proto_v2,clean_authz_cache,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_bridge_proto_v3,restart_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v2,stop_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v3,update,3} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any,{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_gateway_cm_proto_v1,call,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},any]},{emqx_prometheus_proto_v2,start,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v1,session_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_management_proto_v4,call_client,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},any]},{emqx_bridge_proto_v5,restart_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_management_proto_v4,unsubscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,binary,{8,0},unknown}]},{emqx_management_proto_v3,unsubscribe_batch,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,list,{{c,binary,{8,0},unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_status_proto_v2,rebalance_status,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_gateway_http_proto_v1,get_cluster_status,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown}]},{emqx_prometheus_proto_v2,raw_prom_data,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown},{c,atom,any,unknown},{c,list,{any,{c,nil,[],unknown}},unknown}]},{emqx,update_config,3} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[config],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,{c,map,{[],{c,atom,any,unknown},any},unknown}],unknown}},{{c,atom,[post_config_update],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[raw_config],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,{c,map,{[],{c,binary,{8,0},unknown},any},unknown}],unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any,{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_bridge_v2,start,3} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_management_proto_v4,get_full_config,1} => {any,[{c,atom,any,unknown}]},{emqx_alarm,delete_all_deactivated_alarms,0} => {any,[]},{emqx_management_proto_v3,list_listeners,1} => {any,[{c,atom,any,unknown}]},{emqx_mgmt_api_cluster,join,1} => {{c,union,[{c,atom,[ignore,ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,atom,any,unknown}]},{emqx_cm_proto_v2,takeover_session,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_bridge_proto_v3,stop_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_broker_proto_v1,forward_async,3} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,tuple,[{c,atom,[delivery],unknown},{c,identifier,[pid],unknown},{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],{c,atom,any,unknown},{c,atom,[false,true],unknown}},unknown},{c,map,{[{{c,atom,[allow_publish],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[peerhost],unknown},optional,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[properties],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[protocol],unknown},optional,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}}],{3,{c,atom,[delivery],unknown}}}]},{emqx_delayed_proto_v3,delete_delayed_messages_by_topic_name,2} => {any,[{c,list,{any,{c,nil,[],unknown}},unknown},{c,binary,{8,0},unknown}]},{emqx_connector,list,0} => {any,[]},{emqx_cm_proto_v2,get_chann_conn_mod,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_mgmt_api_plugins_proto_v1,ensure_action,2} => {any,[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,atom,[restart,start,stop],unknown}]},{emqx_prometheus,do_stop,0} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found,restarting,running,simple_one_for_one],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[]},{emqx_exhook_mgr,server_hooks_metrics,1} => {any,[any]},{emqx_ds_proto_v2,update_iterator,5} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,binary,{8,0},unknown}]},{emqx_mgmt_api_plugins_proto_v1,describe_package,1} => {any,[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v4,start_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{erlang,send,2} => {any,[any,any]},{emqx_metrics_worker,get_metrics,2} => {{c,map,{[{{c,atom,[counters],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[gauges],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[rate],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[slides],unknown},mandatory,{c,map,{[],any,any},unknown}}],none,none},unknown},[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_node_rebalance_purge_proto_v1,stop,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_mgmt_api_configs,get_full_config,0} => {{c,map,{[],any,any},unknown},[]},{emqx_ft_storage_fs_proxy,list_local,2} => {any,[any,any]},{emqx_ft_storage_fs_reader,read,2} => {any,[{c,identifier,[pid],unknown},{c,number,{int_rng,1,pos_inf},integer}]},{emqx_node_rebalance_status_proto_v2,purge_status,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_api_proto_v2,node_rebalance_start,2} => {any,[{c,atom,any,unknown},{c,map,{[{{c,atom,[abs_conn_threshold],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[abs_sess_threshold],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[conn_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[nodes],unknown},optional,{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}},{{c,atom,[rel_conn_threshold],unknown},optional,{c,number,any,unknown}},{{c,atom,[rel_sess_threshold],unknown},optional,{c,number,any,unknown}},{{c,atom,[sess_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_health_check],unknown},optional,{c,number,any,unknown}},{{c,atom,[wait_takeover],unknown},optional,{c,number,any,unknown}}],none,none},unknown}]},{emqx_delayed_proto_v1,delete_delayed_message,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_proto_v1,clean_pem_cache,1} => {any,[{c,atom,any,unknown}]},{emqx_connector_api,lookup_from_local_node,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_proto_v2,get_alarms,2} => {any,[{c,atom,any,unknown},{c,atom,[activated,all,deactivated],unknown}]},{emqx_gateway_cm,do_kick_session,4} => {{c,atom,[ok],unknown},[{c,atom,any,unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_node_rebalance_api_proto_v1,node_rebalance_evacuation_stop,1} => {any,[{c,atom,any,unknown}]},{emqx_management_proto_v2,subscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,list,{{c,tuple,[{c,binary,{8,0},unknown},{c,map,{[{{c,atom,[nl],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[qos],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}},{{c,atom,[rap],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[rh],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}}],{c,atom,any,unknown},any},unknown}],{2,any}},{c,nil,[],unknown}},unknown}]},{emqx_gateway_cm,do_get_chann_conn_mod,3} => {any,[any,any,any]},{emqx_mgmt_cluster_proto_v3,invite_node,3} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_proto_v1,clean_authz_cache,1} => {any,[{c,atom,any,unknown}]},{emqx_bridge_proto_v6,v2_list_bridges_on_nodes_v6,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,[actions,sources],unknown}]},{emqx_authn_proto_v1,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_authz_cache,drain_cache,0} => {{c,atom,[ok],unknown},[]},{emqx_ds_proto_v1,store_batch,5} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[3]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,list,{{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],{c,atom,any,unknown},{c,atom,[false,true],unknown}},unknown},{c,map,{[{{c,atom,[allow_publish],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[peerhost],unknown},optional,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[properties],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[protocol],unknown},optional,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}},{c,nil,[],unknown}},unknown}}],none,none},unknown},{c,map,{[],none,none},unknown}]},{emqx_proto_v2,is_running,1} => {any,[{c,atom,any,unknown}]},{emqx_conf_proto_v2,get_config,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown},any]},{emqx_mgmt_data_backup_proto_v1,delete_file,3} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_gateway_cm,do_get_chan_info,3} => {{c,union,[{c,atom,[undefined],unknown},none,none,none,none,none,none,none,{c,map,{[{{c,atom,[node],unknown},mandatory,{c,atom,any,unknown}}],any,any},unknown}],unknown},[any,any,any]},{emqx_retainer_dispatcher,wait_dispatch_complete,1} => {{c,atom,[ok],unknown},[any]},{emqx_resource,remove_local,1} => {{c,atom,[ok],unknown},[{c,binary,{8,0},unknown}]},{emqx_shared_sub,do_dispatch_with_ack,4} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,identifier,[pid,port],unknown},any,any,{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],{c,atom,any,unknown},{c,atom,[false,true],unknown}},unknown},{c,map,{[{{c,atom,[allow_publish],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[peerhost],unknown},optional,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[properties],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[protocol],unknown},optional,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}}]},{emqx_node_rebalance_status,local_status,0} => {{c,union,[{c,atom,[disabled],unknown},none,none,none,none,none,{c,tuple_set,[{2,[{c,tuple,[{c,atom,[evacuation],unknown},any],{2,{c,atom,[evacuation],unknown}}},{c,tuple,[{c,atom,[purge],unknown},any],{2,{c,atom,[purge],unknown}}},{c,tuple,[{c,atom,[rebalance],unknown},{c,map,{[],{c,atom,[connection_eviction_rate,connection_goal,coordinator_node,disconnected_session_goal,recipients,session_eviction_rate,state,stats],unknown},any},unknown}],{2,{c,atom,[rebalance],unknown}}}]}],unknown},none,none],unknown},[]},{emqx_ds_replication_layer,do_next_v1,4} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,atom,[end_of_stream],unknown}],{2,{c,atom,[ok],unknown}}}]},{3,[{c,tuple,[{c,atom,[ok],unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,list,{{c,tuple,[{c,binary,{8,0},unknown},{c,tuple,[any,any,any,any,any,any,any,any,any,any],{10,any}}],{2,any}},{c,nil,[],unknown}},unknown}],{3,{c,atom,[ok],unknown}}}]}],unknown},[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,number,{int_rng,1,pos_inf},integer}]},{emqx_conf_proto_v3,update,4} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any,{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_node_rebalance_api_proto_v2,node_rebalance_purge_start,2} => {any,[{c,atom,any,unknown},{c,map,{[{{c,atom,[purge_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}}],none,none},unknown}]},{emqx_ds_proto_v1,next,5} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,number,{int_rng,1,pos_inf},integer}]},{emqx_proto_v1,get_alarms,2} => {any,[{c,atom,any,unknown},{c,atom,[activated,all,deactivated],unknown}]},{emqx_proto_v2,are_running,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v1,stop_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_cm_proto_v1,kickout_client,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_gateway_cm_proto_v1,cast,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},any]},{emqx_delayed_proto_v3,delete_delayed_message,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_mgmt_api_plugins_proto_v2,describe_package,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_eviction_agent,purge_sessions,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[disabled],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[any]},{emqx_slow_subs_proto_v1,get_history,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_delayed_proto_v1,get_delayed_message,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_conf,get_node_and_config,1} => {{c,tuple,[{c,atom,any,unknown},any],{2,any}},[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_proto_v1,is_running,1} => {any,[{c,atom,any,unknown}]},{emqx_node_rebalance_proto_v3,available_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_broker,subscriptions_via_topic,1} => {{c,list,{any,{c,nil,[],unknown}},unknown},[any]},{emqx_persistent_session_ds,do_ensure_iterator_closed,1} => {{c,atom,[ok],unknown},[any]},{emqx_bridge_resource,stop,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_management_proto_v3,unsubscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,binary,{8,0},unknown}]},{emqx_mgmt_trace_proto_v1,trace_file,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v1,reset,2} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_proto_v2,get_stats,1} => {any,[{c,atom,any,unknown}]},{emqx_conf_cli,get_config,0} => {{c,map,{[],any,any},unknown},[]},{emqx_ft_storage_exporter_fs_proto_v1,read_export_file,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_node_rebalance_proto_v3,purge_sessions,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_management_proto_v2,list_subscriptions,1} => {any,[{c,atom,any,unknown}]},{emqx_telemetry_proto_v1,get_node_uuid,1} => {any,[{c,atom,any,unknown}]},{emqx_broker,subscriptions,1} => {{c,list,{{c,tuple,[any,any],{2,any}},{c,nil,[],unknown}},unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,{c,identifier,[pid],unknown},none,none,none,none,none],unknown}]},{emqx_slow_subs_api,get_history,0} => {{c,list,{{c,map,{[{{c,atom,[clientid],unknown},mandatory,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[last_update_time],unknown},mandatory,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[node],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[timespan],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[topic],unknown},mandatory,{c,binary,{8,0},unknown}}],none,none},unknown},{c,nil,[],unknown}},unknown},[]},{emqx_gateway_cm_proto_v1,lookup_by_clientid,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_ds_replication_layer,do_get_streams_v1,4} => {{c,list,{{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,opaque,[{opaque,emqx_ds_storage_layer,stream,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[1]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown}],{2,any}},{c,nil,[],unknown}},unknown},[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,list,{{c,union,[{c,atom,['','#','+'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_plugins,get_tar,1} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,binary,{8,0},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown}]},{emqx_conf_proto_v1,get_config,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown},any]},{emqx_connector_proto_v1,start_connectors_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v3,get_config,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown},any]},{emqx_prometheus,do_start,0} => {{c,atom,[ok],unknown},[]},{emqx_gateway_cm_proto_v1,get_chan_stats,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_node_rebalance_api_proto_v2,node_rebalance_stop,1} => {any,[{c,atom,any,unknown}]},{emqx_node_rebalance_status_proto_v1,evacuation_status,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_topic_metrics,metrics,1} => {{c,union,[none,none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[topic_not_found],unknown}],{2,{c,atom,[error],unknown}}},none,{c,map,{[{{c,atom,[create_time],unknown},mandatory,any},{{c,atom,[metrics],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[reset_time],unknown},optional,any},{{c,atom,[topic],unknown},mandatory,any}],none,none},unknown}],unknown},[any]},{emqx_cm_proto_v1,kick_session,3} => {any,[{c,atom,[discard,kick],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_broker_proto_v1,list_subscriptions_via_topic,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_node_rebalance_proto_v2,connection_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_metrics_proto_v1,get_metrics,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_management_proto_v2,get_full_config,1} => {any,[{c,atom,any,unknown}]},{emqx_connector_resource,start,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v1,restart_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_cm,takeover_finish,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[noproc,timeout,unexpected_exception],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}}]}],unknown},none,none],unknown},[{c,atom,any,unknown},{c,identifier,[pid],unknown}]},{emqx_bridge_proto_v6,v2_lookup_from_all_nodes_v6,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,[actions,sources],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_gateway_cm_proto_v1,get_chan_info,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_retainer_proto_v2,wait_dispatch_complete,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_bridge_proto_v4,stop_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_api_plugins_proto_v2,delete_package,1} => {any,[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_proto_v1,available_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_mgmt_api_plugins_proto_v2,ensure_action,2} => {any,[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,atom,[restart,start,stop],unknown}]},{emqx_node_rebalance_api_proto_v1,node_rebalance_evacuation_start,2} => {any,[{c,atom,any,unknown},{c,map,{[{{c,atom,[conn_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[migrate_to],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[server_reference],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[sess_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_health_check],unknown},optional,{c,number,any,unknown}},{{c,atom,[wait_takeover],unknown},optional,{c,number,any,unknown}}],none,none},unknown}]},{emqx_cm,lookup_client,1} => {{c,list,{any,{c,nil,[],unknown}},unknown},[{c,tuple_set,[{2,[{c,tuple,[{c,atom,[clientid],unknown},any],{2,{c,atom,[clientid],unknown}}},{c,tuple,[{c,atom,[username],unknown},any],{2,{c,atom,[username],unknown}}}]}],unknown}]},{emqx_bridge_proto_v6,start_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_proto_v2,clean_pem_cache,1} => {any,[{c,atom,any,unknown}]},{emqx_dashboard_monitor,do_sample,2} => {any,[{c,atom,any,unknown},any]},{emqx_broker,dispatch,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[no_subscribers,not_running],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,number,{int_rng,0,pos_inf},integer}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,binary,{8,0},unknown},{c,tuple,[{c,atom,[delivery],unknown},{c,identifier,[pid],unknown},{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],{c,atom,any,unknown},{c,atom,[false,true],unknown}},unknown},{c,map,{[{{c,atom,[allow_publish],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[peerhost],unknown},optional,{c,tuple_set,[{4,[{c,tuple,[any,any,any,any],{4,any}}]},{8,[{c,tuple,[any,any,any,any,any,any,any,any],{8,any}}]}],unknown}},{{c,atom,[properties],unknown},optional,{c,map,{[],any,any},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[protocol],unknown},optional,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}}],{3,{c,atom,[delivery],unknown}}}]},{emqx_gateway_cm,do_get_chan_stats,3} => {any,[any,any,any]},{emqx_bridge_proto_v4,list_bridges_on_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance,is_node_available,0} => {{c,atom,any,unknown},[]},{emqx_cm_proto_v2,get_chan_info,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_conf_proto_v1,reset,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_management_proto_v1,node_info,1} => {any,[{c,atom,any,unknown}]},{emqx_resource,reset_metrics_local,1} => {{c,atom,[ok],unknown},[{c,binary,{8,0},unknown}]},{emqx_mgmt,do_subscribe,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[channel_not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[subscribe],unknown},any],{2,{c,atom,[subscribe],unknown}}}]}],unknown},[any,any]},{emqx_mgmt_trace_proto_v1,read_trace_file,4} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,number,{int_rng,0,pos_inf},integer},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_ft_storage_fs_proto_v1,multilist,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,tuple,[{c,binary,{8,0},unknown},{c,binary,{8,0},unknown}],{2,any}},{c,atom,[fragment,result],unknown}]},{emqx,is_running,0} => {{c,atom,[false,true],unknown},[]},{emqx_eviction_agent_proto_v1,evict_session_channel,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[{{c,atom,[clean_start],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[clientid],unknown},optional,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[conn_mod],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[conn_props],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[connected],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[connected_at],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[disconnected_at],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[expiry_interval],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[keepalive],unknown},optional,{c,number,{int_rng,0,1114111},integer}},{{c,atom,[peercert],unknown},optional,{c,union,[{c,atom,[nossl,undefined],unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,none,none,{c,tuple,any,{any,any}},none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[peername],unknown},mandatory,{c,tuple,[{c,union,[{c,atom,[local,undefined,unspec],unknown},none,none,none,none,none,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown},none,none],unknown},any],{2,any}}},{{c,atom,[proto_name],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[receive_maximum],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[sockname],unknown},mandatory,{c,tuple,[{c,union,[{c,atom,[local,undefined,unspec],unknown},none,none,none,none,none,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown},none,none],unknown},any],{2,any}}},{{c,atom,[socktype],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,map,{[{{c,atom,[anonymous],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[auth_result],unknown},optional,{c,atom,[bad_authentication_method,bad_clientid_or_password,bad_username_or_password,banned,client_identifier_not_valid,not_authorized,server_busy,server_unavailable,success],unknown}},{{c,atom,[clientid],unknown},mandatory,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[cn],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[dn],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[is_bridge],unknown},mandatory,{c,atom,[false,true],unknown}},{{c,atom,[is_superuser],unknown},mandatory,{c,atom,[false,true],unknown}},{{c,atom,[mountpoint],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[password],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[peerhost],unknown},mandatory,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[protocol],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[sockport],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[username],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[ws_cookie],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[zone],unknown},mandatory,{c,atom,any,unknown}}],{c,atom,any,unknown},any},unknown}]},{emqx_resource_proto_v1,create,5} => {any,[{c,binary,{8,0},unknown},{c,binary,{8,0},unknown},{c,atom,any,unknown},any,{c,map,{[{{c,atom,[auto_restart_interval],unknown},optional,{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,1,pos_inf},integer},none,none,none],unknown}},{{c,atom,[auto_retry_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[batch_size],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[batch_time],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[health_check_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[health_check_timeout],unknown},optional,{c,number,any,integer}},{{c,atom,[inflight_window],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[max_buffer_bytes],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[query_mode],unknown},optional,{c,atom,[async,no_queries,simple_async,simple_async_internal_buffer,simple_sync,simple_sync_internal_buffer,sync],unknown}},{{c,atom,[resume_interval],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[spawn_buffer_workers],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_after_created],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_timeout],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_for_resource_ready],unknown},optional,{c,number,any,integer}},{{c,atom,[worker_pool_size],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}}],none,none},unknown}]},{emqx_ds_proto_v2,next,5} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,number,{int_rng,1,pos_inf},integer}]},{emqx_cm_proto_v1,lookup_client,2} => {any,[{c,atom,any,unknown},{c,tuple_set,[{2,[{c,tuple,[{c,atom,[clientid],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}],{2,{c,atom,[clientid],unknown}}},{c,tuple,[{c,atom,[username],unknown},{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}],{2,{c,atom,[username],unknown}}}]}],unknown}]},{emqx_node_rebalance_proto_v3,evict_sessions,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer},{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,[connected,connecting,disconnected,idle,reauthenticating],unknown}]},{emqx_bridge_resource,restart,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance,start,1} => {any,[{c,map,{[],any,any},unknown}]},{emqx_bridge_proto_v6,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_trace_proto_v2,read_trace_file,4} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,number,{int_rng,0,pos_inf},integer},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_mgmt_api_plugins_proto_v1,get_plugins,0} => {any,[]},{emqx_gateway_cm,do_cast,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},any]},{emqx_bridge_proto_v2,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_ds_proto_v1,get_streams,5} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,list,{{c,union,[{c,atom,['','#','+'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_conf_proto_v1,remove_config,2} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_bridge_proto_v5,v2_start_bridge_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v2,sync_data_from_node,1} => {any,[{c,atom,any,unknown}]},{emqx_node_rebalance,session_count,0} => {{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}},[]},{emqx_rule_engine,reset_metrics_for_rule,1} => {{c,atom,[ok],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_resource,recreate_local,4} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found,updating_to_incorrect_resource_type],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[added_channels],unknown},mandatory,any},{{c,atom,[callback_mode],unknown},mandatory,{c,atom,[always_sync,async_if_possible],unknown}},{{c,atom,[config],unknown},mandatory,any},{{c,atom,[error],unknown},mandatory,any},{{c,atom,[id],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[mod],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[query_mode],unknown},mandatory,{c,atom,[async,no_queries,simple_async,simple_async_internal_buffer,simple_sync,simple_sync_internal_buffer,sync],unknown}},{{c,atom,[state],unknown},mandatory,any},{{c,atom,[status],unknown},mandatory,{c,atom,[connected,connecting,disconnected,stopped],unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,binary,{8,0},unknown},{c,atom,any,unknown},any,{c,map,{[{{c,atom,[auto_restart_interval],unknown},optional,{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,1,pos_inf},integer},none,none,none],unknown}},{{c,atom,[auto_retry_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[batch_size],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[batch_time],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[health_check_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[health_check_timeout],unknown},optional,{c,number,any,integer}},{{c,atom,[inflight_window],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[max_buffer_bytes],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[query_mode],unknown},optional,{c,atom,[async,no_queries,simple_async,simple_async_internal_buffer,simple_sync,simple_sync_internal_buffer,sync],unknown}},{{c,atom,[resume_interval],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[spawn_buffer_workers],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_after_created],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_timeout],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_for_resource_ready],unknown},optional,{c,number,any,integer}},{{c,atom,[worker_pool_size],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}}],none,none},unknown}]},{emqx_delayed_proto_v3,get_delayed_message,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_node_rebalance_proto_v3,connection_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v2,enable_rebalance_agent,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown}]},{emqx_node_rebalance_proto_v3,disable_rebalance_agent,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown},any]},{emqx_mgmt,node_info,0} => {{c,map,{[{{c,atom,[connections],unknown},mandatory,any},{{c,atom,[edition],unknown},mandatory,{c,binary,{0,80},unknown}},{{c,atom,[live_connections],unknown},mandatory,any},{{c,atom,[load1],unknown},optional,{c,number,any,float}},{{c,atom,[load15],unknown},optional,{c,number,any,float}},{{c,atom,[load5],unknown},optional,{c,number,any,float}},{{c,atom,[log_path],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[max_fds],unknown},mandatory,any},{{c,atom,[memory_total],unknown},mandatory,{c,number,any,unknown}},{{c,atom,[memory_used],unknown},mandatory,{c,number,any,integer}},{{c,atom,[node],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[node_status],unknown},mandatory,{c,atom,[running],unknown}},{{c,atom,[otp_release],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[process_available],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[process_used],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[role],unknown},mandatory,{c,atom,[core,replicant],unknown}},{{c,atom,[sys_path],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[uptime],unknown},mandatory,any},{{c,atom,[version],unknown},mandatory,{c,binary,{8,0},unknown}}],none,none},unknown},[]},{emqx_ft_storage_fs_proxy,lookup_local_assembler,1} => {any,[any]},{emqx_cm_proto_v2,get_chan_stats,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_bridge_api,lookup_from_local_node,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_bridge_v1_compatible,not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}}]},{3,[{c,tuple,[{c,atom,[ok],unknown},{c,atom,[actions,sources],unknown},{c,map,{[{{c,atom,[error],unknown},mandatory,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,none,{c,tuple_set,[{3,[{c,tuple,[{c,atom,[error],unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}],{3,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[incomplete],unknown},{c,binary,{8,0},unknown},{c,binary,{8,0},unknown}],{3,{c,atom,[incomplete],unknown}}}]}],unknown},none,none],unknown}},{{c,atom,[name],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[raw_config],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[resource_data],unknown},mandatory,{c,map,{[{{c,atom,[added_channels],unknown},optional,any},{{c,atom,[callback_mode],unknown},optional,{c,atom,[always_sync,async_if_possible],unknown}},{{c,atom,[config],unknown},optional,any},{{c,atom,[error],unknown},optional,any},{{c,atom,[id],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[mod],unknown},optional,{c,atom,any,unknown}},{{c,atom,[query_mode],unknown},optional,{c,atom,[async,no_queries,simple_async,simple_async_internal_buffer,simple_sync,simple_sync_internal_buffer,sync],unknown}},{{c,atom,[state],unknown},optional,any},{{c,atom,[status],unknown},optional,{c,atom,[connected,connecting,disconnected,stopped],unknown}}],none,none},unknown}},{{c,atom,[status],unknown},mandatory,{c,atom,[connected,connecting,disconnected,stopped],unknown}},{{c,atom,[type],unknown},mandatory,{c,binary,{8,0},unknown}}],none,none},unknown}],{3,{c,atom,[ok],unknown}}}]}],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_ds_replication_layer,do_update_iterator_v2,4} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,binary,{8,0},unknown}]},{emqx_node_rebalance_evacuation,start,1} => {any,[{c,map,{[],any,any},unknown}]},{emqx_node_rebalance_proto_v1,enable_rebalance_agent,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown}]},{emqx_metrics,all,0} => {{c,list,{{c,tuple,[any,{c,number,any,integer}],{2,any}},{c,nil,[],unknown}},unknown},[]},{emqx_bridge_proto_v5,v2_lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_ft_storage_fs_proto_v1,list_assemblers,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,tuple,[{c,binary,{8,0},unknown},{c,binary,{8,0},unknown}],{2,any}}]},{emqx_node_rebalance_agent,disable,2} => {any,[any,any]},{emqx_bridge_proto_v2,restart_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_authn_api,lookup_from_local_node,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,tuple,[{c,atom,any,unknown},{c,union,[{c,atom,[not_found_resource],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}],{2,any}}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,tuple,[{c,atom,any,unknown},{c,atom,[connected,connecting,disconnected,stopped],unknown},{c,map,{[{{c,atom,[counters],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[gauges],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[rate],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[slides],unknown},mandatory,{c,map,{[],any,any},unknown}}],none,none},unknown},{c,map,{[{{c,atom,[counters],unknown},optional,{c,map,{[],any,any},unknown}},{{c,atom,[gauges],unknown},optional,{c,map,{[],any,any},unknown}},{{c,atom,[rate],unknown},optional,{c,map,{[],any,any},unknown}},{{c,atom,[slides],unknown},optional,{c,map,{[],any,any},unknown}}],none,none},unknown}],{4,any}}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_bridge_proto_v4,start_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v1,remove_config,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_management_proto_v4,broker_info,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_conf_proto_v2,reset,2} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_eviction_agent,evict_connections,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[disabled],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[any]},{emqx_bridge_proto_v3,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v2,get_config,2} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_purge_proto_v1,start,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,map,{[{{c,atom,[purge_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}}],none,none},unknown}]},{emqx_eviction_agent,evict_session_channel,3} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,union,[{c,atom,[undefined],unknown},none,none,{c,identifier,[pid],unknown},none,none,none,none,none],unknown}],{2,{c,atom,[ok],unknown}}}]},{3,[{c,tuple,[{c,atom,[ok],unknown},{c,union,[{c,atom,[undefined],unknown},none,none,{c,identifier,[pid],unknown},none,none,none,none,none],unknown},any],{3,{c,atom,[ok],unknown}}}]}],unknown},[any,{c,map,{[{{c,atom,[clean_start],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[clientid],unknown},optional,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[conn_mod],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[conn_props],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[connected],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[connected_at],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[disconnected_at],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[expiry_interval],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[keepalive],unknown},optional,{c,number,{int_rng,0,1114111},integer}},{{c,atom,[peercert],unknown},optional,{c,union,[{c,atom,[nossl,undefined],unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,none,none,{c,tuple,any,{any,any}},none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[peername],unknown},mandatory,{c,tuple,[{c,union,[{c,atom,[local,undefined,unspec],unknown},none,none,none,none,none,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown},none,none],unknown},any],{2,any}}},{{c,atom,[proto_name],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[receive_maximum],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[sockname],unknown},mandatory,{c,tuple,[{c,union,[{c,atom,[local,undefined,unspec],unknown},none,none,none,none,none,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown},none,none],unknown},any],{2,any}}},{{c,atom,[socktype],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,map,{[{{c,atom,[anonymous],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[auth_result],unknown},optional,{c,atom,[bad_authentication_method,bad_clientid_or_password,bad_username_or_password,banned,client_identifier_not_valid,not_authorized,server_busy,server_unavailable,success],unknown}},{{c,atom,[clientid],unknown},mandatory,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[cn],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[dn],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[is_bridge],unknown},mandatory,{c,atom,[false,true],unknown}},{{c,atom,[is_superuser],unknown},mandatory,{c,atom,[false,true],unknown}},{{c,atom,[mountpoint],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[password],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[peerhost],unknown},mandatory,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[protocol],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[sockport],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[username],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[ws_cookie],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[zone],unknown},mandatory,{c,atom,any,unknown}}],{c,atom,any,unknown},any},unknown}]},{emqx_management_proto_v1,list_listeners,1} => {any,[{c,atom,any,unknown}]},{emqx_node_rebalance_agent,enable,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[eviction_agent_busy,invalid_coordinator],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,identifier,[pid],unknown},any]},{emqx_mgmt_cluster_proto_v2,connected_replicants,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v5,restart_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v2,start_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_shared_sub_proto_v1,send,4} => {any,[{c,atom,any,unknown},{c,identifier,[pid],unknown},{c,binary,{8,0},unknown},any]},{emqx_mgmt,do_unsubscribe_batch,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[channel_not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[unsubscribe],unknown},{c,list,{{c,tuple,[any,any],{2,any}},{c,nil,[],unknown}},unknown}],{2,{c,atom,[unsubscribe],unknown}}}]}],unknown},[any,any]},{emqx_management_proto_v4,unsubscribe_batch,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,list,{{c,binary,{8,0},unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_api_proto_v1,node_rebalance_start,2} => {any,[{c,atom,any,unknown},{c,map,{[{{c,atom,[abs_conn_threshold],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[abs_sess_threshold],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[conn_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[nodes],unknown},optional,{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}},{{c,atom,[rel_conn_threshold],unknown},optional,{c,number,any,unknown}},{{c,atom,[rel_sess_threshold],unknown},optional,{c,number,any,unknown}},{{c,atom,[sess_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_health_check],unknown},optional,{c,number,any,unknown}},{{c,atom,[wait_takeover],unknown},optional,{c,number,any,unknown}}],none,none},unknown}]},{emqx_bridge_v2_api,lookup_from_local_node,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_purge,start,1} => {any,[{c,map,{[],any,any},unknown}]},{emqx_bridge_proto_v6,get_metrics_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_management_proto_v3,call_client,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},any]},{emqx_node_rebalance,disconnected_session_count,0} => {{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}},[]},{emqx_bridge_proto_v2,restart_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_trace_proto_v2,get_trace_size,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_cm_proto_v2,takeover_finish,2} => {any,[{c,atom,any,unknown},{c,identifier,[pid],unknown}]},{emqx_conf_proto_v1,get_override_config_file,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v3,enable_rebalance_agent,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown}]},{emqx_conf_proto_v2,update,4} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any,{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_ds_proto_v2,make_iterator,6} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,stream,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[1]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,list,{{c,union,[{c,atom,['','#','+'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_exhook_proto_v1,server_info,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,binary,{8,0},unknown}]},{emqx_conf_proto_v3,reset,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_delayed,do_delete_delayed_messages_by_topic_name,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,binary,{8,0},unknown}]},{emqx_node_rebalance_purge,stop,0} => {any,[]},{emqx_mgmt_api_trace,read_trace_file,3} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[eof],unknown},{c,union,[{c,atom,[undefined],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}],{2,{c,atom,[eof],unknown}}},{c,tuple,[{c,atom,[error],unknown},{c,union,[{c,atom,any,unknown},none,none,none,none,none,{c,tuple,[{c,atom,[no_translation],unknown},{c,atom,[unicode],unknown},{c,atom,[latin1],unknown}],{3,{c,atom,[no_translation],unknown}}},none,none],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,binary,{8,0},unknown},any,any]},{emqx_mgmt_api_plugins_proto_v2,get_plugins,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_conf_proto_v3,get_hocon_config,1} => {any,[{c,atom,any,unknown}]},{emqx_proto_v2,deactivate_alarm,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_delayed_proto_v2,clear_all,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_cm,do_get_chan_info,2} => {any,[any,any]},{emqx_node_rebalance_agent,enable,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[eviction_agent_busy,invalid_coordinator],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,identifier,[pid],unknown}]},{emqx_mgmt,broker_info,0} => {{c,map,{[{{c,atom,[node],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[node_status],unknown},mandatory,{c,atom,[running],unknown}},{{c,atom,[otp_release],unknown},mandatory,{c,binary,{8,0},unknown}}],any,any},unknown},[]},{emqx_telemetry,get_node_uuid,0} => {any,[]},{emqx_management_proto_v1,get_full_config,1} => {any,[{c,atom,any,unknown}]},{emqx_bridge_proto_v3,list_bridges_on_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_api_proto_v2,node_rebalance_evacuation_stop,1} => {any,[{c,atom,any,unknown}]},{emqx_gateway_cm_proto_v1,call,5} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},any,{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_mgmt_data_backup,maybe_copy_and_import,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[bardrpc],unknown},any],{2,{c,atom,[bardrpc],unknown}}},{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[config_errors],unknown},mandatory,{c,map,{[],{c,list,{any,{c,nil,[],unknown}},unknown},{c,tuple,[any,any],{2,any}}},unknown}},{{c,atom,[db_errors],unknown},mandatory,{c,map,{[],{c,atom,any,unknown},{c,tuple,[any,any],{2,any}}},unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_license_proto_v1,remote_connection_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_cm,kick_session,1} => {{c,atom,[ok],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_bridge_proto_v5,start_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v1,update,3} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any,{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_ds_replication_layer,do_add_generation_v2,1} => {{c,atom,[ok],unknown},[{c,atom,any,unknown}]},{emqx_bridge_v2_api,get_metrics_from_local_node_v6,3} => {{c,map,{[{{c,atom,[dropped],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.expired'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.other'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.queue_full'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.resource_not_found'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.resource_stopped'],unknown},mandatory,{c,number,any,integer}},{{c,atom,[failed],unknown},mandatory,{c,number,any,integer}},{{c,atom,[inflight],unknown},mandatory,any},{{c,atom,[late_reply],unknown},mandatory,{c,number,any,integer}},{{c,atom,[matched],unknown},mandatory,{c,number,any,integer}},{{c,atom,[queuing],unknown},mandatory,any},{{c,atom,[rate],unknown},mandatory,any},{{c,atom,[rate_last5m],unknown},mandatory,any},{{c,atom,[rate_max],unknown},mandatory,any},{{c,atom,[received],unknown},mandatory,{c,number,any,integer}},{{c,atom,[retried],unknown},mandatory,{c,number,any,integer}},{{c,atom,[success],unknown},mandatory,{c,number,any,integer}}],none,none},unknown},[{c,atom,[actions,sources],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_ds_proto_v2,drop_db,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown}]},{emqx,remove_config,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[config],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,{c,map,{[],{c,atom,any,unknown},any},unknown}],unknown}},{{c,atom,[post_config_update],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[raw_config],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,{c,map,{[],{c,binary,{8,0},unknown},any},unknown}],unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_ds_proto_v2,add_generation,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown}]},{emqx_node_rebalance_evacuation,is_node_available,0} => {{c,atom,any,unknown},[]},{emqx_node_rebalance_agent,disable,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[already_disabled,invalid_coordinator],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,identifier,[pid],unknown}]},{emqx_node_rebalance_proto_v3,enable_rebalance_agent,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown},any,{c,map,{[{{c,atom,[allow_connections],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_plugins_proto_v1,get_tar,3} => {any,[{c,atom,any,unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_mgmt_api_plugins,install_package,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,map,{[],any,any},unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_ds_proto_v2,store_batch,5} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[3]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,list,{{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],{c,atom,any,unknown},{c,atom,[false,true],unknown}},unknown},{c,map,{[{{c,atom,[allow_publish],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[peerhost],unknown},optional,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[properties],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[protocol],unknown},optional,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}},{c,nil,[],unknown}},unknown}}],none,none},unknown},{c,map,{[],none,none},unknown}]},{emqx_bridge,list,0} => {{c,list,{any,{c,nil,[],unknown}},unknown},[]},{emqx_mgmt,do_kickout_clients,1} => {{c,atom,[ok],unknown},[{c,list,{any,{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v5,list_bridges_on_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v6,restart_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v3,sync_data_from_node,1} => {any,[{c,atom,any,unknown}]},{emqx_mgmt_cluster_proto_v2,invite_node,2} => {any,[{c,atom,any,unknown},{c,atom,any,unknown}]},{emqx_conf_proto_v3,get_config,2} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_evacuation,stop,0} => {any,[]},{emqx_management_proto_v4,list_subscriptions,1} => {any,[{c,atom,any,unknown}]},{emqx_node_rebalance,stop,0} => {any,[]},{emqx_bridge_proto_v4,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_status_proto_v1,local_status,1} => {any,[{c,atom,any,unknown}]},{emqx_node_rebalance_proto_v2,session_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_status_proto_v2,local_status,1} => {any,[{c,atom,any,unknown}]},{emqx_bridge_proto_v6,v2_start_bridge_on_all_nodes_v6,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,[actions,sources],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v1,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_gateway_cm_proto_v1,kick_session,4} => {any,[{c,atom,any,unknown},{c,atom,[discard,kick],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_conf_proto_v2,remove_config,2} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_bridge_api,get_metrics_from_local_node,2} => {{c,map,{[{{c,atom,[dropped],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.expired'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.other'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.queue_full'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.resource_not_found'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.resource_stopped'],unknown},mandatory,{c,number,any,integer}},{{c,atom,[failed],unknown},mandatory,{c,number,any,integer}},{{c,atom,[inflight],unknown},mandatory,any},{{c,atom,[late_reply],unknown},mandatory,{c,number,any,integer}},{{c,atom,[matched],unknown},mandatory,{c,number,any,integer}},{{c,atom,[queuing],unknown},mandatory,any},{{c,atom,[rate],unknown},mandatory,any},{{c,atom,[rate_last5m],unknown},mandatory,any},{{c,atom,[rate_max],unknown},mandatory,any},{{c,atom,[received],unknown},mandatory,{c,number,any,integer}},{{c,atom,[retried],unknown},mandatory,{c,number,any,integer}},{{c,atom,[success],unknown},mandatory,{c,number,any,integer}}],none,none},unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_authz_cache,drain_cache,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_node_rebalance_proto_v1,disable_rebalance_agent,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown}]},{emqx_conf_proto_v2,reset,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_bridge_proto_v6,stop_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_cm,takeover_session,2} => {{c,union,[{c,atom,[none,ok,undefined],unknown},none,none,none,{c,list,{{c,tuple,[{c,atom,any,unknown},any],{2,any}},{c,nil,[],unknown}},unknown},none,{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[expired],unknown},{c,union,[none,none,none,none,none,none,{c,tuple,[{c,atom,[session],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},any,{c,atom,[false,true],unknown},{c,map,{[],any,any},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,atom,[false,true],unknown},{c,opaque,[{opaque,emqx_inflight,inflight,0,{c,tuple,[any,any,any],{3,any}}}],unknown},{c,tuple,[any,any,any,any,any,any,any,any,any,any,any],{11,any}},{c,number,{int_rng,1,1114111},integer},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,map,{[],any,any},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,number,{int_rng,1,pos_inf},integer}],{15,{c,atom,[session],unknown}}},none,{c,map,{[{{c,atom,[conninfo],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[created_at],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[id],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[inflight],unknown},mandatory,{c,opaque,[{opaque,emqx_persistent_message_ds_replayer,inflight,0,{c,tuple,[any,any,any,any],{4,any}}}],unknown}},{{c,atom,[last_alive_at],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[props],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[receive_maximum],unknown},mandatory,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[subscriptions],unknown},mandatory,{c,opaque,[{opaque,emqx_topic_gbt,t,2,{c,opaque,[{opaque,gb_trees,tree,2,{c,tuple,[any,any],{2,any}}}],unknown}}],unknown}},{{c,atom,[timer_bump_last_alive_at],unknown},optional,{c,identifier,[reference],unknown}},{{c,atom,[timer_get_streams],unknown},optional,{c,identifier,[reference],unknown}},{{c,atom,[timer_pull],unknown},optional,{c,identifier,[reference],unknown}}],none,none},unknown}],unknown}],{2,{c,atom,[expired],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,union,[none,none,none,none,{c,list,{{c,tuple,[any,any,any],{3,any}},{c,nil,[],unknown}},unknown},none,none,none,{c,map,{[],any,any},unknown}],unknown}],{2,{c,atom,[ok],unknown}}},{c,tuple,[{c,atom,[persistent],unknown},{c,union,[none,none,none,none,none,none,{c,tuple,[{c,atom,[session],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},any,{c,atom,[false,true],unknown},{c,map,{[],any,any},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,atom,[false,true],unknown},{c,opaque,[{opaque,emqx_inflight,inflight,0,{c,tuple,[any,any,any],{3,any}}}],unknown},{c,tuple,[any,any,any,any,any,any,any,any,any,any,any],{11,any}},{c,number,{int_rng,1,1114111},integer},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,map,{[],any,any},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,number,{int_rng,1,pos_inf},integer}],{15,{c,atom,[session],unknown}}},none,{c,map,{[{{c,atom,[conninfo],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[created_at],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[id],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[inflight],unknown},mandatory,{c,opaque,[{opaque,emqx_persistent_message_ds_replayer,inflight,0,{c,tuple,[any,any,any,any],{4,any}}}],unknown}},{{c,atom,[last_alive_at],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[props],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[receive_maximum],unknown},mandatory,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[subscriptions],unknown},mandatory,{c,opaque,[{opaque,emqx_topic_gbt,t,2,{c,opaque,[{opaque,gb_trees,tree,2,{c,tuple,[any,any],{2,any}}}],unknown}}],unknown}},{{c,atom,[timer_bump_last_alive_at],unknown},optional,{c,identifier,[reference],unknown}},{{c,atom,[timer_get_streams],unknown},optional,{c,identifier,[reference],unknown}},{{c,atom,[timer_pull],unknown},optional,{c,identifier,[reference],unknown}}],none,none},unknown}],unknown}],{2,{c,atom,[persistent],unknown}}}]},{4,[{c,tuple,[{c,atom,[living],unknown},{c,atom,any,unknown},{c,identifier,[pid],unknown},any],{4,{c,atom,[living],unknown}}}]}],unknown},none,{c,map,{[],{c,atom,any,unknown},any},unknown}],unknown},[any,any]},{emqx_node_rebalance,connection_count,0} => {{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}},[]},{emqx_conf_app,sync_data_from_node,0} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,binary,{8,0},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[]},{emqx_management_proto_v4,kickout_clients,2} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_alarm,get_alarms,1} => {any,[{c,atom,[activated,all,deactivated],unknown}]},{emqx_management_proto_v2,node_info,1} => {any,[{c,atom,any,unknown}]},{emqx_exhook_mgr,all_servers_info,0} => {any,[]}}}. diff --git a/changes/e5.5.0.en.md b/changes/e5.5.0.en.md new file mode 100644 index 000000000..1b73aea46 --- /dev/null +++ b/changes/e5.5.0.en.md @@ -0,0 +1,125 @@ +# e5.5.0 + +## Enhancements + +- [#12085](https://github.com/emqx/emqx/pull/12085) EMQX has been upgraded to leverage the capabilities of OTP version 26.1.2-2. NOTE: Docker images are still built with OTP 25.3.2. + +- [#12189](https://github.com/emqx/emqx/pull/12189) Enhanced the [ACL](../access-control/authn/jwt.md#access-control-list-optional) claim format in EMQX JWT authentication for greater versatility. The updated format now supports an array structure, aligning more closely with the file-based ACL rules. + + For example: + + ```json + [ + { + "permission": "allow", + "action": "pub", + "topic": "${username}/#", + "qos": [0, 1], + "retain": true + }, + { + "permission": "allow", + "action": "sub", + "topic": "eq ${username}/#", + "qos": [0, 1] + }, + { + "permission": "deny", + "action": "all", + "topics": ["#"] + } + ] + ``` + + In this new format, the absence of a matching rule does not result in an automatic denial of the action. The authorization chain can advance to other configured authorizers if a match is not found in the JWT ACL. If no match is found throughout the chain, the final decision defers to the default permission set in `authorization.no_match`. + +- [#12267](https://github.com/emqx/emqx/pull/12267) Added a new `timeout` parameter to the `cluster/:node/invite` interface, addressing the issue of default timeouts. + The previously set 5-second default timeout often led to HTTP API call timeouts because joining an EMQX cluster usually requires more time. + + In addition, EMQX added a new API `/cluster/:node/invite_async` to support an asynchronous way to invite nodes to join the cluster and introduced a new `cluster/invitation` API to inspect the join status. + +- [#12272](https://github.com/emqx/emqx/pull/12272) Introduced updates to the `retain` API in EMQX: + + - Added a new API `DELETE /retainer/messages` to clean all retained messages. + - Added an optional topic filter parameter `topic` in the query string for the API `GET /retainer/messages`. For example, using a query string `topic=t/1` filters the retained messages for a specific topic, improving the efficiency of message retrieval. + +- [#12277](https://github.com/emqx/emqx/pull/12277) Added `mqtt/delayed/messages/:topic` API to remove delayed messages by topic name. + +- [#12278](https://github.com/emqx/emqx/pull/12278) Adjusted the maximum pagination size for paginated APIs in the REST API from `3000` to `10000`. + +- [#12289](https://github.com/emqx/emqx/pull/12289) Authorization caching now supports the exclusion of specific topics. For the specified list of topics and topic filters, EMQX will not generate an authorization cache. The list can be set through the `authorization.cache.excludes` configuration item or via the Dashboard. For these specific topics, permission checks will always be conducted in real-time rather than relying on previous cache results, thus ensuring the timeliness of authorization outcomes. + +- [#12329](https://github.com/emqx/emqx/pull/12329) Added `broker.routing.batch_sync` configuration item to enable a dedicated process pool that synchronizes subscriptions with the global routing table in batches, thus reducing the frequency of cross-node communication that can be slowed down by network latency. Processing multiple subscription updates collectively, not only accelerates synchronization between replica nodes and core nodes in a cluster but also reduces the load on the broker pool, minimizing the risk of overloading. + +- [#12333](https://github.com/emqx/emqx/pull/12333) Added a `tags` field for actions and connectors. Similar to the `description` field (which is a free text annotation), `tags` can be used to annotate actions and connectors for filtering and grouping. + +- [#12072](https://github.com/emqx/emqx/pull/12072) GreptimeDB data integration now supports asynchronous data write operations to provide better performance. + +- [#12194](https://github.com/emqx/emqx/pull/12194) Improved Kafka producer performance. + +- [#12247](https://github.com/emqx/emqx/pull/12247) The bridges for InfluxDB have been split so they are available via the connectors and actions APIs. They are still backward compatible with the old bridge API. + +- [#12299](https://github.com/emqx/emqx/pull/12299) Exposed more metrics to improve observability: + + Montior API: + - Added `retained_msg_count` field to `/api/v5/monitor_current`. + - Added `license_quota` field to `/api/v5/monitor_current` + - Added `retained_msg_count` and `node_uptime` fields to `/api/v5/monitor_current/nodes/{node}`. + - Added `retained_msg_count`, `license_quota` and `node_uptime` fields to `/api/v5/monitor_current/nodes/{node}`. + + Prometheus API: + - Added `emqx_cert_expiry_at` and `emqx_license_expiry_at` to `/api/v5/prometheus/stats` to display TLS listener certificate expiration time and license expiration time. + - Added `/api/v5/prometheus/auth` endpoint to provide metrics such as execution count and running status for all authenticatiors and authorizators. + - Added `/api/v5/prometheus/data_integration` endpoint to provide metrics such as execution count and status for all rules, actions, and connectors. + + Limitations: + Prometheus push gateway only supports the content in `/api/v5/prometheus/stats?mode=node`. + + For more API details and metric type information, please see swagger api docs. + +- [#12196](https://github.com/emqx/emqx/pull/12196) Improved network efficiency during routes cleanup. + + Previously, when a node was down, a delete operation for each route to that node must be exchanged between all the other live nodes. After this change, only one `match and delete` operation is exchanged between all live nodes, significantly reducing the number of necessary network packets and decreasing the load on the inter-cluster network. + This optimization must be especially helpful for geo-distributed EMQX deployments where network latency can be significantly high. + +- [#12354](https://github.com/emqx/emqx/pull/12354) The concurrent creation and updates of data integrations are now supported, significantly increasing operation speeds, such as when importing backup files. + +- [#12396](https://github.com/emqx/emqx/pull/12396) Enhanced the user import feature in the `authentication/:id/import_users` Interface: + + - Added a new parameter `?type=plain` for easier importing of users with plaintext passwords, complementing the existing functionality that supports hashed passwords. + - Enhanced support for `content-type: application/json`, allowing HTTP Body submissions in JSON format. This extends the current capability that exclusively supports `multipart/form-data` for CSV files. + +- [#11902](https://github.com/emqx/emqx/pull/11902) Enhanced EMQX's capability to facilitate MQTT message bridging through the one-way Nari SysKeeper 2000 network isolation gateway. + +## Bug Fixes + +- [#12232](https://github.com/emqx/emqx/pull/12232) Fixed an issue when cluster commit log table was not deleted after a node was forced to leave a cluster. + +- [#12243](https://github.com/emqx/emqx/pull/12243) Fixed a family of subtle race conditions that could lead to inconsistencies in the global routing state. + +- [#12269](https://github.com/emqx/emqx/pull/12269) Improved error handling in the `/clients` interface; now returns a 400 status with more detailed error messages, instead of a generic 500, for query string validation failures. + +- [#12285](https://github.com/emqx/emqx/pull/12285) Updated the CoAP gateway to support short parameter names for slight savings in datagram size. For example, `clientid=bar` can be written as `c=bar`. + +- [#12303](https://github.com/emqx/emqx/pull/12303) Fixed the message indexing in retainer. Previously, clients with wildcard subscriptions might receive irrelevant retained messages not matching their subscription topics. + +- [#12305](https://github.com/emqx/emqx/pull/12305) Corrected an issue with incomplete client/connection information being passed into `emqx_cm`, which could lead to internal inconsistencies and affect memory usage and operations like node evacuation. + +- [#12306](https://github.com/emqx/emqx/pull/12306) Fixed an issue preventing the connectivity test for the Connector from functioning correctly after updating the password parameter via the HTTP API. + +- [#12359](https://github.com/emqx/emqx/pull/12359) Fixed an issue causing error messages when restarting a node configured with some types of data bridges. Additionally, these bridges were at risk of entering a failed state upon node restart, requiring a manual restart to restore functionality. + +- [#12404](https://github.com/emqx/emqx/pull/12404) Fixed an issue where restarting a data integration with heavy message flow could lead to a stop in the collection of data integration metrics. + +- [#12282](https://github.com/emqx/emqx/pull/12282) Improved the HTTP API error response for MySQL bridge creation failures. It also resolved a problem with removing MySQL Sinks containing undefined columns in their SQL. + +- [#12291](https://github.com/emqx/emqx/pull/12291) Fixed inconsistencies in EMQX’s handling of configuration updates involving sensitive parameters, which previously led to stray `"******"` strings in cluster configuration files. + +- [#12301](https://github.com/emqx/emqx/pull/12301) Fixed an issue with the line protocol in InfluxDB, where numeric literals were being stored as string types. + +- [#12317](https://github.com/emqx/emqx/pull/12317) Removed the `resource_opts.batch_size` field from the MongoDB Action schema, as it is not yet supported. + +## Breaking Changes + +- [#12283](https://github.com/emqx/emqx/pull/12283) Fixed the `resource_opts` configuration schema for the GCP PubSub Producer connector so that it contains only relevant fields. + This affects the creation of GCP PubSub Producer connectors via HOCON configuration (`connectors.gcp_pubsub_producer.*.resource_opts`) and the HTTP APIs `POST /connectors` / `PUT /connectors/:id` for this particular connector type. diff --git a/changes/v5.5.0.en.md b/changes/v5.5.0.en.md new file mode 100644 index 000000000..5427c5984 --- /dev/null +++ b/changes/v5.5.0.en.md @@ -0,0 +1,100 @@ +# v5.5.0 + +## Enhancements + +- [#12085](https://github.com/emqx/emqx/pull/12085) EMQX has been upgraded to leverage the capabilities of OTP version 26.1.2-2. NOTE: Docker images are still built with OTP 25.3.2. + +- [#12189](https://github.com/emqx/emqx/pull/12189) Enhanced the [ACL](../access-control/authn/jwt.md#access-control-list-optional) claim format in EMQX JWT authentication for greater versatility. The updated format now supports an array structure, aligning more closely with the file-based ACL rules. + + For example: + + ```json + [ + { + "permission": "allow", + "action": "pub", + "topic": "${username}/#", + "qos": [0, 1], + "retain": true + }, + { + "permission": "allow", + "action": "sub", + "topic": "eq ${username}/#", + "qos": [0, 1] + }, + { + "permission": "deny", + "action": "all", + "topics": ["#"] + } + ] + ``` + + In this new format, the absence of a matching rule does not result in an automatic denial of the action. The authorization chain can advance to other configured authorizers if a match is not found in the JWT ACL. If no match is found throughout the chain, the final decision defers to the default permission set in `authorization.no_match`. + +- [#12267](https://github.com/emqx/emqx/pull/12267) Added a new `timeout` parameter to the `cluster/:node/invite` interface, addressing the issue of default timeouts. + The previously set 5-second default timeout often led to HTTP API call timeouts because joining an EMQX cluster usually requires more time. + + In addition, EMQX added a new API `/cluster/:node/invite_async` to support an asynchronous way to invite nodes to join the cluster and introduced a new `cluster/invitation` API to inspect the join status. + +- [#12272](https://github.com/emqx/emqx/pull/12272) Introduced updates to the `retain` API in EMQX: + + - Added a new API `DELETE /retainer/messages` to clean all retained messages. + - Added an optional topic filter parameter `topic` in the query string for the API `GET /retainer/messages`. For example, using a query string `topic=t/1` filters the retained messages for a specific topic, improving the efficiency of message retrieval. + +- [#12277](https://github.com/emqx/emqx/pull/12277) Added `mqtt/delayed/messages/:topic` API to remove delayed messages by topic name. + +- [#12278](https://github.com/emqx/emqx/pull/12278) Adjusted the maximum pagination size for paginated APIs in the REST API from `3000` to `10000`. + +- [#12289](https://github.com/emqx/emqx/pull/12289) Authorization caching now supports the exclusion of specific topics. For the specified list of topics and topic filters, EMQX will not generate an authorization cache. The list can be set through the `authorization.cache.excludes` configuration item or via the Dashboard. For these specific topics, permission checks will always be conducted in real-time rather than relying on previous cache results, thus ensuring the timeliness of authorization outcomes. + +- [#12329](https://github.com/emqx/emqx/pull/12329) Added `broker.routing.batch_sync` configuration item to enable a dedicated process pool that synchronizes subscriptions with the global routing table in batches, thus reducing the frequency of cross-node communication that can be slowed down by network latency. Processing multiple subscription updates collectively, not only accelerates synchronization between replica nodes and core nodes in a cluster but also reduces the load on the broker pool, minimizing the risk of overloading. + +- [#12333](https://github.com/emqx/emqx/pull/12333) Added a `tags` field for actions and connectors. Similar to the `description` field (which is a free text annotation), `tags` can be used to annotate actions and connectors for filtering and grouping. + +- [#12299](https://github.com/emqx/emqx/pull/12299) Exposed more metrics to improve observability: + + Montior API: + - Added `retained_msg_count` field to `/api/v5/monitor_current`. + - Added `license_quota` field to `/api/v5/monitor_current` + - Added `retained_msg_count` and `node_uptime` fields to `/api/v5/monitor_current/nodes/{node}`. + - Added `retained_msg_count`, `license_quota` and `node_uptime` fields to `/api/v5/monitor_current/nodes/{node}`. + + Prometheus API: + - Added `emqx_cert_expiry_at` and `emqx_license_expiry_at` to `/api/v5/prometheus/stats` to display TLS listener certificate expiration time and license expiration time. + - Added `/api/v5/prometheus/auth` endpoint to provide metrics such as execution count and running status for all authenticatiors and authorizators. + - Added `/api/v5/prometheus/data_integration` endpoint to provide metrics such as execution count and status for all rules, actions, and connectors. + + Limitations: + Prometheus push gateway only supports the content in `/api/v5/prometheus/stats?mode=node`. + + For more API details and metric type information, please see swagger api docs. + +- [#12196](https://github.com/emqx/emqx/pull/12196) Improved network efficiency during routes cleanup. + + Previously, when a node was down, a delete operation for each route to that node must be exchanged between all the other live nodes. After this change, only one `match and delete` operation is exchanged between all live nodes, significantly reducing the number of necessary network packets and decreasing the load on the inter-cluster network. + This optimization must be especially helpful for geo-distributed EMQX deployments where network latency can be significantly high. + +- [#12354](https://github.com/emqx/emqx/pull/12354) The concurrent creation and updates of data integrations are now supported, significantly increasing operation speeds, such as when importing backup files. + + +## Bug Fixes + +- [#12232](https://github.com/emqx/emqx/pull/12232) Fixed an issue when cluster commit log table was not deleted after a node was forced to leave a cluster. + +- [#12243](https://github.com/emqx/emqx/pull/12243) Fixed a family of subtle race conditions that could lead to inconsistencies in the global routing state. + +- [#12269](https://github.com/emqx/emqx/pull/12269) Improved error handling in the `/clients` interface; now returns a 400 status with more detailed error messages, instead of a generic 500, for query string validation failures. + +- [#12285](https://github.com/emqx/emqx/pull/12285) Updated the CoAP gateway to support short parameter names for slight savings in datagram size. For example, `clientid=bar` can be written as `c=bar`. + +- [#12303](https://github.com/emqx/emqx/pull/12303) Fixed the message indexing in retainer. Previously, clients with wildcard subscriptions might receive irrelevant retained messages not matching their subscription topics. + +- [#12305](https://github.com/emqx/emqx/pull/12305) Corrected an issue with incomplete client/connection information being passed into `emqx_cm`, which could lead to internal inconsistencies and affect memory usage and operations like node evacuation. + +- [#12306](https://github.com/emqx/emqx/pull/12306) Fixed an issue preventing the connectivity test for the Connector from functioning correctly after updating the password parameter via the HTTP API. + +- [#12359](https://github.com/emqx/emqx/pull/12359) Fixed an issue causing error messages when restarting a node configured with some types of data bridges. Additionally, these bridges were at risk of entering a failed state upon node restart, requiring a manual restart to restore functionality. + +- [#12404](https://github.com/emqx/emqx/pull/12404) Fixed an issue where restarting a data integration with heavy message flow could lead to a stop in the collection of data integration metrics. diff --git a/deploy/charts/emqx-enterprise/Chart.yaml b/deploy/charts/emqx-enterprise/Chart.yaml index 3610a815a..b870d1123 100644 --- a/deploy/charts/emqx-enterprise/Chart.yaml +++ b/deploy/charts/emqx-enterprise/Chart.yaml @@ -14,8 +14,8 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. -version: 5.5.0-rc.2 +version: 5.5.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. -appVersion: 5.5.0-rc.2 +appVersion: 5.5.0 diff --git a/deploy/charts/emqx/Chart.yaml b/deploy/charts/emqx/Chart.yaml index 679456299..41f0b37b6 100644 --- a/deploy/charts/emqx/Chart.yaml +++ b/deploy/charts/emqx/Chart.yaml @@ -14,8 +14,8 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. -version: 5.5.0-rc.2 +version: 5.5.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. -appVersion: 5.5.0-rc.2 +appVersion: 5.5.0 diff --git a/scripts/rel/cut.sh b/scripts/rel/cut.sh index 136f8c466..bb6c04da4 100755 --- a/scripts/rel/cut.sh +++ b/scripts/rel/cut.sh @@ -233,7 +233,7 @@ check_bpapi() { case "$TAG" in *.0) fname="$(echo "$TAG" | sed 's/^e//; s/\.0$//')" - fpath="apps/emqx/test/emqx_static_checks_data/${fname}.bpapi" + fpath="apps/emqx/test/emqx_static_checks_data/${fname}.bpapi2" logmsg "Checking $fpath" if [ ! -f "$fpath" ]; then logerr "BPAPI file missing: $fpath" From 54fda5869876c9a743d20f075c457a30cc23e1d7 Mon Sep 17 00:00:00 2001 From: Ivan Dyachkov Date: Thu, 1 Feb 2024 16:34:12 +0100 Subject: [PATCH 09/11] ci: use v3 artifacts actions in build packages --- .github/workflows/build_packages.yaml | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_packages.yaml b/.github/workflows/build_packages.yaml index b48e47cd0..31f39d551 100644 --- a/.github/workflows/build_packages.yaml +++ b/.github/workflows/build_packages.yaml @@ -95,13 +95,12 @@ jobs: apple_developer_identity: ${{ secrets.APPLE_DEVELOPER_IDENTITY }} apple_developer_id_bundle: ${{ secrets.APPLE_DEVELOPER_ID_BUNDLE }} apple_developer_id_bundle_password: ${{ secrets.APPLE_DEVELOPER_ID_BUNDLE_PASSWORD }} - - uses: actions/upload-artifact@1eb3cb2b3e0f29609092a73eb033bb759a334595 # v4.1.0 + - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 if: success() with: - name: ${{ matrix.profile }}-${{ matrix.otp }}-${{ matrix.os }} + name: ${{ matrix.profile }} path: _packages/${{ matrix.profile }}/ retention-days: 7 - compression-level: 0 linux: runs-on: [self-hosted, ephemeral, linux, "${{ matrix.arch }}"] @@ -139,7 +138,7 @@ jobs: with_elixir: - 'no' include: - - profile: emqx + - profile: ${{ inputs.profile }} otp: ${{ inputs.otp_vsn }} arch: x64 os: ubuntu22.04 @@ -195,7 +194,7 @@ jobs: fi - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 with: - name: ${{ matrix.profile }}-${{ matrix.otp }}-${{ matrix.arch }}-${{ matrix.os }}-${{ matrix.with_elixir == 'yes' && 'elixir' || 'erlang' }} + name: ${{ matrix.profile }} path: _packages/${{ matrix.profile }}/ retention-days: 7 @@ -211,11 +210,10 @@ jobs: profile: - ${{ inputs.profile }} steps: - - uses: actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935 # v4.1.1 + - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 with: - pattern: ${{ matrix.profile }}-* + name: ${{ matrix.profile }} path: packages/${{ matrix.profile }} - merge-multiple: true - name: install dos2unix run: sudo apt-get update -y && sudo apt install -y dos2unix - name: get packages @@ -236,6 +234,9 @@ jobs: - name: upload to aws s3 env: PROFILE: ${{ matrix.profile }} + REF_NAME: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.ref || github.ref_name }} + AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} + AWS_CLOUDFRONT_ID: ${{ secrets.AWS_CLOUDFRONT_ID }} run: | set -eu if [ $PROFILE = 'emqx' ]; then @@ -246,5 +247,5 @@ jobs: echo "unknown profile $PROFILE" exit 1 fi - aws s3 cp --recursive packages/$PROFILE s3://${{ secrets.AWS_S3_BUCKET }}/$s3dir/${{ github.ref_name }} - aws cloudfront create-invalidation --distribution-id ${{ secrets.AWS_CLOUDFRONT_ID }} --paths "/$s3dir/${{ github.ref_name }}/*" + aws s3 cp --recursive packages/$PROFILE s3://$AWS_S3_BUCKET/$s3dir/$REF_NAME + aws cloudfront create-invalidation --distribution-id "$AWS_CLOUDFRONT_ID" --paths "/$s3dir/$REF_NAME/*" From 4a4f96d4b58cc9d9ae1cb981f46e0e3ecb074de7 Mon Sep 17 00:00:00 2001 From: Ivan Dyachkov Date: Fri, 2 Feb 2024 07:23:10 +0100 Subject: [PATCH 10/11] ci: scorecard workflow can only run on master branch --- .github/workflows/scorecard.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/scorecard.yaml b/.github/workflows/scorecard.yaml index aabe4e5b0..7e307b6bf 100644 --- a/.github/workflows/scorecard.yaml +++ b/.github/workflows/scorecard.yaml @@ -10,7 +10,6 @@ on: push: branches: - master - - 'release-5[0-9]' workflow_dispatch: permissions: read-all From 84b6d7d7204073d053534ce212587aac84fe253e Mon Sep 17 00:00:00 2001 From: Ivan Dyachkov Date: Fri, 2 Feb 2024 10:38:50 +0100 Subject: [PATCH 11/11] fix: remove 5.5.bpapi2 file --- apps/emqx/test/emqx_static_checks_data/5.5.bpapi2 | 1 - 1 file changed, 1 deletion(-) delete mode 100644 apps/emqx/test/emqx_static_checks_data/5.5.bpapi2 diff --git a/apps/emqx/test/emqx_static_checks_data/5.5.bpapi2 b/apps/emqx/test/emqx_static_checks_data/5.5.bpapi2 deleted file mode 100644 index 6192442f1..000000000 --- a/apps/emqx/test/emqx_static_checks_data/5.5.bpapi2 +++ /dev/null @@ -1 +0,0 @@ -#{api => #{{emqx_node_rebalance_api,1} => #{calls => [{{emqx_node_rebalance_api_proto_v1,node_rebalance_stop,['Node']},{emqx_node_rebalance,stop,[]}},{{emqx_node_rebalance_api_proto_v1,node_rebalance_start,['Node','Opts']},{emqx_node_rebalance,start,['Opts']}},{{emqx_node_rebalance_api_proto_v1,node_rebalance_evacuation_stop,['Node']},{emqx_node_rebalance_evacuation,stop,[]}},{{emqx_node_rebalance_api_proto_v1,node_rebalance_evacuation_start,['Node','Opts']},{emqx_node_rebalance_evacuation,start,['Opts']}}],casts => []},{emqx_bridge,1} => #{calls => [{{emqx_bridge_proto_v1,lookup_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,lookup_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v1,stop_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v1,restart_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v1,stop_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v1,restart_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v1,list_bridges,['Node']},{emqx_bridge,list,[]}}],casts => []},{emqx_topic_metrics,1} => #{calls => [{{emqx_topic_metrics_proto_v1,reset,['Nodes','Topic']},{emqx_topic_metrics,reset,['Topic']}},{{emqx_topic_metrics_proto_v1,reset,['Nodes']},{emqx_topic_metrics,reset,[]}},{{emqx_topic_metrics_proto_v1,metrics,['Nodes','Topic']},{emqx_topic_metrics,metrics,['Topic']}},{{emqx_topic_metrics_proto_v1,metrics,['Nodes']},{emqx_topic_metrics,metrics,[]}}],casts => []},{emqx_license,1} => #{calls => [{{emqx_license_proto_v1,remote_connection_counts,['Nodes']},{emqx_license_resources,local_connection_count,[]}}],casts => []},{emqx_persistent_session_ds,1} => #{calls => [{{emqx_persistent_session_ds_proto_v1,close_all_iterators,['Nodes','DSSessionID']},{emqx_persistent_session_ds,do_ensure_all_iterators_closed,['DSSessionID']}},{{emqx_persistent_session_ds_proto_v1,close_iterator,['Nodes','IteratorID']},{emqx_persistent_session_ds,do_ensure_iterator_closed,['IteratorID']}},{{emqx_persistent_session_ds_proto_v1,open_iterator,['Nodes','TopicFilter','StartMS','IteratorID']},{emqx_persistent_session_ds,do_open_iterator,['TopicFilter','StartMS','IteratorID']}}],casts => []},{emqx,1} => #{calls => [{{emqx_proto_v1,delete_all_deactivated_alarms,['Node']},{emqx_alarm,delete_all_deactivated_alarms,[]}},{{emqx_proto_v1,deactivate_alarm,['Node','Name']},{emqx_alarm,deactivate,['Name']}},{{emqx_proto_v1,clean_pem_cache,['Node']},{ssl_pem_cache,clear,[]}},{{emqx_proto_v1,clean_authz_cache,['Node']},{emqx_authz_cache,drain_cache,[]}},{{emqx_proto_v1,clean_authz_cache,['Node','ClientId']},{emqx_authz_cache,drain_cache,['ClientId']}},{{emqx_proto_v1,get_metrics,['Node']},{emqx_metrics,all,[]}},{{emqx_proto_v1,get_stats,['Node']},{emqx_stats,getstats,[]}},{{emqx_proto_v1,get_alarms,['Node','Type']},{emqx_alarm,get_alarms,['Type']}},{{emqx_proto_v1,is_running,['Node']},{emqx,is_running,[]}}],casts => []},{emqx_mgmt_trace,1} => #{calls => [{{emqx_mgmt_trace_proto_v1,read_trace_file,['Node','Name','Position','Limit']},{emqx_mgmt_api_trace,read_trace_file,['Name','Position','Limit']}},{{emqx_mgmt_trace_proto_v1,trace_file,['Nodes','File']},{emqx_trace,trace_file,['File']}},{{emqx_mgmt_trace_proto_v1,get_trace_size,['Nodes']},{emqx_mgmt_api_trace,get_trace_size,[]}}],casts => []},{emqx_license,2} => #{calls => [{{emqx_license_proto_v2,remote_connection_counts,['Nodes']},{emqx_license_resources,local_connection_count,[]}}],casts => []},{emqx_management,4} => #{calls => [{{emqx_management_proto_v4,kickout_clients,['Node','ClientIds']},{emqx_mgmt,do_kickout_clients,['ClientIds']}},{{emqx_management_proto_v4,get_full_config,['Node']},{emqx_mgmt_api_configs,get_full_config,[]}},{{emqx_management_proto_v4,call_client,['Node','ClientId','Req']},{emqx_mgmt,do_call_client,['ClientId','Req']}},{{emqx_management_proto_v4,unsubscribe,['Node','ClientId','Topic']},{emqx_mgmt,do_unsubscribe,['ClientId','Topic']}},{{emqx_management_proto_v4,subscribe,['Node','ClientId','TopicTables']},{emqx_mgmt,do_subscribe,['ClientId','TopicTables']}},{{emqx_management_proto_v4,list_listeners,['Node']},{emqx_mgmt_api_listeners,do_list_listeners,[]}},{{emqx_management_proto_v4,list_subscriptions,['Node']},{emqx_mgmt,do_list_subscriptions,[]}},{{emqx_management_proto_v4,broker_info,['Nodes']},{emqx_mgmt,broker_info,[]}},{{emqx_management_proto_v4,node_info,['Nodes']},{emqx_mgmt,node_info,[]}},{{emqx_management_proto_v4,unsubscribe_batch,['Node','ClientId','Topics']},{emqx_mgmt,do_unsubscribe_batch,['ClientId','Topics']}}],casts => []},{emqx_management,1} => #{calls => [{{emqx_management_proto_v1,get_full_config,['Node']},{emqx_mgmt_api_configs,get_full_config,[]}},{{emqx_management_proto_v1,call_client,['Node','ClientId','Req']},{emqx_mgmt,do_call_client,['ClientId','Req']}},{{emqx_management_proto_v1,unsubscribe,['Node','ClientId','Topic']},{emqx_mgmt,do_unsubscribe,['ClientId','Topic']}},{{emqx_management_proto_v1,subscribe,['Node','ClientId','TopicTables']},{emqx_mgmt,do_subscribe,['ClientId','TopicTables']}},{{emqx_management_proto_v1,list_listeners,['Node']},{emqx_mgmt_api_listeners,do_list_listeners,[]}},{{emqx_management_proto_v1,list_subscriptions,['Node']},{emqx_mgmt,do_list_subscriptions,[]}},{{emqx_management_proto_v1,broker_info,['Node']},{emqx_mgmt,broker_info,[]}},{{emqx_management_proto_v1,node_info,['Node']},{emqx_mgmt,node_info,[]}}],casts => []},{emqx_management,2} => #{calls => [{{emqx_management_proto_v2,get_full_config,['Node']},{emqx_mgmt_api_configs,get_full_config,[]}},{{emqx_management_proto_v2,call_client,['Node','ClientId','Req']},{emqx_mgmt,do_call_client,['ClientId','Req']}},{{emqx_management_proto_v2,unsubscribe,['Node','ClientId','Topic']},{emqx_mgmt,do_unsubscribe,['ClientId','Topic']}},{{emqx_management_proto_v2,subscribe,['Node','ClientId','TopicTables']},{emqx_mgmt,do_subscribe,['ClientId','TopicTables']}},{{emqx_management_proto_v2,list_listeners,['Node']},{emqx_mgmt_api_listeners,do_list_listeners,[]}},{{emqx_management_proto_v2,list_subscriptions,['Node']},{emqx_mgmt,do_list_subscriptions,[]}},{{emqx_management_proto_v2,broker_info,['Node']},{emqx_mgmt,broker_info,[]}},{{emqx_management_proto_v2,node_info,['Node']},{emqx_mgmt,node_info,[]}},{{emqx_management_proto_v2,unsubscribe_batch,['Node','ClientId','Topics']},{emqx_mgmt,do_unsubscribe_batch,['ClientId','Topics']}}],casts => []},{emqx_bridge,4} => #{calls => [{{emqx_bridge_proto_v4,get_metrics_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,get_metrics_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,lookup_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,lookup_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,stop_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,start_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,restart_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,stop_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,start_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,restart_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v4,list_bridges_on_nodes,['Nodes']},{emqx_bridge,list,[]}}],casts => []},{emqx_cm,2} => #{calls => [{{emqx_cm_proto_v2,kick_session,['Action','ClientId','ChanPid']},{emqx_cm,do_kick_session,['Action','ClientId','ChanPid']}},{{emqx_cm_proto_v2,takeover_finish,['ConnMod','ChanPid']},{emqx_cm,takeover_finish,['ConnMod','ChanPid']}},{{emqx_cm_proto_v2,takeover_session,['ClientId','ChanPid']},{emqx_cm,takeover_session,['ClientId','ChanPid']}},{{emqx_cm_proto_v2,get_chann_conn_mod,['ClientId','ChanPid']},{emqx_cm,do_get_chann_conn_mod,['ClientId','ChanPid']}},{{emqx_cm_proto_v2,get_chan_info,['ClientId','ChanPid']},{emqx_cm,do_get_chan_info,['ClientId','ChanPid']}},{{emqx_cm_proto_v2,get_chan_stats,['ClientId','ChanPid']},{emqx_cm,do_get_chan_stats,['ClientId','ChanPid']}},{{emqx_cm_proto_v2,lookup_client,['Node','Key']},{emqx_cm,lookup_client,['Key']}},{{emqx_cm_proto_v2,kickout_client,['Node','ClientId']},{emqx_cm,kick_session,['ClientId']}}],casts => []},{emqx_telemetry,1} => #{calls => [{{emqx_telemetry_proto_v1,get_cluster_uuid,['Node']},{emqx_telemetry,get_cluster_uuid,[]}},{{emqx_telemetry_proto_v1,get_node_uuid,['Node']},{emqx_telemetry,get_node_uuid,[]}}],casts => []},{emqx_dashboard,1} => #{calls => [{{emqx_dashboard_proto_v1,current_rate,['Node']},{emqx_dashboard_monitor,current_rate,['Node']}},{{emqx_dashboard_proto_v1,do_sample,['Node','Latest']},{emqx_dashboard_monitor,do_sample,['Node','Latest']}}],casts => []},{emqx_node_rebalance_status,2} => #{calls => [{{emqx_node_rebalance_status_proto_v2,purge_status,['Nodes']},{emqx_node_rebalance_status,purge_status,[]}},{{emqx_node_rebalance_status_proto_v2,evacuation_status,['Nodes']},{emqx_node_rebalance_status,evacuation_status,[]}},{{emqx_node_rebalance_status_proto_v2,rebalance_status,['Nodes']},{emqx_node_rebalance_status,rebalance_status,[]}},{{emqx_node_rebalance_status_proto_v2,local_status,['Node']},{emqx_node_rebalance_status,local_status,[]}}],casts => []},{emqx_connector,1} => #{calls => [{{emqx_connector_proto_v1,start_connectors_to_all_nodes,['Nodes','ConnectorType','ConnectorName']},{emqx_connector_resource,start,['ConnectorType','ConnectorName']}},{{emqx_connector_proto_v1,start_connector_to_node,['Node','ConnectorType','ConnectorName']},{emqx_connector_resource,start,['ConnectorType','ConnectorName']}},{{emqx_connector_proto_v1,lookup_from_all_nodes,['Nodes','ConnectorType','ConnectorName']},{emqx_connector_api,lookup_from_local_node,['ConnectorType','ConnectorName']}},{{emqx_connector_proto_v1,list_connectors_on_nodes,['Nodes']},{emqx_connector,list,[]}}],casts => []},{emqx_broker,1} => #{calls => [{{emqx_broker_proto_v1,list_subscriptions_via_topic,['Node','Topic']},{emqx_broker,subscriptions_via_topic,['Topic']}},{{emqx_broker_proto_v1,list_client_subscriptions,['Node','ClientId']},{emqx_broker,subscriptions,['ClientId']}},{{emqx_broker_proto_v1,forward,['Node','Topic','Delivery']},{emqx_broker,dispatch,['Topic','Delivery']}}],casts => [{{emqx_broker_proto_v1,forward_async,['Node','Topic','Delivery']},{emqx_broker,dispatch,['Topic','Delivery']}}]},{emqx_gateway_http,1} => #{calls => [{{emqx_gateway_http_proto_v1,get_cluster_status,['Nodes','GwName']},{emqx_gateway_http,gateway_status,['GwName']}}],casts => []},{emqx_bridge,6} => #{calls => [{{emqx_bridge_proto_v6,v2_start_bridge_on_node_v6,['Node','ConfRootKey','BridgeType','BridgeName']},{emqx_bridge_v2,start,['ConfRootKey','BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,v2_start_bridge_on_all_nodes_v6,['Nodes','ConfRootKey','BridgeType','BridgeName']},{emqx_bridge_v2,start,['ConfRootKey','BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,v2_get_metrics_from_all_nodes_v6,['Nodes','ConfRootKey','ActionType','ActionName']},{emqx_bridge_v2_api,get_metrics_from_local_node_v6,['ConfRootKey','ActionType','ActionName']}},{{emqx_bridge_proto_v6,v2_list_bridges_on_nodes_v6,['Nodes','ConfRootKey']},{emqx_bridge_v2,list,['ConfRootKey']}},{{emqx_bridge_proto_v6,v2_lookup_from_all_nodes_v6,['Nodes','ConfRootKey','BridgeType','BridgeName']},{emqx_bridge_v2_api,lookup_from_local_node_v6,['ConfRootKey','BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,get_metrics_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,get_metrics_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,lookup_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,lookup_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,stop_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,start_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,restart_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,stop_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,start_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,restart_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v6,list_bridges_on_nodes,['Nodes']},{emqx_bridge,list,[]}}],casts => []},{emqx,2} => #{calls => [{{emqx_proto_v2,delete_all_deactivated_alarms,['Node']},{emqx_alarm,delete_all_deactivated_alarms,[]}},{{emqx_proto_v2,deactivate_alarm,['Node','Name']},{emqx_alarm,deactivate,['Name']}},{{emqx_proto_v2,clean_pem_cache,['Node']},{ssl_pem_cache,clear,[]}},{{emqx_proto_v2,clean_authz_cache,['Node']},{emqx_authz_cache,drain_cache,[]}},{{emqx_proto_v2,clean_authz_cache,['Node','ClientId']},{emqx_authz_cache,drain_cache,['ClientId']}},{{emqx_proto_v2,get_metrics,['Node']},{emqx_metrics,all,[]}},{{emqx_proto_v2,get_stats,['Node']},{emqx_stats,getstats,[]}},{{emqx_proto_v2,get_alarms,['Node','Type']},{emqx_alarm,get_alarms,['Type']}},{{emqx_proto_v2,are_running,['Nodes']},{emqx,is_running,[]}},{{emqx_proto_v2,is_running,['Node']},{emqx,is_running,[]}}],casts => []},{emqx_ft_storage_fs_reader,1} => #{calls => [{{emqx_ft_storage_fs_reader_proto_v1,read,['Node','Pid','Bytes']},{emqx_ft_storage_fs_reader,read,['Pid','Bytes']}}],casts => []},{emqx_node_rebalance,1} => #{calls => [{{emqx_node_rebalance_proto_v1,disconnected_session_counts,['Nodes']},{emqx_node_rebalance,disconnected_session_count,[]}},{{emqx_node_rebalance_proto_v1,disable_rebalance_agent,['Nodes','OwnerPid']},{emqx_node_rebalance_agent,disable,['OwnerPid']}},{{emqx_node_rebalance_proto_v1,enable_rebalance_agent,['Nodes','OwnerPid']},{emqx_node_rebalance_agent,enable,['OwnerPid']}},{{emqx_node_rebalance_proto_v1,session_counts,['Nodes']},{emqx_node_rebalance,session_count,[]}},{{emqx_node_rebalance_proto_v1,connection_counts,['Nodes']},{emqx_node_rebalance,connection_count,[]}},{{emqx_node_rebalance_proto_v1,evict_sessions,['Nodes','Count','RecipientNodes','ConnState']},{emqx_eviction_agent,evict_sessions,['Count','RecipientNodes','ConnState']}},{{emqx_node_rebalance_proto_v1,evict_connections,['Nodes','Count']},{emqx_eviction_agent,evict_connections,['Count']}},{{emqx_node_rebalance_proto_v1,available_nodes,['Nodes']},{emqx_node_rebalance,is_node_available,[]}}],casts => []},{emqx_exhook,1} => #{calls => [{{emqx_exhook_proto_v1,server_hooks_metrics,['Nodes','Name']},{emqx_exhook_mgr,server_hooks_metrics,['Name']}},{{emqx_exhook_proto_v1,server_info,['Nodes','Name']},{emqx_exhook_mgr,server_info,['Name']}},{{emqx_exhook_proto_v1,all_servers_info,['Nodes']},{emqx_exhook_mgr,all_servers_info,[]}}],casts => []},{emqx_node_rebalance_api,2} => #{calls => [{{emqx_node_rebalance_api_proto_v2,node_rebalance_purge_stop,['Node']},{emqx_node_rebalance_purge,stop,[]}},{{emqx_node_rebalance_api_proto_v2,node_rebalance_purge_start,['Node','Opts']},{emqx_node_rebalance_purge,start,['Opts']}},{{emqx_node_rebalance_api_proto_v2,node_rebalance_stop,['Node']},{emqx_node_rebalance,stop,[]}},{{emqx_node_rebalance_api_proto_v2,node_rebalance_start,['Node','Opts']},{emqx_node_rebalance,start,['Opts']}},{{emqx_node_rebalance_api_proto_v2,node_rebalance_evacuation_stop,['Node']},{emqx_node_rebalance_evacuation,stop,[]}},{{emqx_node_rebalance_api_proto_v2,node_rebalance_evacuation_start,['Node','Opts']},{emqx_node_rebalance_evacuation,start,['Opts']}}],casts => []},{emqx_plugins,1} => #{calls => [{{emqx_plugins_proto_v1,get_tar,['Node','NameVsn','Timeout']},{emqx_plugins,get_tar,['NameVsn']}}],casts => []},{emqx_node_rebalance_status,1} => #{calls => [{{emqx_node_rebalance_status_proto_v1,evacuation_status,['Nodes']},{emqx_node_rebalance_status,evacuation_status,[]}},{{emqx_node_rebalance_status_proto_v1,rebalance_status,['Nodes']},{emqx_node_rebalance_status,rebalance_status,[]}},{{emqx_node_rebalance_status_proto_v1,local_status,['Node']},{emqx_node_rebalance_status,local_status,[]}}],casts => []},{emqx_conf,1} => #{calls => [{{emqx_conf_proto_v1,get_override_config_file,['Nodes']},{emqx_conf_app,get_override_config_file,[]}},{{emqx_conf_proto_v1,reset,['Node','KeyPath','Opts']},{emqx,reset_config,['KeyPath','Opts']}},{{emqx_conf_proto_v1,reset,['KeyPath','Opts']},{emqx,reset_config,['KeyPath','Opts']}},{{emqx_conf_proto_v1,remove_config,['Node','KeyPath','Opts']},{emqx,remove_config,['KeyPath','Opts']}},{{emqx_conf_proto_v1,remove_config,['KeyPath','Opts']},{emqx,remove_config,['KeyPath','Opts']}},{{emqx_conf_proto_v1,update,['Node','KeyPath','UpdateReq','Opts']},{emqx,update_config,['KeyPath','UpdateReq','Opts']}},{{emqx_conf_proto_v1,update,['KeyPath','UpdateReq','Opts']},{emqx,update_config,['KeyPath','UpdateReq','Opts']}},{{emqx_conf_proto_v1,get_all,['KeyPath']},{emqx_conf,get_node_and_config,['KeyPath']}},{{emqx_conf_proto_v1,get_config,['Node','KeyPath','Default']},{emqx,get_config,['KeyPath','Default']}},{{emqx_conf_proto_v1,get_config,['Node','KeyPath']},{emqx,get_config,['KeyPath']}}],casts => []},{emqx_prometheus,2} => #{calls => [{{emqx_prometheus_proto_v2,raw_prom_data,['Nodes','M','F','A']},{emqx_prometheus_api,lookup_from_local_nodes,['M','F','A']}},{{emqx_prometheus_proto_v2,stop,['Nodes']},{emqx_prometheus,do_stop,[]}},{{emqx_prometheus_proto_v2,start,['Nodes']},{emqx_prometheus,do_start,[]}}],casts => []},{emqx_ft_storage_exporter_fs,1} => #{calls => [{{emqx_ft_storage_exporter_fs_proto_v1,read_export_file,['Node','Filepath','CallerPid']},{emqx_ft_storage_exporter_fs_proxy,read_export_file_local,['Filepath','CallerPid']}},{{emqx_ft_storage_exporter_fs_proto_v1,list_exports,['Nodes','Query']},{emqx_ft_storage_exporter_fs_proxy,list_exports_local,['Query']}}],casts => []},{emqx_metrics,1} => #{calls => [{{emqx_metrics_proto_v1,get_metrics,['Nodes','HandlerName','MetricId','Timeout']},{emqx_metrics_worker,get_metrics,['HandlerName','MetricId']}}],casts => []},{emqx_conf,3} => #{calls => [{{emqx_conf_proto_v3,get_hocon_config,['Node','Key']},{emqx_conf_cli,get_config,['Key']}},{{emqx_conf_proto_v3,get_hocon_config,['Node']},{emqx_conf_cli,get_config,[]}},{{emqx_conf_proto_v3,get_override_config_file,['Nodes']},{emqx_conf_app,get_override_config_file,[]}},{{emqx_conf_proto_v3,reset,['Node','KeyPath','Opts']},{emqx,reset_config,['KeyPath','Opts']}},{{emqx_conf_proto_v3,reset,['KeyPath','Opts']},{emqx,reset_config,['KeyPath','Opts']}},{{emqx_conf_proto_v3,remove_config,['Node','KeyPath','Opts']},{emqx,remove_config,['KeyPath','Opts']}},{{emqx_conf_proto_v3,remove_config,['KeyPath','Opts']},{emqx,remove_config,['KeyPath','Opts']}},{{emqx_conf_proto_v3,update,['Node','KeyPath','UpdateReq','Opts']},{emqx,update_config,['KeyPath','UpdateReq','Opts']}},{{emqx_conf_proto_v3,update,['KeyPath','UpdateReq','Opts']},{emqx,update_config,['KeyPath','UpdateReq','Opts']}},{{emqx_conf_proto_v3,get_all,['KeyPath']},{emqx_conf,get_node_and_config,['KeyPath']}},{{emqx_conf_proto_v3,get_config,['Node','KeyPath','Default']},{emqx,get_config,['KeyPath','Default']}},{{emqx_conf_proto_v3,get_config,['Node','KeyPath']},{emqx,get_config,['KeyPath']}},{{emqx_conf_proto_v3,sync_data_from_node,['Node']},{emqx_conf_app,sync_data_from_node,[]}}],casts => []},{emqx_mgmt_cluster,2} => #{calls => [{{emqx_mgmt_cluster_proto_v2,connected_replicants,['Nodes']},{emqx_mgmt_api_cluster,connected_replicants,[]}},{{emqx_mgmt_cluster_proto_v2,invite_node,['Node','Self']},{emqx_mgmt_api_cluster,join,['Self']}}],casts => []},{emqx_retainer,2} => #{calls => [{{emqx_retainer_proto_v2,active_mnesia_indices,['Nodes']},{emqx_retainer_mnesia,active_indices,[]}},{{emqx_retainer_proto_v2,wait_dispatch_complete,['Nodes','Timeout']},{emqx_retainer_dispatcher,wait_dispatch_complete,['Timeout']}}],casts => []},{emqx_node_rebalance,3} => #{calls => [{{emqx_node_rebalance_proto_v3,enable_rebalance_agent,['Nodes','OwnerPid','Kind','Options']},{emqx_node_rebalance_agent,enable,['OwnerPid','Kind','Options']}},{{emqx_node_rebalance_proto_v3,purge_sessions,['Nodes','Count']},{emqx_eviction_agent,purge_sessions,['Count']}},{{emqx_node_rebalance_proto_v3,disable_rebalance_agent,['Nodes','OwnerPid','Kind']},{emqx_node_rebalance_agent,disable,['OwnerPid','Kind']}},{{emqx_node_rebalance_proto_v3,enable_rebalance_agent,['Nodes','OwnerPid','Kind']},{emqx_node_rebalance_agent,enable,['OwnerPid','Kind']}},{{emqx_node_rebalance_proto_v3,disconnected_session_counts,['Nodes']},{emqx_node_rebalance,disconnected_session_count,[]}},{{emqx_node_rebalance_proto_v3,disable_rebalance_agent,['Nodes','OwnerPid']},{emqx_node_rebalance_agent,disable,['OwnerPid']}},{{emqx_node_rebalance_proto_v3,enable_rebalance_agent,['Nodes','OwnerPid']},{emqx_node_rebalance_agent,enable,['OwnerPid']}},{{emqx_node_rebalance_proto_v3,session_counts,['Nodes']},{emqx_node_rebalance,session_count,[]}},{{emqx_node_rebalance_proto_v3,connection_counts,['Nodes']},{emqx_node_rebalance,connection_count,[]}},{{emqx_node_rebalance_proto_v3,evict_sessions,['Nodes','Count','RecipientNodes','ConnState']},{emqx_eviction_agent,evict_sessions,['Count','RecipientNodes','ConnState']}},{{emqx_node_rebalance_proto_v3,evict_connections,['Nodes','Count']},{emqx_eviction_agent,evict_connections,['Count']}},{{emqx_node_rebalance_proto_v3,available_nodes,['Nodes']},{emqx_node_rebalance,is_node_available,[]}}],casts => []},{emqx_delayed,3} => #{calls => [{{emqx_delayed_proto_v3,delete_delayed_messages_by_topic_name,['Nodes','TopicName']},{emqx_delayed,do_delete_delayed_messages_by_topic_name,['TopicName']}},{{emqx_delayed_proto_v3,clear_all,['Nodes']},{emqx_delayed,clear_all_local,[]}},{{emqx_delayed_proto_v3,delete_delayed_message,['Node','Id']},{emqx_delayed,delete_delayed_message,['Id']}},{{emqx_delayed_proto_v3,get_delayed_message,['Node','Id']},{emqx_delayed,get_delayed_message,['Id']}}],casts => []},{emqx_eviction_agent,2} => #{calls => [{{emqx_eviction_agent_proto_v2,all_channels_count,['Nodes','Timeout']},{emqx_eviction_agent,all_local_channels_count,[]}},{{emqx_eviction_agent_proto_v2,evict_session_channel,['Node','ClientId','ConnInfo','ClientInfo']},{emqx_eviction_agent,evict_session_channel,['ClientId','ConnInfo','ClientInfo']}}],casts => []},{emqx_ds,1} => #{calls => [{{emqx_ds_proto_v1,store_batch,['Node','DB','Shard','Batch','Options']},{emqx_ds_replication_layer,do_store_batch_v1,['DB','Shard','Batch','Options']}},{{emqx_ds_proto_v1,next,['Node','DB','Shard','Iter','BatchSize']},{emqx_ds_replication_layer,do_next_v1,['DB','Shard','Iter','BatchSize']}},{{emqx_ds_proto_v1,make_iterator,['Node','DB','Shard','Stream','TopicFilter','StartTime']},{emqx_ds_replication_layer,do_make_iterator_v1,['DB','Shard','Stream','TopicFilter','StartTime']}},{{emqx_ds_proto_v1,get_streams,['Node','DB','Shard','TopicFilter','Time']},{emqx_ds_replication_layer,do_get_streams_v1,['DB','Shard','TopicFilter','Time']}},{{emqx_ds_proto_v1,drop_db,['Node','DB']},{emqx_ds_replication_layer,do_drop_db_v1,['DB']}}],casts => []},{emqx_node_rebalance_purge,1} => #{calls => [{{emqx_node_rebalance_purge_proto_v1,stop,['Nodes']},{emqx_node_rebalance_purge,stop,[]}},{{emqx_node_rebalance_purge_proto_v1,start,['Nodes','Opts']},{emqx_node_rebalance_purge,start,['Opts']}}],casts => []},{emqx_gateway_api_listeners,1} => #{calls => [{{emqx_gateway_api_listeners_proto_v1,listeners_cluster_status,['Nodes','Listeners']},{emqx_gateway_api_listeners,do_listeners_cluster_status,['Listeners']}}],casts => []},{emqx_mgmt_trace,2} => #{calls => [{{emqx_mgmt_trace_proto_v2,read_trace_file,['Node','Name','Position','Limit']},{emqx_mgmt_api_trace,read_trace_file,['Name','Position','Limit']}},{{emqx_mgmt_trace_proto_v2,trace_file_detail,['Nodes','File']},{emqx_trace,trace_file_detail,['File']}},{{emqx_mgmt_trace_proto_v2,trace_file,['Nodes','File']},{emqx_trace,trace_file,['File']}},{{emqx_mgmt_trace_proto_v2,get_trace_size,['Nodes']},{emqx_mgmt_api_trace,get_trace_size,[]}}],casts => []},{emqx_slow_subs,1} => #{calls => [{{emqx_slow_subs_proto_v1,get_history,['Nodes']},{emqx_slow_subs_api,get_history,[]}},{{emqx_slow_subs_proto_v1,clear_history,['Nodes']},{emqx_slow_subs,clear_history,[]}}],casts => []},{emqx_mgmt_api_plugins,1} => #{calls => [{{emqx_mgmt_api_plugins_proto_v1,ensure_action,['Name','Action']},{emqx_mgmt_api_plugins,ensure_action,['Name','Action']}},{{emqx_mgmt_api_plugins_proto_v1,delete_package,['Name']},{emqx_mgmt_api_plugins,delete_package,['Name']}},{{emqx_mgmt_api_plugins_proto_v1,describe_package,['Name']},{emqx_mgmt_api_plugins,describe_package,['Name']}},{{emqx_mgmt_api_plugins_proto_v1,install_package,['Filename','Bin']},{emqx_mgmt_api_plugins,install_package,['Filename','Bin']}},{{emqx_mgmt_api_plugins_proto_v1,get_plugins,[]},{emqx_mgmt_api_plugins,get_plugins,[]}}],casts => []},{emqx_conf,2} => #{calls => [{{emqx_conf_proto_v2,get_override_config_file,['Nodes']},{emqx_conf_app,get_override_config_file,[]}},{{emqx_conf_proto_v2,reset,['Node','KeyPath','Opts']},{emqx,reset_config,['KeyPath','Opts']}},{{emqx_conf_proto_v2,reset,['KeyPath','Opts']},{emqx,reset_config,['KeyPath','Opts']}},{{emqx_conf_proto_v2,remove_config,['Node','KeyPath','Opts']},{emqx,remove_config,['KeyPath','Opts']}},{{emqx_conf_proto_v2,remove_config,['KeyPath','Opts']},{emqx,remove_config,['KeyPath','Opts']}},{{emqx_conf_proto_v2,update,['Node','KeyPath','UpdateReq','Opts']},{emqx,update_config,['KeyPath','UpdateReq','Opts']}},{{emqx_conf_proto_v2,update,['KeyPath','UpdateReq','Opts']},{emqx,update_config,['KeyPath','UpdateReq','Opts']}},{{emqx_conf_proto_v2,get_all,['KeyPath']},{emqx_conf,get_node_and_config,['KeyPath']}},{{emqx_conf_proto_v2,get_config,['Node','KeyPath','Default']},{emqx,get_config,['KeyPath','Default']}},{{emqx_conf_proto_v2,get_config,['Node','KeyPath']},{emqx,get_config,['KeyPath']}},{{emqx_conf_proto_v2,sync_data_from_node,['Node']},{emqx_conf_app,sync_data_from_node,[]}}],casts => []},{emqx_ds,2} => #{calls => [{{emqx_ds_proto_v2,add_generation,['Node','DB']},{emqx_ds_replication_layer,do_add_generation_v2,['DB']}},{{emqx_ds_proto_v2,update_iterator,['Node','DB','Shard','OldIter','DSKey']},{emqx_ds_replication_layer,do_update_iterator_v2,['DB','Shard','OldIter','DSKey']}},{{emqx_ds_proto_v2,store_batch,['Node','DB','Shard','Batch','Options']},{emqx_ds_replication_layer,do_store_batch_v1,['DB','Shard','Batch','Options']}},{{emqx_ds_proto_v2,next,['Node','DB','Shard','Iter','BatchSize']},{emqx_ds_replication_layer,do_next_v1,['DB','Shard','Iter','BatchSize']}},{{emqx_ds_proto_v2,make_iterator,['Node','DB','Shard','Stream','TopicFilter','StartTime']},{emqx_ds_replication_layer,do_make_iterator_v1,['DB','Shard','Stream','TopicFilter','StartTime']}},{{emqx_ds_proto_v2,get_streams,['Node','DB','Shard','TopicFilter','Time']},{emqx_ds_replication_layer,do_get_streams_v1,['DB','Shard','TopicFilter','Time']}},{{emqx_ds_proto_v2,drop_db,['Node','DB']},{emqx_ds_replication_layer,do_drop_db_v1,['DB']}}],casts => []},{emqx_shared_sub,1} => #{calls => [{{emqx_shared_sub_proto_v1,dispatch_with_ack,['Pid','Group','Topic','Msg','Timeout']},{emqx_shared_sub,do_dispatch_with_ack,['Pid','Group','Topic','Msg']}}],casts => [{{emqx_shared_sub_proto_v1,send,['Node','Pid','Topic','Msg']},{erlang,send,['Pid','Msg']}}]},{emqx_ft_storage_fs,1} => #{calls => [{{emqx_ft_storage_fs_proto_v1,list_assemblers,['Nodes','Transfer']},{emqx_ft_storage_fs_proxy,lookup_local_assembler,['Transfer']}},{{emqx_ft_storage_fs_proto_v1,pread,['Node','Transfer','Frag','Offset','Size']},{emqx_ft_storage_fs_proxy,pread_local,['Transfer','Frag','Offset','Size']}},{{emqx_ft_storage_fs_proto_v1,multilist,['Nodes','Transfer','What']},{emqx_ft_storage_fs_proxy,list_local,['Transfer','What']}}],casts => []},{emqx_cm,1} => #{calls => [{{emqx_cm_proto_v1,kick_session,['Action','ClientId','ChanPid']},{emqx_cm,do_kick_session,['Action','ClientId','ChanPid']}},{{emqx_cm_proto_v1,takeover_session,['ClientId','ChanPid']},{emqx_cm,takeover_session,['ClientId','ChanPid']}},{{emqx_cm_proto_v1,get_chann_conn_mod,['ClientId','ChanPid']},{emqx_cm,do_get_chann_conn_mod,['ClientId','ChanPid']}},{{emqx_cm_proto_v1,get_chan_info,['ClientId','ChanPid']},{emqx_cm,do_get_chan_info,['ClientId','ChanPid']}},{{emqx_cm_proto_v1,get_chan_stats,['ClientId','ChanPid']},{emqx_cm,do_get_chan_stats,['ClientId','ChanPid']}},{{emqx_cm_proto_v1,lookup_client,['Node','Key']},{emqx_cm,lookup_client,['Key']}},{{emqx_cm_proto_v1,kickout_client,['Node','ClientId']},{emqx_cm,kick_session,['ClientId']}}],casts => []},{emqx_authn,1} => #{calls => [{{emqx_authn_proto_v1,lookup_from_all_nodes,['Nodes','ChainName','AuthenticatorID']},{emqx_authn_api,lookup_from_local_node,['ChainName','AuthenticatorID']}}],casts => []},{emqx_resource,1} => #{calls => [{{emqx_resource_proto_v1,reset_metrics,['ResId']},{emqx_resource,reset_metrics_local,['ResId']}},{{emqx_resource_proto_v1,remove,['ResId']},{emqx_resource,remove_local,['ResId']}},{{emqx_resource_proto_v1,recreate,['ResId','ResourceType','Config','Opts']},{emqx_resource,recreate_local,['ResId','ResourceType','Config','Opts']}},{{emqx_resource_proto_v1,create_dry_run,['ResourceType','Config']},{emqx_resource,create_dry_run_local,['ResourceType','Config']}},{{emqx_resource_proto_v1,create,['ResId','Group','ResourceType','Config','Opts']},{emqx_resource,create_local,['ResId','Group','ResourceType','Config','Opts']}}],casts => []},{emqx_bridge,5} => #{calls => [{{emqx_bridge_proto_v5,v2_start_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_v2,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,v2_start_bridge_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_v2,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,v2_get_metrics_from_all_nodes,['Nodes','ActionType','ActionName']},{emqx_bridge_v2_api,get_metrics_from_local_node,['ActionType','ActionName']}},{{emqx_bridge_proto_v5,v2_lookup_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_v2_api,lookup_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,v2_list_bridges_on_nodes,['Nodes']},{emqx_bridge_v2,list,[]}},{{emqx_bridge_proto_v5,get_metrics_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,get_metrics_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,lookup_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,lookup_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,stop_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,start_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,restart_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,stop_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,start_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,restart_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v5,list_bridges_on_nodes,['Nodes']},{emqx_bridge,list,[]}}],casts => []},{emqx_eviction_agent,1} => #{calls => [{{emqx_eviction_agent_proto_v1,evict_session_channel,['Node','ClientId','ConnInfo','ClientInfo']},{emqx_eviction_agent,evict_session_channel,['ClientId','ConnInfo','ClientInfo']}}],casts => []},{emqx_authz,1} => #{calls => [{{emqx_authz_proto_v1,lookup_from_all_nodes,['Nodes','Type']},{emqx_authz_api_sources,lookup_from_local_node,['Type']}}],casts => []},{emqx_gateway_cm,1} => #{calls => [{{emqx_gateway_cm_proto_v1,cast,['GwName','ClientId','ChanPid','Req']},{emqx_gateway_cm,do_cast,['GwName','ClientId','ChanPid','Req']}},{{emqx_gateway_cm_proto_v1,call,['GwName','ClientId','ChanPid','Req']},{emqx_gateway_cm,do_call,['GwName','ClientId','ChanPid','Req']}},{{emqx_gateway_cm_proto_v1,call,['GwName','ClientId','ChanPid','Req','Timeout']},{emqx_gateway_cm,do_call,['GwName','ClientId','ChanPid','Req','Timeout']}},{{emqx_gateway_cm_proto_v1,takeover_session,['GwName','ClientId','ChanPid']},{emqx_gateway_cm,do_takeover_session,['GwName','ClientId','ChanPid']}},{{emqx_gateway_cm_proto_v1,get_chann_conn_mod,['GwName','ClientId','ChanPid']},{emqx_gateway_cm,do_get_chann_conn_mod,['GwName','ClientId','ChanPid']}},{{emqx_gateway_cm_proto_v1,kick_session,['GwName','Action','ClientId','ChanPid']},{emqx_gateway_cm,do_kick_session,['GwName','Action','ClientId','ChanPid']}},{{emqx_gateway_cm_proto_v1,set_chan_stats,['GwName','ClientId','ChanPid','Stats']},{emqx_gateway_cm,do_set_chan_stats,['GwName','ClientId','ChanPid','Stats']}},{{emqx_gateway_cm_proto_v1,get_chan_stats,['GwName','ClientId','ChanPid']},{emqx_gateway_cm,do_get_chan_stats,['GwName','ClientId','ChanPid']}},{{emqx_gateway_cm_proto_v1,set_chan_info,['GwName','ClientId','ChanPid','Infos']},{emqx_gateway_cm,do_set_chan_info,['GwName','ClientId','ChanPid','Infos']}},{{emqx_gateway_cm_proto_v1,get_chan_info,['GwName','ClientId','ChanPid']},{emqx_gateway_cm,do_get_chan_info,['GwName','ClientId','ChanPid']}},{{emqx_gateway_cm_proto_v1,lookup_by_clientid,['Nodes','GwName','ClientId']},{emqx_gateway_cm,do_lookup_by_clientid,['GwName','ClientId']}}],casts => []},{emqx_bridge,3} => #{calls => [{{emqx_bridge_proto_v3,lookup_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,lookup_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v3,stop_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v3,start_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v3,restart_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v3,stop_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v3,start_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v3,restart_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v3,list_bridges_on_nodes,['Nodes']},{emqx_bridge,list,[]}},{{emqx_bridge_proto_v3,list_bridges,['Node']},{emqx_bridge,list,[]}}],casts => []},{emqx_rule_engine,1} => #{calls => [{{emqx_rule_engine_proto_v1,reset_metrics,['RuleId']},{emqx_rule_engine,reset_metrics_for_rule,['RuleId']}}],casts => []},{emqx_node_rebalance_evacuation,1} => #{calls => [{{emqx_node_rebalance_evacuation_proto_v1,available_nodes,['Nodes']},{emqx_node_rebalance_evacuation,is_node_available,[]}}],casts => []},{emqx_bridge,2} => #{calls => [{{emqx_bridge_proto_v2,lookup_from_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_api,lookup_from_local_node,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v2,stop_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v2,start_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v2,restart_bridges_to_all_nodes,['Nodes','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v2,stop_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,stop,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v2,start_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,start,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v2,restart_bridge_to_node,['Node','BridgeType','BridgeName']},{emqx_bridge_resource,restart,['BridgeType','BridgeName']}},{{emqx_bridge_proto_v2,list_bridges,['Node']},{emqx_bridge,list,[]}}],casts => []},{emqx_node_rebalance,2} => #{calls => [{{emqx_node_rebalance_proto_v2,purge_sessions,['Nodes','Count']},{emqx_eviction_agent,purge_sessions,['Count']}},{{emqx_node_rebalance_proto_v2,disable_rebalance_agent,['Nodes','OwnerPid','Kind']},{emqx_node_rebalance_agent,disable,['OwnerPid','Kind']}},{{emqx_node_rebalance_proto_v2,enable_rebalance_agent,['Nodes','OwnerPid','Kind']},{emqx_node_rebalance_agent,enable,['OwnerPid','Kind']}},{{emqx_node_rebalance_proto_v2,disconnected_session_counts,['Nodes']},{emqx_node_rebalance,disconnected_session_count,[]}},{{emqx_node_rebalance_proto_v2,disable_rebalance_agent,['Nodes','OwnerPid']},{emqx_node_rebalance_agent,disable,['OwnerPid']}},{{emqx_node_rebalance_proto_v2,enable_rebalance_agent,['Nodes','OwnerPid']},{emqx_node_rebalance_agent,enable,['OwnerPid']}},{{emqx_node_rebalance_proto_v2,session_counts,['Nodes']},{emqx_node_rebalance,session_count,[]}},{{emqx_node_rebalance_proto_v2,connection_counts,['Nodes']},{emqx_node_rebalance,connection_count,[]}},{{emqx_node_rebalance_proto_v2,evict_sessions,['Nodes','Count','RecipientNodes','ConnState']},{emqx_eviction_agent,evict_sessions,['Count','RecipientNodes','ConnState']}},{{emqx_node_rebalance_proto_v2,evict_connections,['Nodes','Count']},{emqx_eviction_agent,evict_connections,['Count']}},{{emqx_node_rebalance_proto_v2,available_nodes,['Nodes']},{emqx_node_rebalance,is_node_available,[]}}],casts => []},{emqx_mgmt_data_backup,1} => #{calls => [{{emqx_mgmt_data_backup_proto_v1,delete_file,['Node','FileName','Timeout']},{emqx_mgmt_data_backup,delete_file,['FileName']}},{{emqx_mgmt_data_backup_proto_v1,read_file,['Node','FileName','Timeout']},{emqx_mgmt_data_backup,read_file,['FileName']}},{{emqx_mgmt_data_backup_proto_v1,import_file,['Node','FileNode','FileName','Timeout']},{emqx_mgmt_data_backup,maybe_copy_and_import,['FileNode','FileName']}},{{emqx_mgmt_data_backup_proto_v1,list_files,['Nodes','Timeout']},{emqx_mgmt_data_backup,list_files,[]}}],casts => []},{emqx_retainer,1} => #{calls => [{{emqx_retainer_proto_v1,wait_dispatch_complete,['Nodes','Timeout']},{emqx_retainer_dispatcher,wait_dispatch_complete,['Timeout']}}],casts => []},{emqx_delayed,2} => #{calls => [{{emqx_delayed_proto_v2,clear_all,['Nodes']},{emqx_delayed,clear_all_local,[]}},{{emqx_delayed_proto_v2,delete_delayed_message,['Node','Id']},{emqx_delayed,delete_delayed_message,['Id']}},{{emqx_delayed_proto_v2,get_delayed_message,['Node','Id']},{emqx_delayed,get_delayed_message,['Id']}}],casts => []},{emqx_mgmt_api_plugins,2} => #{calls => [{{emqx_mgmt_api_plugins_proto_v2,ensure_action,['Name','Action']},{emqx_mgmt_api_plugins,ensure_action,['Name','Action']}},{{emqx_mgmt_api_plugins_proto_v2,delete_package,['Name']},{emqx_mgmt_api_plugins,delete_package,['Name']}},{{emqx_mgmt_api_plugins_proto_v2,describe_package,['Nodes','Name']},{emqx_mgmt_api_plugins,describe_package,['Name']}},{{emqx_mgmt_api_plugins_proto_v2,install_package,['Nodes','Filename','Bin']},{emqx_mgmt_api_plugins,install_package,['Filename','Bin']}},{{emqx_mgmt_api_plugins_proto_v2,get_plugins,['Nodes']},{emqx_mgmt_api_plugins,get_plugins,[]}}],casts => []},{emqx_mgmt_cluster,1} => #{calls => [{{emqx_mgmt_cluster_proto_v1,invite_node,['Node','Self']},{emqx_mgmt_api_cluster,join,['Self']}}],casts => []},{emqx_mgmt_cluster,3} => #{calls => [{{emqx_mgmt_cluster_proto_v3,connected_replicants,['Nodes']},{emqx_mgmt_api_cluster,connected_replicants,[]}},{{emqx_mgmt_cluster_proto_v3,invite_node,['Node','Self','Timeout']},{emqx_mgmt_api_cluster,join,['Self']}}],casts => []},{emqx_prometheus,1} => #{calls => [{{emqx_prometheus_proto_v1,stop,['Nodes']},{emqx_prometheus,do_stop,[]}},{{emqx_prometheus_proto_v1,start,['Nodes']},{emqx_prometheus,do_start,[]}}],casts => []},{emqx_delayed,1} => #{calls => [{{emqx_delayed_proto_v1,delete_delayed_message,['Node','Id']},{emqx_delayed,delete_delayed_message,['Id']}},{{emqx_delayed_proto_v1,get_delayed_message,['Node','Id']},{emqx_delayed,get_delayed_message,['Id']}}],casts => []},{emqx_management,3} => #{calls => [{{emqx_management_proto_v3,get_full_config,['Node']},{emqx_mgmt_api_configs,get_full_config,[]}},{{emqx_management_proto_v3,call_client,['Node','ClientId','Req']},{emqx_mgmt,do_call_client,['ClientId','Req']}},{{emqx_management_proto_v3,unsubscribe,['Node','ClientId','Topic']},{emqx_mgmt,do_unsubscribe,['ClientId','Topic']}},{{emqx_management_proto_v3,subscribe,['Node','ClientId','TopicTables']},{emqx_mgmt,do_subscribe,['ClientId','TopicTables']}},{{emqx_management_proto_v3,list_listeners,['Node']},{emqx_mgmt_api_listeners,do_list_listeners,[]}},{{emqx_management_proto_v3,list_subscriptions,['Node']},{emqx_mgmt,do_list_subscriptions,[]}},{{emqx_management_proto_v3,broker_info,['Nodes']},{emqx_mgmt,broker_info,[]}},{{emqx_management_proto_v3,node_info,['Nodes']},{emqx_mgmt,node_info,[]}},{{emqx_management_proto_v3,unsubscribe_batch,['Node','ClientId','Topics']},{emqx_mgmt,do_unsubscribe_batch,['ClientId','Topics']}}],casts => []}},release => "master",signatures => #{{emqx_retainer_proto_v1,wait_dispatch_complete,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_bridge_proto_v6,restart_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_ft_storage_fs_proxy,pread_local,4} => {any,[any,any,any,any]},{emqx_bridge_proto_v2,stop_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_proto_v2,disable_rebalance_agent,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown}]},{emqx_node_rebalance_proto_v2,disconnected_session_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_shared_sub_proto_v1,dispatch_with_ack,5} => {any,[{c,identifier,[pid],unknown},{c,union,[{c,atom,['_'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,binary,{8,0},unknown},{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],{c,atom,any,unknown},{c,atom,[false,true],unknown}},unknown},{c,map,{[{{c,atom,[allow_publish],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[peerhost],unknown},optional,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[properties],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[protocol],unknown},optional,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_bridge_proto_v3,restart_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_dashboard_monitor,current_rate,1} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[badrpc],unknown},any],{2,{c,atom,[badrpc],unknown}}},{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,atom,any,unknown}]},{emqx_ft_storage_exporter_fs_proxy,list_exports_local,1} => {any,[any]},{emqx_management_proto_v3,list_subscriptions,1} => {any,[{c,atom,any,unknown}]},{emqx_connector_proto_v1,list_connectors_on_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_management_proto_v2,broker_info,1} => {any,[{c,atom,any,unknown}]},{emqx_gateway_cm,do_lookup_by_clientid,2} => {{c,list,{any,{c,nil,[],unknown}},unknown},[{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},{c,number,any,unknown},none,none,none],unknown},any]},{emqx_persistent_session_ds,do_open_iterator,3} => {{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_implemented],unknown}],{2,{c,atom,[error],unknown}}},[any,any,any]},{emqx_cm,do_get_chann_conn_mod,2} => {any,[any,any]},{emqx_persistent_session_ds_proto_v1,close_iterator,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},any]},{emqx_mgmt_data_backup,read_file,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,any,unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,binary,{8,0},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},none,none],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_proto_v2,purge_sessions,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_resource,create_local,5} => {{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[added_channels],unknown},mandatory,any},{{c,atom,[callback_mode],unknown},mandatory,{c,atom,[always_sync,async_if_possible],unknown}},{{c,atom,[config],unknown},mandatory,any},{{c,atom,[error],unknown},mandatory,any},{{c,atom,[id],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[mod],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[query_mode],unknown},mandatory,{c,atom,[async,no_queries,simple_async,simple_async_internal_buffer,simple_sync,simple_sync_internal_buffer,sync],unknown}},{{c,atom,[state],unknown},mandatory,any},{{c,atom,[status],unknown},mandatory,{c,atom,[connected,connecting,disconnected,stopped],unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}},[{c,binary,{8,0},unknown},{c,binary,{8,0},unknown},{c,atom,any,unknown},any,{c,map,{[{{c,atom,[auto_restart_interval],unknown},optional,{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,1,pos_inf},integer},none,none,none],unknown}},{{c,atom,[auto_retry_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[batch_size],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[batch_time],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[health_check_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[health_check_timeout],unknown},optional,{c,number,any,integer}},{{c,atom,[inflight_window],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[max_buffer_bytes],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[query_mode],unknown},optional,{c,atom,[async,no_queries,simple_async,simple_async_internal_buffer,simple_sync,simple_sync_internal_buffer,sync],unknown}},{{c,atom,[resume_interval],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[spawn_buffer_workers],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_after_created],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_timeout],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_for_resource_ready],unknown},optional,{c,number,any,integer}},{{c,atom,[worker_pool_size],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}}],none,none},unknown}]},{emqx_authz_api_sources,lookup_from_local_node,1} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,tuple,[{c,atom,any,unknown},{c,union,[{c,atom,[not_found_resource],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}],{2,any}}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,tuple,[{c,atom,any,unknown},{c,atom,[connected,connecting,disconnected,stopped],unknown},{c,map,{[{{c,atom,[counters],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[gauges],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[rate],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[slides],unknown},mandatory,{c,map,{[],any,any},unknown}}],none,none},unknown},{c,map,{[{{c,atom,[counters],unknown},optional,{c,map,{[],any,any},unknown}},{{c,atom,[gauges],unknown},optional,{c,map,{[],any,any},unknown}},{{c,atom,[rate],unknown},optional,{c,map,{[],any,any},unknown}},{{c,atom,[slides],unknown},optional,{c,map,{[],any,any},unknown}}],none,none},unknown}],{4,any}}],{2,{c,atom,[ok],unknown}}}]}],unknown},[any]},{emqx_management_proto_v3,node_info,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_ft_storage_exporter_fs_proto_v1,list_exports,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,map,{[{{c,atom,[following],unknown},optional,any},{{c,atom,[limit],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[transfer],unknown},optional,{c,tuple,[{c,binary,{8,0},unknown},{c,binary,{8,0},unknown}],{2,any}}}],none,none},unknown}]},{emqx,get_config,1} => {any,[{c,list,{any,{c,nil,[],unknown}},unknown}]},{emqx_resource_proto_v1,remove,1} => {any,[{c,binary,{8,0},unknown}]},{emqx_management_proto_v2,list_listeners,1} => {any,[{c,atom,any,unknown}]},{emqx_broker_proto_v1,list_client_subscriptions,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_bridge_proto_v4,restart_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_resource_proto_v1,reset_metrics,1} => {any,[{c,binary,{8,0},unknown}]},{emqx_delayed,clear_all_local,0} => {{c,atom,[ok],unknown},[]},{emqx_bridge_proto_v5,v2_list_bridges_on_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx,reset_config,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[config],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,{c,map,{[],{c,atom,any,unknown},any},unknown}],unknown}},{{c,atom,[post_config_update],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[raw_config],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,{c,map,{[],{c,binary,{8,0},unknown},any},unknown}],unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any]},{emqx_mgmt_api_plugins,delete_package,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_data_backup_proto_v1,list_files,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_mgmt_data_backup_proto_v1,import_file,4} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_retainer_mnesia,active_indices,0} => {{c,tuple,[any,any],{2,any}},[]},{emqx_cm,do_get_chan_stats,2} => {any,[any,any]},{emqx_node_rebalance_proto_v3,disconnected_session_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_mgmt_api_listeners,do_list_listeners,0} => {{c,map,{[],{c,binary,{40,32},unknown},{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{{c,map,{[],any,any},unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},unknown},[]},{emqx_conf_app,get_override_config_file,0} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,map,{[{{c,atom,[msg],unknown},mandatory,any},{{c,atom,[node],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[release],unknown},mandatory,{c,list,{any,{c,nil,[],unknown}},nonempty}},{{c,atom,[wall_clock],unknown},mandatory,{c,tuple,[any,any],{2,any}}}],none,none},unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}}]}],unknown},[]},{emqx_management_proto_v4,list_listeners,1} => {any,[{c,atom,any,unknown}]},{emqx_node_rebalance_proto_v2,evict_sessions,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer},{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,[connected,connecting,disconnected,idle,reauthenticating],unknown}]},{emqx_persistent_session_ds,do_ensure_all_iterators_closed,1} => {{c,atom,[ok],unknown},[any]},{emqx_ds_replication_layer,do_make_iterator_v1,5} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,stream,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[1]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,list,{{c,union,[{c,atom,['','#','+'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_authz_proto_v1,lookup_from_all_nodes,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown}]},{emqx_ft_storage_fs_reader_proto_v1,read,3} => {any,[{c,atom,any,unknown},{c,identifier,[pid],unknown},{c,number,{int_rng,1,pos_inf},integer}]},{emqx_slow_subs,clear_history,0} => {any,[]},{emqx_proto_v1,get_stats,1} => {any,[{c,atom,any,unknown}]},{emqx_cm,do_kick_session,3} => {{c,atom,[ok],unknown},[any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_gateway_cm_proto_v1,get_chann_conn_mod,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_eviction_agent_proto_v2,evict_session_channel,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[{{c,atom,[clean_start],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[clientid],unknown},optional,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[conn_mod],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[conn_props],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[connected],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[connected_at],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[disconnected_at],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[expiry_interval],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[keepalive],unknown},optional,{c,number,{int_rng,0,1114111},integer}},{{c,atom,[peercert],unknown},optional,{c,union,[{c,atom,[nossl,undefined],unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,none,none,{c,tuple,any,{any,any}},none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[peername],unknown},mandatory,{c,tuple,[{c,union,[{c,atom,[local,undefined,unspec],unknown},none,none,none,none,none,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown},none,none],unknown},any],{2,any}}},{{c,atom,[proto_name],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[receive_maximum],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[sockname],unknown},mandatory,{c,tuple,[{c,union,[{c,atom,[local,undefined,unspec],unknown},none,none,none,none,none,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown},none,none],unknown},any],{2,any}}},{{c,atom,[socktype],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,map,{[{{c,atom,[anonymous],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[auth_result],unknown},optional,{c,atom,[bad_authentication_method,bad_clientid_or_password,bad_username_or_password,banned,client_identifier_not_valid,not_authorized,server_busy,server_unavailable,success],unknown}},{{c,atom,[clientid],unknown},mandatory,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[cn],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[dn],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[is_bridge],unknown},mandatory,{c,atom,[false,true],unknown}},{{c,atom,[is_superuser],unknown},mandatory,{c,atom,[false,true],unknown}},{{c,atom,[mountpoint],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[password],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[peerhost],unknown},mandatory,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[protocol],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[sockport],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[username],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[ws_cookie],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[zone],unknown},mandatory,{c,atom,any,unknown}}],{c,atom,any,unknown},any},unknown}]},{emqx_mgmt_api_plugins_proto_v1,install_package,2} => {any,[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,binary,{8,0},unknown}]},{emqx_bridge_proto_v6,list_bridges_on_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_management_proto_v1,call_client,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},any]},{emqx_bridge_v2_api,get_metrics_from_local_node,2} => {{c,map,{[{{c,atom,[dropped],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.expired'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.other'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.queue_full'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.resource_not_found'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.resource_stopped'],unknown},mandatory,{c,number,any,integer}},{{c,atom,[failed],unknown},mandatory,{c,number,any,integer}},{{c,atom,[inflight],unknown},mandatory,any},{{c,atom,[late_reply],unknown},mandatory,{c,number,any,integer}},{{c,atom,[matched],unknown},mandatory,{c,number,any,integer}},{{c,atom,[queuing],unknown},mandatory,any},{{c,atom,[rate],unknown},mandatory,any},{{c,atom,[rate_last5m],unknown},mandatory,any},{{c,atom,[rate_max],unknown},mandatory,any},{{c,atom,[received],unknown},mandatory,{c,number,any,integer}},{{c,atom,[retried],unknown},mandatory,{c,number,any,integer}},{{c,atom,[success],unknown},mandatory,{c,number,any,integer}}],none,none},unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_trace_proto_v1,get_trace_size,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_topic_metrics,reset,1} => {any,[any]},{emqx_bridge_proto_v1,restart_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_management_proto_v3,subscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,list,{{c,tuple,[{c,binary,{8,0},unknown},{c,map,{[{{c,atom,[nl],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[qos],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}},{{c,atom,[rap],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[rh],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}}],{c,atom,any,unknown},any},unknown}],{2,any}},{c,nil,[],unknown}},unknown}]},{emqx_cm_proto_v2,kick_session,3} => {any,[{c,atom,[discard,kick],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_bridge_proto_v5,v2_get_metrics_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v5,stop_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_delayed,delete_delayed_message,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[any]},{emqx_bridge_proto_v6,start_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_api_proto_v2,node_rebalance_evacuation_start,2} => {any,[{c,atom,any,unknown},{c,map,{[{{c,atom,[conn_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[migrate_to],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[server_reference],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[sess_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_health_check],unknown},optional,{c,number,any,unknown}},{{c,atom,[wait_takeover],unknown},optional,{c,number,any,unknown}}],none,none},unknown}]},{emqx_conf_proto_v2,get_all,1} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_mgmt_api_plugins_proto_v1,delete_package,1} => {any,[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_gateway_api_listeners_proto_v1,listeners_cluster_status,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,list,{any,{c,nil,[],unknown}},unknown}]},{emqx_conf_proto_v3,get_hocon_config,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_exhook_mgr,server_info,1} => {any,[any]},{emqx_management_proto_v2,call_client,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},any]},{emqx_management_proto_v4,node_info,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_gateway_cm,do_call,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},any]},{emqx_cm_proto_v1,get_chann_conn_mod,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_dashboard_proto_v1,do_sample,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,1,pos_inf},integer},none,none,none],unknown}]},{emqx_node_rebalance_api_proto_v1,node_rebalance_stop,1} => {any,[{c,atom,any,unknown}]},{emqx_conf_proto_v2,get_override_config_file,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v5,start_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_status_proto_v2,evacuation_status,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{ssl_pem_cache,clear,0} => {any,[]},{emqx_mgmt_api_plugins,ensure_action,2} => {{c,atom,[ok],unknown},[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,atom,[restart,start,stop],unknown}]},{emqx_conf_proto_v3,reset,2} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_resource_proto_v1,recreate,4} => {any,[{c,binary,{8,0},unknown},{c,atom,any,unknown},any,{c,map,{[{{c,atom,[auto_restart_interval],unknown},optional,{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,1,pos_inf},integer},none,none,none],unknown}},{{c,atom,[auto_retry_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[batch_size],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[batch_time],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[health_check_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[health_check_timeout],unknown},optional,{c,number,any,integer}},{{c,atom,[inflight_window],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[max_buffer_bytes],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[query_mode],unknown},optional,{c,atom,[async,no_queries,simple_async,simple_async_internal_buffer,simple_sync,simple_sync_internal_buffer,sync],unknown}},{{c,atom,[resume_interval],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[spawn_buffer_workers],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_after_created],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_timeout],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_for_resource_ready],unknown},optional,{c,number,any,integer}},{{c,atom,[worker_pool_size],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}}],none,none},unknown}]},{emqx_conf_proto_v3,remove_config,2} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_gateway_api_listeners,do_listeners_cluster_status,1} => {{c,map,{[],any,any},unknown},[{c,list,{any,{c,nil,[],unknown}},unknown}]},{emqx_bridge_v2_api,lookup_from_local_node_v6,3} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,atom,[actions,sources],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_telemetry_proto_v1,get_cluster_uuid,1} => {any,[{c,atom,any,unknown}]},{emqx_management_proto_v1,unsubscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,binary,{8,0},unknown}]},{emqx_resource,create_dry_run_local,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,atom,any,unknown},any]},{emqx_gateway_cm,do_set_chan_info,4} => {{c,atom,[false,true],unknown},[any,any,any,any]},{emqx_mgmt_api_cluster,connected_replicants,0} => {{c,list,{{c,tuple,[{c,atom,any,unknown},{c,atom,any,unknown},{c,identifier,[pid],unknown}],{3,any}},{c,nil,[],unknown}},unknown},[]},{emqx_mgmt,do_list_subscriptions,0} => {none,[]},{emqx_node_rebalance_api_proto_v2,node_rebalance_purge_stop,1} => {any,[{c,atom,any,unknown}]},{emqx_bridge_v2,list,1} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_status,rebalance_status,0} => {{c,tuple,[{c,atom,any,unknown},{c,union,[{c,atom,[disabled],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[enabled],unknown},{c,map,{[],any,any},unknown}],{2,{c,atom,[enabled],unknown}}},none,none],unknown}],{2,any}},[]},{emqx_bridge_proto_v5,stop_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_status,evacuation_status,0} => {{c,tuple,[{c,atom,any,unknown},{c,union,[{c,atom,[disabled],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[enabled],unknown},{c,map,{[{{c,atom,[conn_evict_rate],unknown},mandatory,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[current_conns],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[current_sessions],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[initial_conns],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[initial_sessions],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[migrate_to],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[server_reference],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[sess_evict_rate],unknown},mandatory,{c,number,{int_rng,1,pos_inf},integer}}],none,none},unknown}],{2,{c,atom,[enabled],unknown}}},none,none],unknown}],{2,any}},[]},{emqx_mgmt_trace_proto_v2,trace_file,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_management_proto_v3,get_full_config,1} => {any,[{c,atom,any,unknown}]},{emqx_gateway_cm,do_takeover_session,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_gateway_cm_proto_v1,set_chan_stats,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},{c,list,{{c,tuple,[{c,atom,any,unknown},any],{2,any}},{c,nil,[],unknown}},unknown}]},{emqx,get_config,2} => {any,[any,any]},{emqx_proto_v2,delete_all_deactivated_alarms,1} => {any,[{c,atom,any,unknown}]},{emqx_ds_proto_v1,make_iterator,6} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,stream,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[1]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,list,{{c,union,[{c,atom,['','#','+'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_topic_metrics,metrics,0} => {{c,list,{{c,map,{[{{c,atom,[create_time],unknown},mandatory,any},{{c,atom,[metrics],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[reset_time],unknown},optional,any},{{c,atom,[topic],unknown},mandatory,any}],none,none},unknown},{c,nil,[],unknown}},unknown},[]},{emqx_node_rebalance_agent,enable,3} => {any,[any,any,any]},{emqx_ft_storage_fs_proto_v1,pread,5} => {any,[{c,atom,any,unknown},{c,tuple,[{c,binary,{8,0},unknown},{c,binary,{8,0},unknown}],{2,any}},{c,map,{[{{c,atom,[fragment],unknown},mandatory,{c,tuple_set,[{2,[{c,tuple,[{c,atom,[filemeta],unknown},{c,map,{[{{c,atom,[checksum],unknown},optional,{c,tuple,[{c,atom,any,unknown},{c,binary,{8,0},unknown}],{2,any}}},{{c,atom,[expire_at],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[name],unknown},mandatory,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown}},{{c,atom,[segments_ttl],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[size],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[user_data],unknown},optional,{c,union,[{c,atom,[false,null,true],unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,[false,null,true],unknown},{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,any,unknown},none,none,{c,map,{[],{c,binary,{8,0},unknown},any},unknown}],unknown},{c,nil,[],unknown}},unknown},{c,number,any,unknown},none,none,{c,map,{[],{c,binary,{8,0},unknown},{c,union,[{c,atom,[false,null,true],unknown},{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,any,unknown},none,none,{c,map,{[],{c,binary,{8,0},unknown},any},unknown}],unknown}},unknown}],unknown}}],none,none},unknown}],{2,{c,atom,[filemeta],unknown}}},{c,tuple,[{c,atom,[segment],unknown},{c,map,{[{{c,atom,[offset],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[size],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}}],none,none},unknown}],{2,{c,atom,[segment],unknown}}}]}],unknown}},{{c,atom,[path],unknown},mandatory,{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[size],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[timestamp],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}}],none,none},unknown},{c,number,{int_rng,0,pos_inf},integer},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_ft_storage_exporter_fs_proxy,read_export_file_local,2} => {any,[any,any]},{emqx_trace,trace_file,1} => {{c,tuple_set,[{3,[{c,tuple,[{c,atom,[error],unknown},{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},{c,atom,any,unknown}],{3,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},{c,binary,{8,0},unknown}],{3,{c,atom,[ok],unknown}}}]}],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_topic_metrics,reset,0} => {any,[]},{emqx_conf_proto_v1,get_config,2} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_gateway_cm_proto_v1,takeover_session,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_cm_proto_v1,get_chan_stats,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_topic_metrics_proto_v1,reset,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_mgmt_api_plugins,get_plugins,0} => {{c,tuple,[{c,atom,any,unknown},{c,list,{{c,map,{[],any,any},unknown},{c,nil,[],unknown}},unknown}],{2,any}},[]},{emqx_node_rebalance_proto_v3,disable_rebalance_agent,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown}]},{emqx_conf_proto_v3,get_override_config_file,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_management_proto_v2,unsubscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,binary,{8,0},unknown}]},{emqx_exhook_proto_v1,all_servers_info,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_cm_proto_v1,takeover_session,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_management_proto_v1,subscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,list,{{c,tuple,[{c,binary,{8,0},unknown},{c,map,{[{{c,atom,[nl],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[qos],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}},{{c,atom,[rap],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[rh],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}}],{c,atom,any,unknown},any},unknown}],{2,any}},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v1,evict_connections,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_conf_proto_v3,get_all,1} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v1,disconnected_session_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_proto_v2,clean_authz_cache,1} => {any,[{c,atom,any,unknown}]},{emqx_prometheus_proto_v1,stop,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v1,list_bridges,1} => {any,[{c,atom,any,unknown}]},{emqx_bridge_proto_v5,v2_start_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_telemetry,get_cluster_uuid,0} => {any,[]},{emqx_proto_v1,deactivate_alarm,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_node_rebalance_status,purge_status,0} => {{c,tuple,[{c,atom,any,unknown},{c,union,[{c,atom,[disabled],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[enabled],unknown},{c,map,{[{{c,atom,[current_sessions],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[initial_sessions],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[purge_rate],unknown},mandatory,{c,number,{int_rng,1,pos_inf},integer}}],none,none},unknown}],{2,{c,atom,[enabled],unknown}}},none,none],unknown}],{2,any}},[]},{emqx_resource_proto_v1,create_dry_run,2} => {any,[{c,atom,any,unknown},any]},{emqx_mgmt_data_backup,delete_file,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,any,unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,binary,{8,0},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},none,none],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_rule_engine_proto_v1,reset_metrics,1} => {any,[{c,binary,{8,0},unknown}]},{emqx_mgmt_data_backup,list_files,0} => {{c,list,{any,{c,nil,[],unknown}},unknown},[]},{emqx_proto_v1,get_metrics,1} => {any,[{c,atom,any,unknown}]},{emqx_topic_metrics_proto_v1,metrics,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_v2,start,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_delayed_proto_v2,get_delayed_message,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_management_proto_v1,broker_info,1} => {any,[{c,atom,any,unknown}]},{emqx_connector_proto_v1,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_api_plugins,describe_package,1} => {{c,tuple,[{c,atom,any,unknown},{c,list,{{c,map,{[],any,any},unknown},{c,nil,[],unknown}},unknown}],{2,any}},[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_delayed_proto_v2,delete_delayed_message,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_bridge_proto_v6,v2_get_metrics_from_all_nodes_v6,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,[actions,sources],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v2,start_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_dashboard_proto_v1,current_rate,1} => {any,[{c,atom,any,unknown}]},{emqx_gateway_cm_proto_v1,set_chan_info,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},{c,map,{[],{c,atom,any,unknown},any},unknown}]},{emqx_node_rebalance_proto_v2,available_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_gateway_cm,do_set_chan_stats,4} => {{c,atom,[false,true],unknown},[any,any,any,any]},{emqx_mgmt_trace_proto_v2,trace_file_detail,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_proto_v1,delete_all_deactivated_alarms,1} => {any,[{c,atom,any,unknown}]},{emqx_connector_proto_v1,start_connector_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_v2,list,0} => {any,[]},{emqx_node_rebalance_proto_v2,evict_connections,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_conf_proto_v2,update,3} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any,{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_slow_subs_proto_v1,clear_history,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_delayed,get_delayed_message,1} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[delayed_interval],unknown},mandatory,any},{{c,atom,[delayed_remaining],unknown},mandatory,{c,number,any,integer}},{{c,atom,[expected_at],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[from_clientid],unknown},mandatory,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[from_username],unknown},mandatory,any},{{c,atom,[msgid],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[node],unknown},mandatory,any},{{c,atom,[payload],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[publish_at],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[qos],unknown},mandatory,any},{{c,atom,[topic],unknown},mandatory,{c,binary,{8,0},unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[any]},{emqx_node_rebalance_proto_v2,disable_rebalance_agent,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown},any]},{emqx_mgmt,do_unsubscribe,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[channel_not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[unsubscribe],unknown},{c,list,{{c,tuple,[{c,union,[none,{c,binary,{8,0},unknown},none,none,none,none,{c,tuple,[any,any,any],{3,any}},none,none],unknown},{c,map,{[],any,any},unknown}],{2,any}},{c,nil,[],unknown}},nonempty}],{2,{c,atom,[unsubscribe],unknown}}}]}],unknown},[any,any]},{emqx_mgmt_api_plugins_proto_v2,install_package,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,binary,{8,0},unknown}]},{emqx_gateway_cm,do_call,5} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},any,any]},{emqx_mgmt,do_call_client,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},any]},{emqx_cm_proto_v2,lookup_client,2} => {any,[{c,atom,any,unknown},{c,tuple_set,[{2,[{c,tuple,[{c,atom,[clientid],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}],{2,{c,atom,[clientid],unknown}}},{c,tuple,[{c,atom,[username],unknown},{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}],{2,{c,atom,[username],unknown}}}]}],unknown}]},{emqx_ds_replication_layer,do_drop_db_v1,1} => {{c,atom,[ok],unknown},[{c,atom,any,unknown}]},{emqx_eviction_agent,all_local_channels_count,0} => {any,[]},{emqx_bridge_proto_v4,restart_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_cluster_proto_v3,connected_replicants,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_status_proto_v1,rebalance_status,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v2,enable_rebalance_agent,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown},any]},{emqx_persistent_session_ds_proto_v1,open_iterator,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,list,{{c,union,[{c,atom,['','#','+'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer},any]},{emqx_cm_proto_v2,kickout_client,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_proto_v1,clean_authz_cache,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_node_rebalance_evacuation_proto_v1,available_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_mgmt_cluster_proto_v1,invite_node,2} => {any,[{c,atom,any,unknown},{c,atom,any,unknown}]},{emqx_prometheus_proto_v2,stop,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_ds_proto_v2,get_streams,5} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,list,{{c,union,[{c,atom,['','#','+'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_bridge_proto_v3,start_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_eviction_agent,evict_sessions,3} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[disabled],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[any,{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,none],unknown},any]},{emqx_gateway_http,gateway_status,1} => {{c,map,{[{{c,atom,[current_connections],unknown},optional,any},{{c,atom,[max_connections],unknown},optional,{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[node],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[status],unknown},mandatory,{c,atom,[running,stopped,unloaded],unknown}}],none,none},unknown},[{c,atom,any,unknown}]},{emqx_bridge_proto_v4,get_metrics_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_data_backup_proto_v1,read_file,3} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_cm_proto_v1,get_chan_info,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_delayed_proto_v3,clear_all,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v3,enable_rebalance_agent,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown},any]},{emqx_conf_proto_v1,update,4} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any,{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_bridge_proto_v3,list_bridges,1} => {any,[{c,atom,any,unknown}]},{emqx_management_proto_v2,unsubscribe_batch,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,list,{{c,binary,{8,0},unknown},{c,nil,[],unknown}},unknown}]},{emqx_topic_metrics_proto_v1,reset,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,binary,{8,0},unknown}]},{emqx_bridge_proto_v5,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v1,get_all,1} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v3,stop_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_ds_replication_layer,do_store_batch_v1,4} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[3]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,list,{{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],any,any},unknown},{c,map,{[],any,any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}},{c,nil,[],unknown}},unknown}}],any,any},unknown},{c,map,{[],none,none},unknown}]},{emqx_management_proto_v1,list_subscriptions,1} => {any,[{c,atom,any,unknown}]},{emqx_conf_cli,get_config,1} => {{c,union,[none,none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,list,{{c,number,{int_set,"_defknotuy"},integer},{c,nil,[],unknown}},nonempty}],{2,{c,atom,[error],unknown}}},none,{c,map,{[],any,any},unknown}],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_management_proto_v4,subscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,list,{{c,tuple,[{c,binary,{8,0},unknown},{c,map,{[{{c,atom,[nl],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[qos],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}},{{c,atom,[rap],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[rh],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}}],{c,atom,any,unknown},any},unknown}],{2,any}},{c,nil,[],unknown}},unknown}]},{emqx_trace,trace_file_detail,1} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,map,{[{{c,atom,[file],unknown},mandatory,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[node],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[reason],unknown},mandatory,{c,atom,any,unknown}}],none,none},unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[mtime],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},{c,tuple,[{c,tuple,[any,any,any],{3,any}},{c,tuple,[any,any,any],{3,any}}],{2,any}},none,none],unknown}},{{c,atom,[node],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[size],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v6,v2_start_bridge_on_node_v6,4} => {any,[{c,atom,any,unknown},{c,atom,[actions,sources],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v6,stop_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_api_trace,get_trace_size,0} => {{c,map,{[],any,any},unknown},[]},{emqx_prometheus_proto_v1,start,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_topic_metrics_proto_v1,metrics,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,binary,{8,0},unknown}]},{emqx_retainer_proto_v2,active_mnesia_indices,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v3,evict_connections,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_stats,getstats,0} => {{c,list,{{c,tuple,any,{any,any}},{c,nil,[],unknown}},unknown},[]},{emqx_alarm,deactivate,1} => {any,[any]},{emqx_conf_proto_v2,remove_config,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_bridge_proto_v3,start_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_license_resources,local_connection_count,0} => {any,[]},{emqx_bridge_resource,start,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_persistent_session_ds_proto_v1,close_all_iterators,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,binary,{8,0},unknown}]},{emqx_bridge_proto_v2,list_bridges,1} => {any,[{c,atom,any,unknown}]},{emqx_ds_proto_v1,drop_db,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown}]},{emqx_management_proto_v3,broker_info,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v3,session_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v5,get_metrics_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_license_proto_v2,remote_connection_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v1,evict_sessions,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer},{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,[connected,connecting,disconnected,idle,reauthenticating],unknown}]},{emqx_broker_proto_v1,forward,3} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,tuple,[{c,atom,[delivery],unknown},{c,identifier,[pid],unknown},{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],{c,atom,any,unknown},{c,atom,[false,true],unknown}},unknown},{c,map,{[{{c,atom,[allow_publish],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[peerhost],unknown},optional,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[properties],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[protocol],unknown},optional,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}}],{3,{c,atom,[delivery],unknown}}}]},{emqx_node_rebalance_proto_v1,connection_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v1,stop_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v3,remove_config,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_exhook_proto_v1,server_hooks_metrics,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,binary,{8,0},unknown}]},{emqx_prometheus_api,lookup_from_local_nodes,3} => {any,[{c,union,[{c,atom,any,unknown},none,none,none,none,none,{c,tuple,any,{any,any}},none,none],unknown},{c,atom,any,unknown},{c,list,{any,{c,nil,[],unknown}},unknown}]},{emqx_proto_v2,get_metrics,1} => {any,[{c,atom,any,unknown}]},{emqx_eviction_agent_proto_v2,all_channels_count,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_bridge_proto_v4,stop_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_proto_v2,clean_authz_cache,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_bridge_proto_v3,restart_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v2,stop_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v3,update,3} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any,{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_gateway_cm_proto_v1,call,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},any]},{emqx_prometheus_proto_v2,start,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v1,session_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_management_proto_v4,call_client,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},any]},{emqx_bridge_proto_v5,restart_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_management_proto_v4,unsubscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,binary,{8,0},unknown}]},{emqx_management_proto_v3,unsubscribe_batch,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,list,{{c,binary,{8,0},unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_status_proto_v2,rebalance_status,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_gateway_http_proto_v1,get_cluster_status,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown}]},{emqx_prometheus_proto_v2,raw_prom_data,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown},{c,atom,any,unknown},{c,list,{any,{c,nil,[],unknown}},unknown}]},{emqx,update_config,3} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[config],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,{c,map,{[],{c,atom,any,unknown},any},unknown}],unknown}},{{c,atom,[post_config_update],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[raw_config],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,{c,map,{[],{c,binary,{8,0},unknown},any},unknown}],unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any,{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_bridge_v2,start,3} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_management_proto_v4,get_full_config,1} => {any,[{c,atom,any,unknown}]},{emqx_alarm,delete_all_deactivated_alarms,0} => {any,[]},{emqx_management_proto_v3,list_listeners,1} => {any,[{c,atom,any,unknown}]},{emqx_mgmt_api_cluster,join,1} => {{c,union,[{c,atom,[ignore,ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,atom,any,unknown}]},{emqx_cm_proto_v2,takeover_session,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_bridge_proto_v3,stop_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_broker_proto_v1,forward_async,3} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,tuple,[{c,atom,[delivery],unknown},{c,identifier,[pid],unknown},{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],{c,atom,any,unknown},{c,atom,[false,true],unknown}},unknown},{c,map,{[{{c,atom,[allow_publish],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[peerhost],unknown},optional,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[properties],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[protocol],unknown},optional,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}}],{3,{c,atom,[delivery],unknown}}}]},{emqx_delayed_proto_v3,delete_delayed_messages_by_topic_name,2} => {any,[{c,list,{any,{c,nil,[],unknown}},unknown},{c,binary,{8,0},unknown}]},{emqx_connector,list,0} => {any,[]},{emqx_cm_proto_v2,get_chann_conn_mod,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_mgmt_api_plugins_proto_v1,ensure_action,2} => {any,[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,atom,[restart,start,stop],unknown}]},{emqx_prometheus,do_stop,0} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found,restarting,running,simple_one_for_one],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[]},{emqx_exhook_mgr,server_hooks_metrics,1} => {any,[any]},{emqx_ds_proto_v2,update_iterator,5} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,binary,{8,0},unknown}]},{emqx_mgmt_api_plugins_proto_v1,describe_package,1} => {any,[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v4,start_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{erlang,send,2} => {any,[any,any]},{emqx_metrics_worker,get_metrics,2} => {{c,map,{[{{c,atom,[counters],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[gauges],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[rate],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[slides],unknown},mandatory,{c,map,{[],any,any},unknown}}],none,none},unknown},[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_node_rebalance_purge_proto_v1,stop,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_mgmt_api_configs,get_full_config,0} => {{c,map,{[],any,any},unknown},[]},{emqx_ft_storage_fs_proxy,list_local,2} => {any,[any,any]},{emqx_ft_storage_fs_reader,read,2} => {any,[{c,identifier,[pid],unknown},{c,number,{int_rng,1,pos_inf},integer}]},{emqx_node_rebalance_status_proto_v2,purge_status,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_api_proto_v2,node_rebalance_start,2} => {any,[{c,atom,any,unknown},{c,map,{[{{c,atom,[abs_conn_threshold],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[abs_sess_threshold],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[conn_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[nodes],unknown},optional,{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}},{{c,atom,[rel_conn_threshold],unknown},optional,{c,number,any,unknown}},{{c,atom,[rel_sess_threshold],unknown},optional,{c,number,any,unknown}},{{c,atom,[sess_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_health_check],unknown},optional,{c,number,any,unknown}},{{c,atom,[wait_takeover],unknown},optional,{c,number,any,unknown}}],none,none},unknown}]},{emqx_delayed_proto_v1,delete_delayed_message,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_proto_v1,clean_pem_cache,1} => {any,[{c,atom,any,unknown}]},{emqx_connector_api,lookup_from_local_node,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_proto_v2,get_alarms,2} => {any,[{c,atom,any,unknown},{c,atom,[activated,all,deactivated],unknown}]},{emqx_gateway_cm,do_kick_session,4} => {{c,atom,[ok],unknown},[{c,atom,any,unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_node_rebalance_api_proto_v1,node_rebalance_evacuation_stop,1} => {any,[{c,atom,any,unknown}]},{emqx_management_proto_v2,subscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,list,{{c,tuple,[{c,binary,{8,0},unknown},{c,map,{[{{c,atom,[nl],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[qos],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}},{{c,atom,[rap],unknown},mandatory,{c,number,{int_set,[0,1]},integer}},{{c,atom,[rh],unknown},mandatory,{c,number,{int_set,[0,1,2]},integer}}],{c,atom,any,unknown},any},unknown}],{2,any}},{c,nil,[],unknown}},unknown}]},{emqx_gateway_cm,do_get_chann_conn_mod,3} => {any,[any,any,any]},{emqx_mgmt_cluster_proto_v3,invite_node,3} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_proto_v1,clean_authz_cache,1} => {any,[{c,atom,any,unknown}]},{emqx_bridge_proto_v6,v2_list_bridges_on_nodes_v6,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,[actions,sources],unknown}]},{emqx_authn_proto_v1,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_authz_cache,drain_cache,0} => {{c,atom,[ok],unknown},[]},{emqx_ds_proto_v1,store_batch,5} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[3]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,list,{{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],{c,atom,any,unknown},{c,atom,[false,true],unknown}},unknown},{c,map,{[{{c,atom,[allow_publish],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[peerhost],unknown},optional,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[properties],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[protocol],unknown},optional,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}},{c,nil,[],unknown}},unknown}}],none,none},unknown},{c,map,{[],none,none},unknown}]},{emqx_proto_v2,is_running,1} => {any,[{c,atom,any,unknown}]},{emqx_conf_proto_v2,get_config,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown},any]},{emqx_mgmt_data_backup_proto_v1,delete_file,3} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_gateway_cm,do_get_chan_info,3} => {{c,union,[{c,atom,[undefined],unknown},none,none,none,none,none,none,none,{c,map,{[{{c,atom,[node],unknown},mandatory,{c,atom,any,unknown}}],any,any},unknown}],unknown},[any,any,any]},{emqx_retainer_dispatcher,wait_dispatch_complete,1} => {{c,atom,[ok],unknown},[any]},{emqx_resource,remove_local,1} => {{c,atom,[ok],unknown},[{c,binary,{8,0},unknown}]},{emqx_shared_sub,do_dispatch_with_ack,4} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,identifier,[pid,port],unknown},any,any,{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],{c,atom,any,unknown},{c,atom,[false,true],unknown}},unknown},{c,map,{[{{c,atom,[allow_publish],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[peerhost],unknown},optional,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[properties],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[protocol],unknown},optional,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}}]},{emqx_node_rebalance_status,local_status,0} => {{c,union,[{c,atom,[disabled],unknown},none,none,none,none,none,{c,tuple_set,[{2,[{c,tuple,[{c,atom,[evacuation],unknown},any],{2,{c,atom,[evacuation],unknown}}},{c,tuple,[{c,atom,[purge],unknown},any],{2,{c,atom,[purge],unknown}}},{c,tuple,[{c,atom,[rebalance],unknown},{c,map,{[],{c,atom,[connection_eviction_rate,connection_goal,coordinator_node,disconnected_session_goal,recipients,session_eviction_rate,state,stats],unknown},any},unknown}],{2,{c,atom,[rebalance],unknown}}}]}],unknown},none,none],unknown},[]},{emqx_ds_replication_layer,do_next_v1,4} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,atom,[end_of_stream],unknown}],{2,{c,atom,[ok],unknown}}}]},{3,[{c,tuple,[{c,atom,[ok],unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,list,{{c,tuple,[{c,binary,{8,0},unknown},{c,tuple,[any,any,any,any,any,any,any,any,any,any],{10,any}}],{2,any}},{c,nil,[],unknown}},unknown}],{3,{c,atom,[ok],unknown}}}]}],unknown},[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,number,{int_rng,1,pos_inf},integer}]},{emqx_conf_proto_v3,update,4} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any,{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_node_rebalance_api_proto_v2,node_rebalance_purge_start,2} => {any,[{c,atom,any,unknown},{c,map,{[{{c,atom,[purge_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}}],none,none},unknown}]},{emqx_ds_proto_v1,next,5} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,number,{int_rng,1,pos_inf},integer}]},{emqx_proto_v1,get_alarms,2} => {any,[{c,atom,any,unknown},{c,atom,[activated,all,deactivated],unknown}]},{emqx_proto_v2,are_running,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v1,stop_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_cm_proto_v1,kickout_client,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_gateway_cm_proto_v1,cast,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},any]},{emqx_delayed_proto_v3,delete_delayed_message,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_mgmt_api_plugins_proto_v2,describe_package,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_eviction_agent,purge_sessions,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[disabled],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[any]},{emqx_slow_subs_proto_v1,get_history,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_delayed_proto_v1,get_delayed_message,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_conf,get_node_and_config,1} => {{c,tuple,[{c,atom,any,unknown},any],{2,any}},[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_proto_v1,is_running,1} => {any,[{c,atom,any,unknown}]},{emqx_node_rebalance_proto_v3,available_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_broker,subscriptions_via_topic,1} => {{c,list,{any,{c,nil,[],unknown}},unknown},[any]},{emqx_persistent_session_ds,do_ensure_iterator_closed,1} => {{c,atom,[ok],unknown},[any]},{emqx_bridge_resource,stop,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_management_proto_v3,unsubscribe,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,binary,{8,0},unknown}]},{emqx_mgmt_trace_proto_v1,trace_file,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v1,reset,2} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_proto_v2,get_stats,1} => {any,[{c,atom,any,unknown}]},{emqx_conf_cli,get_config,0} => {{c,map,{[],any,any},unknown},[]},{emqx_ft_storage_exporter_fs_proto_v1,read_export_file,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_node_rebalance_proto_v3,purge_sessions,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_management_proto_v2,list_subscriptions,1} => {any,[{c,atom,any,unknown}]},{emqx_telemetry_proto_v1,get_node_uuid,1} => {any,[{c,atom,any,unknown}]},{emqx_broker,subscriptions,1} => {{c,list,{{c,tuple,[any,any],{2,any}},{c,nil,[],unknown}},unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,{c,identifier,[pid],unknown},none,none,none,none,none],unknown}]},{emqx_slow_subs_api,get_history,0} => {{c,list,{{c,map,{[{{c,atom,[clientid],unknown},mandatory,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[last_update_time],unknown},mandatory,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[node],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[timespan],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[topic],unknown},mandatory,{c,binary,{8,0},unknown}}],none,none},unknown},{c,nil,[],unknown}},unknown},[]},{emqx_gateway_cm_proto_v1,lookup_by_clientid,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_ds_replication_layer,do_get_streams_v1,4} => {{c,list,{{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,opaque,[{opaque,emqx_ds_storage_layer,stream,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[1]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown}],{2,any}},{c,nil,[],unknown}},unknown},[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,list,{{c,union,[{c,atom,['','#','+'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_plugins,get_tar,1} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,binary,{8,0},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown}]},{emqx_conf_proto_v1,get_config,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown},any]},{emqx_connector_proto_v1,start_connectors_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v3,get_config,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown},any]},{emqx_prometheus,do_start,0} => {{c,atom,[ok],unknown},[]},{emqx_gateway_cm_proto_v1,get_chan_stats,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_node_rebalance_api_proto_v2,node_rebalance_stop,1} => {any,[{c,atom,any,unknown}]},{emqx_node_rebalance_status_proto_v1,evacuation_status,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_topic_metrics,metrics,1} => {{c,union,[none,none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[topic_not_found],unknown}],{2,{c,atom,[error],unknown}}},none,{c,map,{[{{c,atom,[create_time],unknown},mandatory,any},{{c,atom,[metrics],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[reset_time],unknown},optional,any},{{c,atom,[topic],unknown},mandatory,any}],none,none},unknown}],unknown},[any]},{emqx_cm_proto_v1,kick_session,3} => {any,[{c,atom,[discard,kick],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_broker_proto_v1,list_subscriptions_via_topic,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_node_rebalance_proto_v2,connection_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_metrics_proto_v1,get_metrics,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_management_proto_v2,get_full_config,1} => {any,[{c,atom,any,unknown}]},{emqx_connector_resource,start,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v1,restart_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_cm,takeover_finish,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[noproc,timeout,unexpected_exception],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}}]}],unknown},none,none],unknown},[{c,atom,any,unknown},{c,identifier,[pid],unknown}]},{emqx_bridge_proto_v6,v2_lookup_from_all_nodes_v6,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,[actions,sources],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_gateway_cm_proto_v1,get_chan_info,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_retainer_proto_v2,wait_dispatch_complete,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_bridge_proto_v4,stop_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_api_plugins_proto_v2,delete_package,1} => {any,[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_proto_v1,available_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_mgmt_api_plugins_proto_v2,ensure_action,2} => {any,[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,atom,[restart,start,stop],unknown}]},{emqx_node_rebalance_api_proto_v1,node_rebalance_evacuation_start,2} => {any,[{c,atom,any,unknown},{c,map,{[{{c,atom,[conn_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[migrate_to],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[server_reference],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[sess_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_health_check],unknown},optional,{c,number,any,unknown}},{{c,atom,[wait_takeover],unknown},optional,{c,number,any,unknown}}],none,none},unknown}]},{emqx_cm,lookup_client,1} => {{c,list,{any,{c,nil,[],unknown}},unknown},[{c,tuple_set,[{2,[{c,tuple,[{c,atom,[clientid],unknown},any],{2,{c,atom,[clientid],unknown}}},{c,tuple,[{c,atom,[username],unknown},any],{2,{c,atom,[username],unknown}}}]}],unknown}]},{emqx_bridge_proto_v6,start_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_proto_v2,clean_pem_cache,1} => {any,[{c,atom,any,unknown}]},{emqx_dashboard_monitor,do_sample,2} => {any,[{c,atom,any,unknown},any]},{emqx_broker,dispatch,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[no_subscribers,not_running],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,number,{int_rng,0,pos_inf},integer}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,binary,{8,0},unknown},{c,tuple,[{c,atom,[delivery],unknown},{c,identifier,[pid],unknown},{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],{c,atom,any,unknown},{c,atom,[false,true],unknown}},unknown},{c,map,{[{{c,atom,[allow_publish],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[peerhost],unknown},optional,{c,tuple_set,[{4,[{c,tuple,[any,any,any,any],{4,any}}]},{8,[{c,tuple,[any,any,any,any,any,any,any,any],{8,any}}]}],unknown}},{{c,atom,[properties],unknown},optional,{c,map,{[],any,any},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[protocol],unknown},optional,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}}],{3,{c,atom,[delivery],unknown}}}]},{emqx_gateway_cm,do_get_chan_stats,3} => {any,[any,any,any]},{emqx_bridge_proto_v4,list_bridges_on_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance,is_node_available,0} => {{c,atom,any,unknown},[]},{emqx_cm_proto_v2,get_chan_info,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_conf_proto_v1,reset,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_management_proto_v1,node_info,1} => {any,[{c,atom,any,unknown}]},{emqx_resource,reset_metrics_local,1} => {{c,atom,[ok],unknown},[{c,binary,{8,0},unknown}]},{emqx_mgmt,do_subscribe,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[channel_not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[subscribe],unknown},any],{2,{c,atom,[subscribe],unknown}}}]}],unknown},[any,any]},{emqx_mgmt_trace_proto_v1,read_trace_file,4} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,number,{int_rng,0,pos_inf},integer},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_ft_storage_fs_proto_v1,multilist,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,tuple,[{c,binary,{8,0},unknown},{c,binary,{8,0},unknown}],{2,any}},{c,atom,[fragment,result],unknown}]},{emqx,is_running,0} => {{c,atom,[false,true],unknown},[]},{emqx_eviction_agent_proto_v1,evict_session_channel,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[{{c,atom,[clean_start],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[clientid],unknown},optional,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[conn_mod],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[conn_props],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[connected],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[connected_at],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[disconnected_at],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[expiry_interval],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[keepalive],unknown},optional,{c,number,{int_rng,0,1114111},integer}},{{c,atom,[peercert],unknown},optional,{c,union,[{c,atom,[nossl,undefined],unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,none,none,{c,tuple,any,{any,any}},none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[peername],unknown},mandatory,{c,tuple,[{c,union,[{c,atom,[local,undefined,unspec],unknown},none,none,none,none,none,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown},none,none],unknown},any],{2,any}}},{{c,atom,[proto_name],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[receive_maximum],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[sockname],unknown},mandatory,{c,tuple,[{c,union,[{c,atom,[local,undefined,unspec],unknown},none,none,none,none,none,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown},none,none],unknown},any],{2,any}}},{{c,atom,[socktype],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,map,{[{{c,atom,[anonymous],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[auth_result],unknown},optional,{c,atom,[bad_authentication_method,bad_clientid_or_password,bad_username_or_password,banned,client_identifier_not_valid,not_authorized,server_busy,server_unavailable,success],unknown}},{{c,atom,[clientid],unknown},mandatory,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[cn],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[dn],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[is_bridge],unknown},mandatory,{c,atom,[false,true],unknown}},{{c,atom,[is_superuser],unknown},mandatory,{c,atom,[false,true],unknown}},{{c,atom,[mountpoint],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[password],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[peerhost],unknown},mandatory,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[protocol],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[sockport],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[username],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[ws_cookie],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[zone],unknown},mandatory,{c,atom,any,unknown}}],{c,atom,any,unknown},any},unknown}]},{emqx_resource_proto_v1,create,5} => {any,[{c,binary,{8,0},unknown},{c,binary,{8,0},unknown},{c,atom,any,unknown},any,{c,map,{[{{c,atom,[auto_restart_interval],unknown},optional,{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,1,pos_inf},integer},none,none,none],unknown}},{{c,atom,[auto_retry_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[batch_size],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[batch_time],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[health_check_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[health_check_timeout],unknown},optional,{c,number,any,integer}},{{c,atom,[inflight_window],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[max_buffer_bytes],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[query_mode],unknown},optional,{c,atom,[async,no_queries,simple_async,simple_async_internal_buffer,simple_sync,simple_sync_internal_buffer,sync],unknown}},{{c,atom,[resume_interval],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[spawn_buffer_workers],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_after_created],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_timeout],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_for_resource_ready],unknown},optional,{c,number,any,integer}},{{c,atom,[worker_pool_size],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}}],none,none},unknown}]},{emqx_ds_proto_v2,next,5} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,number,{int_rng,1,pos_inf},integer}]},{emqx_cm_proto_v1,lookup_client,2} => {any,[{c,atom,any,unknown},{c,tuple_set,[{2,[{c,tuple,[{c,atom,[clientid],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}],{2,{c,atom,[clientid],unknown}}},{c,tuple,[{c,atom,[username],unknown},{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}],{2,{c,atom,[username],unknown}}}]}],unknown}]},{emqx_node_rebalance_proto_v3,evict_sessions,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer},{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,[connected,connecting,disconnected,idle,reauthenticating],unknown}]},{emqx_bridge_resource,restart,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},none,none],unknown},[any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance,start,1} => {any,[{c,map,{[],any,any},unknown}]},{emqx_bridge_proto_v6,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_trace_proto_v2,read_trace_file,4} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,number,{int_rng,0,pos_inf},integer},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_mgmt_api_plugins_proto_v1,get_plugins,0} => {any,[]},{emqx_gateway_cm,do_cast,4} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},any]},{emqx_bridge_proto_v2,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_ds_proto_v1,get_streams,5} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,list,{{c,union,[{c,atom,['','#','+'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_conf_proto_v1,remove_config,2} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_bridge_proto_v5,v2_start_bridge_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v2,sync_data_from_node,1} => {any,[{c,atom,any,unknown}]},{emqx_node_rebalance,session_count,0} => {{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}},[]},{emqx_rule_engine,reset_metrics_for_rule,1} => {{c,atom,[ok],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_resource,recreate_local,4} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found,updating_to_incorrect_resource_type],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[added_channels],unknown},mandatory,any},{{c,atom,[callback_mode],unknown},mandatory,{c,atom,[always_sync,async_if_possible],unknown}},{{c,atom,[config],unknown},mandatory,any},{{c,atom,[error],unknown},mandatory,any},{{c,atom,[id],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[mod],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[query_mode],unknown},mandatory,{c,atom,[async,no_queries,simple_async,simple_async_internal_buffer,simple_sync,simple_sync_internal_buffer,sync],unknown}},{{c,atom,[state],unknown},mandatory,any},{{c,atom,[status],unknown},mandatory,{c,atom,[connected,connecting,disconnected,stopped],unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,binary,{8,0},unknown},{c,atom,any,unknown},any,{c,map,{[{{c,atom,[auto_restart_interval],unknown},optional,{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,1,pos_inf},integer},none,none,none],unknown}},{{c,atom,[auto_retry_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[batch_size],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[batch_time],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[health_check_interval],unknown},optional,{c,number,any,integer}},{{c,atom,[health_check_timeout],unknown},optional,{c,number,any,integer}},{{c,atom,[inflight_window],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[max_buffer_bytes],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[query_mode],unknown},optional,{c,atom,[async,no_queries,simple_async,simple_async_internal_buffer,simple_sync,simple_sync_internal_buffer,sync],unknown}},{{c,atom,[resume_interval],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[spawn_buffer_workers],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_after_created],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[start_timeout],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_for_resource_ready],unknown},optional,{c,number,any,integer}},{{c,atom,[worker_pool_size],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}}],none,none},unknown}]},{emqx_delayed_proto_v3,get_delayed_message,2} => {any,[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_node_rebalance_proto_v3,connection_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v2,enable_rebalance_agent,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown}]},{emqx_node_rebalance_proto_v3,disable_rebalance_agent,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown},any]},{emqx_mgmt,node_info,0} => {{c,map,{[{{c,atom,[connections],unknown},mandatory,any},{{c,atom,[edition],unknown},mandatory,{c,binary,{0,80},unknown}},{{c,atom,[live_connections],unknown},mandatory,any},{{c,atom,[load1],unknown},optional,{c,number,any,float}},{{c,atom,[load15],unknown},optional,{c,number,any,float}},{{c,atom,[load5],unknown},optional,{c,number,any,float}},{{c,atom,[log_path],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[max_fds],unknown},mandatory,any},{{c,atom,[memory_total],unknown},mandatory,{c,number,any,unknown}},{{c,atom,[memory_used],unknown},mandatory,{c,number,any,integer}},{{c,atom,[node],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[node_status],unknown},mandatory,{c,atom,[running],unknown}},{{c,atom,[otp_release],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[process_available],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[process_used],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[role],unknown},mandatory,{c,atom,[core,replicant],unknown}},{{c,atom,[sys_path],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[uptime],unknown},mandatory,any},{{c,atom,[version],unknown},mandatory,{c,binary,{8,0},unknown}}],none,none},unknown},[]},{emqx_ft_storage_fs_proxy,lookup_local_assembler,1} => {any,[any]},{emqx_cm_proto_v2,get_chan_stats,2} => {any,[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_bridge_api,lookup_from_local_node,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_bridge_v1_compatible,not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}}]},{3,[{c,tuple,[{c,atom,[ok],unknown},{c,atom,[actions,sources],unknown},{c,map,{[{{c,atom,[error],unknown},mandatory,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,none,{c,tuple_set,[{3,[{c,tuple,[{c,atom,[error],unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}],{3,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[incomplete],unknown},{c,binary,{8,0},unknown},{c,binary,{8,0},unknown}],{3,{c,atom,[incomplete],unknown}}}]}],unknown},none,none],unknown}},{{c,atom,[name],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[raw_config],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[resource_data],unknown},mandatory,{c,map,{[{{c,atom,[added_channels],unknown},optional,any},{{c,atom,[callback_mode],unknown},optional,{c,atom,[always_sync,async_if_possible],unknown}},{{c,atom,[config],unknown},optional,any},{{c,atom,[error],unknown},optional,any},{{c,atom,[id],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[mod],unknown},optional,{c,atom,any,unknown}},{{c,atom,[query_mode],unknown},optional,{c,atom,[async,no_queries,simple_async,simple_async_internal_buffer,simple_sync,simple_sync_internal_buffer,sync],unknown}},{{c,atom,[state],unknown},optional,any},{{c,atom,[status],unknown},optional,{c,atom,[connected,connecting,disconnected,stopped],unknown}}],none,none},unknown}},{{c,atom,[status],unknown},mandatory,{c,atom,[connected,connecting,disconnected,stopped],unknown}},{{c,atom,[type],unknown},mandatory,{c,binary,{8,0},unknown}}],none,none},unknown}],{3,{c,atom,[ok],unknown}}}]}],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_ds_replication_layer,do_update_iterator_v2,4} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,iterator,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[2]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,binary,{8,0},unknown}]},{emqx_node_rebalance_evacuation,start,1} => {any,[{c,map,{[],any,any},unknown}]},{emqx_node_rebalance_proto_v1,enable_rebalance_agent,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown}]},{emqx_metrics,all,0} => {{c,list,{{c,tuple,[any,{c,number,any,integer}],{2,any}},{c,nil,[],unknown}},unknown},[]},{emqx_bridge_proto_v5,v2_lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_ft_storage_fs_proto_v1,list_assemblers,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,tuple,[{c,binary,{8,0},unknown},{c,binary,{8,0},unknown}],{2,any}}]},{emqx_node_rebalance_agent,disable,2} => {any,[any,any]},{emqx_bridge_proto_v2,restart_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_authn_api,lookup_from_local_node,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,tuple,[{c,atom,any,unknown},{c,union,[{c,atom,[not_found_resource],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}],{2,any}}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,tuple,[{c,atom,any,unknown},{c,atom,[connected,connecting,disconnected,stopped],unknown},{c,map,{[{{c,atom,[counters],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[gauges],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[rate],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[slides],unknown},mandatory,{c,map,{[],any,any},unknown}}],none,none},unknown},{c,map,{[{{c,atom,[counters],unknown},optional,{c,map,{[],any,any},unknown}},{{c,atom,[gauges],unknown},optional,{c,map,{[],any,any},unknown}},{{c,atom,[rate],unknown},optional,{c,map,{[],any,any},unknown}},{{c,atom,[slides],unknown},optional,{c,map,{[],any,any},unknown}}],none,none},unknown}],{4,any}}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,atom,any,unknown},{c,binary,{8,0},unknown}]},{emqx_bridge_proto_v4,start_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v1,remove_config,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_management_proto_v4,broker_info,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_conf_proto_v2,reset,2} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_eviction_agent,evict_connections,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[disabled],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[any]},{emqx_bridge_proto_v3,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v2,get_config,2} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_purge_proto_v1,start,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,map,{[{{c,atom,[purge_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}}],none,none},unknown}]},{emqx_eviction_agent,evict_session_channel,3} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,union,[{c,atom,[undefined],unknown},none,none,{c,identifier,[pid],unknown},none,none,none,none,none],unknown}],{2,{c,atom,[ok],unknown}}}]},{3,[{c,tuple,[{c,atom,[ok],unknown},{c,union,[{c,atom,[undefined],unknown},none,none,{c,identifier,[pid],unknown},none,none,none,none,none],unknown},any],{3,{c,atom,[ok],unknown}}}]}],unknown},[any,{c,map,{[{{c,atom,[clean_start],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[clientid],unknown},optional,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[conn_mod],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[conn_props],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[connected],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[connected_at],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[disconnected_at],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[expiry_interval],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[keepalive],unknown},optional,{c,number,{int_rng,0,1114111},integer}},{{c,atom,[peercert],unknown},optional,{c,union,[{c,atom,[nossl,undefined],unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[{c,atom,any,unknown},none,none,none,none,none,{c,tuple,any,{any,any}},none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[peername],unknown},mandatory,{c,tuple,[{c,union,[{c,atom,[local,undefined,unspec],unknown},none,none,none,none,none,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown},none,none],unknown},any],{2,any}}},{{c,atom,[proto_name],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[receive_maximum],unknown},optional,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[sockname],unknown},mandatory,{c,tuple,[{c,union,[{c,atom,[local,undefined,unspec],unknown},none,none,none,none,none,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown},none,none],unknown},any],{2,any}}},{{c,atom,[socktype],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,map,{[{{c,atom,[anonymous],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[auth_result],unknown},optional,{c,atom,[bad_authentication_method,bad_clientid_or_password,bad_username_or_password,banned,client_identifier_not_valid,not_authorized,server_busy,server_unavailable,success],unknown}},{{c,atom,[clientid],unknown},mandatory,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[cn],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[dn],unknown},optional,{c,binary,{8,0},unknown}},{{c,atom,[is_bridge],unknown},mandatory,{c,atom,[false,true],unknown}},{{c,atom,[is_superuser],unknown},mandatory,{c,atom,[false,true],unknown}},{{c,atom,[mountpoint],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[password],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[peerhost],unknown},mandatory,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[protocol],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[sockport],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[username],unknown},mandatory,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}},{{c,atom,[ws_cookie],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,none],unknown}},{{c,atom,[zone],unknown},mandatory,{c,atom,any,unknown}}],{c,atom,any,unknown},any},unknown}]},{emqx_management_proto_v1,list_listeners,1} => {any,[{c,atom,any,unknown}]},{emqx_node_rebalance_agent,enable,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[eviction_agent_busy,invalid_coordinator],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,identifier,[pid],unknown},any]},{emqx_mgmt_cluster_proto_v2,connected_replicants,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v5,restart_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v2,start_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_shared_sub_proto_v1,send,4} => {any,[{c,atom,any,unknown},{c,identifier,[pid],unknown},{c,binary,{8,0},unknown},any]},{emqx_mgmt,do_unsubscribe_batch,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[channel_not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[unsubscribe],unknown},{c,list,{{c,tuple,[any,any],{2,any}},{c,nil,[],unknown}},unknown}],{2,{c,atom,[unsubscribe],unknown}}}]}],unknown},[any,any]},{emqx_management_proto_v4,unsubscribe_batch,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,list,{{c,binary,{8,0},unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_api_proto_v1,node_rebalance_start,2} => {any,[{c,atom,any,unknown},{c,map,{[{{c,atom,[abs_conn_threshold],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[abs_sess_threshold],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[conn_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[nodes],unknown},optional,{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}},{{c,atom,[rel_conn_threshold],unknown},optional,{c,number,any,unknown}},{{c,atom,[rel_sess_threshold],unknown},optional,{c,number,any,unknown}},{{c,atom,[sess_evict_rate],unknown},optional,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[wait_health_check],unknown},optional,{c,number,any,unknown}},{{c,atom,[wait_takeover],unknown},optional,{c,number,any,unknown}}],none,none},unknown}]},{emqx_bridge_v2_api,lookup_from_local_node,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_purge,start,1} => {any,[{c,map,{[],any,any},unknown}]},{emqx_bridge_proto_v6,get_metrics_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_management_proto_v3,call_client,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},any]},{emqx_node_rebalance,disconnected_session_count,0} => {{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}},[]},{emqx_bridge_proto_v2,restart_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_mgmt_trace_proto_v2,get_trace_size,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_cm_proto_v2,takeover_finish,2} => {any,[{c,atom,any,unknown},{c,identifier,[pid],unknown}]},{emqx_conf_proto_v1,get_override_config_file,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_proto_v3,enable_rebalance_agent,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown}]},{emqx_conf_proto_v2,update,4} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any,{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_ds_proto_v2,make_iterator,6} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,opaque,[{opaque,emqx_ds_storage_layer,stream,0,{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[1]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,number,{int_rng,0,1114111},integer}},{{c,number,{int_set,[3]},integer},mandatory,any}],none,none},unknown}}],unknown},{c,list,{{c,union,[{c,atom,['','#','+'],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,pos_inf},integer}]},{emqx_exhook_proto_v1,server_info,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,binary,{8,0},unknown}]},{emqx_conf_proto_v3,reset,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_delayed,do_delete_delayed_messages_by_topic_name,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,binary,{8,0},unknown}]},{emqx_node_rebalance_purge,stop,0} => {any,[]},{emqx_mgmt_api_trace,read_trace_file,3} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[eof],unknown},{c,union,[{c,atom,[undefined],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}],{2,{c,atom,[eof],unknown}}},{c,tuple,[{c,atom,[error],unknown},{c,union,[{c,atom,any,unknown},none,none,none,none,none,{c,tuple,[{c,atom,[no_translation],unknown},{c,atom,[unicode],unknown},{c,atom,[latin1],unknown}],{3,{c,atom,[no_translation],unknown}}},none,none],unknown}],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,binary,{8,0},unknown},any,any]},{emqx_mgmt_api_plugins_proto_v2,get_plugins,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_conf_proto_v3,get_hocon_config,1} => {any,[{c,atom,any,unknown}]},{emqx_proto_v2,deactivate_alarm,2} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_delayed_proto_v2,clear_all,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_cm,do_get_chan_info,2} => {any,[any,any]},{emqx_node_rebalance_agent,enable,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[eviction_agent_busy,invalid_coordinator],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,identifier,[pid],unknown}]},{emqx_mgmt,broker_info,0} => {{c,map,{[{{c,atom,[node],unknown},mandatory,{c,atom,any,unknown}},{{c,atom,[node_status],unknown},mandatory,{c,atom,[running],unknown}},{{c,atom,[otp_release],unknown},mandatory,{c,binary,{8,0},unknown}}],any,any},unknown},[]},{emqx_telemetry,get_node_uuid,0} => {any,[]},{emqx_management_proto_v1,get_full_config,1} => {any,[{c,atom,any,unknown}]},{emqx_bridge_proto_v3,list_bridges_on_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_api_proto_v2,node_rebalance_evacuation_stop,1} => {any,[{c,atom,any,unknown}]},{emqx_gateway_cm_proto_v1,call,5} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown},any,{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_mgmt_data_backup,maybe_copy_and_import,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[bardrpc],unknown},any],{2,{c,atom,[bardrpc],unknown}}},{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[config_errors],unknown},mandatory,{c,map,{[],{c,list,{any,{c,nil,[],unknown}},unknown},{c,tuple,[any,any],{2,any}}},unknown}},{{c,atom,[db_errors],unknown},mandatory,{c,map,{[],{c,atom,any,unknown},{c,tuple,[any,any],{2,any}}},unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_license_proto_v1,remote_connection_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_cm,kick_session,1} => {{c,atom,[ok],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_bridge_proto_v5,start_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v1,update,3} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},any,{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_ds_replication_layer,do_add_generation_v2,1} => {{c,atom,[ok],unknown},[{c,atom,any,unknown}]},{emqx_bridge_v2_api,get_metrics_from_local_node_v6,3} => {{c,map,{[{{c,atom,[dropped],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.expired'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.other'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.queue_full'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.resource_not_found'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.resource_stopped'],unknown},mandatory,{c,number,any,integer}},{{c,atom,[failed],unknown},mandatory,{c,number,any,integer}},{{c,atom,[inflight],unknown},mandatory,any},{{c,atom,[late_reply],unknown},mandatory,{c,number,any,integer}},{{c,atom,[matched],unknown},mandatory,{c,number,any,integer}},{{c,atom,[queuing],unknown},mandatory,any},{{c,atom,[rate],unknown},mandatory,any},{{c,atom,[rate_last5m],unknown},mandatory,any},{{c,atom,[rate_max],unknown},mandatory,any},{{c,atom,[received],unknown},mandatory,{c,number,any,integer}},{{c,atom,[retried],unknown},mandatory,{c,number,any,integer}},{{c,atom,[success],unknown},mandatory,{c,number,any,integer}}],none,none},unknown},[{c,atom,[actions,sources],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_ds_proto_v2,drop_db,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown}]},{emqx,remove_config,2} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,map,{[{{c,atom,[config],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,{c,map,{[],{c,atom,any,unknown},any},unknown}],unknown}},{{c,atom,[post_config_update],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[raw_config],unknown},optional,{c,union,[{c,atom,[undefined],unknown},none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},none,none,none,{c,map,{[],{c,binary,{8,0},unknown},any},unknown}],unknown}}],none,none},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_ds_proto_v2,add_generation,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,any,unknown}]},{emqx_node_rebalance_evacuation,is_node_available,0} => {{c,atom,any,unknown},[]},{emqx_node_rebalance_agent,disable,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[already_disabled,invalid_coordinator],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,identifier,[pid],unknown}]},{emqx_node_rebalance_proto_v3,enable_rebalance_agent,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown},any,{c,map,{[{{c,atom,[allow_connections],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_plugins_proto_v1,get_tar,3} => {any,[{c,atom,any,unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,1114111},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}]},{emqx_mgmt_api_plugins,install_package,2} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,map,{[],any,any},unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,none,none,none,{c,list,{any,{c,nil,[],unknown}},unknown},{c,number,{int_rng,0,1114111},integer},none,none,none],unknown},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_ds_proto_v2,store_batch,5} => {any,[{c,atom,any,unknown},{c,atom,any,unknown},{c,binary,{8,0},unknown},{c,map,{[{{c,number,{int_set,[1]},integer},mandatory,{c,number,{int_set,[3]},integer}},{{c,number,{int_set,[2]},integer},mandatory,{c,list,{{c,tuple,[{c,atom,[message],unknown},{c,binary,{8,0},unknown},any,{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,map,{[],{c,atom,any,unknown},{c,atom,[false,true],unknown}},unknown},{c,map,{[{{c,atom,[allow_publish],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[peerhost],unknown},optional,{c,tuple_set,[{4,[{c,tuple,[{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer},{c,number,{int_rng,0,255},integer}],{4,any}}]},{8,[{c,tuple,[{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer},{c,number,{int_rng,0,1114111},integer}],{8,any}}]}],unknown}},{{c,atom,[properties],unknown},optional,{c,map,{[],{c,atom,any,unknown},any},unknown}},{{c,atom,[proto_ver],unknown},optional,{c,union,[none,{c,binary,{8,0},unknown},none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown}},{{c,atom,[protocol],unknown},optional,{c,atom,any,unknown}},{{c,atom,[username],unknown},optional,{c,union,[{c,atom,[undefined],unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}}],{c,atom,any,unknown},any},unknown},{c,binary,{8,0},unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,number,any,integer},any],{10,{c,atom,[message],unknown}}},{c,nil,[],unknown}},unknown}}],none,none},unknown},{c,map,{[],none,none},unknown}]},{emqx_bridge,list,0} => {{c,list,{any,{c,nil,[],unknown}},unknown},[]},{emqx_mgmt,do_kickout_clients,1} => {{c,atom,[ok],unknown},[{c,list,{any,{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v5,list_bridges_on_nodes,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_bridge_proto_v6,restart_bridge_to_node,3} => {any,[{c,atom,any,unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_conf_proto_v3,sync_data_from_node,1} => {any,[{c,atom,any,unknown}]},{emqx_mgmt_cluster_proto_v2,invite_node,2} => {any,[{c,atom,any,unknown},{c,atom,any,unknown}]},{emqx_conf_proto_v3,get_config,2} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_evacuation,stop,0} => {any,[]},{emqx_management_proto_v4,list_subscriptions,1} => {any,[{c,atom,any,unknown}]},{emqx_node_rebalance,stop,0} => {any,[]},{emqx_bridge_proto_v4,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_node_rebalance_status_proto_v1,local_status,1} => {any,[{c,atom,any,unknown}]},{emqx_node_rebalance_proto_v2,session_counts,1} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown}]},{emqx_node_rebalance_status_proto_v2,local_status,1} => {any,[{c,atom,any,unknown}]},{emqx_bridge_proto_v6,v2_start_bridge_on_all_nodes_v6,4} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,atom,[actions,sources],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_bridge_proto_v1,lookup_from_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_gateway_cm_proto_v1,kick_session,4} => {any,[{c,atom,any,unknown},{c,atom,[discard,kick],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,identifier,[pid],unknown}]},{emqx_conf_proto_v2,remove_config,2} => {any,[{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_bridge_api,get_metrics_from_local_node,2} => {{c,map,{[{{c,atom,[dropped],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.expired'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.other'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.queue_full'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.resource_not_found'],unknown},mandatory,{c,number,any,integer}},{{c,atom,['dropped.resource_stopped'],unknown},mandatory,{c,number,any,integer}},{{c,atom,[failed],unknown},mandatory,{c,number,any,integer}},{{c,atom,[inflight],unknown},mandatory,any},{{c,atom,[late_reply],unknown},mandatory,{c,number,any,integer}},{{c,atom,[matched],unknown},mandatory,{c,number,any,integer}},{{c,atom,[queuing],unknown},mandatory,any},{{c,atom,[rate],unknown},mandatory,any},{{c,atom,[rate_last5m],unknown},mandatory,any},{{c,atom,[rate_max],unknown},mandatory,any},{{c,atom,[received],unknown},mandatory,{c,number,any,integer}},{{c,atom,[retried],unknown},mandatory,{c,number,any,integer}},{{c,atom,[success],unknown},mandatory,{c,number,any,integer}}],none,none},unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,list,{any,{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},{c,number,{int_rng,0,255},integer},none,none,none],unknown},{c,union,[none,{c,binary,{8,0},unknown},none,none,{c,nil,[],unknown},none,none,none,none],unknown}},unknown},none,none,none,none],unknown}]},{emqx_authz_cache,drain_cache,1} => {{c,union,[{c,atom,[ok],unknown},none,none,none,none,none,{c,tuple,[{c,atom,[error],unknown},{c,atom,[not_found],unknown}],{2,{c,atom,[error],unknown}}},none,none],unknown},[{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown}]},{emqx_node_rebalance_proto_v1,disable_rebalance_agent,2} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,identifier,[pid],unknown}]},{emqx_conf_proto_v2,reset,3} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,nil,[],unknown}},nonempty},{c,map,{[{{c,atom,[lazy_evaluator],unknown},optional,{c,function,{{c,product,[{c,function,{any,any},unknown}],unknown},any},unknown}},{{c,atom,[override_to],unknown},optional,{c,atom,[cluster,local],unknown}},{{c,atom,[persistent],unknown},optional,{c,atom,[false,true],unknown}},{{c,atom,[rawconf_with_defaults],unknown},optional,{c,atom,[false,true],unknown}}],none,none},unknown}]},{emqx_bridge_proto_v6,stop_bridges_to_all_nodes,3} => {any,[{c,list,{{c,atom,any,unknown},{c,nil,[],unknown}},unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,{c,list,{{c,number,{int_rng,0,255},integer},{c,nil,[],unknown}},unknown},none,none,none,none],unknown}]},{emqx_cm,takeover_session,2} => {{c,union,[{c,atom,[none,ok,undefined],unknown},none,none,none,{c,list,{{c,tuple,[{c,atom,any,unknown},any],{2,any}},{c,nil,[],unknown}},unknown},none,{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[expired],unknown},{c,union,[none,none,none,none,none,none,{c,tuple,[{c,atom,[session],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},any,{c,atom,[false,true],unknown},{c,map,{[],any,any},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,atom,[false,true],unknown},{c,opaque,[{opaque,emqx_inflight,inflight,0,{c,tuple,[any,any,any],{3,any}}}],unknown},{c,tuple,[any,any,any,any,any,any,any,any,any,any,any],{11,any}},{c,number,{int_rng,1,1114111},integer},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,map,{[],any,any},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,number,{int_rng,1,pos_inf},integer}],{15,{c,atom,[session],unknown}}},none,{c,map,{[{{c,atom,[conninfo],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[created_at],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[id],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[inflight],unknown},mandatory,{c,opaque,[{opaque,emqx_persistent_message_ds_replayer,inflight,0,{c,tuple,[any,any,any,any],{4,any}}}],unknown}},{{c,atom,[last_alive_at],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[props],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[receive_maximum],unknown},mandatory,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[subscriptions],unknown},mandatory,{c,opaque,[{opaque,emqx_topic_gbt,t,2,{c,opaque,[{opaque,gb_trees,tree,2,{c,tuple,[any,any],{2,any}}}],unknown}}],unknown}},{{c,atom,[timer_bump_last_alive_at],unknown},optional,{c,identifier,[reference],unknown}},{{c,atom,[timer_get_streams],unknown},optional,{c,identifier,[reference],unknown}},{{c,atom,[timer_pull],unknown},optional,{c,identifier,[reference],unknown}}],none,none},unknown}],unknown}],{2,{c,atom,[expired],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,union,[none,none,none,none,{c,list,{{c,tuple,[any,any,any],{3,any}},{c,nil,[],unknown}},unknown},none,none,none,{c,map,{[],any,any},unknown}],unknown}],{2,{c,atom,[ok],unknown}}},{c,tuple,[{c,atom,[persistent],unknown},{c,union,[none,none,none,none,none,none,{c,tuple,[{c,atom,[session],unknown},{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},any,{c,atom,[false,true],unknown},{c,map,{[],any,any},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,atom,[false,true],unknown},{c,opaque,[{opaque,emqx_inflight,inflight,0,{c,tuple,[any,any,any],{3,any}}}],unknown},{c,tuple,[any,any,any,any,any,any,any,any,any,any,any],{11,any}},{c,number,{int_rng,1,1114111},integer},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,map,{[],any,any},unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,union,[{c,atom,[infinity],unknown},none,none,none,none,{c,number,{int_rng,0,pos_inf},integer},none,none,none],unknown},{c,number,{int_rng,1,pos_inf},integer}],{15,{c,atom,[session],unknown}}},none,{c,map,{[{{c,atom,[conninfo],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[created_at],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[id],unknown},mandatory,{c,binary,{8,0},unknown}},{{c,atom,[inflight],unknown},mandatory,{c,opaque,[{opaque,emqx_persistent_message_ds_replayer,inflight,0,{c,tuple,[any,any,any,any],{4,any}}}],unknown}},{{c,atom,[last_alive_at],unknown},mandatory,{c,number,{int_rng,0,pos_inf},integer}},{{c,atom,[props],unknown},mandatory,{c,map,{[],any,any},unknown}},{{c,atom,[receive_maximum],unknown},mandatory,{c,number,{int_rng,1,pos_inf},integer}},{{c,atom,[subscriptions],unknown},mandatory,{c,opaque,[{opaque,emqx_topic_gbt,t,2,{c,opaque,[{opaque,gb_trees,tree,2,{c,tuple,[any,any],{2,any}}}],unknown}}],unknown}},{{c,atom,[timer_bump_last_alive_at],unknown},optional,{c,identifier,[reference],unknown}},{{c,atom,[timer_get_streams],unknown},optional,{c,identifier,[reference],unknown}},{{c,atom,[timer_pull],unknown},optional,{c,identifier,[reference],unknown}}],none,none},unknown}],unknown}],{2,{c,atom,[persistent],unknown}}}]},{4,[{c,tuple,[{c,atom,[living],unknown},{c,atom,any,unknown},{c,identifier,[pid],unknown},any],{4,{c,atom,[living],unknown}}}]}],unknown},none,{c,map,{[],{c,atom,any,unknown},any},unknown}],unknown},[any,any]},{emqx_node_rebalance,connection_count,0} => {{c,tuple,[{c,atom,[ok],unknown},any],{2,{c,atom,[ok],unknown}}},[]},{emqx_conf_app,sync_data_from_node,0} => {{c,tuple_set,[{2,[{c,tuple,[{c,atom,[error],unknown},any],{2,{c,atom,[error],unknown}}},{c,tuple,[{c,atom,[ok],unknown},{c,binary,{8,0},unknown}],{2,{c,atom,[ok],unknown}}}]}],unknown},[]},{emqx_management_proto_v4,kickout_clients,2} => {any,[{c,atom,any,unknown},{c,list,{{c,union,[{c,atom,any,unknown},{c,binary,{8,0},unknown},none,none,none,none,none,none,none],unknown},{c,nil,[],unknown}},unknown}]},{emqx_alarm,get_alarms,1} => {any,[{c,atom,[activated,all,deactivated],unknown}]},{emqx_management_proto_v2,node_info,1} => {any,[{c,atom,any,unknown}]},{emqx_exhook_mgr,all_servers_info,0} => {any,[]}}}.