anchor.diff:  -copyright('Copyright (c) 2016 - 2021 SigScale Global Inc.').
   
   %% export the user_default public API
  --export([help/0, ts/0, td/0, di/0, di/1, di/2, dc/0]).
  +-export([help/0, ts/0, td/0, su/0]).
  +-export([di/0, di/1, di/2, dc/0]).
   -export([ll/1, ll/2, ql/2, ql/3, ql/4]).
   
   -include("ocs.hrl").
  
positive.code: 	io:fwrite("** ocs commands ** \n"),
  	io:fwrite("ts()            -- table sizes\n"),
  	io:fwrite("td()            -- table distribution\n"),
  	io:fwrite("di()            -- diameter services info\n"),
  	io:fwrite("di(Types)       -- diameter services info of types\n"),
  	io:fwrite("di(acct, Types) -- diameter accounting services info\n"),
  
negative.code: 	td0(T);
  td0([]) ->
  	ok.
  
  -spec su() -> ok.
  %% @doc Dipslay scheduler utilization.
  su() ->
  	case ocs:statistics(scheduler_utilization) of
  		{ok, {Etag, Interval, Report}} ->
  			io:fwrite("Scheduler utilization:\n"),
  			su0(Report, Etag, Interval);
  		{error, Reason} ->
  			exit(Reason)
  	end.
  %% @hidden
  su0([{Scheduler, Utilization} | T], Etag, Interval) ->
  	io:fwrite("~*b: ~3b%\n", [5, Scheduler, Utilization]),
  	su0(T, Etag, Interval);
  su0([], Etag, Interval) ->
  	{TS, _} = string:take(Etag, lists:seq($0, $9)),
  	Next = (list_to_integer(TS) + Interval),
  	Remaining = Next - erlang:system_time(millisecond),
  	Seconds = case {Remaining div 1000, Remaining rem 1000} of
  		{0, _} ->
  			1;
  		{N, R} when R < 500 ->
  			N;
  		{N, _} ->
  			N + 1
  	end,
  	io:fwrite("Next report available in ~b seconds.\n", [Seconds]).
  
  -spec di() -> Result
  	when
  