vase_to_nokia_pre_acct {

	if (!&request:State) {
	    invalid
	}

	if (!&request:Acct-Status-Type) {
	    invalid
	}

	if (&request:Acct-Status-Type == "Interim-Update" || \
	    &request:Acct-Status-Type == "Stop") {
		if ((!&request:Acct-Input-Octets || \
		    !&request:Acct-Input-Packets || \
		    !&request:Acct-Output-Octets || \
		    !&Request:Acct-Output-Packets) && \
		    (!&request:VasExperts-Acct-Input-Octets-64 || \
		    !&request:VasExperts-Acct-Input-Packets-64 || \
		    !&request:VasExperts-Acct-Output-Octets-64 || \
		    !&request:VasExperts-Acct-Output-Packets-64)) {
		    invalid
		}
	}
	elsif (&request:Acct-Status-Type != "Start") {
	    invalid
	}

	update request {
	    &Alc-Subsc-ID-Str := "%{Stripped-User-Name}|%{config:vase_to_nokia.nas_port_id}"
	}

	update request {
	    &Tmp-String-1 := "Alc-Subsc-Prof-Str="
	    &Tmp-String-2 := "Alc-SLA-Prof-Str="
	}

	foreach &request:State {
	    update request {
		&Tmp-String-0 := "%{Foreach-Variable-0}"
		&Tmp-String-5 := "%{string:%{Foreach-Variable-0}}"
		&Tmp-String-6 := "%{string:%{Tmp-String-0}}"
	    }
	    if ("%{hex:&Tmp-String-0}" =~ /^%{hex:&Tmp-String-1}(.*)/) {
		update request {
		    &Alc-Subsc-Prof-Str := "%{1}"
		}
	    }
	    elsif ("%{hex:&Tmp-String-0}" =~ /^%{hex:&Tmp-String-2}(.*)/) {
		update request {
		    &Alc-SLA-Prof-Str := "%{1}"
		}
	    }
	}

	if (!&request:Alc-Subsc-ID-Str || \
	    !&request:Alc-Subsc-Prof-Str || \
	    !&request:Alc-SLA-Prof-Str) {
	    invalid
	}

	if (&request:Acct-Status-Type == "Start") {
	    ok
	}

	if (&request:Acct-Input-Gigawords) {
	    update request {
		&Acct-Input-Octets64 := "%{expr:(&Acct-Input-Gigawords << 32) | &Acct-Input-Octets}"
	    }
	}
	else {
	    update request {
		&Acct-Input-Octets64 := &Acct-Input-Octets
	    }
	}

	if (&request:Acct-Output-Gigawords) {
	    update request {
		&Acct-Output-Octets64 := "%{expr:(&Acct-Output-Gigawords << 32) | &Acct-Output-Octets}"
	    }
	}
	else {
	    update request {
		&Acct-Output-Octets64 := &Acct-Output-Octets
	    }
	}

	update request {
	    &Alc-Acct-I-statmode := "0x8001 minimal"
	}

	if (&request:VasExperts-Acct-Input-Octets-64 && \
	    &request:VasExperts-Acct-Input-Packets-64) {
	    update request {
		&Alc-Acct-I-All-Octets_64 := &VasExperts-Acct-Input-Octets-64
		&Alc-Acct-I-All-Packets_64 := &VasExperts-Acct-Input-Packets-64
	    }
	}
	else {
	    update request {
		&Alc-Acct-I-All-Octets_64 := &Acct-Input-Octets64
		&Alc-Acct-I-All-Packets_64 := &Acct-Input-Packets
	    }
	}

	update request {
	    &Alc-Acct-O-statmode := "0x8001 minimal"
	}

	if (&request:VasExperts-Acct-Output-Octets-64 && \
	    &request:VasExperts-Acct-Output-Packets-64) {
	    update request {
		&Alc-Acct-O-All-Octets_64 := &VasExperts-Acct-Output-Octets-64
		&Alc-Acct-O-All-Packets_64 := &VasExperts-Acct-Output-Packets-64
	    }
	}
	else {
	    update request {
		&Alc-Acct-O-All-Octets_64 := &Acct-Output-Octets64
		&Alc-Acct-O-All-Packets_64 := &Acct-Output-Packets
	    }
	}

}