TEAM_MERCHANT = DarkRP. createJob( "Merchant" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/mailer/characters/tesv_femalekhajiit.mdl" ,
"models/mailer/characters/tesv_malekhajiit.mdl" ,
} ,
description = [[You are a Merchant, you sell your wares!]] ,
weapons = { } ,
command = "merchant" ,
max = 2 ,
salary = 20 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Villagers" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_JESTER = DarkRP. createJob( "Jester" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/harlequins/male.mdl" ,
"models/player/truebobert/injustice_harley_ame.mdl" ,
} ,
description = [[You are a Jester, you entertain and serve for a kingdom or town!]] ,
weapons = { } ,
command = "jester" ,
max = 2 ,
salary = 30 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Villagers" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_DOCTOR = DarkRP. createJob( "Doctor" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/player/plague_doktor/player_plague_doktor.mdl" ,
} ,
description = [[You are a Doctor]] ,
weapons = { "weapon_medkit" } ,
command = "doctor" ,
max = 2 ,
salary = 40 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Villagers" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_MESSENGER = DarkRP. createJob( "Messenger" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/models/frey/frey.mdl" ,
"models/player/tfa_tw3/shani.mdl"
} ,
description = [[You are a Messenger, you deliver messages between Kings and Lords! They pay you for your deeds!]] ,
weapons = { } ,
command = "messenger" ,
max = 2 ,
salary = 20 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Villagers" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_BARD = DarkRP. createJob( "Bard" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/player/tfa_tw3/dandelion_v2.mdl" ,
"models/player/tfa_tw3/priscilla_bard.mdl" ,
"models/player/tfa_tw3/priscilla_bard.mdl" ,
} ,
description = [[You are a Bard]] ,
weapons = { "rpgguitar" } ,
command = "bard" ,
max = 2 ,
salary = 30 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Villagers" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_BANDIT = DarkRP. createJob( "Bandit" , {
color = Color( 0 , 100 , 0 , 255 ) ,
model = {
"models/blackflag/privateer/privateer_sailor.mdl" ,
"models/blackflag/privateer/privateer_officer.mdl" ,
"models/player/tfa_tw3/milva.mdl" ,
"models/player/tfa_tw3_triss_v1.mdl" ,
} ,
description = [[You are a Bandit, you can join up with a Bandit Leader or go alone.]] ,
weapons = { "weapon_cuff_rope" , "lockpick" } ,
command = "bandit" ,
max = 3 ,
salary = 20 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Villagers" ,
PlayerSpawn = function ( ply)
ply: SetBodygroup( 0 , 4 )
ply: SetBodygroup( 1 , 7 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_SLAVETRADER = DarkRP. createJob( "Slave Trader" , {
color = Color( 0 , 100 , 0 , 255 ) ,
model = {
"models/player/bobert/aomadh.mdl" ,
} ,
description = [[You are a Slave trader, you can join up with a Bandit to create a business or work by yourself .]] ,
weapons = { "weapon_cuff_rope" , "weapon_leash_rope" } ,
command = "slavetrader" ,
max = 1 ,
salary = 25 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Villagers" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_CULTIST = DarkRP. createJob( "Cultist" , {
color = Color( 255 , 255 , 255 , 255 ) ,
model = {
"models/dwdarksouls/models/darkwraith.mdl" ,
"models/player/tfa_tw3/sheala_gown.mdl" ,
} ,
description = [[You are the Cultists, you go out and kidnap/persuade people to come back to your base/Church. You can then perform rituals or sacrifices attempting ot turn the whole server to your cult.]] ,
weapons = { "weapon_cuff_rope" } ,
command = "cultist" ,
max = 4 ,
salary = 40 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Villagers" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 100 )
ply: SetArmor( 0 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
--TOWN
TEAM_TOWN = DarkRP. createJob( "Lord of the Town" , {
color = Color( 255 , 255 , 255 , 255 ) ,
model = {
"models/player/martin/campbleu/roibleu.mdl"
} ,
description = [[You are Lord of the town, you control the Town and protect it with the help of your Townguard.]] ,
weapons = { "weapon_bs_longsword" } ,
command = "lordofthetown" ,
max = 1 ,
salary = 200 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "The Town" ,
PlayerSpawn = function ( ply)
ply: SetNWBool( "BuuSwords_Has_Crest" , true ) ply: SetNWInt( "BuuSwords_StartingShield" , "3" )
ply: SetHealth( 150 )
ply: SetArmor( 0 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_TOWN = DarkRP. createJob( "Lord's advisor" , {
color = Color( 255 , 255 , 255 , 255 ) ,
model = {
"models/player/martin/campbleu/recruebleu00.mdl"
} ,
description = [[You are Lord's advisor, you must mentor and guide your lord.]] ,
weapons = { } ,
command = "lordsadvisor" ,
max = 1 ,
salary = 120 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "The Town" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 150 )
ply: SetArmor( 0 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_TOWN = DarkRP. createJob( "Lady of the Town" , {
color = Color( 255 , 255 , 255 , 255 ) ,
model = {
"models/player/tfa_tw3_yen_fillipa.mdl" ,
"models/player/tfa_tw3/sabrina.mdl" ,
} ,
description = [[You are the Lady of the Town if there is no Lord you are incharge.]] ,
weapons = { } ,
command = "ladyofthetown" ,
max = 1 ,
salary = 140 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "The Town" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 150 )
ply: SetArmor( 0 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_TOWN = DarkRP. createJob( "Lord's Son" , {
color = Color( 255 , 255 , 255 , 255 ) ,
model = {
"models/models/ethan/ethan.mdl"
} ,
description = [[You are the Lords son, you will be a future Lord when you are older, you run around the town and get up to mischief]] ,
weapons = { } ,
command = "lordsson" ,
max = 2 ,
salary = 40 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
modelScale = 0.7 ,
category = "The Town" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_TOWN = DarkRP. createJob( "Lord's Daughter" , {
color = Color( 255 , 255 , 255 , 255 ) ,
model = {
"models/player/martin/got_tg/talia_forrester_pm.mdl"
} ,
description = [[You are the Lord's Daughter, you may one day be Lady of the Town.]] ,
weapons = { } ,
command = "lordsdaughter" ,
max = 2 ,
salary = 40 ,
admin = 0 ,
vote = false ,
modelScale = 0.6 ,
hasLicense = false ,
candemote = false ,
category = "The Town" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
--Townguard
TEAM_TOWNGUARD = DarkRP. createJob( "Lord's Bodyguard" , {
color = Color( 255 , 255 , 255 , 255 ) ,
model = {
"models/player/martin/campbleu/chevbleu_yx00.mdl"
} ,
description = [[You are the Lord's Bodyguard. Protect the lord and his family with your life.]] ,
weapons = { "weapon_bs_raider" , "lockpick" , "ent_bs_heater" , "weapon_cuff_rope" } ,
command = "lordsbodyguard" ,
max = 1 ,
salary = 75 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "The Town" ,
PlayerSpawn = function ( ply)
ply: SetNWBool( "BuuSwords_Has_Crest" , true ) ply: SetNWInt( "BuuSwords_StartingShield" , "3" )
ply: SetHealth( 200 )
ply: SetArmor( 75 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_TOWNGUARD = DarkRP. createJob( "Town Guard Captain" , {
color = Color( 255 , 255 , 255 , 255 ) ,
model = {
"models/player/martin/campbleu/generalbleu00.mdl"
} ,
description = [[You are the Captain of the Town Guard. You control and command them, however you follow orders from the Mayor.]] ,
weapons = { "weapon_bs_raider" , "lockpick" , "ent_bs_heater" , "weapon_cuff_rope" } ,
command = "townguardcaptain" ,
max = 1 ,
salary = 80 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "The Town" ,
PlayerSpawn = function ( ply)
ply: SetNWBool( "BuuSwords_Has_Crest" , true ) ply: SetNWInt( "BuuSwords_StartingShield" , "3" )
ply: SetHealth( 200 )
ply: SetArmor( 50 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_TOWNGUARD = DarkRP. createJob( "Town Guard" , {
color = Color( 255 , 255 , 255 , 255 ) ,
model = {
"models/player/martin/campbleu/officierbleu.mdl"
} ,
description = [[You are a Town Guard, you help defend the town and keep crime at a low. You follow the orders and commands of the Town guard Captain and Mayor.]] ,
weapons = { "weapon_bs_straightsword" , "lockpick" , "ent_bs_heater" , "weapon_cuff_rope" } ,
command = "townguard" ,
max = 5 ,
salary = 40 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "The Town" ,
PlayerSpawn = function ( ply)
ply: SetNWBool( "BuuSwords_Has_Crest" , true ) ply: SetNWInt( "BuuSwords_StartingShield" , "3" )
ply: SetHealth( 150 )
ply: SetArmor( 25 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_TOWNGUARDBOWMAN = DarkRP. createJob( "Town Guard Bowman" , {
color = Color( 255 , 255 , 255 , 255 ) ,
model = {
"models/player/martin/campbleu/fantassinbleu00.mdl"
} ,
description = [[You are a Town Guard Bowman, you help defend the town and keep crime at a low. You follow the orders and commands of the Town guard Captain and Mayor.]] ,
weapons = { "weapon_mor_longbow" , "weapon_cuff_rope" } ,
command = "townguardbowman" ,
max = 5 ,
salary = 40 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "The Town" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 100 )
ply: SetArmor( 25 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
--
--Humans--
TEAM_HUMAN = DarkRP. createJob( "Male Peasant" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/humans/group1m/male_02.mdl" ,
} ,
description = [[You are a Male Peasant, you dress like a poorman!]] ,
weapons = { } ,
command = "malepeasant" ,
max = 0 ,
salary = 20 ,
admin = 0 ,
level = 2 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Humans" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_HUMAN = DarkRP. createJob( "Female Peasant" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/player/tfa_tw3/corinne.mdl" ,
} ,
description = [[You are a Female Peasant, you dress like a poorman!]] ,
weapons = { } ,
command = "femalepeasant" ,
max = 0 ,
salary = 20 ,
admin = 0 ,
level = 2 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Humans" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_HUMAN = DarkRP. createJob( "The Prophet" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/player/tfa_tw3/djikstra.mdl"
} ,
description = [[You are the prophet, spread the word of god!]] ,
weapons = { "slaverp_model_book" } ,
command = "theprophet" ,
max = 1 ,
salary = 50 ,
admin = 0 ,
level = 2 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Humans" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_HUMAN = DarkRP. createJob( "Prince" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/asher/asher.mdl" ,
"models/mailer/characters/newprinceofpersia.mdl" ,
"models/models/ramsay/ramsay.mdl" ,
"models/player/tfa_tw3/gaetan.mdl" ,
"models/player/tfa_tw3/eskel.mdl" ,
} ,
description = [[You are a Prince, you are royalty!]] ,
weapons = { } ,
command = "prince" ,
max = 4 ,
salary = 60 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Humans" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_HUMAN = DarkRP. createJob( "King" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/player/tfa_tw3/foltest.mdl" ,
"models/koz/lotr/aragorn/aragorn.mdl" ,
"models/player/tfa_tw3/dandelion_v1.mdl" ,
"models/player/tfa_tw3/radovid.mdl" ,
"models/player/tfa_tw3/menge.mdl" ,
"models/player/martin/campbleu/roibleu.mdl" ,
} ,
description = [[You are a King, you are royalty!]] ,
weapons = { } ,
command = "king" ,
max = 4 ,
salary = 60 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Humans" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_HUMAN = DarkRP. createJob( "Princess" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/player/tfa_tw3_ciri_dlc.mdl" ,
"models/player/tfa_tw3_triss_dlc.mdl" ,
"models/player/tfa_tw3/philippa_base.mdl" ,
"models/player/tfa_tw3/sabrina.mdl" ,
"models/player/tfa_tw3/shani.mdl" ,
"models/models/margaery/margaery.mdl" ,
"models/player/tfa_tw3_ciri_empress.mdl" ,
} ,
description = [[You are a Princess, you dress like a lady and try avoid being kidnapped!]] ,
weapons = { } ,
command = "princess" ,
max = 4 ,
salary = 60 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Humans" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_HUMAN = DarkRP. createJob( "Queen" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/player/tfa_tw3/ciri_empress.mdl" ,
"models/player/tfa_tw3/corinne.mdl" ,
"models/player/tfa_tw3/assire.mdl" ,
"models/player/tfa_tw3/fringilla.mdl" ,
"models/player/tfa_tw3/ida.mdl" ,
"models/player/tfa_tw3/keira_base.mdl" ,
"models/player/tfa_tw3/margarita.mdl" ,
"models/player/tfa_tw3/sheala_gown.mdl" ,
"models/player/tfa_tw3_yen_main.mdl" ,
"models/player/tfa_tw3_triss_v4.mdl" ,
"models/morrigandress_pm.mdl" ,
} ,
description = [[You are a Queen, you SLAYY!]] ,
weapons = { } ,
command = "queen" ,
max = 4 ,
salary = 80 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Humans" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_HUMAN = DarkRP. createJob( "Assassin" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/player/shay_cormac.mdl" ,
"models/player/tfa_acs_eviefrye.mdl" ,
"models/player/bobert/shiva.mdl" ,
} ,
description = [[You are an Assassin, you are adept at taking out targets silently!]] ,
weapons = { "lockpick" , "weapon_rope_knife" , "weapon_thehiddenblade" } ,
command = "assassin" ,
max = 3 ,
salary = 70 ,
admin = 0 ,
level = 10 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Humans" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_KNIGHT = DarkRP. createJob( "Squire" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/models/arthur/arthur.mdl" ,
} ,
description = [[You are a Squire, find a knight to server!]] ,
weapons = { "weapon_bs_shortsword" } ,
command = "Squire" ,
max = 3 ,
salary = 30 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Humans" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_KNIGHT = DarkRP. createJob( "Roman Soldier" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/cakez/got/gotknight2_p.mdl" ,
"models/player/yevocore/warden/warden.mdl" ,
} ,
description = [[You are a Roman Soldier, Follow your general or join an army!]] ,
weapons = { "weapon_bs_broadsword" } ,
command = "romansoldier" ,
max = 3 ,
salary = 80 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Humans" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_KNIGHT = DarkRP. createJob( "Male Knight" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/cakez/got/gotknight2_p.mdl" ,
"models/player/yevocore/warden/warden.mdl" ,
} ,
description = [[You are a Male Knight, you are trained in combat!]] ,
weapons = { "weapon_bs_broadsword" } ,
command = "maleknight" ,
max = 3 ,
salary = 80 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Humans" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_KNIGHT = DarkRP. createJob( "Knightess" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/player/tfa_tw3/saskia.mdl" ,
"models/mailer/characters/female_knight_92.mdl" ,
"models/knights/female_knight_91.mdl" ,
} ,
description = [[You are a Female Knight, you are trained in combat!]] ,
weapons = { "weapon_bs_broadsword" } ,
command = "knightess" ,
max = 3 ,
salary = 80 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Humans" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_KNIGHT = DarkRP. createJob( "High-Knight" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/mailer/characters/kotn_heavy.mdl" ,
"models/knights/female_knight_92.mdl" ,
} ,
description = [[You are a High-Knight, you are in charge of the knights so make sure that they follow all the knight rules!]] ,
weapons = { "weapon_bs_greatsword" , "ent_bs_crest" } ,
command = "highknight" ,
max = 2 ,
salary = 150 ,
admin = 0 ,
level = 8 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Humans" ,
PlayerSpawn = function ( ply)
ply: SetNWBool( "BuuSwords_Has_Crest" , true ) ply: SetNWInt( "BuuSwords_StartingShield" , "3" )
ply: SetHealth( 200 )
ply: SetArmor( 75 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
--vampires
VAMPIRELORD = DarkRP. createJob( "Vampire Lord" , {
color = Color( 50 , 40 , 100 , 255 ) ,
model = {
"models/player/tfa_tw3/emhyr.mdl" ,
} ,
description = [[You are the Vampire Lord, you run your Vampire Army, hiding in your cave until night time to lead your army in attacks!]] ,
weapons = { "vampire_lord_swep" } ,
command = "vampirelord" ,
max = 1 ,
salary = 200 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Vampires" ,
Level = 15 ,
PlayerSpawn = function ( ply)
ply: SetHealth( 300 )
ply: SetArmor( 0 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_VAMPIREQUEEN = DarkRP. createJob( "Vampire Queen" , {
color = Color( 50 , 40 , 100 , 255 ) ,
model = {
"models/player/tfa_tw3_yen_main.mdl" ,
"models/player/tfa_tw3_yen_dlc.mdl" ,
"models/player/da2_morrigan.mdl" ,
} ,
description = [[You are a Vampire Queen, you follow orders from the Lord. You are incharge of getting new recruits, and torturing captives.]] ,
weapons = { "vampire_queen_swep" } ,
command = "vampirequeen" ,
max = 3 ,
salary = 150 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Vampires" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 200 )
ply: SetArmor( 0 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_VAMPIRE = DarkRP. createJob( "Vampire Ascendant" , {
color = Color( 50 , 40 , 100 , 255 ) ,
model = {
"models/player/tfa_tw3/regis_vamp.mdl" ,
} ,
description = [[You are a Vampire Ascendant, you protect the cave and follow in attacks at night!]] ,
weapons = { "vampire_ascendant_swep" } ,
command = "vampireascendant" ,
max = 2 ,
salary = 75 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Vampires" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 150 )
ply: SetArmor( 0 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_VAMPIRE = DarkRP. createJob( "Vampire Thrall" , {
color = Color( 50 , 40 , 100 , 255 ) ,
model = {
"models/mailer/characters/tesv_nightingale.mdl" ,
} ,
description = [[You are a Vampire Thrall, you are recently turned, you go out and capture new victims.]] ,
weapons = { "weapon_bs_shortsword" } ,
command = "vampirethrall" ,
max = 5 ,
salary = 50 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Vampires" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 100 )
ply: SetArmor( 0 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
--Werewolves
TEAM_WEREWOLF = DarkRP. createJob( "Alpha Werewolf" , {
color = Color( 50 , 40 , 100 , 255 ) ,
model = {
"models/asher/asher.mdl" ,
} ,
description = [[ (VIP ONLY) You are the Alpha Werewolf, you are male and lead the pack with help from your luna wolf.]] ,
weapons = { "alpha_werewolf_swep" } ,
command = "alphawerewolf" ,
max = 1 ,
salary = 50 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Werewolves" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 250 )
ply: SetArmor( 0 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_WEREWOLF = DarkRP. createJob( "Luna Werewolf" , {
color = Color( 50 , 40 , 100 , 255 ) ,
model = {
"models/npc/combine/tfa_tw3/shani.mdl" ,
} ,
description = [[ (VIP ONLY) You are the Luna Werewolf, you are a female and help lead the pack.]] ,
weapons = { "luna_werewolf_swep" } ,
command = "lunawerewolf" ,
max = 1 ,
salary = 50 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Werewolves" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 200 )
ply: SetArmor( 0 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_WEREWOLF = DarkRP. createJob( "Omega Werewolf" , {
color = Color( 50 , 40 , 100 , 255 ) ,
model = {
"models/models/josera/josera.mdl" ,
"models/models/forrester/forrester.mdl" ,
"models/models/beskha/beskha.mdl" ,
} ,
description = [[You are a Omega Werewolf, you are a young werewolf that follows your leaders and help protect the pack and the pups.]] ,
weapons = { "omega_werewolf_swep" } ,
command = "omegawerewolf" ,
max = 3 ,
salary = 50 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Werewolves" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 150 )
ply: SetArmor( 0 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_WEREWOLF = DarkRP. createJob( "Werewolf Pup" , {
color = Color( 50 , 40 , 100 , 255 ) ,
model = {
"models/npc/tfa_tw3_combine/ciri_young.mdl" ,
"models/models/ethan/ethan.mdl" ,
} ,
description = [[You are a Werewolf Pup, you are very young and small. You follow the Luna werewolf around learning how to be a werewolf.]] ,
weapons = { "pup_werewolf_swep" } ,
command = "werewolfpup" ,
max = 3 ,
salary = 50 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Werewolves" ,
modelScale = 0.7 ,
PlayerSpawn = function ( ply)
ply: SetHealth( 100 )
ply: SetArmor( 0 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
--Dwarves and elves
TEAM_DWARF = DarkRP. createJob( "Dwarf Male" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/mailer/wow_characters/wowanim_dwarf_male.mdl" ,
} ,
description = [[You are a Male Dwarf, you are small but strong!]] ,
weapons = { "weapon_bs_shortsword" } ,
command = "dwarfmale" ,
max = 5 ,
salary = 40 ,
admin = 0 ,
modelScale = 0.8 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Dwarves and Elves" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_DWARF = DarkRP. createJob( "Dwarf Female" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/mailer/wow_characters/wowanim_dwarf_female.mdl" ,
} ,
description = [[You are a Female Dwarf, you are small but strong!]] ,
weapons = { "weapon_bs_shortsword" } ,
command = "dwarffemale" ,
max = 5 ,
salary = 40 ,
admin = 0 ,
modelScale = 0.8 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Dwarves and Elves" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_DWARF = DarkRP. createJob( "Dwarf Warrior" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/player/dwarf.mdl" ,
"models/koz/lotr/gimli/gimli.mdl" ,
} ,
description = [[You are a Female Dwarf, you are small but strong!]] ,
weapons = { "weapon_sky_axe_daedric" } ,
command = "dwarfwarrior" ,
max = 5 ,
salary = 60 ,
admin = 0 ,
modelScale = 0.8 ,
level = 8 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Dwarves and Elves" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_ELF = DarkRP. createJob( "Wood Elf" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/koz/lotr/legolas/legolas.mdl" ,
"models/koz/lotr/eowyn/eowyn.mdl" ,
"models/player/tfa_tw3/milva.mdl" ,
} ,
description = [[You are a Wood Elf!]] ,
weapons = { "weapon_mor_normal" , "weapon_bs_straightsword" } ,
command = "woodelf" ,
max = 3 ,
salary = 50 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Dwarves and Elves" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_ELF = DarkRP. createJob( "Blood Elf" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/mailer/wow_characters/wowanim_bloodelf_female.mdl" ,
"models/mailer/wow_characters/wowanim_bloodelf_male.mdl" ,
} ,
description = [[You are a Blood Elf!]] ,
weapons = { "weapon_mor_longbow" , "weapon_bs_straightsword" } ,
command = "bloodelf" ,
max = 2 ,
salary = 60 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Dwarves and Elves" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_ELF = DarkRP. createJob( "Night Elf" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/mailer/wow_characters/wowanim_nightelf_female.mdl" ,
"models/gonzo/kheela/kheela.mdl" ,
} ,
description = [[You are a Night Elf!]] ,
weapons = { "weapon_mor_longbow" , "weapon_bs_straightsword" } ,
command = "nightelf" ,
max = 2 ,
salary = 60 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Dwarves and Elves" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_ELF = DarkRP. createJob( "Dark Elf" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/player/yevocore/dark_elf/darkelf.mdl" ,
} ,
description = [[You are a Dark Elf!]] ,
weapons = { "weapon_mor_bow_of_shadows" , "weapon_bs_straightsword" } ,
command = "darkelf" ,
max = 2 ,
salary = 60 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Dwarves and Elves" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_ELF = DarkRP. createJob( "Elf Princess" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/npc/combine/tfa_tw3/margarita.mdl" ,
} ,
description = [[You are the Princess of Elves!]] ,
weapons = { "weapon_mor_auriel" , "weapon_bs_straightsword" } ,
command = "elfprincess" ,
max = 2 ,
salary = 100 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Dwarves and Elves" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_ELF = DarkRP. createJob( "Elf Queen" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/player/tfa_tw3/fran.mdl" ,
} ,
description = [[You are the Queen of Elves!]] ,
weapons = { "weapon_mor_auriel" , "weapon_bs_straightsword" } ,
command = "elfqueen" ,
max = 1 ,
salary = 100 ,
admin = 0 ,
level = 8 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Dwarves and Elves" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
--Witches
TEAM_WITCHMOTHER = DarkRP. createJob( "Mother" , {
color = Color( 16 , 145 , 1 , 255 ) ,
model = {
"models/player/tfa_dcu_ivy/ivy_ak.mdl" ,
} ,
description = [[You are the witch mother, take care of your witches!]] ,
weapons = { "poke_ghost_nightshade" } ,
command = "witchmother" ,
max = 1 ,
salary = 120 ,
admin = 0 ,
level = 12 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Witches" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 175 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_WITCHES = DarkRP. createJob( "Seductress" , {
color = Color( 16 , 145 , 1 , 255 ) ,
model = {
"models/player/tfa_dcu_ivy/ivy_inj.mdl" ,
} ,
description = [[You are the witch seducer, you must lure people back into your hideout!]] ,
weapons = { "weapon_cuff_rope" , "poke_ghost_confuseray" } ,
command = "seductress" ,
max = 2 ,
salary = 80 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Witches" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 75 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_WITCHES = DarkRP. createJob( "Ritualist" , {
color = Color( 16 , 145 , 1 , 255 ) ,
model = {
"models/player/tfa_dcu_ivy/ivy_c.mdl" ,
} ,
description = [[You are the witch ritualist, you make rituals and sacrifices! You can heal the coven.]] ,
weapons = { "cat_grass_healpulse" } ,
command = "Ritualist" ,
max = 1 ,
salary = 60 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Witches" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 75 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_WITCHES = DarkRP. createJob( "Protector" , {
color = Color( 16 , 145 , 1 , 255 ) ,
model = {
"models/player/tfa_dcu_ivy/ivy_ac.mdl" ,
} ,
description = [[You are the witch protector empowered with the power of nature. Protect your sisters!]] ,
weapons = { "cat_grass_frenzyplant" , "cat_grass_lightscreen" , "cat_grass_leafstorm" } ,
command = "protector" ,
max = 2 ,
salary = 90 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Witches" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 175 )
ply: SetArmor( 50 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
--Lizards--
TEAM_ARGONIAN = DarkRP. createJob( "Argonian" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/mailer/characters/tesv_maleargonian.mdl" ,
} ,
description = [[You are an Argonian, you are sneaky!]] ,
weapons = { "weapon_bs_shortsword" } ,
command = "argonian" ,
max = 5 ,
salary = 40 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Lizards and Animals" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_RYUK = DarkRP. createJob( "Ryuk" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/lizards/lizardmankeser.mdl" ,
"models/lizards/lizardmanverafim.mdl" ,
"models/lizards/lizardmanvd.mdl" ,
"models/lizards/lizardmanshark.mdl" ,
"models/lizards/lizardmangarway.mdl" ,
"models/lizards/lizardmanekinar.mdl" ,
} ,
description = [[You are an Ryuk, you are an advanced Aeon!]] ,
weapons = { "weapon_bs_raider" , "weapon_cuff_rope" , "ent_bs_kite" } ,
command = "ryuk" ,
max = 2 ,
salary = 40 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Lizards and Animals" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 190 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_AEON = DarkRP. createJob( "Aeon" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/aeonpm/aeon.mdl" ,
"models/aeonpm/aeon2.mdl"
} ,
description = [[You are an Aeon, you are adept at battle!]] ,
weapons = { "weapon_bs_scimitar" , "ent_bs_buckler" } ,
command = "aeon" ,
max = 3 ,
salary = 60 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Lizards and Animals" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 150 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_KOMODO = DarkRP. createJob( "Komodo" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/mailer/wow_characters/wowanim_komododragon.mdl" ,
} ,
description = [[You are a Komodo Lizard, you follow your owner!]] ,
weapons = { "" } ,
command = "komodo" ,
max = 2 ,
salary = 30 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Lizards and Animals" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_MURLOC = DarkRP. createJob( "Murloc" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/mailer/wow_characters/wowanim_murloc.mdl" ,
} ,
description = [[You are a Murloc, you follow your owner!]] ,
weapons = { "cat_water_bubble" } ,
command = "murloc" ,
max = 2 ,
salary = 30 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Lizards and Animals" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_DOG = DarkRP. createJob( "Dog" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/falloutdog/falloutdog.mdl" ,
} ,
description = [[You are a dog, you follow your owner!]] ,
weapons = { "weapon_dog" } ,
command = "dog" ,
max = 2 ,
salary = 30 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Lizards and Animals" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_CAT = DarkRP. createJob( "Cat" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/yevocore/cat/cat.mdl" ,
} ,
description = [[You are a cat, you follow your owner!]] ,
weapons = { "meowswep" } ,
command = "cat" ,
max = 2 ,
salary = 30 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Lizards and Animals" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
--Goblins
TEAM_GOBLIN = DarkRP. createJob( "King Of Goblins" , {
color = Color( 147 , 0 , 0 , 255 ) ,
model = {
"models/mailer/wow_characters/wowanim_gallywix.mdl" ,
} ,
description = [[You are the goblin king, rule your kingdom!]] ,
weapons = { "weapon_bs_raider" } ,
command = "goblinking" ,
max = 1 ,
salary = 150 ,
admin = 0 ,
level = 15 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Goblin and Orcs" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 200 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_GOBLIN = DarkRP. createJob( "Orc Warlock" , {
color = Color( 147 , 0 , 0 , 255 ) ,
model = {
"models/mailer/characters/legionguldan.mdl" ,
} ,
description = [[You are the orc warlock]] ,
weapons = { "rollout" } ,
command = "orcwarlock" ,
max = 1 ,
salary = 120 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Goblin and Orcs" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 150 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_GOBLIN = DarkRP. createJob( "Orc Warrior" , {
color = Color( 147 , 0 , 0 , 255 ) ,
model = {
"models/mailer/characters/messiahorcchief.mdl" ,
"models/mailer/characters/messiahorc.mdl" ,
"models/mailer/wow_characters/wowanim_orc_male.mdl" ,
"models/mailer/wow_characters/wowanim_orc_female.mdl" ,
} ,
description = [[You are a orc warrior!]] ,
weapons = { "weapon_bs_gladius" , "ent_bs_buckler" , "weapon_cuff_rope" } ,
command = "orcwarrior" ,
max = 3 ,
salary = 80 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Goblin and Orcs" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 125 )
ply: SetArmor( 50 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_GOBLIN = DarkRP. createJob( "Goblin Subordinate" , {
color = Color( 147 , 0 , 0 , 255 ) ,
model = {
"models/mailer/wow_characters/wowanim_goblin_male.mdl" ,
"models/mailer/wow_characters/wowanim_goblin_female.mdl"
} ,
description = [[You are a goblin subordinate]] ,
weapons = { "weapon_bs_shortsword" , "ent_bs_buckler" } ,
command = "goblinsubordinate" ,
max = 4 ,
salary = 25 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Goblin and Orcs" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_ORCBLACKSMITH = DarkRP. createJob( "Orc Blacksmith" , {
color = Color( 147 , 0 , 0 , 255 ) ,
model = {
"models/mailer/wow_characters/wowanim_rexxar.mdl" ,
} ,
description = [[You are a orc blacksmith, you mostly stay in the base selling your wares!]] ,
weapons = { "weapon_bs_broadsword" } ,
command = "orcblacksmith" ,
max = 1 ,
salary = 95 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Goblin and Orcs" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
--fantasy
TEAM_DRUID = DarkRP. createJob( "The Druid" , {
color = Color( 147 , 0 , 0 , 255 ) ,
model = {
"models/mailer/characters/elfdruid.mdl" ,
} ,
description = [[You are the druid, you use the powers of nature to kill your foes and protect your allies!]] ,
weapons = { "weapon_mor_auriel" , "power_gem" } ,
command = "druid" ,
max = 1 ,
salary = 80 ,
admin = 0 ,
vote = false ,
Level = 15 ,
hasLicense = false ,
candemote = false ,
category = "Fantasy" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_SUCCUBUS = DarkRP. createJob( "The Succubus" , {
color = Color( 147 , 0 , 0 , 255 ) ,
model = {
"models/mailer/wow_characters/wowanim_succubus.mdl" ,
} ,
description = [[You are the Succubus, you lure your foes in, choosing what you want to do with them!]] ,
weapons = { "poke_ghost_mirrorcoat" , "weapon_cuff_rope" } ,
command = "succubus" ,
max = 1 ,
salary = 80 ,
admin = 0 ,
vote = false ,
Level = 20 ,
hasLicense = false ,
candemote = false ,
category = "Fantasy" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_ALICE = DarkRP. createJob( "Alice" , {
color = Color( 147 , 0 , 0 , 255 ) ,
model = {
"models/alice/alice_pm/alice.mdl" ,
} ,
description = [[You are Alice, some know you as Holly!]] ,
weapons = { "cat_grass_frenzyplant" , "weapon_bs_rapier" } ,
command = "alice" ,
max = 1 ,
salary = 80 ,
admin = 0 ,
vote = false ,
Level = 15 ,
hasLicense = false ,
candemote = false ,
category = "Fantasy" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_GIANT = DarkRP. createJob( "Giant" , {
color = Color( 147 , 0 , 0 , 255 ) ,
model = {
"models/player/tfa_tw3/zoltan.mdl" ,
} ,
description = [[You are a Giant, you may not be the smartest, but you are strong!]] ,
weapons = { "weapon_sky_axe_daedric" } ,
command = "giant" ,
max = 1 ,
salary = 80 ,
admin = 0 ,
vote = false ,
Level = 12 ,
modelScale = 1.4 ,
hasLicense = false ,
candemote = false ,
category = "Fantasy" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
--vip
TEAM_DRAGON = DarkRP. createJob( "Dragon" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/mailer/wow_characters/wowanim_dragonwhelp.mdl" ,
} ,
description = [[You are the goblin kings pet dragon. You must follow his commands!]] ,
weapons = { "flight_swep" } ,
command = "dragon" ,
max = 1 ,
salary = 50 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "VIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_WOLF = DarkRP. createJob( "Wolf" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/falloutdog/black/falloutdog.mdl" ,
} ,
description = [[You are a Wolf, you go feral, or follow your leader!]] ,
weapons = { "weapon_dog" } ,
command = "wolf" ,
max = 4 ,
salary = 50 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "VIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_BEAR = DarkRP. createJob( "Bear" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/sterling/brown_bear.mdl" ,
} ,
description = [[You are a Bear, you go feral, or follow your leader!]] ,
weapons = { "weapon_pet" } ,
command = "bear" ,
max = 2 ,
salary = 50 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "VIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_ALCHEMIST = DarkRP. createJob( "The Alchemist" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/player/tfa_tw3/keira_alt.mdl" ,
"models/player/tfa_tw3/avallach.mdl" ,
} ,
description = [[You are The alchemist, you can make different potions!]] ,
weapons = { } ,
command = "thealchemist" ,
max = 1 ,
salary = 150 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Humans" ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_HUNTRESS = DarkRP. createJob( "The Huntress" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/players/mj_dbd_bear.mdl" ,
} ,
description = [[You are the huntress!, you hunt any animal you see. Sometimes opting for the slaughter and sacrifice of human blood.]] ,
weapons = { "weapon_sky_waraxe_draugr" , "weapon_cuff_rope" } ,
command = "huntress" ,
max = 1 ,
salary = 150 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "VIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 150 )
ply: SetArmor( 75 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_LEGIONARY = DarkRP. createJob( "The Last Legionary" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/auditor/fnv/lanius/chr_legate_lanius.mdl" ,
} ,
description = [[You are the last legionary!]] ,
weapons = { "weapon_bs_longsword" , "ent_bs_scutum" } ,
command = "legionary" ,
max = 1 ,
salary = 150 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "VIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 200 )
ply: SetArmor( 75 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_WITCHHUNTER = DarkRP. createJob( "Witch Hunter" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/olaf/inquisitor/inquisitor.mdl" ,
} ,
description = [[You are the witch hunter!]] ,
weapons = { "weapon_mor_longbow" , "weapon_bs_longsword" , "weapon_cuff_rope" } ,
command = "witchhunter" ,
max = 1 ,
salary = 150 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "VIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 200 )
ply: SetArmor( 75 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_FALSELORD = DarkRP. createJob( "The False Lord" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/player/tfa_tw3/radovid.mdl" ,
} ,
description = [[You are a false lord, you crave for power and fame!]] ,
weapons = { "weapon_bs_broadsword" , "weapon_cuff_rope" , "ent_bs_targe" } ,
command = "falselord" ,
max = 1 ,
salary = 150 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "VIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 150 )
ply: SetArmor( 50 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_ELF = DarkRP. createJob( "Pirate Queen" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/players/mj_rev_pjill.mdl" ,
} ,
description = [[You are the Pirate Queen, travelled from another realm. You lost your crew and have came to the realm to recruit new men, and calim some land!!]] ,
weapons = { "weapon_bs_scimitar" , "weapon_mor_normal" } ,
command = "piratequeen" ,
max = 1 ,
salary = 150 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "VIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 150 )
ply: SetArmor( 25 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_LIGHWIZARD = DarkRP. createJob( "Light Wizard" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/mailer/wow_characters/wowanim_jaina.mdl" ,
} ,
description = [[You are a Light Wizard, you fight for the good side!]] ,
weapons = { "weapon_hpwr_stick" } ,
command = "lightwizard" ,
max = 1 ,
salary = 150 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "VIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 200 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_BATTLEMAGE = DarkRP. createJob( "Battle Mage" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/koz/lotr/sauron/sauron.mdl" ,
} ,
description = [[You are a battle mage!]] ,
weapons = { "pk_armor" , "pk_shift" , "psi_staticburst" , "weapon_sky_daedric_greatsword" } ,
command = "battlemage" ,
max = 1 ,
salary = 150 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "VIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 200 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_BEASTMASTER = DarkRP. createJob( "The BeastMaster" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/kuma96/darksouls2/vengarl/vengarl_pm.mdl" ,
} ,
description = [[You are The BeastMaster, you tame and create an army of animals!]] ,
weapons = { "weapon_sky_waraxe_draugr" , "rock_blast" } ,
command = "beastmaster" ,
max = 1 ,
salary = 150 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "VIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 200 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_BARBARIAN = DarkRP. createJob( "The Barbarian" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/dual_barbarians/dual_barbarians_pm.mdl" ,
} ,
description = [[You are The Barbarian, you gather bandits or random mercenaries to make armies and take castles!]] ,
weapons = { "weapon_bs_gladius" , "cat_grass_machpunch" } ,
command = "barbarian" ,
max = 1 ,
salary = 150 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "VIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 175 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_ROMANGENERAL = DarkRP. createJob( "The Roman General" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/roman/roman_general.mdl" ,
} ,
description = [[You are The Roman General, you can join armies or make armies taking castles and land!]] ,
weapons = { "weapon_bs_gladius" } ,
command = "romangeneral" ,
max = 1 ,
salary = 150 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "VIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "admin" , "headadmin" , "overseer" , "superadmin" , "VIP" , "EpicVIP" , "mod" , "developer" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerSpawn = function ( ply)
ply: SetNWBool( "BuuSwords_Has_Scutum" , true ) ply: SetNWInt( "BuuSwords_StartingShield" , "6" )
ply: SetHealth( 175 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
-- EpicVIP
TEAM_SHADOWOFCHAOS = DarkRP. createJob( "The Shadow of Chaos" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/mark2580/dmc/dmc_kat.mdl" ,
"models/player/bobert/mhswaou.mdl" ,
"models/kryptonite/hela/hela.mdl" ,
"models/player/truebobert/dcuo_circe.mdl" ,
} ,
description = [[(Boe Dennis' Custom Job) You are The Shadow of Chaos.]] ,
weapons = { "shadow_knife" , "cat_grass_lightscreen" , "poke_ghost_mirrorcoat" , "cat_grass_healpulse" , "poke_ghost_phantomforce" , "blink" , "weapon_cuff_rope" } ,
command = "shadowofchaos" ,
max = 1 ,
salary = 200 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "EpicVIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "overseer" , "superadmin" , "EpicVIP" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
customCheck = function ( ply) return ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
PlayerSpawn = function ( ply)
ply: SetHealth( 250 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
TEAM_GRAYSORCERER = DarkRP. createJob( "The Gray Sorcerer" , {
color = Color( 20 , 150 , 20 , 255 ) ,
model = {
"models/gonzo/jedihoodmask/jedihoodmask.mdl" ,
} ,
description = [[(Strafe's Custom Job) You are The Gray Sorcerer.]] ,
weapons = { "shadow_knife" , "weapon_hpwr_stick" } ,
command = "shadowofchaos" ,
max = 1 ,
salary = 200 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "EpicVIP Jobs" ,
customCheck = function ( ply) return CLIENT or table . HasValue( { "overseer" , "superadmin" , "EpicVIP" } , ply: GetUserGroup( ) ) or ply: IsAdmin( ) or ply: SteamID( ) == "STEAM_0:0:124592702 " end ,
CustomCheckFailMsg = "You must be a donator to access this job" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 250 )
end ,
PlayerDeath = function ( ply, weapon, killer)
ply: teamBan( )
ply: changeTeam( GAMEMODE. DefaultTeam, true )
end
} )
-- STAFF
TEAM_admin = DarkRP. createJob( "Staff on Duty" , {
color = Color( 255 , 255 , 255 , 255 ) ,
model = {
"models/mailer/characters/tesv_greybeard.mdl" ,
"models/models/cersei/cersei.mdl"
} ,
description = [[Non-roleplay job used for staffing.]] ,
weapons = { } ,
command = "staffonduty" ,
max = 0 ,
salary = 300 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Staff" ,
customCheck = function ( ply) return
table . HasValue( { "superadmin" , "headadmin" , "admin" , "mod" } , ply: GetNWString( "usergroup" ) )
end ,
CustomCheckFailMsg = "You must be a staff member to choose this job!" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 1000000 )
end
} )
TEAM_admin = DarkRP. createJob( "Onyxia Brood" , {
color = Color( 255 , 255 , 255 , 255 ) ,
model = {
"models/mailer/wow_characters/wowanim_onyxia.mdl"
} ,
description = [[you have raised the ranks and are able to play as the wise dragon - you must assist players with questions and you may fly them to location OUTSIDE of RP; you may not interfere with RP.]] ,
weapons = { } ,
command = "onyxiabrood" ,
max = 1 ,
salary = 300 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Staff" ,
customCheck = function ( ply) return
table . HasValue( { "superadmin" , "headadmin" , "admin" } , ply: GetNWString( "usergroup" ) )
end ,
CustomCheckFailMsg = "You must be a staff member to choose this job!" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 1000000 )
end
} )
TEAM_BADGER = DarkRP. createJob( "Badger" , {
color = Color( 0 , 175 , 230 , 255 ) ,
model = {
"models/tsbb/animals/badger2.mdl"
} ,
description = [[Non-roleplay job used for staffing by Badger.]] ,
weapons = { } ,
command = "badger" ,
max = 0 ,
salary = 300 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Staff" ,
customCheck = function ( ply) return
ply: SteamID( ) == "STEAM_0:1:67914276" end ,
CustomCheckFailMsg = "You must be Badger to choose this job!" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 1000000 )
ply: SetArmor( 0 )
end
} )
TEAM_FLEMMETH = DarkRP. createJob( "Flemmeth" , {
color = Color( 156 , 0 , 230 , 255 ) ,
model = {
"models/flemethda2_pm.mdl"
} ,
description = [[Non-roleplay job used for staffing by Thervaine.]] ,
weapons = { } ,
command = "flemmeth" ,
max = 0 ,
salary = 300 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Staff" ,
customCheck = function ( ply) return
ply: SteamID( ) == "STEAM_0:0:60467934" end ,
CustomCheckFailMsg = "You must be Flemmeth to choose this job!" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 150 )
ply: SetArmor( 0 )
end
} )
TEAM_LINK = DarkRP. createJob( "Link" , {
color = Color( 156 , 0 , 230 , 255 ) ,
model = {
"models/player/hw_link.mdl"
} ,
description = [[Non-roleplay job used for staffing by Link.]] ,
weapons = { "weapon_mastersword" } ,
command = "link" ,
max = 0 ,
salary = 300 ,
admin = 0 ,
vote = false ,
hasLicense = false ,
candemote = false ,
category = "Staff" ,
customCheck = function ( ply) return
ply: SteamID( ) == "STEAM_0:1:51241974" end ,
CustomCheckFailMsg = "You must be Link to choose this job!" ,
PlayerSpawn = function ( ply)
ply: SetHealth( 150 )
ply: SetArmor( 0 )
end
} )
ClRFQU1fTUVSQ0hBTlQgPSBEYXJrUlAuY3JlYXRlSm9iKCJNZXJjaGFudCIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjAsIDE1MCwgMjAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL21haWxlci9jaGFyYWN0ZXJzL3Rlc3ZfZmVtYWxla2hhamlpdC5tZGwiLAogICAgICAgICJtb2RlbHMvbWFpbGVyL2NoYXJhY3RlcnMvdGVzdl9tYWxla2hhamlpdC5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGEgTWVyY2hhbnQsIHlvdSBzZWxsIHlvdXIgd2FyZXMhXV0sCiAgICB3ZWFwb25zID0ge30sCiAgICBjb21tYW5kID0gIm1lcmNoYW50IiwKICAgIG1heCA9IDIsCiAgICBzYWxhcnkgPSAyMCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiVmlsbGFnZXJzIiwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fSkVTVEVSID0gRGFya1JQLmNyZWF0ZUpvYigiSmVzdGVyIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvaGFybGVxdWlucy9tYWxlLm1kbCIsCiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdHJ1ZWJvYmVydC9pbmp1c3RpY2VfaGFybGV5X2FtZS5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGEgSmVzdGVyLCB5b3UgZW50ZXJ0YWluIGFuZCBzZXJ2ZSBmb3IgYSBraW5nZG9tIG9yIHRvd24hXV0sCiAgICB3ZWFwb25zID0ge30sCiAgICBjb21tYW5kID0gImplc3RlciIsCiAgICBtYXggPSAyLAogICAgc2FsYXJ5ID0gMzAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlZpbGxhZ2VycyIsCiAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fRE9DVE9SID0gRGFya1JQLmNyZWF0ZUpvYigiRG9jdG9yIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL3BsYWd1ZV9kb2t0b3IvcGxheWVyX3BsYWd1ZV9kb2t0b3IubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIERvY3Rvcl1dLAogICAgd2VhcG9ucyA9IHsid2VhcG9uX21lZGtpdCJ9LAogICAgY29tbWFuZCA9ICJkb2N0b3IiLAogICAgbWF4ID0gMiwKICAgIHNhbGFyeSA9IDQwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJWaWxsYWdlcnMiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9NRVNTRU5HRVIgPSBEYXJrUlAuY3JlYXRlSm9iKCJNZXNzZW5nZXIiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9tb2RlbHMvZnJleS9mcmV5Lm1kbCIsCiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9zaGFuaS5tZGwiCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgYSBNZXNzZW5nZXIsIHlvdSBkZWxpdmVyIG1lc3NhZ2VzIGJldHdlZW4gS2luZ3MgYW5kIExvcmRzISBUaGV5IHBheSB5b3UgZm9yIHlvdXIgZGVlZHMhXV0sCiAgICB3ZWFwb25zID0ge30sCiAgICBjb21tYW5kID0gIm1lc3NlbmdlciIsCiAgICBtYXggPSAyLAogICAgc2FsYXJ5ID0gMjAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlZpbGxhZ2VycyIsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0JBUkQgPSBEYXJrUlAuY3JlYXRlSm9iKCJCYXJkIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzMvZGFuZGVsaW9uX3YyLm1kbCIsCiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9wcmlzY2lsbGFfYmFyZC5tZGwiLAoJCSJtb2RlbHMvcGxheWVyL3RmYV90dzMvcHJpc2NpbGxhX2JhcmQubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIEJhcmRdXSwKICAgIHdlYXBvbnMgPSB7InJwZ2d1aXRhciJ9LAogICAgY29tbWFuZCA9ICJiYXJkIiwKICAgIG1heCA9IDIsCiAgICBzYWxhcnkgPSAzMCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiVmlsbGFnZXJzIiwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fQkFORElUID0gRGFya1JQLmNyZWF0ZUpvYigiQmFuZGl0IiwgewogICAgY29sb3IgPSBDb2xvcigwLCAxMDAsIDAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL2JsYWNrZmxhZy9wcml2YXRlZXIvcHJpdmF0ZWVyX3NhaWxvci5tZGwiLAogICAgICAgICJtb2RlbHMvYmxhY2tmbGFnL3ByaXZhdGVlci9wcml2YXRlZXJfb2ZmaWNlci5tZGwiLAogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzMvbWlsdmEubWRsIiwKCQkibW9kZWxzL3BsYXllci90ZmFfdHczX3RyaXNzX3YxLm1kbCIsCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgYSBCYW5kaXQsIHlvdSBjYW4gam9pbiB1cCB3aXRoIGEgQmFuZGl0IExlYWRlciBvciBnbyBhbG9uZS5dXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9jdWZmX3JvcGUiLCAibG9ja3BpY2sifSwKICAgIGNvbW1hbmQgPSAiYmFuZGl0IiwKICAgIG1heCA9IDMsCiAgICBzYWxhcnkgPSAyMCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiVmlsbGFnZXJzIiwKICAgIFBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQogICAgcGx5OlNldEJvZHlncm91cCgwLDQpCiAgICBwbHk6U2V0Qm9keWdyb3VwKDEsNykKICAgIGVuZCwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fU0xBVkVUUkFERVIgPSBEYXJrUlAuY3JlYXRlSm9iKCJTbGF2ZSBUcmFkZXIiLCB7CiAgICBjb2xvciA9IENvbG9yKDAsIDEwMCwgMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL2JvYmVydC9hb21hZGgubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIFNsYXZlIHRyYWRlciwgeW91IGNhbiBqb2luIHVwIHdpdGggYSBCYW5kaXQgdG8gY3JlYXRlIGEgYnVzaW5lc3Mgb3Igd29yayBieSB5b3Vyc2VsZiAuXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fY3VmZl9yb3BlIiwgIndlYXBvbl9sZWFzaF9yb3BlIn0sCiAgICBjb21tYW5kID0gInNsYXZldHJhZGVyIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSAyNSwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiVmlsbGFnZXJzIiwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fQ1VMVElTVCA9IERhcmtSUC5jcmVhdGVKb2IoIkN1bHRpc3QiLCB7CiAgICBjb2xvciA9IENvbG9yKDI1NSwgMjU1LCAyNTUsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL2R3ZGFya3NvdWxzL21vZGVscy9kYXJrd3JhaXRoLm1kbCIsCgkJIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9zaGVhbGFfZ293bi5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIHRoZSBDdWx0aXN0cywgeW91IGdvIG91dCBhbmQga2lkbmFwL3BlcnN1YWRlIHBlb3BsZSB0byBjb21lIGJhY2sgdG8geW91ciBiYXNlL0NodXJjaC4gWW91IGNhbiB0aGVuIHBlcmZvcm0gcml0dWFscyBvciBzYWNyaWZpY2VzIGF0dGVtcHRpbmcgb3QgdHVybiB0aGUgd2hvbGUgc2VydmVyIHRvIHlvdXIgY3VsdC5dXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9jdWZmX3JvcGUifSwKICAgIGNvbW1hbmQgPSAiY3VsdGlzdCIsCiAgICBtYXggPSA0LAogICAgc2FsYXJ5ID0gNDAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlZpbGxhZ2VycyIsCiAgICBQbGF5ZXJTcGF3biA9IGZ1bmN0aW9uKHBseSkKICAgICAgICBwbHk6U2V0SGVhbHRoKDEwMCkKICAgICAgICBwbHk6U2V0QXJtb3IoMCkKICAgIGVuZCwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pCgotLVRPV04KVEVBTV9UT1dOID0gRGFya1JQLmNyZWF0ZUpvYigiTG9yZCBvZiB0aGUgVG93biIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjU1LCAyNTUsIDI1NSwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL21hcnRpbi9jYW1wYmxldS9yb2libGV1Lm1kbCIKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBMb3JkIG9mIHRoZSB0b3duLCB5b3UgY29udHJvbCB0aGUgVG93biBhbmQgcHJvdGVjdCBpdCB3aXRoIHRoZSBoZWxwIG9mIHlvdXIgVG93bmd1YXJkLl1dLAogICAgd2VhcG9ucyA9IHsid2VhcG9uX2JzX2xvbmdzd29yZCJ9LAogICAgY29tbWFuZCA9ICJsb3Jkb2Z0aGV0b3duIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSAyMDAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlRoZSBUb3duIiwKICAgIFBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQogICAgICAgIHBseTpTZXROV0Jvb2woICJCdXVTd29yZHNfSGFzX0NyZXN0IiwgdHJ1ZSApIHBseTpTZXROV0ludCggIkJ1dVN3b3Jkc19TdGFydGluZ1NoaWVsZCIsICIzIiApCiAgICAgICAgcGx5OlNldEhlYWx0aCgxNTApCiAgICAgICAgcGx5OlNldEFybW9yKDApCiAgICBlbmQsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX1RPV04gPSBEYXJrUlAuY3JlYXRlSm9iKCJMb3JkJ3MgYWR2aXNvciIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjU1LCAyNTUsIDI1NSwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL21hcnRpbi9jYW1wYmxldS9yZWNydWVibGV1MDAubWRsIgogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIExvcmQncyBhZHZpc29yLCB5b3UgbXVzdCBtZW50b3IgYW5kIGd1aWRlIHlvdXIgbG9yZC5dXSwKICAgIHdlYXBvbnMgPSB7fSwKICAgIGNvbW1hbmQgPSAibG9yZHNhZHZpc29yIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSAxMjAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlRoZSBUb3duIiwKICAgIFBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQogICAgICAgIHBseTpTZXRIZWFsdGgoMTUwKQogICAgICAgIHBseTpTZXRBcm1vcigwKQogICAgZW5kLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9UT1dOID0gRGFya1JQLmNyZWF0ZUpvYigiTGFkeSBvZiB0aGUgVG93biIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjU1LCAyNTUsIDI1NSwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzNfeWVuX2ZpbGxpcGEubWRsIiwKCQkibW9kZWxzL3BsYXllci90ZmFfdHczL3NhYnJpbmEubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSB0aGUgTGFkeSBvZiB0aGUgVG93biBpZiB0aGVyZSBpcyBubyBMb3JkIHlvdSBhcmUgaW5jaGFyZ2UuXV0sCiAgICB3ZWFwb25zID0ge30sCiAgICBjb21tYW5kID0gImxhZHlvZnRoZXRvd24iLAogICAgbWF4ID0gMSwKICAgIHNhbGFyeSA9IDE0MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiVGhlIFRvd24iLAogICAgUGxheWVyU3Bhd24gPSBmdW5jdGlvbihwbHkpCiAgICAgICAgcGx5OlNldEhlYWx0aCgxNTApCiAgICAgICAgcGx5OlNldEFybW9yKDApCiAgICBlbmQsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX1RPV04gPSBEYXJrUlAuY3JlYXRlSm9iKCJMb3JkJ3MgU29uIiwgewogICAgY29sb3IgPSBDb2xvcigyNTUsIDI1NSwgMjU1LCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9tb2RlbHMvZXRoYW4vZXRoYW4ubWRsIgogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIHRoZSBMb3JkcyBzb24sIHlvdSB3aWxsIGJlIGEgZnV0dXJlIExvcmQgd2hlbiB5b3UgYXJlIG9sZGVyLCB5b3UgcnVuIGFyb3VuZCB0aGUgdG93biBhbmQgZ2V0IHVwIHRvIG1pc2NoaWVmXV0sCiAgICB3ZWFwb25zID0ge30sCiAgICBjb21tYW5kID0gImxvcmRzc29uIiwKICAgIG1heCA9IDIsCiAgICBzYWxhcnkgPSA0MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgbW9kZWxTY2FsZSA9IDAuNywKICAgIGNhdGVnb3J5ID0gIlRoZSBUb3duIiwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fVE9XTiA9IERhcmtSUC5jcmVhdGVKb2IoIkxvcmQncyBEYXVnaHRlciIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjU1LCAyNTUsIDI1NSwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL21hcnRpbi9nb3RfdGcvdGFsaWFfZm9ycmVzdGVyX3BtLm1kbCIKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSB0aGUgTG9yZCdzIERhdWdodGVyLCB5b3UgbWF5IG9uZSBkYXkgYmUgTGFkeSBvZiB0aGUgVG93bi5dXSwKICAgIHdlYXBvbnMgPSB7fSwKICAgIGNvbW1hbmQgPSAibG9yZHNkYXVnaHRlciIsCiAgICBtYXggPSAyLAogICAgc2FsYXJ5ID0gNDAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBtb2RlbFNjYWxlID0gMC42LAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJUaGUgVG93biIsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQotLVRvd25ndWFyZApURUFNX1RPV05HVUFSRCA9IERhcmtSUC5jcmVhdGVKb2IoIkxvcmQncyBCb2R5Z3VhcmQiLCB7CiAgICBjb2xvciA9IENvbG9yKDI1NSwgMjU1LCAyNTUsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL3BsYXllci9tYXJ0aW4vY2FtcGJsZXUvY2hldmJsZXVfeXgwMC5tZGwiCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgdGhlIExvcmQncyBCb2R5Z3VhcmQuIFByb3RlY3QgdGhlIGxvcmQgYW5kIGhpcyBmYW1pbHkgd2l0aCB5b3VyIGxpZmUuXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fYnNfcmFpZGVyIiwgImxvY2twaWNrIiwgImVudF9ic19oZWF0ZXIiLCAid2VhcG9uX2N1ZmZfcm9wZSJ9LAogICAgY29tbWFuZCA9ICJsb3Jkc2JvZHlndWFyZCIsCiAgICBtYXggPSAxLAogICAgc2FsYXJ5ID0gNzUsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlRoZSBUb3duIiwKICAgIFBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQogICAgICAgIHBseTpTZXROV0Jvb2woICJCdXVTd29yZHNfSGFzX0NyZXN0IiwgdHJ1ZSApIHBseTpTZXROV0ludCggIkJ1dVN3b3Jkc19TdGFydGluZ1NoaWVsZCIsICIzIiApCiAgICAgICAgcGx5OlNldEhlYWx0aCgyMDApCiAgICAgICAgcGx5OlNldEFybW9yKDc1KQogICAgZW5kLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9UT1dOR1VBUkQgPSBEYXJrUlAuY3JlYXRlSm9iKCJUb3duIEd1YXJkIENhcHRhaW4iLCB7CiAgICBjb2xvciA9IENvbG9yKDI1NSwgMjU1LCAyNTUsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL3BsYXllci9tYXJ0aW4vY2FtcGJsZXUvZ2VuZXJhbGJsZXUwMC5tZGwiCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgdGhlIENhcHRhaW4gb2YgdGhlIFRvd24gR3VhcmQuIFlvdSBjb250cm9sIGFuZCBjb21tYW5kIHRoZW0sIGhvd2V2ZXIgeW91IGZvbGxvdyBvcmRlcnMgZnJvbSB0aGUgTWF5b3IuXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fYnNfcmFpZGVyIiwgImxvY2twaWNrIiwgImVudF9ic19oZWF0ZXIiLCAid2VhcG9uX2N1ZmZfcm9wZSJ9LAogICAgY29tbWFuZCA9ICJ0b3duZ3VhcmRjYXB0YWluIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSA4MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiVGhlIFRvd24iLAogICAgUGxheWVyU3Bhd24gPSBmdW5jdGlvbihwbHkpCiAgICAgICAgcGx5OlNldE5XQm9vbCggIkJ1dVN3b3Jkc19IYXNfQ3Jlc3QiLCB0cnVlICkgcGx5OlNldE5XSW50KCAiQnV1U3dvcmRzX1N0YXJ0aW5nU2hpZWxkIiwgIjMiICkKICAgICAgICBwbHk6U2V0SGVhbHRoKDIwMCkKICAgICAgICBwbHk6U2V0QXJtb3IoNTApCiAgICBlbmQsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX1RPV05HVUFSRCA9IERhcmtSUC5jcmVhdGVKb2IoIlRvd24gR3VhcmQiLCB7CiAgICBjb2xvciA9IENvbG9yKDI1NSwgMjU1LCAyNTUsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL3BsYXllci9tYXJ0aW4vY2FtcGJsZXUvb2ZmaWNpZXJibGV1Lm1kbCIKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIFRvd24gR3VhcmQsIHlvdSBoZWxwIGRlZmVuZCB0aGUgdG93biBhbmQga2VlcCBjcmltZSBhdCBhIGxvdy4gWW91IGZvbGxvdyB0aGUgb3JkZXJzIGFuZCBjb21tYW5kcyBvZiB0aGUgVG93biBndWFyZCBDYXB0YWluIGFuZCBNYXlvci5dXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9ic19zdHJhaWdodHN3b3JkIiwgImxvY2twaWNrIiwgImVudF9ic19oZWF0ZXIiLCAid2VhcG9uX2N1ZmZfcm9wZSJ9LAogICAgY29tbWFuZCA9ICJ0b3duZ3VhcmQiLAogICAgbWF4ID0gNSwKICAgIHNhbGFyeSA9IDQwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJUaGUgVG93biIsCiAgICBQbGF5ZXJTcGF3biA9IGZ1bmN0aW9uKHBseSkKICAgICAgICBwbHk6U2V0TldCb29sKCAiQnV1U3dvcmRzX0hhc19DcmVzdCIsIHRydWUgKSBwbHk6U2V0TldJbnQoICJCdXVTd29yZHNfU3RhcnRpbmdTaGllbGQiLCAiMyIgKQogICAgICAgIHBseTpTZXRIZWFsdGgoMTUwKQogICAgICAgIHBseTpTZXRBcm1vcigyNSkKICAgIGVuZCwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fVE9XTkdVQVJEQk9XTUFOID0gRGFya1JQLmNyZWF0ZUpvYigiVG93biBHdWFyZCBCb3dtYW4iLCB7CiAgICBjb2xvciA9IENvbG9yKDI1NSwgMjU1LCAyNTUsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL3BsYXllci9tYXJ0aW4vY2FtcGJsZXUvZmFudGFzc2luYmxldTAwLm1kbCIKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIFRvd24gR3VhcmQgQm93bWFuLCB5b3UgaGVscCBkZWZlbmQgdGhlIHRvd24gYW5kIGtlZXAgY3JpbWUgYXQgYSBsb3cuIFlvdSBmb2xsb3cgdGhlIG9yZGVycyBhbmQgY29tbWFuZHMgb2YgdGhlIFRvd24gZ3VhcmQgQ2FwdGFpbiBhbmQgTWF5b3IuXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fbW9yX2xvbmdib3ciLCAid2VhcG9uX2N1ZmZfcm9wZSJ9LAogICAgY29tbWFuZCA9ICJ0b3duZ3VhcmRib3dtYW4iLAogICAgbWF4ID0gNSwKICAgIHNhbGFyeSA9IDQwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJUaGUgVG93biIsCiAgICBQbGF5ZXJTcGF3biA9IGZ1bmN0aW9uKHBseSkKICAgICAgICBwbHk6U2V0SGVhbHRoKDEwMCkKICAgICAgICBwbHk6U2V0QXJtb3IoMjUpCiAgICBlbmQsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQotLQotLUh1bWFucy0tClRFQU1fSFVNQU4gPSBEYXJrUlAuY3JlYXRlSm9iKCJNYWxlIFBlYXNhbnQiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9odW1hbnMvZ3JvdXAxbS9tYWxlXzAyLm1kbCIsCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgYSBNYWxlIFBlYXNhbnQsIHlvdSBkcmVzcyBsaWtlIGEgcG9vcm1hbiFdXSwKICAgIHdlYXBvbnMgPSB7fSwKICAgIGNvbW1hbmQgPSAibWFsZXBlYXNhbnQiLAogICAgbWF4ID0gMCwKICAgIHNhbGFyeSA9IDIwLAogICAgYWRtaW4gPSAwLAogICAgbGV2ZWwgPSAyLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJIdW1hbnMiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9IVU1BTiA9IERhcmtSUC5jcmVhdGVKb2IoIkZlbWFsZSBQZWFzYW50IiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzMvY29yaW5uZS5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGEgRmVtYWxlIFBlYXNhbnQsIHlvdSBkcmVzcyBsaWtlIGEgcG9vcm1hbiFdXSwKICAgIHdlYXBvbnMgPSB7fSwKICAgIGNvbW1hbmQgPSAiZmVtYWxlcGVhc2FudCIsCiAgICBtYXggPSAwLAogICAgc2FsYXJ5ID0gMjAsCiAgICBhZG1pbiA9IDAsCiAgICBsZXZlbCA9IDIsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkh1bWFucyIsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0hVTUFOID0gRGFya1JQLmNyZWF0ZUpvYigiVGhlIFByb3BoZXQiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9kamlrc3RyYS5tZGwiCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgdGhlIHByb3BoZXQsIHNwcmVhZCB0aGUgd29yZCBvZiBnb2QhXV0sCiAgICB3ZWFwb25zID0geyJzbGF2ZXJwX21vZGVsX2Jvb2sifSwKICAgIGNvbW1hbmQgPSAidGhlcHJvcGhldCIsCiAgICBtYXggPSAxLAogICAgc2FsYXJ5ID0gNTAsCiAgICBhZG1pbiA9IDAsCiAgICBsZXZlbCA9IDIsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkh1bWFucyIsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0hVTUFOID0gRGFya1JQLmNyZWF0ZUpvYigiUHJpbmNlIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvYXNoZXIvYXNoZXIubWRsIiwKCQkibW9kZWxzL21haWxlci9jaGFyYWN0ZXJzL25ld3ByaW5jZW9mcGVyc2lhLm1kbCIsCiAgICAgICAgIm1vZGVscy9tb2RlbHMvcmFtc2F5L3JhbXNheS5tZGwiLAogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzMvZ2FldGFuLm1kbCIsCiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9lc2tlbC5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGEgUHJpbmNlLCB5b3UgYXJlIHJveWFsdHkhXV0sCiAgICB3ZWFwb25zID0ge30sCiAgICBjb21tYW5kID0gInByaW5jZSIsCiAgICBtYXggPSA0LAogICAgc2FsYXJ5ID0gNjAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkh1bWFucyIsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0hVTUFOID0gRGFya1JQLmNyZWF0ZUpvYigiS2luZyIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjAsIDE1MCwgMjAsIDI1NSksCiAgICBtb2RlbCA9IHsKCSAgICAibW9kZWxzL3BsYXllci90ZmFfdHczL2ZvbHRlc3QubWRsIiwKICAgICAgICAibW9kZWxzL2tvei9sb3RyL2FyYWdvcm4vYXJhZ29ybi5tZGwiLAogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzMvZGFuZGVsaW9uX3YxLm1kbCIsCiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9yYWRvdmlkLm1kbCIsCiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9tZW5nZS5tZGwiLAogICAgICAgICJtb2RlbHMvcGxheWVyL21hcnRpbi9jYW1wYmxldS9yb2libGV1Lm1kbCIsCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgYSBLaW5nLCB5b3UgYXJlIHJveWFsdHkhXV0sCiAgICB3ZWFwb25zID0ge30sCiAgICBjb21tYW5kID0gImtpbmciLAogICAgbWF4ID0gNCwKICAgIHNhbGFyeSA9IDYwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJIdW1hbnMiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9IVU1BTiA9IERhcmtSUC5jcmVhdGVKb2IoIlByaW5jZXNzIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzNfY2lyaV9kbGMubWRsIiwKICAgICAgICAibW9kZWxzL3BsYXllci90ZmFfdHczX3RyaXNzX2RsYy5tZGwiLAogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzMvcGhpbGlwcGFfYmFzZS5tZGwiLAogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzMvc2FicmluYS5tZGwiLAogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzMvc2hhbmkubWRsIiwKCQkibW9kZWxzL21vZGVscy9tYXJnYWVyeS9tYXJnYWVyeS5tZGwiLAoJCSJtb2RlbHMvcGxheWVyL3RmYV90dzNfY2lyaV9lbXByZXNzLm1kbCIsCgogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGEgUHJpbmNlc3MsIHlvdSBkcmVzcyBsaWtlIGEgbGFkeSBhbmQgdHJ5IGF2b2lkIGJlaW5nIGtpZG5hcHBlZCFdXSwKICAgIHdlYXBvbnMgPSB7fSwKICAgIGNvbW1hbmQgPSAicHJpbmNlc3MiLAogICAgbWF4ID0gNCwKICAgIHNhbGFyeSA9IDYwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJIdW1hbnMiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9IVU1BTiA9IERhcmtSUC5jcmVhdGVKb2IoIlF1ZWVuIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzMvY2lyaV9lbXByZXNzLm1kbCIsCiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9jb3Jpbm5lLm1kbCIsCiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9hc3NpcmUubWRsIiwKICAgICAgICAibW9kZWxzL3BsYXllci90ZmFfdHczL2ZyaW5naWxsYS5tZGwiLAogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzMvaWRhLm1kbCIsCiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9rZWlyYV9iYXNlLm1kbCIsCiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9tYXJnYXJpdGEubWRsIiwKICAgICAgICAibW9kZWxzL3BsYXllci90ZmFfdHczL3NoZWFsYV9nb3duLm1kbCIsCiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3M195ZW5fbWFpbi5tZGwiLAogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzNfdHJpc3NfdjQubWRsIiwKICAgICAgICAibW9kZWxzL21vcnJpZ2FuZHJlc3NfcG0ubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIFF1ZWVuLCB5b3UgU0xBWVkhXV0sCiAgICB3ZWFwb25zID0ge30sCiAgICBjb21tYW5kID0gInF1ZWVuIiwKICAgIG1heCA9IDQsCiAgICBzYWxhcnkgPSA4MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiSHVtYW5zIiwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fSFVNQU4gPSBEYXJrUlAuY3JlYXRlSm9iKCJBc3Nhc3NpbiIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjAsIDE1MCwgMjAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL3BsYXllci9zaGF5X2Nvcm1hYy5tZGwiLAoJCSJtb2RlbHMvcGxheWVyL3RmYV9hY3NfZXZpZWZyeWUubWRsIiwKCQkibW9kZWxzL3BsYXllci9ib2JlcnQvc2hpdmEubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhbiBBc3Nhc3NpbiwgeW91IGFyZSBhZGVwdCBhdCB0YWtpbmcgb3V0IHRhcmdldHMgc2lsZW50bHkhXV0sCiAgICB3ZWFwb25zID0geyJsb2NrcGljayIsICJ3ZWFwb25fcm9wZV9rbmlmZSIsICJ3ZWFwb25fdGhlaGlkZGVuYmxhZGUifSwKICAgIGNvbW1hbmQgPSAiYXNzYXNzaW4iLAogICAgbWF4ID0gMywKICAgIHNhbGFyeSA9IDcwLAogICAgYWRtaW4gPSAwLAogICAgbGV2ZWwgPSAxMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiSHVtYW5zIiwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fS05JR0hUID0gRGFya1JQLmNyZWF0ZUpvYigiU3F1aXJlIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvbW9kZWxzL2FydGh1ci9hcnRodXIubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIFNxdWlyZSwgZmluZCBhIGtuaWdodCB0byBzZXJ2ZXIhXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fYnNfc2hvcnRzd29yZCJ9LAogICAgY29tbWFuZCA9ICJTcXVpcmUiLAogICAgbWF4ID0gMywKICAgIHNhbGFyeSA9IDMwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJIdW1hbnMiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9LTklHSFQgPSBEYXJrUlAuY3JlYXRlSm9iKCJSb21hbiBTb2xkaWVyIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvY2FrZXovZ290L2dvdGtuaWdodDJfcC5tZGwiLAoJCSJtb2RlbHMvcGxheWVyL3lldm9jb3JlL3dhcmRlbi93YXJkZW4ubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIFJvbWFuIFNvbGRpZXIsIEZvbGxvdyB5b3VyIGdlbmVyYWwgb3Igam9pbiBhbiBhcm15IV1dLAogICAgd2VhcG9ucyA9IHsid2VhcG9uX2JzX2Jyb2Fkc3dvcmQifSwKICAgIGNvbW1hbmQgPSAicm9tYW5zb2xkaWVyIiwKICAgIG1heCA9IDMsCiAgICBzYWxhcnkgPSA4MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiSHVtYW5zIiwKICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9LTklHSFQgPSBEYXJrUlAuY3JlYXRlSm9iKCJNYWxlIEtuaWdodCIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjAsIDE1MCwgMjAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL2Nha2V6L2dvdC9nb3RrbmlnaHQyX3AubWRsIiwKCQkibW9kZWxzL3BsYXllci95ZXZvY29yZS93YXJkZW4vd2FyZGVuLm1kbCIsCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgYSBNYWxlIEtuaWdodCwgeW91IGFyZSB0cmFpbmVkIGluIGNvbWJhdCFdXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9ic19icm9hZHN3b3JkIn0sCiAgICBjb21tYW5kID0gIm1hbGVrbmlnaHQiLAogICAgbWF4ID0gMywKICAgIHNhbGFyeSA9IDgwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJIdW1hbnMiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9LTklHSFQgPSBEYXJrUlAuY3JlYXRlSm9iKCJLbmlnaHRlc3MiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9zYXNraWEubWRsIiwKICAgICAgICAibW9kZWxzL21haWxlci9jaGFyYWN0ZXJzL2ZlbWFsZV9rbmlnaHRfOTIubWRsIiwKCQkibW9kZWxzL2tuaWdodHMvZmVtYWxlX2tuaWdodF85MS5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGEgRmVtYWxlIEtuaWdodCwgeW91IGFyZSB0cmFpbmVkIGluIGNvbWJhdCFdXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9ic19icm9hZHN3b3JkIn0sCiAgICBjb21tYW5kID0gImtuaWdodGVzcyIsCiAgICBtYXggPSAzLAogICAgc2FsYXJ5ID0gODAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkh1bWFucyIsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0tOSUdIVCA9IERhcmtSUC5jcmVhdGVKb2IoIkhpZ2gtS25pZ2h0IiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvbWFpbGVyL2NoYXJhY3RlcnMva290bl9oZWF2eS5tZGwiLAoJCSJtb2RlbHMva25pZ2h0cy9mZW1hbGVfa25pZ2h0XzkyLm1kbCIsCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgYSBIaWdoLUtuaWdodCwgeW91IGFyZSBpbiBjaGFyZ2Ugb2YgdGhlIGtuaWdodHMgc28gbWFrZSBzdXJlIHRoYXQgdGhleSBmb2xsb3cgYWxsIHRoZSBrbmlnaHQgcnVsZXMhXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fYnNfZ3JlYXRzd29yZCIsICJlbnRfYnNfY3Jlc3QifSwKICAgIGNvbW1hbmQgPSAiaGlnaGtuaWdodCIsCiAgICBtYXggPSAyLAogICAgc2FsYXJ5ID0gMTUwLAogICAgYWRtaW4gPSAwLApsZXZlbCA9IDgsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkh1bWFucyIsCiAgICBQbGF5ZXJTcGF3biA9IGZ1bmN0aW9uKHBseSkKCSAgICBwbHk6U2V0TldCb29sKCAiQnV1U3dvcmRzX0hhc19DcmVzdCIsIHRydWUgKSBwbHk6U2V0TldJbnQoICJCdXVTd29yZHNfU3RhcnRpbmdTaGllbGQiLCAiMyIgKQogICAgICAgIHBseTpTZXRIZWFsdGgoMjAwKQogICAgICAgIHBseTpTZXRBcm1vcig3NSkKICAgIGVuZCwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pCi0tdmFtcGlyZXMKVkFNUElSRUxPUkQgPSBEYXJrUlAuY3JlYXRlSm9iKCJWYW1waXJlIExvcmQiLCB7CiAgICBjb2xvciA9IENvbG9yKDUwLCA0MCwgMTAwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9lbWh5ci5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIHRoZSBWYW1waXJlIExvcmQsIHlvdSBydW4geW91ciBWYW1waXJlIEFybXksIGhpZGluZyBpbiB5b3VyIGNhdmUgdW50aWwgbmlnaHQgdGltZSB0byBsZWFkIHlvdXIgYXJteSBpbiBhdHRhY2tzIV1dLAogICAgd2VhcG9ucyA9IHsidmFtcGlyZV9sb3JkX3N3ZXAifSwKICAgIGNvbW1hbmQgPSAidmFtcGlyZWxvcmQiLAogICAgbWF4ID0gMSwKICAgIHNhbGFyeSA9IDIwMCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiVmFtcGlyZXMiLAoJTGV2ZWwgPSAxNSwKCVBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQoJCXBseTpTZXRIZWFsdGgoMzAwKQoJCXBseTpTZXRBcm1vcigwKQoJZW5kLAoJCVBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKCQlwbHk6dGVhbUJhbigpCgkJcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCgllbmQKfSkKVEVBTV9WQU1QSVJFUVVFRU4gPSBEYXJrUlAuY3JlYXRlSm9iKCJWYW1waXJlIFF1ZWVuIiwgewogICAgY29sb3IgPSBDb2xvcig1MCwgNDAsIDEwMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzNfeWVuX21haW4ubWRsIiwKCQkibW9kZWxzL3BsYXllci90ZmFfdHczX3llbl9kbGMubWRsIiwKCQkibW9kZWxzL3BsYXllci9kYTJfbW9ycmlnYW4ubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIFZhbXBpcmUgUXVlZW4sIHlvdSBmb2xsb3cgb3JkZXJzIGZyb20gdGhlIExvcmQuIFlvdSBhcmUgaW5jaGFyZ2Ugb2YgZ2V0dGluZyBuZXcgcmVjcnVpdHMsIGFuZCB0b3J0dXJpbmcgY2FwdGl2ZXMuXV0sCiAgICB3ZWFwb25zID0geyJ2YW1waXJlX3F1ZWVuX3N3ZXAifSwKICAgIGNvbW1hbmQgPSAidmFtcGlyZXF1ZWVuIiwKICAgIG1heCA9IDMsCiAgICBzYWxhcnkgPSAxNTAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlZhbXBpcmVzIiwKCVBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQoJCXBseTpTZXRIZWFsdGgoMjAwKQoJCXBseTpTZXRBcm1vcigwKQoJZW5kLAoJCVBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKCQlwbHk6dGVhbUJhbigpCgkJcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCgllbmQKfSkKVEVBTV9WQU1QSVJFID0gRGFya1JQLmNyZWF0ZUpvYigiVmFtcGlyZSBBc2NlbmRhbnQiLCB7CiAgICBjb2xvciA9IENvbG9yKDUwLCA0MCwgMTAwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9yZWdpc192YW1wLm1kbCIsCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgYSBWYW1waXJlIEFzY2VuZGFudCwgeW91IHByb3RlY3QgdGhlIGNhdmUgYW5kIGZvbGxvdyBpbiBhdHRhY2tzIGF0IG5pZ2h0IV1dLAogICAgd2VhcG9ucyA9IHsidmFtcGlyZV9hc2NlbmRhbnRfc3dlcCJ9LAogICAgY29tbWFuZCA9ICJ2YW1waXJlYXNjZW5kYW50IiwKICAgIG1heCA9IDIsCiAgICBzYWxhcnkgPSA3NSwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiVmFtcGlyZXMiLAoJUGxheWVyU3Bhd24gPSBmdW5jdGlvbihwbHkpCgkJcGx5OlNldEhlYWx0aCgxNTApCgkJcGx5OlNldEFybW9yKDApCgllbmQsCgkJUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQoJCXBseTp0ZWFtQmFuKCkKCQlwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKCWVuZAp9KQpURUFNX1ZBTVBJUkUgPSBEYXJrUlAuY3JlYXRlSm9iKCJWYW1waXJlIFRocmFsbCIsIHsKICAgIGNvbG9yID0gQ29sb3IoNTAsIDQwLCAxMDAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL21haWxlci9jaGFyYWN0ZXJzL3Rlc3ZfbmlnaHRpbmdhbGUubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIFZhbXBpcmUgVGhyYWxsLCB5b3UgYXJlIHJlY2VudGx5IHR1cm5lZCwgeW91IGdvIG91dCBhbmQgY2FwdHVyZSBuZXcgdmljdGltcy5dXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9ic19zaG9ydHN3b3JkIn0sCiAgICBjb21tYW5kID0gInZhbXBpcmV0aHJhbGwiLAogICAgbWF4ID0gNSwKICAgIHNhbGFyeSA9IDUwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJWYW1waXJlcyIsCglQbGF5ZXJTcGF3biA9IGZ1bmN0aW9uKHBseSkKCQlwbHk6U2V0SGVhbHRoKDEwMCkKCQlwbHk6U2V0QXJtb3IoMCkKCWVuZCwKCQlQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCgkJcGx5OnRlYW1CYW4oKQoJCXBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQoJZW5kCn0pCi0tV2VyZXdvbHZlcwpURUFNX1dFUkVXT0xGID0gRGFya1JQLmNyZWF0ZUpvYigiQWxwaGEgV2VyZXdvbGYiLCB7CiAgICBjb2xvciA9IENvbG9yKDUwLCA0MCwgMTAwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9hc2hlci9hc2hlci5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1sgKFZJUCBPTkxZKSBZb3UgYXJlIHRoZSBBbHBoYSBXZXJld29sZiwgeW91IGFyZSBtYWxlIGFuZCBsZWFkIHRoZSBwYWNrIHdpdGggaGVscCBmcm9tIHlvdXIgbHVuYSB3b2xmLl1dLAogICAgd2VhcG9ucyA9IHsiYWxwaGFfd2VyZXdvbGZfc3dlcCJ9LAogICAgY29tbWFuZCA9ICJhbHBoYXdlcmV3b2xmIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSA1MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiV2VyZXdvbHZlcyIsCiAgICAgY3VzdG9tQ2hlY2sgPSBmdW5jdGlvbihwbHkpIHJldHVybiBDTElFTlQgb3IgdGFibGUuSGFzVmFsdWUoeyJhZG1pbiIsICJoZWFkYWRtaW4iLCAib3ZlcnNlZXIiLCAic3VwZXJhZG1pbiIsICJWSVAiLCAiRXBpY1ZJUCIsICJtb2QiLCAiZGV2ZWxvcGVyIn0sIHBseTpHZXRVc2VyR3JvdXAoKSkgb3IgcGx5OklzQWRtaW4oKSBvciBwbHk6U3RlYW1JRCgpID09ICJTVEVBTV8wOjA6MTI0NTkyNzAyICIgZW5kLAogICAgICAgICAgICBDdXN0b21DaGVja0ZhaWxNc2cgPSAiWW91IG11c3QgYmUgYSBkb25hdG9yIHRvIGFjY2VzcyB0aGlzIGpvYiIsCglQbGF5ZXJTcGF3biA9IGZ1bmN0aW9uKHBseSkKCQlwbHk6U2V0SGVhbHRoKDI1MCkKCQlwbHk6U2V0QXJtb3IoMCkKCWVuZCwKCQlQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCgkJcGx5OnRlYW1CYW4oKQoJCXBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQoJZW5kCn0pClRFQU1fV0VSRVdPTEYgPSBEYXJrUlAuY3JlYXRlSm9iKCJMdW5hIFdlcmV3b2xmIiwgewogICAgY29sb3IgPSBDb2xvcig1MCwgNDAsIDEwMCwgMjU1KSwKICAgIG1vZGVsID0gewoJCSJtb2RlbHMvbnBjL2NvbWJpbmUvdGZhX3R3My9zaGFuaS5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1sgKFZJUCBPTkxZKSBZb3UgYXJlIHRoZSBMdW5hIFdlcmV3b2xmLCB5b3UgYXJlIGEgZmVtYWxlIGFuZCBoZWxwIGxlYWQgdGhlIHBhY2suXV0sCiAgICB3ZWFwb25zID0geyJsdW5hX3dlcmV3b2xmX3N3ZXAifSwKICAgIGNvbW1hbmQgPSAibHVuYXdlcmV3b2xmIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSA1MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiV2VyZXdvbHZlcyIsCiAgICAgY3VzdG9tQ2hlY2sgPSBmdW5jdGlvbihwbHkpIHJldHVybiBDTElFTlQgb3IgdGFibGUuSGFzVmFsdWUoeyJhZG1pbiIsICJoZWFkYWRtaW4iLCAib3ZlcnNlZXIiLCAic3VwZXJhZG1pbiIsICJWSVAiLCAiRXBpY1ZJUCIsICJtb2QiLCAiZGV2ZWxvcGVyIn0sIHBseTpHZXRVc2VyR3JvdXAoKSkgb3IgcGx5OklzQWRtaW4oKSBvciBwbHk6U3RlYW1JRCgpID09ICJTVEVBTV8wOjA6MTI0NTkyNzAyICIgZW5kLAogICAgICAgICAgICBDdXN0b21DaGVja0ZhaWxNc2cgPSAiWW91IG11c3QgYmUgYSBkb25hdG9yIHRvIGFjY2VzcyB0aGlzIGpvYiIsCglQbGF5ZXJTcGF3biA9IGZ1bmN0aW9uKHBseSkKCQlwbHk6U2V0SGVhbHRoKDIwMCkKCQlwbHk6U2V0QXJtb3IoMCkKCWVuZCwKCQlQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCgkJcGx5OnRlYW1CYW4oKQoJCXBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQoJZW5kCn0pClRFQU1fV0VSRVdPTEYgPSBEYXJrUlAuY3JlYXRlSm9iKCJPbWVnYSBXZXJld29sZiIsIHsKICAgIGNvbG9yID0gQ29sb3IoNTAsIDQwLCAxMDAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL21vZGVscy9qb3NlcmEvam9zZXJhLm1kbCIsCgkJIm1vZGVscy9tb2RlbHMvZm9ycmVzdGVyL2ZvcnJlc3Rlci5tZGwiLAoJCSJtb2RlbHMvbW9kZWxzL2Jlc2toYS9iZXNraGEubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIE9tZWdhIFdlcmV3b2xmLCB5b3UgYXJlIGEgeW91bmcgd2VyZXdvbGYgdGhhdCBmb2xsb3dzIHlvdXIgbGVhZGVycyBhbmQgaGVscCBwcm90ZWN0IHRoZSBwYWNrIGFuZCB0aGUgcHVwcy5dXSwKICAgIHdlYXBvbnMgPSB7Im9tZWdhX3dlcmV3b2xmX3N3ZXAifSwKICAgIGNvbW1hbmQgPSAib21lZ2F3ZXJld29sZiIsCiAgICBtYXggPSAzLAogICAgc2FsYXJ5ID0gNTAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIldlcmV3b2x2ZXMiLAoJUGxheWVyU3Bhd24gPSBmdW5jdGlvbihwbHkpCgkJcGx5OlNldEhlYWx0aCgxNTApCgkJcGx5OlNldEFybW9yKDApCgllbmQsCgkJUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQoJCXBseTp0ZWFtQmFuKCkKCQlwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKCWVuZAp9KQpURUFNX1dFUkVXT0xGID0gRGFya1JQLmNyZWF0ZUpvYigiV2VyZXdvbGYgUHVwIiwgewogICAgY29sb3IgPSBDb2xvcig1MCwgNDAsIDEwMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvbnBjL3RmYV90dzNfY29tYmluZS9jaXJpX3lvdW5nLm1kbCIsCgkJIm1vZGVscy9tb2RlbHMvZXRoYW4vZXRoYW4ubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIFdlcmV3b2xmIFB1cCwgeW91IGFyZSB2ZXJ5IHlvdW5nIGFuZCBzbWFsbC4gWW91IGZvbGxvdyB0aGUgTHVuYSB3ZXJld29sZiBhcm91bmQgbGVhcm5pbmcgaG93IHRvIGJlIGEgd2VyZXdvbGYuXV0sCiAgICB3ZWFwb25zID0geyJwdXBfd2VyZXdvbGZfc3dlcCJ9LAogICAgY29tbWFuZCA9ICJ3ZXJld29sZnB1cCIsCiAgICBtYXggPSAzLAogICAgc2FsYXJ5ID0gNTAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIldlcmV3b2x2ZXMiLAoJbW9kZWxTY2FsZSA9IDAuNywKCVBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQoJCXBseTpTZXRIZWFsdGgoMTAwKQoJCXBseTpTZXRBcm1vcigwKQoJZW5kLAoJCVBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKCQlwbHk6dGVhbUJhbigpCgkJcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCgllbmQKfSkKLS1Ed2FydmVzIGFuZCBlbHZlcwpURUFNX0RXQVJGID0gRGFya1JQLmNyZWF0ZUpvYigiRHdhcmYgTWFsZSIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjAsIDE1MCwgMjAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL21haWxlci93b3dfY2hhcmFjdGVycy93b3dhbmltX2R3YXJmX21hbGUubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIE1hbGUgRHdhcmYsIHlvdSBhcmUgc21hbGwgYnV0IHN0cm9uZyFdXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9ic19zaG9ydHN3b3JkIn0sCiAgICBjb21tYW5kID0gImR3YXJmbWFsZSIsCiAgICBtYXggPSA1LAogICAgc2FsYXJ5ID0gNDAsCiAgICBhZG1pbiA9IDAsCgltb2RlbFNjYWxlID0gMC44LAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJEd2FydmVzIGFuZCBFbHZlcyIsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0RXQVJGID0gRGFya1JQLmNyZWF0ZUpvYigiRHdhcmYgRmVtYWxlIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvbWFpbGVyL3dvd19jaGFyYWN0ZXJzL3dvd2FuaW1fZHdhcmZfZmVtYWxlLm1kbCIsCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgYSBGZW1hbGUgRHdhcmYsIHlvdSBhcmUgc21hbGwgYnV0IHN0cm9uZyFdXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9ic19zaG9ydHN3b3JkIn0sCiAgICBjb21tYW5kID0gImR3YXJmZmVtYWxlIiwKICAgIG1heCA9IDUsCiAgICBzYWxhcnkgPSA0MCwKICAgIGFkbWluID0gMCwKCW1vZGVsU2NhbGUgPSAwLjgsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkR3YXJ2ZXMgYW5kIEVsdmVzIiwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fRFdBUkYgPSBEYXJrUlAuY3JlYXRlSm9iKCJEd2FyZiBXYXJyaW9yIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL2R3YXJmLm1kbCIsCgkJIm1vZGVscy9rb3ovbG90ci9naW1saS9naW1saS5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGEgRmVtYWxlIER3YXJmLCB5b3UgYXJlIHNtYWxsIGJ1dCBzdHJvbmchXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fc2t5X2F4ZV9kYWVkcmljIn0sCiAgICBjb21tYW5kID0gImR3YXJmd2FycmlvciIsCiAgICBtYXggPSA1LAogICAgc2FsYXJ5ID0gNjAsCiAgICBhZG1pbiA9IDAsCgltb2RlbFNjYWxlID0gMC44LAogICAgbGV2ZWwgPSA4LAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsIAogICAgY2F0ZWdvcnkgPSAiRHdhcnZlcyBhbmQgRWx2ZXMiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9FTEYgPSBEYXJrUlAuY3JlYXRlSm9iKCJXb29kIEVsZiIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjAsIDE1MCwgMjAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL2tvei9sb3RyL2xlZ29sYXMvbGVnb2xhcy5tZGwiLAoJCSJtb2RlbHMva296L2xvdHIvZW93eW4vZW93eW4ubWRsIiwKCQkibW9kZWxzL3BsYXllci90ZmFfdHczL21pbHZhLm1kbCIsCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgYSBXb29kIEVsZiFdXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9tb3Jfbm9ybWFsIiwgIndlYXBvbl9ic19zdHJhaWdodHN3b3JkIn0sCiAgICBjb21tYW5kID0gIndvb2RlbGYiLAogICAgbWF4ID0gMywKICAgIHNhbGFyeSA9IDUwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsIAogICAgY2F0ZWdvcnkgPSAiRHdhcnZlcyBhbmQgRWx2ZXMiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9FTEYgPSBEYXJrUlAuY3JlYXRlSm9iKCJCbG9vZCBFbGYiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9tYWlsZXIvd293X2NoYXJhY3RlcnMvd293YW5pbV9ibG9vZGVsZl9mZW1hbGUubWRsIiwKCQkibW9kZWxzL21haWxlci93b3dfY2hhcmFjdGVycy93b3dhbmltX2Jsb29kZWxmX21hbGUubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIEJsb29kIEVsZiFdXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9tb3JfbG9uZ2JvdyIsICJ3ZWFwb25fYnNfc3RyYWlnaHRzd29yZCJ9LAogICAgY29tbWFuZCA9ICJibG9vZGVsZiIsCiAgICBtYXggPSAyLAogICAgc2FsYXJ5ID0gNjAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwgCiAgICBjYXRlZ29yeSA9ICJEd2FydmVzIGFuZCBFbHZlcyIsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0VMRiA9IERhcmtSUC5jcmVhdGVKb2IoIk5pZ2h0IEVsZiIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjAsIDE1MCwgMjAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL21haWxlci93b3dfY2hhcmFjdGVycy93b3dhbmltX25pZ2h0ZWxmX2ZlbWFsZS5tZGwiLAoJCSJtb2RlbHMvZ29uem8va2hlZWxhL2toZWVsYS5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGEgTmlnaHQgRWxmIV1dLAogICAgd2VhcG9ucyA9IHsid2VhcG9uX21vcl9sb25nYm93IiwgIndlYXBvbl9ic19zdHJhaWdodHN3b3JkIn0sCiAgICBjb21tYW5kID0gIm5pZ2h0ZWxmIiwKICAgIG1heCA9IDIsCiAgICBzYWxhcnkgPSA2MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLCAKICAgIGNhdGVnb3J5ID0gIkR3YXJ2ZXMgYW5kIEVsdmVzIiwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fRUxGID0gRGFya1JQLmNyZWF0ZUpvYigiRGFyayBFbGYiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9wbGF5ZXIveWV2b2NvcmUvZGFya19lbGYvZGFya2VsZi5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGEgRGFyayBFbGYhXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fbW9yX2Jvd19vZl9zaGFkb3dzIiwgIndlYXBvbl9ic19zdHJhaWdodHN3b3JkIn0sCiAgICBjb21tYW5kID0gImRhcmtlbGYiLAogICAgbWF4ID0gMiwKICAgIHNhbGFyeSA9IDYwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsIAogICAgY2F0ZWdvcnkgPSAiRHdhcnZlcyBhbmQgRWx2ZXMiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9FTEYgPSBEYXJrUlAuY3JlYXRlSm9iKCJFbGYgUHJpbmNlc3MiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9ucGMvY29tYmluZS90ZmFfdHczL21hcmdhcml0YS5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIHRoZSBQcmluY2VzcyBvZiBFbHZlcyFdXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9tb3JfYXVyaWVsIiwgIndlYXBvbl9ic19zdHJhaWdodHN3b3JkIn0sCiAgICBjb21tYW5kID0gImVsZnByaW5jZXNzIiwKICAgIG1heCA9IDIsCiAgICBzYWxhcnkgPSAxMDAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwgCiAgICBjYXRlZ29yeSA9ICJEd2FydmVzIGFuZCBFbHZlcyIsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0VMRiA9IERhcmtSUC5jcmVhdGVKb2IoIkVsZiBRdWVlbiIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjAsIDE1MCwgMjAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL3BsYXllci90ZmFfdHczL2ZyYW4ubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSB0aGUgUXVlZW4gb2YgRWx2ZXMhXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fbW9yX2F1cmllbCIsICJ3ZWFwb25fYnNfc3RyYWlnaHRzd29yZCJ9LAogICAgY29tbWFuZCA9ICJlbGZxdWVlbiIsCiAgICBtYXggPSAxLAogICAgc2FsYXJ5ID0gMTAwLAogICAgYWRtaW4gPSAwLAoJbGV2ZWwgPSA4LAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsIAogICAgY2F0ZWdvcnkgPSAiRHdhcnZlcyBhbmQgRWx2ZXMiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKLS1XaXRjaGVzClRFQU1fV0lUQ0hNT1RIRVIgPSBEYXJrUlAuY3JlYXRlSm9iKCJNb3RoZXIiLCB7CiAgICBjb2xvciA9IENvbG9yKDE2LCAxNDUsIDEsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL3BsYXllci90ZmFfZGN1X2l2eS9pdnlfYWsubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSB0aGUgd2l0Y2ggbW90aGVyLCB0YWtlIGNhcmUgb2YgeW91ciB3aXRjaGVzIV1dLAogICAgd2VhcG9ucyA9IHsicG9rZV9naG9zdF9uaWdodHNoYWRlIn0sCiAgICBjb21tYW5kID0gIndpdGNobW90aGVyIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSAxMjAsCiAgICBhZG1pbiA9IDAsCiAgICBsZXZlbCA9IDEyLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJXaXRjaGVzIiwKICAgIFBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQogICAgICAgIHBseTpTZXRIZWFsdGgoMTc1KQogICAgZW5kLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9XSVRDSEVTID0gRGFya1JQLmNyZWF0ZUpvYigiU2VkdWN0cmVzcyIsIHsKICAgIGNvbG9yID0gQ29sb3IoMTYsIDE0NSwgMSwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV9kY3VfaXZ5L2l2eV9pbmoubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSB0aGUgd2l0Y2ggc2VkdWNlciwgeW91IG11c3QgbHVyZSBwZW9wbGUgYmFjayBpbnRvIHlvdXIgaGlkZW91dCFdXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9jdWZmX3JvcGUiLCAicG9rZV9naG9zdF9jb25mdXNlcmF5In0sCiAgICBjb21tYW5kID0gInNlZHVjdHJlc3MiLAogICAgbWF4ID0gMiwKICAgIHNhbGFyeSA9IDgwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJXaXRjaGVzIiwKICAgIFBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQogICAgICAgIHBseTpTZXRIZWFsdGgoNzUpCiAgICBlbmQsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX1dJVENIRVMgPSBEYXJrUlAuY3JlYXRlSm9iKCJSaXR1YWxpc3QiLCB7CiAgICBjb2xvciA9IENvbG9yKDE2LCAxNDUsIDEsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL3BsYXllci90ZmFfZGN1X2l2eS9pdnlfYy5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIHRoZSB3aXRjaCByaXR1YWxpc3QsIHlvdSBtYWtlIHJpdHVhbHMgYW5kIHNhY3JpZmljZXMhIFlvdSBjYW4gaGVhbCB0aGUgY292ZW4uXV0sCiAgICB3ZWFwb25zID0geyJjYXRfZ3Jhc3NfaGVhbHB1bHNlIn0sCiAgICBjb21tYW5kID0gIlJpdHVhbGlzdCIsCiAgICBtYXggPSAxLAogICAgc2FsYXJ5ID0gNjAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIldpdGNoZXMiLAogICAgUGxheWVyU3Bhd24gPSBmdW5jdGlvbihwbHkpCiAgICAgICAgcGx5OlNldEhlYWx0aCg3NSkKICAgIGVuZCwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fV0lUQ0hFUyA9IERhcmtSUC5jcmVhdGVKb2IoIlByb3RlY3RvciIsIHsKICAgIGNvbG9yID0gQ29sb3IoMTYsIDE0NSwgMSwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV9kY3VfaXZ5L2l2eV9hYy5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIHRoZSB3aXRjaCBwcm90ZWN0b3IgZW1wb3dlcmVkIHdpdGggdGhlIHBvd2VyIG9mIG5hdHVyZS4gUHJvdGVjdCB5b3VyIHNpc3RlcnMhXV0sCiAgICB3ZWFwb25zID0geyJjYXRfZ3Jhc3NfZnJlbnp5cGxhbnQiLCAiY2F0X2dyYXNzX2xpZ2h0c2NyZWVuIiwgImNhdF9ncmFzc19sZWFmc3Rvcm0ifSwKICAgIGNvbW1hbmQgPSAicHJvdGVjdG9yIiwKICAgIG1heCA9IDIsCiAgICBzYWxhcnkgPSA5MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiV2l0Y2hlcyIsCiAgICBQbGF5ZXJTcGF3biA9IGZ1bmN0aW9uKHBseSkKICAgICAgICBwbHk6U2V0SGVhbHRoKDE3NSkKICAgICAgICBwbHk6U2V0QXJtb3IoNTApCiAgICBlbmQsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQotLUxpemFyZHMtLQpURUFNX0FSR09OSUFOID0gRGFya1JQLmNyZWF0ZUpvYigiQXJnb25pYW4iLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9tYWlsZXIvY2hhcmFjdGVycy90ZXN2X21hbGVhcmdvbmlhbi5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGFuIEFyZ29uaWFuLCB5b3UgYXJlIHNuZWFreSFdXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9ic19zaG9ydHN3b3JkIn0sCiAgICBjb21tYW5kID0gImFyZ29uaWFuIiwKICAgIG1heCA9IDUsCiAgICBzYWxhcnkgPSA0MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiTGl6YXJkcyBhbmQgQW5pbWFscyIsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX1JZVUsgPSBEYXJrUlAuY3JlYXRlSm9iKCJSeXVrIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvbGl6YXJkcy9saXphcmRtYW5rZXNlci5tZGwiLAogICAgICAgICJtb2RlbHMvbGl6YXJkcy9saXphcmRtYW52ZXJhZmltLm1kbCIsCiAgICAgICAgIm1vZGVscy9saXphcmRzL2xpemFyZG1hbnZkLm1kbCIsCiAgICAgICAgIm1vZGVscy9saXphcmRzL2xpemFyZG1hbnNoYXJrLm1kbCIsCiAgICAgICAgIm1vZGVscy9saXphcmRzL2xpemFyZG1hbmdhcndheS5tZGwiLAogICAgICAgICJtb2RlbHMvbGl6YXJkcy9saXphcmRtYW5la2luYXIubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhbiBSeXVrLCB5b3UgYXJlIGFuIGFkdmFuY2VkIEFlb24hXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fYnNfcmFpZGVyIiwgIndlYXBvbl9jdWZmX3JvcGUiLCAiZW50X2JzX2tpdGUifSwKICAgIGNvbW1hbmQgPSAicnl1ayIsCiAgICBtYXggPSAyLAogICAgc2FsYXJ5ID0gNDAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkxpemFyZHMgYW5kIEFuaW1hbHMiLAogICAgUGxheWVyU3Bhd24gPSBmdW5jdGlvbihwbHkpCiAgICAgICAgcGx5OlNldEhlYWx0aCgxOTApCiAgICBlbmQsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0FFT04gPSBEYXJrUlAuY3JlYXRlSm9iKCJBZW9uIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvYWVvbnBtL2Flb24ubWRsIiwKICAgICAgICAibW9kZWxzL2Flb25wbS9hZW9uMi5tZGwiCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgYW4gQWVvbiwgeW91IGFyZSBhZGVwdCBhdCBiYXR0bGUhXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fYnNfc2NpbWl0YXIiLCAiZW50X2JzX2J1Y2tsZXIifSwKICAgIGNvbW1hbmQgPSAiYWVvbiIsCiAgICBtYXggPSAzLAogICAgc2FsYXJ5ID0gNjAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkxpemFyZHMgYW5kIEFuaW1hbHMiLAogICAgUGxheWVyU3Bhd24gPSBmdW5jdGlvbihwbHkpCiAgICAgICAgcGx5OlNldEhlYWx0aCgxNTApCiAgICBlbmQsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0tPTU9ETyA9IERhcmtSUC5jcmVhdGVKb2IoIktvbW9kbyIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjAsIDE1MCwgMjAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL21haWxlci93b3dfY2hhcmFjdGVycy93b3dhbmltX2tvbW9kb2RyYWdvbi5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGEgS29tb2RvIExpemFyZCwgeW91IGZvbGxvdyB5b3VyIG93bmVyIV1dLAogICAgd2VhcG9ucyA9IHsiIn0sCiAgICBjb21tYW5kID0gImtvbW9kbyIsCiAgICBtYXggPSAyLAogICAgc2FsYXJ5ID0gMzAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkxpemFyZHMgYW5kIEFuaW1hbHMiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9NVVJMT0MgPSBEYXJrUlAuY3JlYXRlSm9iKCJNdXJsb2MiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9tYWlsZXIvd293X2NoYXJhY3RlcnMvd293YW5pbV9tdXJsb2MubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIE11cmxvYywgeW91IGZvbGxvdyB5b3VyIG93bmVyIV1dLAogICAgd2VhcG9ucyA9IHsiY2F0X3dhdGVyX2J1YmJsZSJ9LAogICAgY29tbWFuZCA9ICJtdXJsb2MiLAogICAgbWF4ID0gMiwKICAgIHNhbGFyeSA9IDMwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJMaXphcmRzIGFuZCBBbmltYWxzIiwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fRE9HID0gRGFya1JQLmNyZWF0ZUpvYigiRG9nIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvZmFsbG91dGRvZy9mYWxsb3V0ZG9nLm1kbCIsCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgYSBkb2csIHlvdSBmb2xsb3cgeW91ciBvd25lciFdXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9kb2cifSwKICAgIGNvbW1hbmQgPSAiZG9nIiwKICAgIG1heCA9IDIsCiAgICBzYWxhcnkgPSAzMCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiTGl6YXJkcyBhbmQgQW5pbWFscyIsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0NBVCA9IERhcmtSUC5jcmVhdGVKb2IoIkNhdCIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjAsIDE1MCwgMjAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL3lldm9jb3JlL2NhdC9jYXQubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIGNhdCwgeW91IGZvbGxvdyB5b3VyIG93bmVyIV1dLAogICAgd2VhcG9ucyA9IHsibWVvd3N3ZXAifSwKICAgIGNvbW1hbmQgPSAiY2F0IiwKICAgIG1heCA9IDIsCiAgICBzYWxhcnkgPSAzMCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiTGl6YXJkcyBhbmQgQW5pbWFscyIsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQotLUdvYmxpbnMKVEVBTV9HT0JMSU4gPSBEYXJrUlAuY3JlYXRlSm9iKCJLaW5nIE9mIEdvYmxpbnMiLCB7CiAgICBjb2xvciA9IENvbG9yKDE0NywgMCwgMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvbWFpbGVyL3dvd19jaGFyYWN0ZXJzL3dvd2FuaW1fZ2FsbHl3aXgubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSB0aGUgZ29ibGluIGtpbmcsIHJ1bGUgeW91ciBraW5nZG9tIV1dLAogICAgd2VhcG9ucyA9IHsid2VhcG9uX2JzX3JhaWRlciJ9LAogICAgY29tbWFuZCA9ICJnb2JsaW5raW5nIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSAxNTAsCiAgICBhZG1pbiA9IDAsCiAgICBsZXZlbCA9IDE1LAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJHb2JsaW4gYW5kIE9yY3MiLAogICAgUGxheWVyU3Bhd24gPSBmdW5jdGlvbihwbHkpCiAgICAgICAgcGx5OlNldEhlYWx0aCgyMDApCiAgICBlbmQsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0dPQkxJTiA9IERhcmtSUC5jcmVhdGVKb2IoIk9yYyBXYXJsb2NrIiwgewogICAgY29sb3IgPSBDb2xvcigxNDcsIDAsIDAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL21haWxlci9jaGFyYWN0ZXJzL2xlZ2lvbmd1bGRhbi5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIHRoZSBvcmMgd2FybG9ja11dLAogICAgd2VhcG9ucyA9IHsicm9sbG91dCJ9LAogICAgY29tbWFuZCA9ICJvcmN3YXJsb2NrIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSAxMjAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkdvYmxpbiBhbmQgT3JjcyIsCiAgICBQbGF5ZXJTcGF3biA9IGZ1bmN0aW9uKHBseSkKICAgICAgICBwbHk6U2V0SGVhbHRoKDE1MCkKICAgIGVuZCwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fR09CTElOID0gRGFya1JQLmNyZWF0ZUpvYigiT3JjIFdhcnJpb3IiLCB7CiAgICBjb2xvciA9IENvbG9yKDE0NywgMCwgMCwgMjU1KSwKICAgIG1vZGVsID0gewoJICAgICJtb2RlbHMvbWFpbGVyL2NoYXJhY3RlcnMvbWVzc2lhaG9yY2NoaWVmLm1kbCIsCgkJIm1vZGVscy9tYWlsZXIvY2hhcmFjdGVycy9tZXNzaWFob3JjLm1kbCIsCiAgICAgICAgIm1vZGVscy9tYWlsZXIvd293X2NoYXJhY3RlcnMvd293YW5pbV9vcmNfbWFsZS5tZGwiLAogICAgICAgICJtb2RlbHMvbWFpbGVyL3dvd19jaGFyYWN0ZXJzL3dvd2FuaW1fb3JjX2ZlbWFsZS5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGEgb3JjIHdhcnJpb3IhXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fYnNfZ2xhZGl1cyIsICJlbnRfYnNfYnVja2xlciIsICJ3ZWFwb25fY3VmZl9yb3BlIn0sCiAgICBjb21tYW5kID0gIm9yY3dhcnJpb3IiLAogICAgbWF4ID0gMywKICAgIHNhbGFyeSA9IDgwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJHb2JsaW4gYW5kIE9yY3MiLAogICAgUGxheWVyU3Bhd24gPSBmdW5jdGlvbihwbHkpCiAgICAgICAgcGx5OlNldEhlYWx0aCgxMjUpCiAgICAgICAgcGx5OlNldEFybW9yKDUwKQogICAgZW5kLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9HT0JMSU4gPSBEYXJrUlAuY3JlYXRlSm9iKCJHb2JsaW4gU3Vib3JkaW5hdGUiLHsKICAgIGNvbG9yID0gQ29sb3IoMTQ3LCAwLCAwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9tYWlsZXIvd293X2NoYXJhY3RlcnMvd293YW5pbV9nb2JsaW5fbWFsZS5tZGwiLAogICAgICAgICJtb2RlbHMvbWFpbGVyL3dvd19jaGFyYWN0ZXJzL3dvd2FuaW1fZ29ibGluX2ZlbWFsZS5tZGwiCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgYSBnb2JsaW4gc3Vib3JkaW5hdGVdXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9ic19zaG9ydHN3b3JkIiwgImVudF9ic19idWNrbGVyIn0sCiAgICBjb21tYW5kID0gImdvYmxpbnN1Ym9yZGluYXRlIiwKICAgIG1heCA9IDQsCiAgICBzYWxhcnkgPSAyNSwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiR29ibGluIGFuZCBPcmNzIiwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fT1JDQkxBQ0tTTUlUSCA9IERhcmtSUC5jcmVhdGVKb2IoIk9yYyBCbGFja3NtaXRoIiwgewogICAgY29sb3IgPSBDb2xvcigxNDcsIDAsIDAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL21haWxlci93b3dfY2hhcmFjdGVycy93b3dhbmltX3JleHhhci5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGEgb3JjIGJsYWNrc21pdGgsIHlvdSBtb3N0bHkgc3RheSBpbiB0aGUgYmFzZSBzZWxsaW5nIHlvdXIgd2FyZXMhXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fYnNfYnJvYWRzd29yZCJ9LAogICAgY29tbWFuZCA9ICJvcmNibGFja3NtaXRoIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSA5NSwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiR29ibGluIGFuZCBPcmNzIiwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pCi0tZmFudGFzeQpURUFNX0RSVUlEID0gRGFya1JQLmNyZWF0ZUpvYigiVGhlIERydWlkIiwgewogICAgY29sb3IgPSBDb2xvcigxNDcsIDAsIDAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL21haWxlci9jaGFyYWN0ZXJzL2VsZmRydWlkLm1kbCIsCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgdGhlIGRydWlkLCB5b3UgdXNlIHRoZSBwb3dlcnMgb2YgbmF0dXJlIHRvIGtpbGwgeW91ciBmb2VzIGFuZCBwcm90ZWN0IHlvdXIgYWxsaWVzIV1dLAogICAgd2VhcG9ucyA9IHsid2VhcG9uX21vcl9hdXJpZWwiLCAicG93ZXJfZ2VtIn0sCiAgICBjb21tYW5kID0gImRydWlkIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSA4MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKCUxldmVsID0gMTUsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkZhbnRhc3kiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9TVUNDVUJVUyA9IERhcmtSUC5jcmVhdGVKb2IoIlRoZSBTdWNjdWJ1cyIsIHsKICAgIGNvbG9yID0gQ29sb3IoMTQ3LCAwLCAwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9tYWlsZXIvd293X2NoYXJhY3RlcnMvd293YW5pbV9zdWNjdWJ1cy5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIHRoZSBTdWNjdWJ1cywgeW91IGx1cmUgeW91ciBmb2VzIGluLCBjaG9vc2luZyB3aGF0IHlvdSB3YW50IHRvIGRvIHdpdGggdGhlbSFdXSwKICAgIHdlYXBvbnMgPSB7InBva2VfZ2hvc3RfbWlycm9yY29hdCIsICJ3ZWFwb25fY3VmZl9yb3BlIn0sCiAgICBjb21tYW5kID0gInN1Y2N1YnVzIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSA4MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKCUxldmVsID0gMjAsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkZhbnRhc3kiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9BTElDRSA9IERhcmtSUC5jcmVhdGVKb2IoIkFsaWNlIiwgewogICAgY29sb3IgPSBDb2xvcigxNDcsIDAsIDAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL2FsaWNlL2FsaWNlX3BtL2FsaWNlLm1kbCIsCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgQWxpY2UsIHNvbWUga25vdyB5b3UgYXMgSG9sbHkhXV0sCiAgICB3ZWFwb25zID0geyJjYXRfZ3Jhc3NfZnJlbnp5cGxhbnQiLCAid2VhcG9uX2JzX3JhcGllciJ9LAogICAgY29tbWFuZCA9ICJhbGljZSIsCiAgICBtYXggPSAxLAogICAgc2FsYXJ5ID0gODAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCglMZXZlbCA9IDE1LAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJGYW50YXN5IiwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fR0lBTlQgPSBEYXJrUlAuY3JlYXRlSm9iKCJHaWFudCIsIHsKICAgIGNvbG9yID0gQ29sb3IoMTQ3LCAwLCAwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My96b2x0YW4ubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIEdpYW50LCB5b3UgbWF5IG5vdCBiZSB0aGUgc21hcnRlc3QsIGJ1dCB5b3UgYXJlIHN0cm9uZyFdXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9za3lfYXhlX2RhZWRyaWMifSwKICAgIGNvbW1hbmQgPSAiZ2lhbnQiLAogICAgbWF4ID0gMSwKICAgIHNhbGFyeSA9IDgwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAoJTGV2ZWwgPSAxMiwKCW1vZGVsU2NhbGUgPSAxLjQsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkZhbnRhc3kiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKLS12aXAKVEVBTV9EUkFHT04gPSBEYXJrUlAuY3JlYXRlSm9iKCJEcmFnb24iLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9tYWlsZXIvd293X2NoYXJhY3RlcnMvd293YW5pbV9kcmFnb253aGVscC5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIHRoZSBnb2JsaW4ga2luZ3MgcGV0IGRyYWdvbi4gWW91IG11c3QgZm9sbG93IGhpcyBjb21tYW5kcyFdXSwKICAgIHdlYXBvbnMgPSB7ImZsaWdodF9zd2VwIn0sCiAgICBjb21tYW5kID0gImRyYWdvbiIsCiAgICBtYXggPSAxLAogICAgc2FsYXJ5ID0gNTAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlZJUCBKb2JzIiwKICAgICBjdXN0b21DaGVjayA9IGZ1bmN0aW9uKHBseSkgcmV0dXJuIENMSUVOVCBvciB0YWJsZS5IYXNWYWx1ZSh7ImFkbWluIiwgImhlYWRhZG1pbiIsICJvdmVyc2VlciIsICJzdXBlcmFkbWluIiwgIlZJUCIsICJFcGljVklQIiwgIm1vZCIsICJkZXZlbG9wZXIifSwgcGx5OkdldFVzZXJHcm91cCgpKSBvciBwbHk6SXNBZG1pbigpIG9yIHBseTpTdGVhbUlEKCkgPT0gIlNURUFNXzA6MDoxMjQ1OTI3MDIgIiBlbmQsCiAgICAgICAgICAgIEN1c3RvbUNoZWNrRmFpbE1zZyA9ICJZb3UgbXVzdCBiZSBhIGRvbmF0b3IgdG8gYWNjZXNzIHRoaXMgam9iIiwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fV09MRiA9IERhcmtSUC5jcmVhdGVKb2IoIldvbGYiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9mYWxsb3V0ZG9nL2JsYWNrL2ZhbGxvdXRkb2cubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIFdvbGYsIHlvdSBnbyBmZXJhbCwgb3IgZm9sbG93IHlvdXIgbGVhZGVyIV1dLAogICAgd2VhcG9ucyA9IHsid2VhcG9uX2RvZyJ9LAogICAgY29tbWFuZCA9ICJ3b2xmIiwKICAgIG1heCA9IDQsCiAgICBzYWxhcnkgPSA1MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiVklQIEpvYnMiLAogICAgIGN1c3RvbUNoZWNrID0gZnVuY3Rpb24ocGx5KSByZXR1cm4gQ0xJRU5UIG9yIHRhYmxlLkhhc1ZhbHVlKHsiYWRtaW4iLCAiaGVhZGFkbWluIiwgIm92ZXJzZWVyIiwgInN1cGVyYWRtaW4iLCAiVklQIiwgIkVwaWNWSVAiLCAibW9kIiwgImRldmVsb3BlciJ9LCBwbHk6R2V0VXNlckdyb3VwKCkpIG9yIHBseTpJc0FkbWluKCkgb3IgcGx5OlN0ZWFtSUQoKSA9PSAiU1RFQU1fMDowOjEyNDU5MjcwMiAiIGVuZCwKICAgICAgICAgICAgQ3VzdG9tQ2hlY2tGYWlsTXNnID0gIllvdSBtdXN0IGJlIGEgZG9uYXRvciB0byBhY2Nlc3MgdGhpcyBqb2IiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9CRUFSID0gRGFya1JQLmNyZWF0ZUpvYigiQmVhciIsIHsKICAgIGNvbG9yID0gQ29sb3IoMjAsIDE1MCwgMjAsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL3N0ZXJsaW5nL2Jyb3duX2JlYXIubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBhIEJlYXIsIHlvdSBnbyBmZXJhbCwgb3IgZm9sbG93IHlvdXIgbGVhZGVyIV1dLAogICAgd2VhcG9ucyA9IHsid2VhcG9uX3BldCJ9LAogICAgY29tbWFuZCA9ICJiZWFyIiwKICAgIG1heCA9IDIsCiAgICBzYWxhcnkgPSA1MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiVklQIEpvYnMiLAogICAgIGN1c3RvbUNoZWNrID0gZnVuY3Rpb24ocGx5KSByZXR1cm4gQ0xJRU5UIG9yIHRhYmxlLkhhc1ZhbHVlKHsiYWRtaW4iLCAiaGVhZGFkbWluIiwgIm92ZXJzZWVyIiwgInN1cGVyYWRtaW4iLCAiVklQIiwgIkVwaWNWSVAiLCAibW9kIiwgImRldmVsb3BlciJ9LCBwbHk6R2V0VXNlckdyb3VwKCkpIG9yIHBseTpJc0FkbWluKCkgb3IgcGx5OlN0ZWFtSUQoKSA9PSAiU1RFQU1fMDowOjEyNDU5MjcwMiAiIGVuZCwKICAgICAgICAgICAgQ3VzdG9tQ2hlY2tGYWlsTXNnID0gIllvdSBtdXN0IGJlIGEgZG9uYXRvciB0byBhY2Nlc3MgdGhpcyBqb2IiLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9BTENIRU1JU1QgPSBEYXJrUlAuY3JlYXRlSm9iKCJUaGUgQWxjaGVtaXN0IiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVyL3RmYV90dzMva2VpcmFfYWx0Lm1kbCIsCiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9hdmFsbGFjaC5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIFRoZSBhbGNoZW1pc3QsIHlvdSBjYW4gbWFrZSBkaWZmZXJlbnQgcG90aW9ucyFdXSwKICAgIHdlYXBvbnMgPSB7fSwKICAgIGNvbW1hbmQgPSAidGhlYWxjaGVtaXN0IiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSAxNTAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkh1bWFucyIsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0hVTlRSRVNTID0gRGFya1JQLmNyZWF0ZUpvYigiVGhlIEh1bnRyZXNzIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVycy9tal9kYmRfYmVhci5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIHRoZSBodW50cmVzcyEsIHlvdSBodW50IGFueSBhbmltYWwgeW91IHNlZS4gU29tZXRpbWVzIG9wdGluZyBmb3IgdGhlIHNsYXVnaHRlciBhbmQgc2FjcmlmaWNlIG9mIGh1bWFuIGJsb29kLl1dLAogICAgd2VhcG9ucyA9IHsid2VhcG9uX3NreV93YXJheGVfZHJhdWdyIiwgIndlYXBvbl9jdWZmX3JvcGUifSwKICAgIGNvbW1hbmQgPSAiaHVudHJlc3MiLAogICAgbWF4ID0gMSwKICAgIHNhbGFyeSA9IDE1MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiVklQIEpvYnMiLAogICAgIGN1c3RvbUNoZWNrID0gZnVuY3Rpb24ocGx5KSByZXR1cm4gQ0xJRU5UIG9yIHRhYmxlLkhhc1ZhbHVlKHsiYWRtaW4iLCAiaGVhZGFkbWluIiwgIm92ZXJzZWVyIiwgInN1cGVyYWRtaW4iLCAiVklQIiwgIkVwaWNWSVAiLCAibW9kIiwgImRldmVsb3BlciJ9LCBwbHk6R2V0VXNlckdyb3VwKCkpIG9yIHBseTpJc0FkbWluKCkgb3IgcGx5OlN0ZWFtSUQoKSA9PSAiU1RFQU1fMDowOjEyNDU5MjcwMiAiIGVuZCwKICAgICAgICAgICAgQ3VzdG9tQ2hlY2tGYWlsTXNnID0gIllvdSBtdXN0IGJlIGEgZG9uYXRvciB0byBhY2Nlc3MgdGhpcyBqb2IiLAogICAgUGxheWVyU3Bhd24gPSBmdW5jdGlvbihwbHkpCiAgICAgICAgcGx5OlNldEhlYWx0aCgxNTApCiAgICAgICAgcGx5OlNldEFybW9yKDc1KQogICAgZW5kLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKVEVBTV9MRUdJT05BUlkgPSBEYXJrUlAuY3JlYXRlSm9iKCJUaGUgTGFzdCBMZWdpb25hcnkiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9hdWRpdG9yL2Zudi9sYW5pdXMvY2hyX2xlZ2F0ZV9sYW5pdXMubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSB0aGUgbGFzdCBsZWdpb25hcnkhXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fYnNfbG9uZ3N3b3JkIiwgImVudF9ic19zY3V0dW0ifSwKICAgIGNvbW1hbmQgPSAibGVnaW9uYXJ5IiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSAxNTAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlZJUCBKb2JzIiwKICAgICBjdXN0b21DaGVjayA9IGZ1bmN0aW9uKHBseSkgcmV0dXJuIENMSUVOVCBvciB0YWJsZS5IYXNWYWx1ZSh7ImFkbWluIiwgImhlYWRhZG1pbiIsICJvdmVyc2VlciIsICJzdXBlcmFkbWluIiwgIlZJUCIsICJFcGljVklQIiwgIm1vZCIsICJkZXZlbG9wZXIifSwgcGx5OkdldFVzZXJHcm91cCgpKSBvciBwbHk6SXNBZG1pbigpIG9yIHBseTpTdGVhbUlEKCkgPT0gIlNURUFNXzA6MDoxMjQ1OTI3MDIgIiBlbmQsCiAgICAgICAgICAgIEN1c3RvbUNoZWNrRmFpbE1zZyA9ICJZb3UgbXVzdCBiZSBhIGRvbmF0b3IgdG8gYWNjZXNzIHRoaXMgam9iIiwKICAgIFBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQogICAgICAgIHBseTpTZXRIZWFsdGgoMjAwKQogICAgICAgIHBseTpTZXRBcm1vcig3NSkKICAgIGVuZCwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fV0lUQ0hIVU5URVIgPSBEYXJrUlAuY3JlYXRlSm9iKCJXaXRjaCBIdW50ZXIiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9vbGFmL2lucXVpc2l0b3IvaW5xdWlzaXRvci5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIHRoZSB3aXRjaCBodW50ZXIhXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25fbW9yX2xvbmdib3ciLCAid2VhcG9uX2JzX2xvbmdzd29yZCIsICJ3ZWFwb25fY3VmZl9yb3BlIn0sCiAgICBjb21tYW5kID0gIndpdGNoaHVudGVyIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSAxNTAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlZJUCBKb2JzIiwKICAgICBjdXN0b21DaGVjayA9IGZ1bmN0aW9uKHBseSkgcmV0dXJuIENMSUVOVCBvciB0YWJsZS5IYXNWYWx1ZSh7ImFkbWluIiwgImhlYWRhZG1pbiIsICJvdmVyc2VlciIsICJzdXBlcmFkbWluIiwgIlZJUCIsICJFcGljVklQIiwgIm1vZCIsICJkZXZlbG9wZXIifSwgcGx5OkdldFVzZXJHcm91cCgpKSBvciBwbHk6SXNBZG1pbigpIG9yIHBseTpTdGVhbUlEKCkgPT0gIlNURUFNXzA6MDoxMjQ1OTI3MDIgIiBlbmQsCiAgICAgICAgICAgIEN1c3RvbUNoZWNrRmFpbE1zZyA9ICJZb3UgbXVzdCBiZSBhIGRvbmF0b3IgdG8gYWNjZXNzIHRoaXMgam9iIiwKICAgIFBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQogICAgICAgIHBseTpTZXRIZWFsdGgoMjAwKQogICAgICAgIHBseTpTZXRBcm1vcig3NSkKICAgIGVuZCwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fRkFMU0VMT1JEID0gRGFya1JQLmNyZWF0ZUpvYigiVGhlIEZhbHNlIExvcmQiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9wbGF5ZXIvdGZhX3R3My9yYWRvdmlkLm1kbCIsCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgYSBmYWxzZSBsb3JkLCB5b3UgY3JhdmUgZm9yIHBvd2VyIGFuZCBmYW1lIV1dLAogICAgd2VhcG9ucyA9IHsid2VhcG9uX2JzX2Jyb2Fkc3dvcmQiLCAid2VhcG9uX2N1ZmZfcm9wZSIsICJlbnRfYnNfdGFyZ2UifSwKICAgIGNvbW1hbmQgPSAiZmFsc2Vsb3JkIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSAxNTAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlZJUCBKb2JzIiwKICAgICBjdXN0b21DaGVjayA9IGZ1bmN0aW9uKHBseSkgcmV0dXJuIENMSUVOVCBvciB0YWJsZS5IYXNWYWx1ZSh7ImFkbWluIiwgImhlYWRhZG1pbiIsICJvdmVyc2VlciIsICJzdXBlcmFkbWluIiwgIlZJUCIsICJFcGljVklQIiwgIm1vZCIsICJkZXZlbG9wZXIifSwgcGx5OkdldFVzZXJHcm91cCgpKSBvciBwbHk6SXNBZG1pbigpIG9yIHBseTpTdGVhbUlEKCkgPT0gIlNURUFNXzA6MDoxMjQ1OTI3MDIgIiBlbmQsCiAgICAgICAgICAgIEN1c3RvbUNoZWNrRmFpbE1zZyA9ICJZb3UgbXVzdCBiZSBhIGRvbmF0b3IgdG8gYWNjZXNzIHRoaXMgam9iIiwKICAgIFBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQogICAgICAgIHBseTpTZXRIZWFsdGgoMTUwKQogICAgICAgIHBseTpTZXRBcm1vcig1MCkKICAgIGVuZCwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fRUxGID0gRGFya1JQLmNyZWF0ZUpvYigiUGlyYXRlIFF1ZWVuIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcGxheWVycy9tal9yZXZfcGppbGwubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSB0aGUgUGlyYXRlIFF1ZWVuLCB0cmF2ZWxsZWQgZnJvbSBhbm90aGVyIHJlYWxtLiBZb3UgbG9zdCB5b3VyIGNyZXcgYW5kIGhhdmUgY2FtZSB0byB0aGUgcmVhbG0gdG8gcmVjcnVpdCBuZXcgbWVuLCBhbmQgY2FsaW0gc29tZSBsYW5kISFdXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9ic19zY2ltaXRhciIsICJ3ZWFwb25fbW9yX25vcm1hbCJ9LAogICAgY29tbWFuZCA9ICJwaXJhdGVxdWVlbiIsCiAgICBtYXggPSAxLAogICAgc2FsYXJ5ID0gMTUwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJWSVAgSm9icyIsCiAgICAgY3VzdG9tQ2hlY2sgPSBmdW5jdGlvbihwbHkpIHJldHVybiBDTElFTlQgb3IgdGFibGUuSGFzVmFsdWUoeyJhZG1pbiIsICJoZWFkYWRtaW4iLCAib3ZlcnNlZXIiLCAic3VwZXJhZG1pbiIsICJWSVAiLCAiRXBpY1ZJUCIsICJtb2QiLCAiZGV2ZWxvcGVyIn0sIHBseTpHZXRVc2VyR3JvdXAoKSkgb3IgcGx5OklzQWRtaW4oKSBvciBwbHk6U3RlYW1JRCgpID09ICJTVEVBTV8wOjA6MTI0NTkyNzAyICIgZW5kLAogICAgICAgICAgICBDdXN0b21DaGVja0ZhaWxNc2cgPSAiWW91IG11c3QgYmUgYSBkb25hdG9yIHRvIGFjY2VzcyB0aGlzIGpvYiIsCiAgICBQbGF5ZXJTcGF3biA9IGZ1bmN0aW9uKHBseSkKICAgICAgICBwbHk6U2V0SGVhbHRoKDE1MCkKICAgICAgICBwbHk6U2V0QXJtb3IoMjUpCiAgICBlbmQsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0xJR0hXSVpBUkQgPSBEYXJrUlAuY3JlYXRlSm9iKCJMaWdodCBXaXphcmQiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9tYWlsZXIvd293X2NoYXJhY3RlcnMvd293YW5pbV9qYWluYS5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGEgTGlnaHQgV2l6YXJkLCB5b3UgZmlnaHQgZm9yIHRoZSBnb29kIHNpZGUhXV0sCiAgICB3ZWFwb25zID0geyJ3ZWFwb25faHB3cl9zdGljayJ9LAogICAgY29tbWFuZCA9ICJsaWdodHdpemFyZCIsCiAgICBtYXggPSAxLAogICAgc2FsYXJ5ID0gMTUwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJWSVAgSm9icyIsCiAgICAgY3VzdG9tQ2hlY2sgPSBmdW5jdGlvbihwbHkpIHJldHVybiBDTElFTlQgb3IgdGFibGUuSGFzVmFsdWUoeyJhZG1pbiIsICJoZWFkYWRtaW4iLCAib3ZlcnNlZXIiLCAic3VwZXJhZG1pbiIsICJWSVAiLCAiRXBpY1ZJUCIsICJtb2QiLCAiZGV2ZWxvcGVyIn0sIHBseTpHZXRVc2VyR3JvdXAoKSkgb3IgcGx5OklzQWRtaW4oKSBvciBwbHk6U3RlYW1JRCgpID09ICJTVEVBTV8wOjA6MTI0NTkyNzAyICIgZW5kLAogICAgICAgICAgICBDdXN0b21DaGVja0ZhaWxNc2cgPSAiWW91IG11c3QgYmUgYSBkb25hdG9yIHRvIGFjY2VzcyB0aGlzIGpvYiIsCiAgICBQbGF5ZXJTcGF3biA9IGZ1bmN0aW9uKHBseSkKICAgICAgICBwbHk6U2V0SGVhbHRoKDIwMCkKICAgIGVuZCwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fQkFUVExFTUFHRSA9IERhcmtSUC5jcmVhdGVKb2IoIkJhdHRsZSBNYWdlIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMva296L2xvdHIvc2F1cm9uL3NhdXJvbi5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIGEgYmF0dGxlIG1hZ2UhXV0sCiAgICB3ZWFwb25zID0geyJwa19hcm1vciIsICJwa19zaGlmdCIsICJwc2lfc3RhdGljYnVyc3QiLCAid2VhcG9uX3NreV9kYWVkcmljX2dyZWF0c3dvcmQifSwKICAgIGNvbW1hbmQgPSAiYmF0dGxlbWFnZSIsCiAgICBtYXggPSAxLAogICAgc2FsYXJ5ID0gMTUwLAogICAgYWRtaW4gPSAwLAogICAgdm90ZSA9IGZhbHNlLAogICAgaGFzTGljZW5zZSA9IGZhbHNlLAogICAgY2FuZGVtb3RlID0gZmFsc2UsCiAgICBjYXRlZ29yeSA9ICJWSVAgSm9icyIsCiAgICAgY3VzdG9tQ2hlY2sgPSBmdW5jdGlvbihwbHkpIHJldHVybiBDTElFTlQgb3IgdGFibGUuSGFzVmFsdWUoeyJhZG1pbiIsICJoZWFkYWRtaW4iLCAib3ZlcnNlZXIiLCAic3VwZXJhZG1pbiIsICJWSVAiLCAiRXBpY1ZJUCIsICJtb2QiLCAiZGV2ZWxvcGVyIn0sIHBseTpHZXRVc2VyR3JvdXAoKSkgb3IgcGx5OklzQWRtaW4oKSBvciBwbHk6U3RlYW1JRCgpID09ICJTVEVBTV8wOjA6MTI0NTkyNzAyICIgZW5kLAogICAgICAgICAgICBDdXN0b21DaGVja0ZhaWxNc2cgPSAiWW91IG11c3QgYmUgYSBkb25hdG9yIHRvIGFjY2VzcyB0aGlzIGpvYiIsCiAgICBQbGF5ZXJTcGF3biA9IGZ1bmN0aW9uKHBseSkKICAgICAgICBwbHk6U2V0SGVhbHRoKDIwMCkKICAgIGVuZCwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fQkVBU1RNQVNURVIgPSBEYXJrUlAuY3JlYXRlSm9iKCJUaGUgQmVhc3RNYXN0ZXIiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9rdW1hOTYvZGFya3NvdWxzMi92ZW5nYXJsL3ZlbmdhcmxfcG0ubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbWW91IGFyZSBUaGUgQmVhc3RNYXN0ZXIsIHlvdSB0YW1lIGFuZCBjcmVhdGUgYW4gYXJteSBvZiBhbmltYWxzIV1dLAogICAgd2VhcG9ucyA9IHsid2VhcG9uX3NreV93YXJheGVfZHJhdWdyIiwgInJvY2tfYmxhc3QifSwKICAgIGNvbW1hbmQgPSAiYmVhc3RtYXN0ZXIiLAogICAgbWF4ID0gMSwKICAgIHNhbGFyeSA9IDE1MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiVklQIEpvYnMiLAogICAgIGN1c3RvbUNoZWNrID0gZnVuY3Rpb24ocGx5KSByZXR1cm4gQ0xJRU5UIG9yIHRhYmxlLkhhc1ZhbHVlKHsiYWRtaW4iLCAiaGVhZGFkbWluIiwgIm92ZXJzZWVyIiwgInN1cGVyYWRtaW4iLCAiVklQIiwgIkVwaWNWSVAiLCAibW9kIiwgImRldmVsb3BlciJ9LCBwbHk6R2V0VXNlckdyb3VwKCkpIG9yIHBseTpJc0FkbWluKCkgb3IgcGx5OlN0ZWFtSUQoKSA9PSAiU1RFQU1fMDowOjEyNDU5MjcwMiAiIGVuZCwKICAgICAgICAgICAgQ3VzdG9tQ2hlY2tGYWlsTXNnID0gIllvdSBtdXN0IGJlIGEgZG9uYXRvciB0byBhY2Nlc3MgdGhpcyBqb2IiLAogICAgUGxheWVyU3Bhd24gPSBmdW5jdGlvbihwbHkpCiAgICAgICAgcGx5OlNldEhlYWx0aCgyMDApCiAgICBlbmQsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX0JBUkJBUklBTiA9IERhcmtSUC5jcmVhdGVKb2IoIlRoZSBCYXJiYXJpYW4iLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9kdWFsX2JhcmJhcmlhbnMvZHVhbF9iYXJiYXJpYW5zX3BtLm1kbCIsCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW1lvdSBhcmUgVGhlIEJhcmJhcmlhbiwgeW91IGdhdGhlciBiYW5kaXRzIG9yIHJhbmRvbSBtZXJjZW5hcmllcyB0byBtYWtlIGFybWllcyBhbmQgdGFrZSBjYXN0bGVzIV1dLAogICAgd2VhcG9ucyA9IHsid2VhcG9uX2JzX2dsYWRpdXMiLCAiY2F0X2dyYXNzX21hY2hwdW5jaCJ9LAogICAgY29tbWFuZCA9ICJiYXJiYXJpYW4iLAogICAgbWF4ID0gMSwKICAgIHNhbGFyeSA9IDE1MCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiVklQIEpvYnMiLAogICAgIGN1c3RvbUNoZWNrID0gZnVuY3Rpb24ocGx5KSByZXR1cm4gQ0xJRU5UIG9yIHRhYmxlLkhhc1ZhbHVlKHsiYWRtaW4iLCAiaGVhZGFkbWluIiwgIm92ZXJzZWVyIiwgInN1cGVyYWRtaW4iLCAiVklQIiwgIkVwaWNWSVAiLCAibW9kIiwgImRldmVsb3BlciJ9LCBwbHk6R2V0VXNlckdyb3VwKCkpIG9yIHBseTpJc0FkbWluKCkgb3IgcGx5OlN0ZWFtSUQoKSA9PSAiU1RFQU1fMDowOjEyNDU5MjcwMiAiIGVuZCwKICAgICAgICAgICAgQ3VzdG9tQ2hlY2tGYWlsTXNnID0gIllvdSBtdXN0IGJlIGEgZG9uYXRvciB0byBhY2Nlc3MgdGhpcyBqb2IiLAogICAgUGxheWVyU3Bhd24gPSBmdW5jdGlvbihwbHkpCiAgICAgICAgcGx5OlNldEhlYWx0aCgxNzUpCiAgICBlbmQsCiAgICAgICAgUGxheWVyRGVhdGggPSBmdW5jdGlvbihwbHksIHdlYXBvbiwga2lsbGVyKQogICAgICAgIHBseTp0ZWFtQmFuKCkKICAgICAgICBwbHk6Y2hhbmdlVGVhbShHQU1FTU9ERS5EZWZhdWx0VGVhbSwgdHJ1ZSkKICAgIGVuZAp9KQpURUFNX1JPTUFOR0VORVJBTCA9IERhcmtSUC5jcmVhdGVKb2IoIlRoZSBSb21hbiBHZW5lcmFsIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvcm9tYW4vcm9tYW5fZ2VuZXJhbC5tZGwiLAogICAgfSwKICAgIGRlc2NyaXB0aW9uID0gW1tZb3UgYXJlIFRoZSBSb21hbiBHZW5lcmFsLCB5b3UgY2FuIGpvaW4gYXJtaWVzIG9yIG1ha2UgYXJtaWVzIHRha2luZyBjYXN0bGVzIGFuZCBsYW5kIV1dLAogICAgd2VhcG9ucyA9IHsid2VhcG9uX2JzX2dsYWRpdXMifSwKICAgIGNvbW1hbmQgPSAicm9tYW5nZW5lcmFsIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSAxNTAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlZJUCBKb2JzIiwKICAgICBjdXN0b21DaGVjayA9IGZ1bmN0aW9uKHBseSkgcmV0dXJuIENMSUVOVCBvciB0YWJsZS5IYXNWYWx1ZSh7ImFkbWluIiwgImhlYWRhZG1pbiIsICJvdmVyc2VlciIsICJzdXBlcmFkbWluIiwgIlZJUCIsICJFcGljVklQIiwgIm1vZCIsICJkZXZlbG9wZXIifSwgcGx5OkdldFVzZXJHcm91cCgpKSBvciBwbHk6SXNBZG1pbigpIG9yIHBseTpTdGVhbUlEKCkgPT0gIlNURUFNXzA6MDoxMjQ1OTI3MDIgIiBlbmQsCiAgICAgICAgICAgIEN1c3RvbUNoZWNrRmFpbE1zZyA9ICJZb3UgbXVzdCBiZSBhIGRvbmF0b3IgdG8gYWNjZXNzIHRoaXMgam9iIiwKICAgIFBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQoJICAgIHBseTpTZXROV0Jvb2woICJCdXVTd29yZHNfSGFzX1NjdXR1bSIsIHRydWUgKSBwbHk6U2V0TldJbnQoICJCdXVTd29yZHNfU3RhcnRpbmdTaGllbGQiLCAiNiIgKQogICAgICAgIHBseTpTZXRIZWFsdGgoMTc1KQogICAgZW5kLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKLS0gRXBpY1ZJUApURUFNX1NIQURPV09GQ0hBT1MgPSBEYXJrUlAuY3JlYXRlSm9iKCJUaGUgU2hhZG93IG9mIENoYW9zIiwgewogICAgY29sb3IgPSBDb2xvcigyMCwgMTUwLCAyMCwgMjU1KSwKICAgIG1vZGVsID0gewogICAgICAgICJtb2RlbHMvbWFyazI1ODAvZG1jL2RtY19rYXQubWRsIiwKCQkibW9kZWxzL3BsYXllci9ib2JlcnQvbWhzd2FvdS5tZGwiLAoJCSJtb2RlbHMva3J5cHRvbml0ZS9oZWxhL2hlbGEubWRsIiwKCQkibW9kZWxzL3BsYXllci90cnVlYm9iZXJ0L2RjdW9fY2lyY2UubWRsIiwKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbKEJvZSBEZW5uaXMnIEN1c3RvbSBKb2IpIFlvdSBhcmUgVGhlIFNoYWRvdyBvZiBDaGFvcy5dXSwKICAgIHdlYXBvbnMgPSB7InNoYWRvd19rbmlmZSIsICJjYXRfZ3Jhc3NfbGlnaHRzY3JlZW4iLCAicG9rZV9naG9zdF9taXJyb3Jjb2F0IiwgImNhdF9ncmFzc19oZWFscHVsc2UiLCAicG9rZV9naG9zdF9waGFudG9tZm9yY2UiLCAiYmxpbmsiLCAid2VhcG9uX2N1ZmZfcm9wZSJ9LAogICAgY29tbWFuZCA9ICJzaGFkb3dvZmNoYW9zIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSAyMDAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIkVwaWNWSVAgSm9icyIsCiAgICBjdXN0b21DaGVjayA9IGZ1bmN0aW9uKHBseSkgcmV0dXJuIENMSUVOVCBvciB0YWJsZS5IYXNWYWx1ZSh7Im92ZXJzZWVyIiwgInN1cGVyYWRtaW4iLCJFcGljVklQIn0sIHBseTpHZXRVc2VyR3JvdXAoKSkgb3IgcGx5OklzQWRtaW4oKSBvciBwbHk6U3RlYW1JRCgpID09ICJTVEVBTV8wOjA6MTI0NTkyNzAyICIgZW5kLAogICAgICAgICAgICBDdXN0b21DaGVja0ZhaWxNc2cgPSAiWW91IG11c3QgYmUgYSBkb25hdG9yIHRvIGFjY2VzcyB0aGlzIGpvYiIsCgljdXN0b21DaGVjayA9IGZ1bmN0aW9uKHBseSkgcmV0dXJuIHBseTpTdGVhbUlEKCkgPT0gIlNURUFNXzA6MDoxMjQ1OTI3MDIgIiBlbmQsCiAgICBQbGF5ZXJTcGF3biA9IGZ1bmN0aW9uKHBseSkKICAgICAgICBwbHk6U2V0SGVhbHRoKDI1MCkKICAgIGVuZCwKICAgICAgICBQbGF5ZXJEZWF0aCA9IGZ1bmN0aW9uKHBseSwgd2VhcG9uLCBraWxsZXIpCiAgICAgICAgcGx5OnRlYW1CYW4oKQogICAgICAgIHBseTpjaGFuZ2VUZWFtKEdBTUVNT0RFLkRlZmF1bHRUZWFtLCB0cnVlKQogICAgZW5kCn0pClRFQU1fR1JBWVNPUkNFUkVSID0gRGFya1JQLmNyZWF0ZUpvYigiVGhlIEdyYXkgU29yY2VyZXIiLCB7CiAgICBjb2xvciA9IENvbG9yKDIwLCAxNTAsIDIwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9nb256by9qZWRpaG9vZG1hc2svamVkaWhvb2RtYXNrLm1kbCIsCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbWyhTdHJhZmUncyBDdXN0b20gSm9iKSBZb3UgYXJlIFRoZSBHcmF5IFNvcmNlcmVyLl1dLAogICAgd2VhcG9ucyA9IHsic2hhZG93X2tuaWZlIiwgIndlYXBvbl9ocHdyX3N0aWNrIn0sCiAgICBjb21tYW5kID0gInNoYWRvd29mY2hhb3MiLAogICAgbWF4ID0gMSwKICAgIHNhbGFyeSA9IDIwMCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiRXBpY1ZJUCBKb2JzIiwKICAgIGN1c3RvbUNoZWNrID0gZnVuY3Rpb24ocGx5KSByZXR1cm4gQ0xJRU5UIG9yIHRhYmxlLkhhc1ZhbHVlKHsib3ZlcnNlZXIiLCAic3VwZXJhZG1pbiIsIkVwaWNWSVAifSwgcGx5OkdldFVzZXJHcm91cCgpKSBvciBwbHk6SXNBZG1pbigpIG9yIHBseTpTdGVhbUlEKCkgPT0gIlNURUFNXzA6MDoxMjQ1OTI3MDIgIiBlbmQsCiAgICAgICAgICAgIEN1c3RvbUNoZWNrRmFpbE1zZyA9ICJZb3UgbXVzdCBiZSBhIGRvbmF0b3IgdG8gYWNjZXNzIHRoaXMgam9iIiwKICAgIFBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQogICAgICAgIHBseTpTZXRIZWFsdGgoMjUwKQogICAgZW5kLAogICAgICAgIFBsYXllckRlYXRoID0gZnVuY3Rpb24ocGx5LCB3ZWFwb24sIGtpbGxlcikKICAgICAgICBwbHk6dGVhbUJhbigpCiAgICAgICAgcGx5OmNoYW5nZVRlYW0oR0FNRU1PREUuRGVmYXVsdFRlYW0sIHRydWUpCiAgICBlbmQKfSkKLS0gU1RBRkYKVEVBTV9hZG1pbiA9IERhcmtSUC5jcmVhdGVKb2IoIlN0YWZmIG9uIER1dHkiLCB7CiAgICBjb2xvciA9IENvbG9yKDI1NSwgMjU1LCAyNTUsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL21haWxlci9jaGFyYWN0ZXJzL3Rlc3ZfZ3JleWJlYXJkLm1kbCIsCiAgICAgICAgIm1vZGVscy9tb2RlbHMvY2Vyc2VpL2NlcnNlaS5tZGwiCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW05vbi1yb2xlcGxheSBqb2IgdXNlZCBmb3Igc3RhZmZpbmcuXV0sCiAgICB3ZWFwb25zID0ge30sCiAgICBjb21tYW5kID0gInN0YWZmb25kdXR5IiwKICAgIG1heCA9IDAsCiAgICBzYWxhcnkgPSAzMDAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlN0YWZmIiwKICAgIGN1c3RvbUNoZWNrID0gZnVuY3Rpb24ocGx5KSByZXR1cm4KICAgICAgICB0YWJsZS5IYXNWYWx1ZSh7InN1cGVyYWRtaW4iLCAiaGVhZGFkbWluIiwgImFkbWluIiwgIm1vZCJ9LCBwbHk6R2V0TldTdHJpbmcoInVzZXJncm91cCIpKQogICAgZW5kLAogICAgQ3VzdG9tQ2hlY2tGYWlsTXNnID0gIllvdSBtdXN0IGJlIGEgc3RhZmYgbWVtYmVyIHRvIGNob29zZSB0aGlzIGpvYiEiLAogICAgUGxheWVyU3Bhd24gPSBmdW5jdGlvbihwbHkpCiAgICAgICAgcGx5OlNldEhlYWx0aCgxMDAwMDAwKQogICAgZW5kCn0pClRFQU1fYWRtaW4gPSBEYXJrUlAuY3JlYXRlSm9iKCJPbnl4aWEgQnJvb2QiLCB7CiAgICBjb2xvciA9IENvbG9yKDI1NSwgMjU1LCAyNTUsIDI1NSksCiAgICBtb2RlbCA9IHsKICAgICAgICAibW9kZWxzL21haWxlci93b3dfY2hhcmFjdGVycy93b3dhbmltX29ueXhpYS5tZGwiCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW3lvdSBoYXZlIHJhaXNlZCB0aGUgcmFua3MgYW5kIGFyZSBhYmxlIHRvIHBsYXkgYXMgdGhlIHdpc2UgZHJhZ29uIC0geW91IG11c3QgYXNzaXN0IHBsYXllcnMgd2l0aCBxdWVzdGlvbnMgYW5kIHlvdSBtYXkgZmx5IHRoZW0gdG8gbG9jYXRpb24gT1VUU0lERSBvZiBSUDsgeW91IG1heSBub3QgaW50ZXJmZXJlIHdpdGggUlAuXV0sCiAgICB3ZWFwb25zID0ge30sCiAgICBjb21tYW5kID0gIm9ueXhpYWJyb29kIiwKICAgIG1heCA9IDEsCiAgICBzYWxhcnkgPSAzMDAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlN0YWZmIiwKICAgIGN1c3RvbUNoZWNrID0gZnVuY3Rpb24ocGx5KSByZXR1cm4KICAgICAgICB0YWJsZS5IYXNWYWx1ZSh7InN1cGVyYWRtaW4iLCAiaGVhZGFkbWluIiwgImFkbWluIn0sIHBseTpHZXROV1N0cmluZygidXNlcmdyb3VwIikpCiAgICBlbmQsCiAgICBDdXN0b21DaGVja0ZhaWxNc2cgPSAiWW91IG11c3QgYmUgYSBzdGFmZiBtZW1iZXIgdG8gY2hvb3NlIHRoaXMgam9iISIsCiAgICBQbGF5ZXJTcGF3biA9IGZ1bmN0aW9uKHBseSkKICAgICAgICBwbHk6U2V0SGVhbHRoKDEwMDAwMDApCiAgICBlbmQKfSkKVEVBTV9CQURHRVIgPSBEYXJrUlAuY3JlYXRlSm9iKCJCYWRnZXIiLCB7CiAgICBjb2xvciA9IENvbG9yKDAsIDE3NSwgMjMwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy90c2JiL2FuaW1hbHMvYmFkZ2VyMi5tZGwiCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW05vbi1yb2xlcGxheSBqb2IgdXNlZCBmb3Igc3RhZmZpbmcgYnkgQmFkZ2VyLl1dLAogICAgd2VhcG9ucyA9IHt9LAogICAgY29tbWFuZCA9ICJiYWRnZXIiLAogICAgbWF4ID0gMCwKICAgIHNhbGFyeSA9IDMwMCwKICAgIGFkbWluID0gMCwKICAgIHZvdGUgPSBmYWxzZSwKICAgIGhhc0xpY2Vuc2UgPSBmYWxzZSwKICAgIGNhbmRlbW90ZSA9IGZhbHNlLAogICAgY2F0ZWdvcnkgPSAiU3RhZmYiLAogICAgY3VzdG9tQ2hlY2sgPSBmdW5jdGlvbihwbHkpIHJldHVybgogICAgICAgIHBseTpTdGVhbUlEKCkgPT0gIlNURUFNXzA6MTo2NzkxNDI3NiIgZW5kLAogICAgQ3VzdG9tQ2hlY2tGYWlsTXNnID0gIllvdSBtdXN0IGJlIEJhZGdlciB0byBjaG9vc2UgdGhpcyBqb2IhIiwKICAgIFBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQogICAgICAgIHBseTpTZXRIZWFsdGgoMTAwMDAwMCkKICAgICAgICBwbHk6U2V0QXJtb3IoMCkKICAgIGVuZAp9KQpURUFNX0ZMRU1NRVRIID0gRGFya1JQLmNyZWF0ZUpvYigiRmxlbW1ldGgiLCB7CiAgICBjb2xvciA9IENvbG9yKDE1NiwgMCwgMjMwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9mbGVtZXRoZGEyX3BtLm1kbCIKICAgIH0sCiAgICBkZXNjcmlwdGlvbiA9IFtbTm9uLXJvbGVwbGF5IGpvYiB1c2VkIGZvciBzdGFmZmluZyBieSBUaGVydmFpbmUuXV0sCiAgICB3ZWFwb25zID0ge30sCiAgICBjb21tYW5kID0gImZsZW1tZXRoIiwKICAgIG1heCA9IDAsCiAgICBzYWxhcnkgPSAzMDAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlN0YWZmIiwKICAgIGN1c3RvbUNoZWNrID0gZnVuY3Rpb24ocGx5KSByZXR1cm4KICAgICAgICBwbHk6U3RlYW1JRCgpID09ICJTVEVBTV8wOjA6NjA0Njc5MzQiIGVuZCwKICAgIEN1c3RvbUNoZWNrRmFpbE1zZyA9ICJZb3UgbXVzdCBiZSBGbGVtbWV0aCB0byBjaG9vc2UgdGhpcyBqb2IhIiwKICAgIFBsYXllclNwYXduID0gZnVuY3Rpb24ocGx5KQogICAgICAgIHBseTpTZXRIZWFsdGgoMTUwKQogICAgICAgIHBseTpTZXRBcm1vcigwKQogICAgZW5kCn0pClRFQU1fTElOSyA9IERhcmtSUC5jcmVhdGVKb2IoIkxpbmsiLCB7CiAgICBjb2xvciA9IENvbG9yKDE1NiwgMCwgMjMwLCAyNTUpLAogICAgbW9kZWwgPSB7CiAgICAgICAgIm1vZGVscy9wbGF5ZXIvaHdfbGluay5tZGwiCiAgICB9LAogICAgZGVzY3JpcHRpb24gPSBbW05vbi1yb2xlcGxheSBqb2IgdXNlZCBmb3Igc3RhZmZpbmcgYnkgTGluay5dXSwKICAgIHdlYXBvbnMgPSB7IndlYXBvbl9tYXN0ZXJzd29yZCJ9LAogICAgY29tbWFuZCA9ICJsaW5rIiwKICAgIG1heCA9IDAsCiAgICBzYWxhcnkgPSAzMDAsCiAgICBhZG1pbiA9IDAsCiAgICB2b3RlID0gZmFsc2UsCiAgICBoYXNMaWNlbnNlID0gZmFsc2UsCiAgICBjYW5kZW1vdGUgPSBmYWxzZSwKICAgIGNhdGVnb3J5ID0gIlN0YWZmIiwKICAgIGN1c3RvbUNoZWNrID0gZnVuY3Rpb24ocGx5KSByZXR1cm4KICAgICAgICBwbHk6U3RlYW1JRCgpID09ICJTVEVBTV8wOjE6NTEyNDE5NzQiIGVuZCwKICAgIEN1c3RvbUNoZWNrRmFpbE1zZyA9ICJZb3UgbXVzdCBiZSBMaW5rIHRvIGNob29zZSB0aGlzIGpvYiEiLAogICAgUGxheWVyU3Bhd24gPSBmdW5jdGlvbihwbHkpCiAgICAgICAgcGx5OlNldEhlYWx0aCgxNTApCiAgICAgICAgcGx5OlNldEFybW9yKDApCiAgICBlbmQKfSkK