const 
	
	MaxMembers = 50;

type

	RoleType = ( guest, 
				 member, 
				 moderator, 
				 admin, 
				 owner );
	
	Coder = record
		nick      : string;
		jid       : string;
		githubUrl : string;
		role      : RoleType;
	end;

	CoderPtr = ^ Coder;
	
	Coders = array[ 1..MaxMembers ] of CoderPtr;
	
procedure Output( Values : Coders );
var
	i : integer;
begin
	for i := 1 to MaxMembers do begin
		with Values[ i ]^ do begin
			Writeln( nick );
			Writeln( jid );
			Writeln( githubUrl );
			Writeln( role );
			Writeln( '---------------------------------' );
		end;
	end;
end;

function GenerateNick() : string;
var
	i : integer;
	c : integer;
	s : array[0..4] of string = ( 'FOR', 'NE', 'VER', 'RE', 'XIM' );
	r : string;
begin
	r := '';
	
	for i := 1 to 4 do
		r := r + s[ random( 5 ) ];
		
	GenerateNick := r;
end;

function RandomRole: RoleType;
begin
  RandomRole := RoleType(Random(Succ(Ord(High(RoleType)))));
end;

function Fill(): Coders;
var 
	i        : integer;
	Forevers : set of 'A'..'Z';
	res      : Coders;
begin
	randomize;
	
	for i := 1 to MaxMembers do begin
		New( res[ i ] );
		with res[ i ]^ do begin
			nick      := GenerateNick();
			jid       := 'жид хуид';
			githubUrl := 'https://b...content-available-to-author-only...t.com/' + nick;
			role      := RandomRole(); 
		end;
	end;
	
	Fill := res;
end;

procedure Clear( var values : Coders );
var
	i : integer;
begin
	for i := 1 to MaxMembers do
		dispose( values[ i ] );
end;
 

var
	CodingTeam : Coders;
begin
	
	randomize;
	
	CodingTeam := Fill();
	Output( CodingTeam );
	Clear ( CodingTeam );
end.