/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "NR-RRC-Definitions"
 * 	found in "asn/nr-rrc-15.6.0.asn1"
 * 	`asn1c -fcompound-names -pdu=all -findirect-choice -fno-include-deps -gen-PER -no-gen-OER -no-gen-example -D rrc`
 */

#include "ASN_RRC_CodebookConfig.h"

static int
memb_ASN_RRC_twoTX_CodebookSubsetRestriction_constraint_7(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 6)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_two_one_TypeI_SinglePanel_Restriction_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 8)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_two_two_TypeI_SinglePanel_Restriction_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 64)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_four_one_TypeI_SinglePanel_Restriction_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 16)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_three_two_TypeI_SinglePanel_Restriction_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 96)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_six_one_TypeI_SinglePanel_Restriction_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 24)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_four_two_TypeI_SinglePanel_Restriction_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 128)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_eight_one_TypeI_SinglePanel_Restriction_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 32)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_four_three_TypeI_SinglePanel_Restriction_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 192)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_six_two_TypeI_SinglePanel_Restriction_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 192)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_twelve_one_TypeI_SinglePanel_Restriction_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 48)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_four_four_TypeI_SinglePanel_Restriction_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 256)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_eight_two_TypeI_SinglePanel_Restriction_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 256)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_sixteen_one_TypeI_SinglePanel_Restriction_constraint_10(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 64)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_typeI_SinglePanel_codebookSubsetRestriction_i2_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 16)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_typeI_SinglePanel_ri_Restriction_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 8)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_two_two_one_TypeI_MultiPanel_Restriction_constraint_27(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 8)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_two_four_one_TypeI_MultiPanel_Restriction_constraint_27(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 16)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_four_two_one_TypeI_MultiPanel_Restriction_constraint_27(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 8)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_two_two_two_TypeI_MultiPanel_Restriction_constraint_27(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 64)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_two_eight_one_TypeI_MultiPanel_Restriction_constraint_27(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 32)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_four_four_one_TypeI_MultiPanel_Restriction_constraint_27(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 16)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_two_four_two_TypeI_MultiPanel_Restriction_constraint_27(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 128)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_four_two_two_TypeI_MultiPanel_Restriction_constraint_27(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 64)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_ri_Restriction_constraint_26(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 4)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_codebookMode_constraint_3(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	long value;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	value = *(const long *)sptr;
	
	if((value >= 1 && value <= 2)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_two_one_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 16)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_two_two_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 43)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_four_one_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 32)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_three_two_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 59)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_six_one_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 48)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_four_two_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 75)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_eight_one_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 64)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_four_three_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 107)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_six_two_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 107)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_twelve_one_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 96)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_four_four_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 139)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_eight_two_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 139)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_sixteen_one_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 128)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_typeII_RI_Restriction_constraint_40(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 2)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

/*
 * This type is implemented using NativeEnumerated,
 * so here we adjust the DEF accordingly.
 */
