pub const SIGNATURE: [u8; 8] = [137, 70, 77, 73, 13, 10, 26, 10];
pub const HEADER_SIZE: usize = 24;
pub const TABLE_PREFIX_SIZE: usize = 4;
pub const SECTION_ENTRY_SIZE: usize = 12;
pub const IR_VERSION: u16 = 3;
pub const MAX_MODULE_SIZE: usize = 16777216;
pub const MAX_SECTIONS: usize = 64;
pub const MAX_STRINGS: usize = 1048576;
pub const MAX_SLOTS: usize = 65535;
pub const MAX_ISLANDS: usize = 4096;
pub const MAX_SCHEMA_ITEMS: usize = 1024;
pub const MAX_TYPE_DEPTH: usize = 16;
pub const MAX_KEY_SEGMENTS: usize = 32;
pub const MAX_CONTROL_DEPTH: usize = 64;
pub const MAX_LIST_DEPTH: usize = 4;
pub const MAX_CONTRACT_BYTES: usize = 1048576;
pub const MAX_BINDING_RECORDS: usize = 65535;
pub const MAX_VALUE_DEPTH: usize = 64;
pub const MAX_PROP_PATH_SEGMENTS: usize = 1024;
pub const MAX_CONSTANT_NODES: usize = 65535;
pub const MAX_CONSTANT_DEPTH: usize = 1024;
pub const MAX_CONSTANT_ARRAY_ELEMENTS: usize = 65535;
pub const MAX_ISLAND_STATE_BYTES: usize = 1048576;
pub const CRC_POLYNOMIAL: u32 = 3988292384;
pub const CRC_CHECK_VALUE: u32 = 3421780262;
pub const SECTION_BYTECODE: u16 = 1;
pub const SECTION_STRINGS: u16 = 2;
pub const SECTION_SLOTS: u16 = 3;
pub const SECTION_ISLANDS: u16 = 4;
pub const SECTION_PROPS_SCHEMA: u16 = 5;
pub const SECTION_KEY_PATHS: u16 = 6;
pub const SECTION_SOURCE_POSITIONS: u16 = 7;
pub const SECTION_BUILD_IDENTITY: u16 = 8;
pub const SECTION_DEPLOYMENT: u16 = 9;
pub const SECTION_ISLAND_CONTRACTS: u16 = 10;
pub const SECTION_REQUIRED: u16 = 1;
pub const SLOT_TYPE_TEXT: u8 = 1;
pub const SLOT_TYPE_BOOL: u8 = 2;
pub const SLOT_TYPE_NUMBER: u8 = 3;
pub const SLOT_TYPE_ARRAY: u8 = 4;
pub const SLOT_TYPE_OBJECT: u8 = 5;
pub const SLOT_SOURCE_SERVER: u8 = 0;
pub const SLOT_SOURCE_CLIENT: u8 = 1;
pub const TRIGGER_LOAD: u8 = 1;
pub const TRIGGER_VISIBLE: u8 = 2;
pub const TRIGGER_INTERACTION: u8 = 3;
pub const TRIGGER_IDLE: u8 = 4;
pub const SCHEMA_BOOLEAN: u8 = 1;
pub const SCHEMA_STRING: u8 = 2;
pub const SCHEMA_NUMBER: u8 = 3;
pub const SCHEMA_DATE: u8 = 4;
pub const SCHEMA_ENUM: u8 = 5;
pub const SCHEMA_ARRAY: u8 = 6;
pub const SCHEMA_OPTIONAL: u8 = 7;
pub const SCHEMA_OBJECT: u8 = 8;
pub const LOAD_101: &str = "LOAD-101";
pub const LOAD_102: &str = "LOAD-102";
pub const LOAD_103: &str = "LOAD-103";
pub const LOAD_104: &str = "LOAD-104";
pub const LOAD_105: &str = "LOAD-105";
pub const LOAD_106: &str = "LOAD-106";
pub const LOAD_107: &str = "LOAD-107";
pub const LOAD_108: &str = "LOAD-108";
pub const OP_OPEN_TAG: u8 = 1;
pub const OP_CLOSE_TAG: u8 = 2;
pub const OP_VOID_TAG: u8 = 3;
pub const OP_TEXT: u8 = 4;
pub const OP_DYN_TEXT: u8 = 5;
pub const OP_DYN_ATTR: u8 = 6;
pub const OP_SHOW_IF: u8 = 7;
pub const OP_SHOW_ELSE: u8 = 8;
pub const OP_LIST: u8 = 10;
pub const OP_ISLAND_START: u8 = 11;
pub const OP_ISLAND_END: u8 = 12;
pub const OP_PROP: u8 = 18;
pub const OP_COALESCE: u8 = 19;
pub const OPCODE_OPERANDS: &[(u8, &str)] = &[
(1, "str_idx:u32 attr_count:u16 attrs:(key:u32,val:u32)[]"),
(2, "str_idx:u32"),
(3, "str_idx:u32 attr_count:u16 attrs:(key:u32,val:u32)[]"),
(4, "str_idx:u32"),
(5, "slot_id:u16 marker_id:u16"),
(6, "attr_str_idx:u32 slot_id:u16"),
(7, "slot_id:u16 then_len:u32 else_len:u32 then:bytes SHOW_ELSE else:bytes"),
(8, ""),
(10, "slot_id:u16 item_slot_id:u16 body_len:u32 body:bytes"),
(11, "island_id:u16"),
(12, "island_id:u16"),
(18, "src_slot_id:u16 prop_str_idx:u32 target_slot_id:u16"),
(19, "source_slot:u16 fallback_slot:u16 destination_slot:u16"),
];
pub const RESERVED_OPCODES: [u8; 6] = [9, 13, 14, 15, 16, 17];