package Ġcom . typed path . iam 2 kotlin Ċ Ċ /** Ċ Ġ* Ġsee Ġ Ġhttps :// docs . aws . amazon . com / IAM / latest / UserGuide / reference _ policies . html Ċ Ġ**/ Ċ Ċ class ĠI am Policy ( init : ĠI am Policy . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĊĠĠĠ Ġopen Ġclass ĠAction ( val Ġid : ĠString ) ĊĠĠĠ Ġopen Ġclass ĠResource ( val Ġspecification : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠAll Ġ= ĠResource ("* ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar ĠVersion Ġ= Ġ" 2 0 1 2 - 1 0 - 1 7 " ĊĊĠĠĠ Ġ// TODO Ġresolve Ġwhy Ġthese Ġstop Ġcloud formation Ġworking Ġ! ĊĠĠĠ Ġvar ĠId : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar ĠS id : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ// effect ĊĠĠĠ Ġenum Ġclass ĠEffect Type Ġ{ ĠAllow , ĠDen y Ġ} ĊĊĠĠĠ Ġvar ĠStatement : ĠMutable List < Statement Entry > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġfun Ġstatement ( init : ĠStatement Entry . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatement Ġ= ĠStatement Entry () ĊĠĠĠĠĠĠĠ Ġstatement . apply ( init ) ĊĠĠĠĠĠĠĠ ĠStatement . add ( statement ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠStatement Entry Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġeffect : ĠEffect Type ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ// TODO Ġconstant Ġstar Ġaction ĊĠĠĠĠĠĠĠ Ġ// e . g . Ġ" action ": Ġ[ Ġ" sqs : SendMessage ", Ġ" sqs : Receive Message ", Ġ" ec 2 : Start Instances ", Ġ" iam : Change Password ", Ġ" s 3 : GetObject " Ġ] ĊĠĠĠĠĠĠĠ Ġvar Ġaction : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġvar Ġno Action : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġ// resource ĊĠĠĠĠĠĠĠ Ġvar ĠCondition : ĠList < Condition Map Entry >? Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġvar Ġresource : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġvar Ġnot Resource : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġ// TODO Ġconstant Ġstar Ġprincipal Ġblock ĊĠĠĠĠĠĠĠ Ġ// var Ġprincipal : ĠList < Principal Map Entry >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġprincipal : ĠMutable Map < Principal Type , ĠList < String >> ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġnot Principal : ĠMutable Map < Principal Type , ĠList < String >> ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġaction ( action : ĠAction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . action . add ( action . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġresource ( resource : ĠResource ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . resource . add ( resource . specification ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠPrincipal Type () Ġ{ ĊĠĠĠĠĠĠĠ ĠAWS , ĠF ederated , ĠService ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠPrincipal Map Entry ( val ĠType : ĠPrincipal Type , Ġval ĠPrincipal Ids : ĠList < String >) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠCondition Map Entry ( val Ġtype : ĠString , Ġval Ġvalues : ĠList < Condition ValuePair >) Ġ{} ĊĠĠĠ Ġclass ĠCondition ValuePair ( val Ġkey : ĠString , Ġval Ġvalues : ĠAny ) Ġ{} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} Ċ Ċ } Ċ