static int
memb_ASN_RRC_typeII_PortSelectionRI_Restriction_constraint_56(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	if(st->size > 0) {
		/* Size in bits */
		size = 8 * st->size - (st->bits_unused & 0x07);
	} else {
		size = 0;
	}
	
	if((size == 2)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

/*
 * This type is implemented using NativeEnumerated,
 * so here we adjust the DEF accordingly.
 */
/*
 * This type is implemented using NativeEnumerated,
 * so here we adjust the DEF accordingly.
 */
static asn_per_constraints_t asn_PER_memb_ASN_RRC_twoTX_CodebookSubsetRestriction_constr_8 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  6,  6 }	/* (SIZE(6..6)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_two_one_TypeI_SinglePanel_Restriction_constr_11 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  8,  8 }	/* (SIZE(8..8)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_two_two_TypeI_SinglePanel_Restriction_constr_12 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  64,  64 }	/* (SIZE(64..64)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_four_one_TypeI_SinglePanel_Restriction_constr_13 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  16,  16 }	/* (SIZE(16..16)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_three_two_TypeI_SinglePanel_Restriction_constr_14 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  96,  96 }	/* (SIZE(96..96)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_six_one_TypeI_SinglePanel_Restriction_constr_15 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  24,  24 }	/* (SIZE(24..24)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_four_two_TypeI_SinglePanel_Restriction_constr_16 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  128,  128 }	/* (SIZE(128..128)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_eight_one_TypeI_SinglePanel_Restriction_constr_17 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  32,  32 }	/* (SIZE(32..32)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_four_three_TypeI_SinglePanel_Restriction_constr_18 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  192,  192 }	/* (SIZE(192..192)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_six_two_TypeI_SinglePanel_Restriction_constr_19 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  192,  192 }	/* (SIZE(192..192)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_twelve_one_TypeI_SinglePanel_Restriction_constr_20 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  48,  48 }	/* (SIZE(48..48)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_four_four_TypeI_SinglePanel_Restriction_constr_21 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  256,  256 }	/* (SIZE(256..256)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_eight_two_TypeI_SinglePanel_Restriction_constr_22 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  256,  256 }	/* (SIZE(256..256)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_sixteen_one_TypeI_SinglePanel_Restriction_constr_23 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  64,  64 }	/* (SIZE(64..64)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_n1_n2_constr_10 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 4,  4,  0,  12 }	/* (0..12) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_typeI_SinglePanel_codebookSubsetRestriction_i2_constr_24 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  16,  16 }	/* (SIZE(16..16)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_nrOfAntennaPorts_constr_6 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 1,  1,  0,  1 }	/* (0..1) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_typeI_SinglePanel_ri_Restriction_constr_25 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  8,  8 }	/* (SIZE(8..8)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_two_two_one_TypeI_MultiPanel_Restriction_constr_28 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  8,  8 }	/* (SIZE(8..8)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_two_four_one_TypeI_MultiPanel_Restriction_constr_29 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  16,  16 }	/* (SIZE(16..16)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_four_two_one_TypeI_MultiPanel_Restriction_constr_30 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  8,  8 }	/* (SIZE(8..8)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_two_two_two_TypeI_MultiPanel_Restriction_constr_31 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  64,  64 }	/* (SIZE(64..64)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_two_eight_one_TypeI_MultiPanel_Restriction_constr_32 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  32,  32 }	/* (SIZE(32..32)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_four_four_one_TypeI_MultiPanel_Restriction_constr_33 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  16,  16 }	/* (SIZE(16..16)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_two_four_two_TypeI_MultiPanel_Restriction_constr_34 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  128,  128 }	/* (SIZE(128..128)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_four_two_two_TypeI_MultiPanel_Restriction_constr_35 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  64,  64 }	/* (SIZE(64..64)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_ng_n1_n2_constr_27 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 3,  3,  0,  7 }	/* (0..7) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_ri_Restriction_constr_36 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  4,  4 }	/* (SIZE(4..4)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_subType_constr_4 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 1,  1,  0,  1 }	/* (0..1) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_codebookMode_constr_37 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 1,  1,  1,  2 }	/* (1..2) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_two_one_constr_42 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  16,  16 }	/* (SIZE(16..16)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_two_two_constr_43 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  43,  43 }	/* (SIZE(43..43)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_four_one_constr_44 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  32,  32 }	/* (SIZE(32..32)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_three_two_constr_45 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  59,  59 }	/* (SIZE(59..59)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_six_one_constr_46 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  48,  48 }	/* (SIZE(48..48)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_four_two_constr_47 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  75,  75 }	/* (SIZE(75..75)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_eight_one_constr_48 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  64,  64 }	/* (SIZE(64..64)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_four_three_constr_49 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  107,  107 }	/* (SIZE(107..107)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_six_two_constr_50 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  107,  107 }	/* (SIZE(107..107)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_twelve_one_constr_51 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  96,  96 }	/* (SIZE(96..96)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_four_four_constr_52 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  139,  139 }	/* (SIZE(139..139)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_eight_two_constr_53 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  139,  139 }	/* (SIZE(139..139)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_sixteen_one_constr_54 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  128,  128 }	/* (SIZE(128..128)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_n1_n2_codebookSubsetRestriction_constr_41 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 4,  4,  0,  12 }	/* (0..12) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_typeII_RI_Restriction_constr_55 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  2,  2 }	/* (SIZE(2..2)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_portSelectionSamplingSize_constr_57 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 2,  2,  0,  3 }	/* (0..3) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_typeII_PortSelectionRI_Restriction_constr_62 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 0,  0,  2,  2 }	/* (SIZE(2..2)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_subType_constr_39 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 1,  1,  0,  1 }	/* (0..1) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_phaseAlphabetSize_constr_63 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 1,  1,  0,  1 }	/* (0..1) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_numberOfBeams_constr_67 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 2,  2,  0,  2 }	/* (0..2) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_codebookType_constr_2 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 1,  1,  0,  1 }	/* (0..1) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_TYPE_member_t asn_MBR_ASN_RRC_two_7[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__two, twoTX_CodebookSubsetRestriction),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_twoTX_CodebookSubsetRestriction_constr_8,  memb_ASN_RRC_twoTX_CodebookSubsetRestriction_constraint_7 },
		0, 0, /* No default value */
		"twoTX-CodebookSubsetRestriction"
		},
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_two_tags_7[] = {
	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_two_tag2el_7[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* twoTX-CodebookSubsetRestriction */
};
static asn_SEQUENCE_specifics_t asn_SPC_ASN_RRC_two_specs_7 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__two),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__two, _asn_ctx),
	asn_MAP_ASN_RRC_two_tag2el_7,
	1,	/* Count of tags in the map */
	0, 0, 0,	/* Optional elements (not needed) */
	-1,	/* First extension addition */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_two_7 = {
	"two",
	"two",
	&asn_OP_SEQUENCE,
	asn_DEF_ASN_RRC_two_tags_7,
	sizeof(asn_DEF_ASN_RRC_two_tags_7)
		/sizeof(asn_DEF_ASN_RRC_two_tags_7[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_two_tags_7,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_two_tags_7)
		/sizeof(asn_DEF_ASN_RRC_two_tags_7[0]), /* 2 */
	{ 0, 0, SEQUENCE_constraint },
	asn_MBR_ASN_RRC_two_7,
	1,	/* Elements count */
	&asn_SPC_ASN_RRC_two_specs_7	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_n1_n2_10[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.two_one_TypeI_SinglePanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_two_one_TypeI_SinglePanel_Restriction_constr_11,  memb_ASN_RRC_two_one_TypeI_SinglePanel_Restriction_constraint_10 },
		0, 0, /* No default value */
		"two-one-TypeI-SinglePanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.two_two_TypeI_SinglePanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_two_two_TypeI_SinglePanel_Restriction_constr_12,  memb_ASN_RRC_two_two_TypeI_SinglePanel_Restriction_constraint_10 },
		0, 0, /* No default value */
		"two-two-TypeI-SinglePanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.four_one_TypeI_SinglePanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_four_one_TypeI_SinglePanel_Restriction_constr_13,  memb_ASN_RRC_four_one_TypeI_SinglePanel_Restriction_constraint_10 },
		0, 0, /* No default value */
		"four-one-TypeI-SinglePanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.three_two_TypeI_SinglePanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_three_two_TypeI_SinglePanel_Restriction_constr_14,  memb_ASN_RRC_three_two_TypeI_SinglePanel_Restriction_constraint_10 },
		0, 0, /* No default value */
		"three-two-TypeI-SinglePanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.six_one_TypeI_SinglePanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_six_one_TypeI_SinglePanel_Restriction_constr_15,  memb_ASN_RRC_six_one_TypeI_SinglePanel_Restriction_constraint_10 },
		0, 0, /* No default value */
		"six-one-TypeI-SinglePanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.four_two_TypeI_SinglePanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_four_two_TypeI_SinglePanel_Restriction_constr_16,  memb_ASN_RRC_four_two_TypeI_SinglePanel_Restriction_constraint_10 },
		0, 0, /* No default value */
		"four-two-TypeI-SinglePanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.eight_one_TypeI_SinglePanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_eight_one_TypeI_SinglePanel_Restriction_constr_17,  memb_ASN_RRC_eight_one_TypeI_SinglePanel_Restriction_constraint_10 },
		0, 0, /* No default value */
		"eight-one-TypeI-SinglePanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.four_three_TypeI_SinglePanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (7 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_four_three_TypeI_SinglePanel_Restriction_constr_18,  memb_ASN_RRC_four_three_TypeI_SinglePanel_Restriction_constraint_10 },
		0, 0, /* No default value */
		"four-three-TypeI-SinglePanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.six_two_TypeI_SinglePanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (8 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_six_two_TypeI_SinglePanel_Restriction_constr_19,  memb_ASN_RRC_six_two_TypeI_SinglePanel_Restriction_constraint_10 },
		0, 0, /* No default value */
		"six-two-TypeI-SinglePanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.twelve_one_TypeI_SinglePanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (9 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_twelve_one_TypeI_SinglePanel_Restriction_constr_20,  memb_ASN_RRC_twelve_one_TypeI_SinglePanel_Restriction_constraint_10 },
		0, 0, /* No default value */
		"twelve-one-TypeI-SinglePanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.four_four_TypeI_SinglePanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (10 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_four_four_TypeI_SinglePanel_Restriction_constr_21,  memb_ASN_RRC_four_four_TypeI_SinglePanel_Restriction_constraint_10 },
		0, 0, /* No default value */
		"four-four-TypeI-SinglePanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.eight_two_TypeI_SinglePanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (11 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_eight_two_TypeI_SinglePanel_Restriction_constr_22,  memb_ASN_RRC_eight_two_TypeI_SinglePanel_Restriction_constraint_10 },
		0, 0, /* No default value */
		"eight-two-TypeI-SinglePanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.sixteen_one_TypeI_SinglePanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (12 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_sixteen_one_TypeI_SinglePanel_Restriction_constr_23,  memb_ASN_RRC_sixteen_one_TypeI_SinglePanel_Restriction_constraint_10 },
		0, 0, /* No default value */
		"sixteen-one-TypeI-SinglePanel-Restriction"
		},
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_n1_n2_tag2el_10[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* two-one-TypeI-SinglePanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* two-two-TypeI-SinglePanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* four-one-TypeI-SinglePanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* three-two-TypeI-SinglePanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* six-one-TypeI-SinglePanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* four-two-TypeI-SinglePanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* eight-one-TypeI-SinglePanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* four-three-TypeI-SinglePanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* six-two-TypeI-SinglePanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* twelve-one-TypeI-SinglePanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* four-four-TypeI-SinglePanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* eight-two-TypeI-SinglePanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 } /* sixteen-one-TypeI-SinglePanel-Restriction */
};
static asn_CHOICE_specifics_t asn_SPC_ASN_RRC_n1_n2_specs_10 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, _asn_ctx),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, present),
	sizeof(((struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2 *)0)->present),
	asn_MAP_ASN_RRC_n1_n2_tag2el_10,
	13,	/* Count of tags in the map */
	0, 0,
	-1	/* Extensions start */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_n1_n2_10 = {
	"n1-n2",
	"n1-n2",
	&asn_OP_CHOICE,
	0,	/* No effective tags (pointer) */
	0,	/* No effective tags (count) */
	0,	/* No tags (pointer) */
	0,	/* No tags (count) */
	{ 0, &asn_PER_type_ASN_RRC_n1_n2_constr_10, CHOICE_constraint },
	asn_MBR_ASN_RRC_n1_n2_10,
	13,	/* Elements count */
	&asn_SPC_ASN_RRC_n1_n2_specs_10	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_moreThanTwo_9[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo, n1_n2),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		+1,	/* EXPLICIT tag at current level */
		&asn_DEF_ASN_RRC_n1_n2_10,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"n1-n2"
		},
	{ ATF_POINTER, 1, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo, typeI_SinglePanel_codebookSubsetRestriction_i2),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_typeI_SinglePanel_codebookSubsetRestriction_i2_constr_24,  memb_ASN_RRC_typeI_SinglePanel_codebookSubsetRestriction_i2_constraint_9 },
		0, 0, /* No default value */
		"typeI-SinglePanel-codebookSubsetRestriction-i2"
		},
};
static const int asn_MAP_ASN_RRC_moreThanTwo_oms_9[] = { 1 };
static const ber_tlv_tag_t asn_DEF_ASN_RRC_moreThanTwo_tags_9[] = {
	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_moreThanTwo_tag2el_9[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* n1-n2 */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeI-SinglePanel-codebookSubsetRestriction-i2 */
};
static asn_SEQUENCE_specifics_t asn_SPC_ASN_RRC_moreThanTwo_specs_9 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo, _asn_ctx),
	asn_MAP_ASN_RRC_moreThanTwo_tag2el_9,
	2,	/* Count of tags in the map */
	asn_MAP_ASN_RRC_moreThanTwo_oms_9,	/* Optional members */
	1, 0,	/* Root/Additions */
	-1,	/* First extension addition */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_moreThanTwo_9 = {
	"moreThanTwo",
	"moreThanTwo",
	&asn_OP_SEQUENCE,
	asn_DEF_ASN_RRC_moreThanTwo_tags_9,
	sizeof(asn_DEF_ASN_RRC_moreThanTwo_tags_9)
		/sizeof(asn_DEF_ASN_RRC_moreThanTwo_tags_9[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_moreThanTwo_tags_9,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_moreThanTwo_tags_9)
		/sizeof(asn_DEF_ASN_RRC_moreThanTwo_tags_9[0]), /* 2 */
	{ 0, 0, SEQUENCE_constraint },
	asn_MBR_ASN_RRC_moreThanTwo_9,
	2,	/* Elements count */
	&asn_SPC_ASN_RRC_moreThanTwo_specs_9	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_nrOfAntennaPorts_6[] = {
	{ ATF_POINTER, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts, choice.two),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		0,
		&asn_DEF_ASN_RRC_two_7,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"two"
		},
	{ ATF_POINTER, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts, choice.moreThanTwo),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		0,
		&asn_DEF_ASN_RRC_moreThanTwo_9,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"moreThanTwo"
		},
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_nrOfAntennaPorts_tag2el_6[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* two */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* moreThanTwo */
};
static asn_CHOICE_specifics_t asn_SPC_ASN_RRC_nrOfAntennaPorts_specs_6 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts, _asn_ctx),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts, present),
	sizeof(((struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts *)0)->present),
	asn_MAP_ASN_RRC_nrOfAntennaPorts_tag2el_6,
	2,	/* Count of tags in the map */
	0, 0,
	-1	/* Extensions start */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_nrOfAntennaPorts_6 = {
	"nrOfAntennaPorts",
	"nrOfAntennaPorts",
	&asn_OP_CHOICE,
	0,	/* No effective tags (pointer) */
	0,	/* No effective tags (count) */
	0,	/* No tags (pointer) */
	0,	/* No tags (count) */
	{ 0, &asn_PER_type_ASN_RRC_nrOfAntennaPorts_constr_6, CHOICE_constraint },
	asn_MBR_ASN_RRC_nrOfAntennaPorts_6,
	2,	/* Elements count */
	&asn_SPC_ASN_RRC_nrOfAntennaPorts_specs_6	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_typeI_SinglePanel_5[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel, nrOfAntennaPorts),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		+1,	/* EXPLICIT tag at current level */
		&asn_DEF_ASN_RRC_nrOfAntennaPorts_6,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"nrOfAntennaPorts"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel, typeI_SinglePanel_ri_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_typeI_SinglePanel_ri_Restriction_constr_25,  memb_ASN_RRC_typeI_SinglePanel_ri_Restriction_constraint_5 },
		0, 0, /* No default value */
		"typeI-SinglePanel-ri-Restriction"
		},
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_typeI_SinglePanel_tags_5[] = {
	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_typeI_SinglePanel_tag2el_5[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrOfAntennaPorts */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeI-SinglePanel-ri-Restriction */
};
static asn_SEQUENCE_specifics_t asn_SPC_ASN_RRC_typeI_SinglePanel_specs_5 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel, _asn_ctx),
	asn_MAP_ASN_RRC_typeI_SinglePanel_tag2el_5,
	2,	/* Count of tags in the map */
	0, 0, 0,	/* Optional elements (not needed) */
	-1,	/* First extension addition */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_typeI_SinglePanel_5 = {
	"typeI-SinglePanel",
	"typeI-SinglePanel",
	&asn_OP_SEQUENCE,
	asn_DEF_ASN_RRC_typeI_SinglePanel_tags_5,
	sizeof(asn_DEF_ASN_RRC_typeI_SinglePanel_tags_5)
		/sizeof(asn_DEF_ASN_RRC_typeI_SinglePanel_tags_5[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_typeI_SinglePanel_tags_5,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_typeI_SinglePanel_tags_5)
		/sizeof(asn_DEF_ASN_RRC_typeI_SinglePanel_tags_5[0]), /* 2 */
	{ 0, 0, SEQUENCE_constraint },
	asn_MBR_ASN_RRC_typeI_SinglePanel_5,
	2,	/* Elements count */
	&asn_SPC_ASN_RRC_typeI_SinglePanel_specs_5	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_ng_n1_n2_27[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.two_two_one_TypeI_MultiPanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_two_two_one_TypeI_MultiPanel_Restriction_constr_28,  memb_ASN_RRC_two_two_one_TypeI_MultiPanel_Restriction_constraint_27 },
		0, 0, /* No default value */
		"two-two-one-TypeI-MultiPanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.two_four_one_TypeI_MultiPanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_two_four_one_TypeI_MultiPanel_Restriction_constr_29,  memb_ASN_RRC_two_four_one_TypeI_MultiPanel_Restriction_constraint_27 },
		0, 0, /* No default value */
		"two-four-one-TypeI-MultiPanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.four_two_one_TypeI_MultiPanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_four_two_one_TypeI_MultiPanel_Restriction_constr_30,  memb_ASN_RRC_four_two_one_TypeI_MultiPanel_Restriction_constraint_27 },
		0, 0, /* No default value */
		"four-two-one-TypeI-MultiPanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.two_two_two_TypeI_MultiPanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_two_two_two_TypeI_MultiPanel_Restriction_constr_31,  memb_ASN_RRC_two_two_two_TypeI_MultiPanel_Restriction_constraint_27 },
		0, 0, /* No default value */
		"two-two-two-TypeI-MultiPanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.two_eight_one_TypeI_MultiPanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_two_eight_one_TypeI_MultiPanel_Restriction_constr_32,  memb_ASN_RRC_two_eight_one_TypeI_MultiPanel_Restriction_constraint_27 },
		0, 0, /* No default value */
		"two-eight-one-TypeI-MultiPanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.four_four_one_TypeI_MultiPanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_four_four_one_TypeI_MultiPanel_Restriction_constr_33,  memb_ASN_RRC_four_four_one_TypeI_MultiPanel_Restriction_constraint_27 },
		0, 0, /* No default value */
		"four-four-one-TypeI-MultiPanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.two_four_two_TypeI_MultiPanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_two_four_two_TypeI_MultiPanel_Restriction_constr_34,  memb_ASN_RRC_two_four_two_TypeI_MultiPanel_Restriction_constraint_27 },
		0, 0, /* No default value */
		"two-four-two-TypeI-MultiPanel-Restriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.four_two_two_TypeI_MultiPanel_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (7 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_four_two_two_TypeI_MultiPanel_Restriction_constr_35,  memb_ASN_RRC_four_two_two_TypeI_MultiPanel_Restriction_constraint_27 },
		0, 0, /* No default value */
		"four-two-two-TypeI-MultiPanel-Restriction"
		},
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_ng_n1_n2_tag2el_27[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* two-two-one-TypeI-MultiPanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* two-four-one-TypeI-MultiPanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* four-two-one-TypeI-MultiPanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* two-two-two-TypeI-MultiPanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* two-eight-one-TypeI-MultiPanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* four-four-one-TypeI-MultiPanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* two-four-two-TypeI-MultiPanel-Restriction */
    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* four-two-two-TypeI-MultiPanel-Restriction */
};
static asn_CHOICE_specifics_t asn_SPC_ASN_RRC_ng_n1_n2_specs_27 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, _asn_ctx),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, present),
	sizeof(((struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2 *)0)->present),
	asn_MAP_ASN_RRC_ng_n1_n2_tag2el_27,
	8,	/* Count of tags in the map */
	0, 0,
	-1	/* Extensions start */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_ng_n1_n2_27 = {
	"ng-n1-n2",
	"ng-n1-n2",
	&asn_OP_CHOICE,
	0,	/* No effective tags (pointer) */
	0,	/* No effective tags (count) */
	0,	/* No tags (pointer) */
	0,	/* No tags (count) */
	{ 0, &asn_PER_type_ASN_RRC_ng_n1_n2_constr_27, CHOICE_constraint },
	asn_MBR_ASN_RRC_ng_n1_n2_27,
	8,	/* Elements count */
	&asn_SPC_ASN_RRC_ng_n1_n2_specs_27	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_typeI_MultiPanel_26[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel, ng_n1_n2),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		+1,	/* EXPLICIT tag at current level */
		&asn_DEF_ASN_RRC_ng_n1_n2_27,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"ng-n1-n2"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel, ri_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_ri_Restriction_constr_36,  memb_ASN_RRC_ri_Restriction_constraint_26 },
		0, 0, /* No default value */
		"ri-Restriction"
		},
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_typeI_MultiPanel_tags_26[] = {
	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_typeI_MultiPanel_tag2el_26[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ng-n1-n2 */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ri-Restriction */
};
static asn_SEQUENCE_specifics_t asn_SPC_ASN_RRC_typeI_MultiPanel_specs_26 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType__typeI_MultiPanel, _asn_ctx),
	asn_MAP_ASN_RRC_typeI_MultiPanel_tag2el_26,
	2,	/* Count of tags in the map */
	0, 0, 0,	/* Optional elements (not needed) */
	-1,	/* First extension addition */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_typeI_MultiPanel_26 = {
	"typeI-MultiPanel",
	"typeI-MultiPanel",
	&asn_OP_SEQUENCE,
	asn_DEF_ASN_RRC_typeI_MultiPanel_tags_26,
	sizeof(asn_DEF_ASN_RRC_typeI_MultiPanel_tags_26)
		/sizeof(asn_DEF_ASN_RRC_typeI_MultiPanel_tags_26[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_typeI_MultiPanel_tags_26,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_typeI_MultiPanel_tags_26)
		/sizeof(asn_DEF_ASN_RRC_typeI_MultiPanel_tags_26[0]), /* 2 */
	{ 0, 0, SEQUENCE_constraint },
	asn_MBR_ASN_RRC_typeI_MultiPanel_26,
	2,	/* Elements count */
	&asn_SPC_ASN_RRC_typeI_MultiPanel_specs_26	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_subType_4[] = {
	{ ATF_POINTER, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType, choice.typeI_SinglePanel),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		0,
		&asn_DEF_ASN_RRC_typeI_SinglePanel_5,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"typeI-SinglePanel"
		},
	{ ATF_POINTER, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType, choice.typeI_MultiPanel),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		0,
		&asn_DEF_ASN_RRC_typeI_MultiPanel_26,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"typeI-MultiPanel"
		},
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_subType_tag2el_4[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* typeI-SinglePanel */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeI-MultiPanel */
};
static asn_CHOICE_specifics_t asn_SPC_ASN_RRC_subType_specs_4 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType, _asn_ctx),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1__subType, present),
	sizeof(((struct ASN_RRC_CodebookConfig__codebookType__type1__subType *)0)->present),
	asn_MAP_ASN_RRC_subType_tag2el_4,
	2,	/* Count of tags in the map */
	0, 0,
	-1	/* Extensions start */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_subType_4 = {
	"subType",
	"subType",
	&asn_OP_CHOICE,
	0,	/* No effective tags (pointer) */
	0,	/* No effective tags (count) */
	0,	/* No tags (pointer) */
	0,	/* No tags (count) */
	{ 0, &asn_PER_type_ASN_RRC_subType_constr_4, CHOICE_constraint },
	asn_MBR_ASN_RRC_subType_4,
	2,	/* Elements count */
	&asn_SPC_ASN_RRC_subType_specs_4	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_type1_3[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1, subType),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		+1,	/* EXPLICIT tag at current level */
		&asn_DEF_ASN_RRC_subType_4,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"subType"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1, codebookMode),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_NativeInteger,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_codebookMode_constr_37,  memb_ASN_RRC_codebookMode_constraint_3 },
		0, 0, /* No default value */
		"codebookMode"
		},
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_type1_tags_3[] = {
	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_type1_tag2el_3[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subType */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* codebookMode */
};
static asn_SEQUENCE_specifics_t asn_SPC_ASN_RRC_type1_specs_3 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType__type1),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type1, _asn_ctx),
	asn_MAP_ASN_RRC_type1_tag2el_3,
	2,	/* Count of tags in the map */
	0, 0, 0,	/* Optional elements (not needed) */
	-1,	/* First extension addition */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_type1_3 = {
	"type1",
	"type1",
	&asn_OP_SEQUENCE,
	asn_DEF_ASN_RRC_type1_tags_3,
	sizeof(asn_DEF_ASN_RRC_type1_tags_3)
		/sizeof(asn_DEF_ASN_RRC_type1_tags_3[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_type1_tags_3,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_type1_tags_3)
		/sizeof(asn_DEF_ASN_RRC_type1_tags_3[0]), /* 2 */
	{ 0, 0, SEQUENCE_constraint },
	asn_MBR_ASN_RRC_type1_3,
	2,	/* Elements count */
	&asn_SPC_ASN_RRC_type1_specs_3	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_n1_n2_codebookSubsetRestriction_41[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.two_one),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_two_one_constr_42,  memb_ASN_RRC_two_one_constraint_41 },
		0, 0, /* No default value */
		"two-one"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.two_two),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_two_two_constr_43,  memb_ASN_RRC_two_two_constraint_41 },
		0, 0, /* No default value */
		"two-two"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.four_one),
		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_four_one_constr_44,  memb_ASN_RRC_four_one_constraint_41 },
		0, 0, /* No default value */
		"four-one"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.three_two),
		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_three_two_constr_45,  memb_ASN_RRC_three_two_constraint_41 },
		0, 0, /* No default value */
		"three-two"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.six_one),
		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_six_one_constr_46,  memb_ASN_RRC_six_one_constraint_41 },
		0, 0, /* No default value */
		"six-one"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.four_two),
		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_four_two_constr_47,  memb_ASN_RRC_four_two_constraint_41 },
		0, 0, /* No default value */
		"four-two"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.eight_one),
		(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_eight_one_constr_48,  memb_ASN_RRC_eight_one_constraint_41 },
		0, 0, /* No default value */
		"eight-one"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.four_three),
		(ASN_TAG_CLASS_CONTEXT | (7 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_four_three_constr_49,  memb_ASN_RRC_four_three_constraint_41 },
		0, 0, /* No default value */
		"four-three"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.six_two),
		(ASN_TAG_CLASS_CONTEXT | (8 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_six_two_constr_50,  memb_ASN_RRC_six_two_constraint_41 },
		0, 0, /* No default value */
		"six-two"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.twelve_one),
		(ASN_TAG_CLASS_CONTEXT | (9 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_twelve_one_constr_51,  memb_ASN_RRC_twelve_one_constraint_41 },
		0, 0, /* No default value */
		"twelve-one"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.four_four),
		(ASN_TAG_CLASS_CONTEXT | (10 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_four_four_constr_52,  memb_ASN_RRC_four_four_constraint_41 },
		0, 0, /* No default value */
		"four-four"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.eight_two),
		(ASN_TAG_CLASS_CONTEXT | (11 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_eight_two_constr_53,  memb_ASN_RRC_eight_two_constraint_41 },
		0, 0, /* No default value */
		"eight-two"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.sixteen_one),
		(ASN_TAG_CLASS_CONTEXT | (12 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_sixteen_one_constr_54,  memb_ASN_RRC_sixteen_one_constraint_41 },
		0, 0, /* No default value */
		"sixteen-one"
		},
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_n1_n2_codebookSubsetRestriction_tag2el_41[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* two-one */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* two-two */
    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* four-one */
    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* three-two */
    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* six-one */
    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* four-two */
    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* eight-one */
    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* four-three */
    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* six-two */
    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* twelve-one */
    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* four-four */
    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* eight-two */
    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 } /* sixteen-one */
};
static asn_CHOICE_specifics_t asn_SPC_ASN_RRC_n1_n2_codebookSubsetRestriction_specs_41 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, _asn_ctx),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, present),
	sizeof(((struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction *)0)->present),
	asn_MAP_ASN_RRC_n1_n2_codebookSubsetRestriction_tag2el_41,
	13,	/* Count of tags in the map */
	0, 0,
	-1	/* Extensions start */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_n1_n2_codebookSubsetRestriction_41 = {
	"n1-n2-codebookSubsetRestriction",
	"n1-n2-codebookSubsetRestriction",
	&asn_OP_CHOICE,
	0,	/* No effective tags (pointer) */
	0,	/* No effective tags (count) */
	0,	/* No tags (pointer) */
	0,	/* No tags (count) */
	{ 0, &asn_PER_type_ASN_RRC_n1_n2_codebookSubsetRestriction_constr_41, CHOICE_constraint },
	asn_MBR_ASN_RRC_n1_n2_codebookSubsetRestriction_41,
	13,	/* Elements count */
	&asn_SPC_ASN_RRC_n1_n2_codebookSubsetRestriction_specs_41	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_typeII_40[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII, n1_n2_codebookSubsetRestriction),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		+1,	/* EXPLICIT tag at current level */
		&asn_DEF_ASN_RRC_n1_n2_codebookSubsetRestriction_41,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"n1-n2-codebookSubsetRestriction"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII, typeII_RI_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_typeII_RI_Restriction_constr_55,  memb_ASN_RRC_typeII_RI_Restriction_constraint_40 },
		0, 0, /* No default value */
		"typeII-RI-Restriction"
		},
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_typeII_tags_40[] = {
	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_typeII_tag2el_40[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* n1-n2-codebookSubsetRestriction */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeII-RI-Restriction */
};
static asn_SEQUENCE_specifics_t asn_SPC_ASN_RRC_typeII_specs_40 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII, _asn_ctx),
	asn_MAP_ASN_RRC_typeII_tag2el_40,
	2,	/* Count of tags in the map */
	0, 0, 0,	/* Optional elements (not needed) */
	-1,	/* First extension addition */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_typeII_40 = {
	"typeII",
	"typeII",
	&asn_OP_SEQUENCE,
	asn_DEF_ASN_RRC_typeII_tags_40,
	sizeof(asn_DEF_ASN_RRC_typeII_tags_40)
		/sizeof(asn_DEF_ASN_RRC_typeII_tags_40[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_typeII_tags_40,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_typeII_tags_40)
		/sizeof(asn_DEF_ASN_RRC_typeII_tags_40[0]), /* 2 */
	{ 0, 0, SEQUENCE_constraint },
	asn_MBR_ASN_RRC_typeII_40,
	2,	/* Elements count */
	&asn_SPC_ASN_RRC_typeII_specs_40	/* Additional specs */
};

static const asn_INTEGER_enum_map_t asn_MAP_ASN_RRC_portSelectionSamplingSize_value2enum_57[] = {
	{ 0,	2,	"n1" },
	{ 1,	2,	"n2" },
	{ 2,	2,	"n3" },
	{ 3,	2,	"n4" }
};
static const unsigned int asn_MAP_ASN_RRC_portSelectionSamplingSize_enum2value_57[] = {
	0,	/* n1(0) */
	1,	/* n2(1) */
	2,	/* n3(2) */
	3	/* n4(3) */
};
static const asn_INTEGER_specifics_t asn_SPC_ASN_RRC_portSelectionSamplingSize_specs_57 = {
	asn_MAP_ASN_RRC_portSelectionSamplingSize_value2enum_57,	/* "tag" => N; sorted by tag */
	asn_MAP_ASN_RRC_portSelectionSamplingSize_enum2value_57,	/* N => "tag"; sorted by N */
	4,	/* Number of elements in the maps */
	0,	/* Enumeration is not extensible */
	1,	/* Strict enumeration */
	0,	/* Native long size */
	0
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_portSelectionSamplingSize_tags_57[] = {
	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_portSelectionSamplingSize_57 = {
	"portSelectionSamplingSize",
	"portSelectionSamplingSize",
	&asn_OP_NativeEnumerated,
	asn_DEF_ASN_RRC_portSelectionSamplingSize_tags_57,
	sizeof(asn_DEF_ASN_RRC_portSelectionSamplingSize_tags_57)
		/sizeof(asn_DEF_ASN_RRC_portSelectionSamplingSize_tags_57[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_portSelectionSamplingSize_tags_57,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_portSelectionSamplingSize_tags_57)
		/sizeof(asn_DEF_ASN_RRC_portSelectionSamplingSize_tags_57[0]), /* 2 */
	{ 0, &asn_PER_type_ASN_RRC_portSelectionSamplingSize_constr_57, NativeEnumerated_constraint },
	0, 0,	/* Defined elsewhere */
	&asn_SPC_ASN_RRC_portSelectionSamplingSize_specs_57	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_typeII_PortSelection_56[] = {
	{ ATF_POINTER, 1, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII_PortSelection, portSelectionSamplingSize),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_ASN_RRC_portSelectionSamplingSize_57,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"portSelectionSamplingSize"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII_PortSelection, typeII_PortSelectionRI_Restriction),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BIT_STRING,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_typeII_PortSelectionRI_Restriction_constr_62,  memb_ASN_RRC_typeII_PortSelectionRI_Restriction_constraint_56 },
		0, 0, /* No default value */
		"typeII-PortSelectionRI-Restriction"
		},
};
static const int asn_MAP_ASN_RRC_typeII_PortSelection_oms_56[] = { 0 };
static const ber_tlv_tag_t asn_DEF_ASN_RRC_typeII_PortSelection_tags_56[] = {
	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_typeII_PortSelection_tag2el_56[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* portSelectionSamplingSize */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeII-PortSelectionRI-Restriction */
};
static asn_SEQUENCE_specifics_t asn_SPC_ASN_RRC_typeII_PortSelection_specs_56 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII_PortSelection),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType__typeII_PortSelection, _asn_ctx),
	asn_MAP_ASN_RRC_typeII_PortSelection_tag2el_56,
	2,	/* Count of tags in the map */
	asn_MAP_ASN_RRC_typeII_PortSelection_oms_56,	/* Optional members */
	1, 0,	/* Root/Additions */
	-1,	/* First extension addition */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_typeII_PortSelection_56 = {
	"typeII-PortSelection",
	"typeII-PortSelection",
	&asn_OP_SEQUENCE,
	asn_DEF_ASN_RRC_typeII_PortSelection_tags_56,
	sizeof(asn_DEF_ASN_RRC_typeII_PortSelection_tags_56)
		/sizeof(asn_DEF_ASN_RRC_typeII_PortSelection_tags_56[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_typeII_PortSelection_tags_56,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_typeII_PortSelection_tags_56)
		/sizeof(asn_DEF_ASN_RRC_typeII_PortSelection_tags_56[0]), /* 2 */
	{ 0, 0, SEQUENCE_constraint },
	asn_MBR_ASN_RRC_typeII_PortSelection_56,
	2,	/* Elements count */
	&asn_SPC_ASN_RRC_typeII_PortSelection_specs_56	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_subType_39[] = {
	{ ATF_POINTER, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType, choice.typeII),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		0,
		&asn_DEF_ASN_RRC_typeII_40,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"typeII"
		},
	{ ATF_POINTER, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType, choice.typeII_PortSelection),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		0,
		&asn_DEF_ASN_RRC_typeII_PortSelection_56,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"typeII-PortSelection"
		},
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_subType_tag2el_39[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* typeII */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeII-PortSelection */
};
static asn_CHOICE_specifics_t asn_SPC_ASN_RRC_subType_specs_39 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType, _asn_ctx),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2__subType, present),
	sizeof(((struct ASN_RRC_CodebookConfig__codebookType__type2__subType *)0)->present),
	asn_MAP_ASN_RRC_subType_tag2el_39,
	2,	/* Count of tags in the map */
	0, 0,
	-1	/* Extensions start */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_subType_39 = {
	"subType",
	"subType",
	&asn_OP_CHOICE,
	0,	/* No effective tags (pointer) */
	0,	/* No effective tags (count) */
	0,	/* No tags (pointer) */
	0,	/* No tags (count) */
	{ 0, &asn_PER_type_ASN_RRC_subType_constr_39, CHOICE_constraint },
	asn_MBR_ASN_RRC_subType_39,
	2,	/* Elements count */
	&asn_SPC_ASN_RRC_subType_specs_39	/* Additional specs */
};

