```mermaid
graph TB
linkStyle default fill:#FFF,stroke:#000,stroke-width:1.5px;
classDef cssGrayscale fill:#EEE,fill-opacity:0.5,stroke:#000,stroke-width:1.5px;
classDef cssError fill:#ff0000,fill-opacity:0.5,stroke:#000,stroke-width:1.5px;
start(Start)
chkIsProgramIDProvided{URL has a ProgramID?}
chkIsSigninRequired{URL requires sign-in?}
chkIsGuestSignedIn{Is guest signed-in?}
chkProgIDValidForGuest{Valid ProgID for Guest?}
chkSignInSuccessful{Sign-in Successful?}
opMLifeSignIn[MLife Sign-In]
errOfferNotValid[Error: Offer Not Valid]
start-->chkIsProgramIDProvided
chkIsProgramIDProvided-- Yes -->chkIsSigninRequired
chkIsSigninRequired-- Yes -->chkIsGuestSignedIn
chkIsGuestSignedIn-- No --> opMLifeSignIn
opMLifeSignIn --> chkSignInSuccessful
chkSignInSuccessful-- No --> errOfferNotValid
chkIsGuestSignedIn-- Yes --> chkProgIDValidForGuest
chkProgIDValidForGuest -- No --> errOfferNotValid
class start cssGrayscale;
class chkIsProgramIDProvided,chkIsSigninRequired,chkIsGuestSignedIn,chkProgIDValidForGuest,chkSignInSuccessful,opMLifeSignIn cssGrayscale;
class errOfferNotValid cssError;
```