static const asn_INTEGER_enum_map_t asn_MAP_ASN_RRC_phaseAlphabetSize_value2enum_63[] = {
	{ 0,	2,	"n4" },
	{ 1,	2,	"n8" }
};
static const unsigned int asn_MAP_ASN_RRC_phaseAlphabetSize_enum2value_63[] = {
	0,	/* n4(0) */
	1	/* n8(1) */
};
static const asn_INTEGER_specifics_t asn_SPC_ASN_RRC_phaseAlphabetSize_specs_63 = {
	asn_MAP_ASN_RRC_phaseAlphabetSize_value2enum_63,	/* "tag" => N; sorted by tag */
	asn_MAP_ASN_RRC_phaseAlphabetSize_enum2value_63,	/* N => "tag"; sorted by N */
	2,	/* Number of elements in the maps */
	0,	/* Enumeration is not extensible */
	1,	/* Strict enumeration */
	0,	/* Native long size */
	0
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_phaseAlphabetSize_tags_63[] = {
	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_phaseAlphabetSize_63 = {
	"phaseAlphabetSize",
	"phaseAlphabetSize",
	&asn_OP_NativeEnumerated,
	asn_DEF_ASN_RRC_phaseAlphabetSize_tags_63,
	sizeof(asn_DEF_ASN_RRC_phaseAlphabetSize_tags_63)
		/sizeof(asn_DEF_ASN_RRC_phaseAlphabetSize_tags_63[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_phaseAlphabetSize_tags_63,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_phaseAlphabetSize_tags_63)
		/sizeof(asn_DEF_ASN_RRC_phaseAlphabetSize_tags_63[0]), /* 2 */
	{ 0, &asn_PER_type_ASN_RRC_phaseAlphabetSize_constr_63, NativeEnumerated_constraint },
	0, 0,	/* Defined elsewhere */
	&asn_SPC_ASN_RRC_phaseAlphabetSize_specs_63	/* Additional specs */
};

static const asn_INTEGER_enum_map_t asn_MAP_ASN_RRC_numberOfBeams_value2enum_67[] = {
	{ 0,	3,	"two" },
	{ 1,	5,	"three" },
	{ 2,	4,	"four" }
};
static const unsigned int asn_MAP_ASN_RRC_numberOfBeams_enum2value_67[] = {
	2,	/* four(2) */
	1,	/* three(1) */
	0	/* two(0) */
};
static const asn_INTEGER_specifics_t asn_SPC_ASN_RRC_numberOfBeams_specs_67 = {
	asn_MAP_ASN_RRC_numberOfBeams_value2enum_67,	/* "tag" => N; sorted by tag */
	asn_MAP_ASN_RRC_numberOfBeams_enum2value_67,	/* N => "tag"; sorted by N */
	3,	/* Number of elements in the maps */
	0,	/* Enumeration is not extensible */
	1,	/* Strict enumeration */
	0,	/* Native long size */
	0
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_numberOfBeams_tags_67[] = {
	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_numberOfBeams_67 = {
	"numberOfBeams",
	"numberOfBeams",
	&asn_OP_NativeEnumerated,
	asn_DEF_ASN_RRC_numberOfBeams_tags_67,
	sizeof(asn_DEF_ASN_RRC_numberOfBeams_tags_67)
		/sizeof(asn_DEF_ASN_RRC_numberOfBeams_tags_67[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_numberOfBeams_tags_67,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_numberOfBeams_tags_67)
		/sizeof(asn_DEF_ASN_RRC_numberOfBeams_tags_67[0]), /* 2 */
	{ 0, &asn_PER_type_ASN_RRC_numberOfBeams_constr_67, NativeEnumerated_constraint },
	0, 0,	/* Defined elsewhere */
	&asn_SPC_ASN_RRC_numberOfBeams_specs_67	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_type2_38[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2, subType),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		+1,	/* EXPLICIT tag at current level */
		&asn_DEF_ASN_RRC_subType_39,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"subType"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2, phaseAlphabetSize),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_ASN_RRC_phaseAlphabetSize_63,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"phaseAlphabetSize"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2, subbandAmplitude),
		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_BOOLEAN,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"subbandAmplitude"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2, numberOfBeams),
		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_ASN_RRC_numberOfBeams_67,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"numberOfBeams"
		},
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_type2_tags_38[] = {
	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_type2_tag2el_38[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subType */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* phaseAlphabetSize */
    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* subbandAmplitude */
    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* numberOfBeams */
};
static asn_SEQUENCE_specifics_t asn_SPC_ASN_RRC_type2_specs_38 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType__type2),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType__type2, _asn_ctx),
	asn_MAP_ASN_RRC_type2_tag2el_38,
	4,	/* Count of tags in the map */
	0, 0, 0,	/* Optional elements (not needed) */
	-1,	/* First extension addition */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_type2_38 = {
	"type2",
	"type2",
	&asn_OP_SEQUENCE,
	asn_DEF_ASN_RRC_type2_tags_38,
	sizeof(asn_DEF_ASN_RRC_type2_tags_38)
		/sizeof(asn_DEF_ASN_RRC_type2_tags_38[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_type2_tags_38,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_type2_tags_38)
		/sizeof(asn_DEF_ASN_RRC_type2_tags_38[0]), /* 2 */
	{ 0, 0, SEQUENCE_constraint },
	asn_MBR_ASN_RRC_type2_38,
	4,	/* Elements count */
	&asn_SPC_ASN_RRC_type2_specs_38	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_codebookType_2[] = {
	{ ATF_POINTER, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType, choice.type1),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		0,
		&asn_DEF_ASN_RRC_type1_3,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"type1"
		},
	{ ATF_POINTER, 0, offsetof(struct ASN_RRC_CodebookConfig__codebookType, choice.type2),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		0,
		&asn_DEF_ASN_RRC_type2_38,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"type2"
		},
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_codebookType_tag2el_2[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* type1 */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* type2 */
};
static asn_CHOICE_specifics_t asn_SPC_ASN_RRC_codebookType_specs_2 = {
	sizeof(struct ASN_RRC_CodebookConfig__codebookType),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType, _asn_ctx),
	offsetof(struct ASN_RRC_CodebookConfig__codebookType, present),
	sizeof(((struct ASN_RRC_CodebookConfig__codebookType *)0)->present),
	asn_MAP_ASN_RRC_codebookType_tag2el_2,
	2,	/* Count of tags in the map */
	0, 0,
	-1	/* Extensions start */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_codebookType_2 = {
	"codebookType",
	"codebookType",
	&asn_OP_CHOICE,
	0,	/* No effective tags (pointer) */
	0,	/* No effective tags (count) */
	0,	/* No tags (pointer) */
	0,	/* No tags (count) */
	{ 0, &asn_PER_type_ASN_RRC_codebookType_constr_2, CHOICE_constraint },
	asn_MBR_ASN_RRC_codebookType_2,
	2,	/* Elements count */
	&asn_SPC_ASN_RRC_codebookType_specs_2	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ASN_RRC_CodebookConfig_1[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_CodebookConfig, codebookType),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		+1,	/* EXPLICIT tag at current level */
		&asn_DEF_ASN_RRC_codebookType_2,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"codebookType"
		},
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_CodebookConfig_tags_1[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_CodebookConfig_tag2el_1[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* codebookType */
};
asn_SEQUENCE_specifics_t asn_SPC_ASN_RRC_CodebookConfig_specs_1 = {
	sizeof(struct ASN_RRC_CodebookConfig),
	offsetof(struct ASN_RRC_CodebookConfig, _asn_ctx),
	asn_MAP_ASN_RRC_CodebookConfig_tag2el_1,
	1,	/* Count of tags in the map */
	0, 0, 0,	/* Optional elements (not needed) */
	-1,	/* First extension addition */
};
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_CodebookConfig = {
	"CodebookConfig",
	"CodebookConfig",
	&asn_OP_SEQUENCE,
	asn_DEF_ASN_RRC_CodebookConfig_tags_1,
	sizeof(asn_DEF_ASN_RRC_CodebookConfig_tags_1)
		/sizeof(asn_DEF_ASN_RRC_CodebookConfig_tags_1[0]), /* 1 */
	asn_DEF_ASN_RRC_CodebookConfig_tags_1,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_CodebookConfig_tags_1)
		/sizeof(asn_DEF_ASN_RRC_CodebookConfig_tags_1[0]), /* 1 */
	{ 0, 0, SEQUENCE_constraint },
	asn_MBR_ASN_RRC_CodebookConfig_1,
	1,	/* Elements count */
	&asn_SPC_ASN_RRC_CodebookConfig_specs_1	/* Additional specs */
};

