#![allow(unused_parens)]
#![allow(clippy::unnecessary_cast, clippy::unreadable_literal, clippy::double_parens)]
#![allow(non_camel_case_types)]
#![allow(unused_imports)]
use super::ot_shaper_indic::ot_category_t::*;
use super::ot_shaper_indic::ot_position_t::*;
use OT_A as _OT_A;
use OT_As as _OT_As;
use OT_C as _OT_C;
use OT_CM as _OT_CM;
use OT_CS as _OT_CS;
use OT_DOTTEDCIRCLE as _OT_DC;
use OT_H as _OT_H;
use OT_M as _OT_M;
use OT_MH as _OT_MH;
use OT_ML as _OT_ML;
use OT_MPst as _OT_MP;
use OT_MR as _OT_MR;
use OT_MW as _OT_MW;
use OT_MY as _OT_MY;
use OT_N as _OT_N;
use OT_PLACEHOLDER as _OT_GB;
use OT_PT as _OT_PT;
use OT_Ra as _OT_R;
use OT_Repha as _OT_Rf;
use OT_Robatic as _OT_Rt;
use OT_SM as _OT_SM;
use OT_SMPst as _OT_SP;
use OT_Symbol as _OT_S;
use OT_V as _OT_V;
use OT_VAbv as _OT_VA;
use OT_VBlw as _OT_VB;
use OT_VPre as _OT_VL;
use OT_VPst as _OT_VR;
use OT_VS as _OT_VS;
use OT_X as _OT_X;
use OT_Xgroup as _OT_Xg;
use OT_Ygroup as _OT_Yg;
use OT_ZWJ as _OT_ZWJ;
use OT_ZWNJ as _OT_ZWNJ;
use POS_ABOVE_C as _POS_T;
use POS_AFTER_MAIN as _POS_A;
use POS_AFTER_POST as _POS_AP;
use POS_AFTER_SUB as _POS_AS;
use POS_BASE_C as _POS_C;
use POS_BEFORE_SUB as _POS_BS;
use POS_BELOW_C as _POS_B;
use POS_END as _POS_X;
use POS_POST_C as _POS_R;
use POS_PRE_C as _POS_L;
use POS_PRE_M as _POS_LM;
use POS_SMVD as _POS_SM;
const fn indic_combine_categories (s: u8, m: u8) -> u16
{
(s as u16) | ((m as u16) << 8)
}
pub(crate) static _hb_indic_values: [u16; 42]=
[
indic_combine_categories(_OT_A, _POS_SM), indic_combine_categories(_OT_As, _POS_X),
indic_combine_categories(_OT_C, _POS_C), indic_combine_categories(_OT_CM, _POS_C),
indic_combine_categories(_OT_CS, _POS_C), indic_combine_categories(_OT_DC, _POS_C),
indic_combine_categories(_OT_GB, _POS_C), indic_combine_categories(_OT_H, _POS_B),
indic_combine_categories(_OT_H, _POS_T), indic_combine_categories(_OT_H, _POS_X),
indic_combine_categories(_OT_M, _POS_A), indic_combine_categories(_OT_M, _POS_AP),
indic_combine_categories(_OT_M, _POS_AS), indic_combine_categories(_OT_M, _POS_B),
indic_combine_categories(_OT_M, _POS_BS), indic_combine_categories(_OT_M, _POS_LM),
indic_combine_categories(_OT_MH, _POS_X), indic_combine_categories(_OT_ML, _POS_X),
indic_combine_categories(_OT_MP, _POS_AP), indic_combine_categories(_OT_MR, _POS_X),
indic_combine_categories(_OT_MW, _POS_X), indic_combine_categories(_OT_MY, _POS_X),
indic_combine_categories(_OT_N, _POS_X), indic_combine_categories(_OT_PT, _POS_X),
indic_combine_categories(_OT_R, _POS_C), indic_combine_categories(_OT_Rf, _POS_X),
indic_combine_categories(_OT_Rt, _POS_X), indic_combine_categories(_OT_S, _POS_SM),
indic_combine_categories(_OT_SM, _POS_BS), indic_combine_categories(_OT_SM, _POS_SM),
indic_combine_categories(_OT_SP, _POS_SM), indic_combine_categories(_OT_V, _POS_C),
indic_combine_categories(_OT_VA, _POS_T), indic_combine_categories(_OT_VB, _POS_B),
indic_combine_categories(_OT_VL, _POS_L), indic_combine_categories(_OT_VR, _POS_R),
indic_combine_categories(_OT_VS, _POS_X), indic_combine_categories(_OT_X, _POS_X),
indic_combine_categories(_OT_Xg, _POS_X), indic_combine_categories(_OT_Yg, _POS_X),
indic_combine_categories(_OT_ZWJ, _POS_X),indic_combine_categories(_OT_ZWNJ, _POS_X),
];
pub(crate) static _hb_indic_u8: [u8; 1220]=
[
1, 0, 50, 4, 5, 96, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,186, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,
0, 0, 0, 0,208,224, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 22, 23,
24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 26, 0, 0,
0, 27, 0, 0, 0, 0, 28, 29, 30, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 33, 0, 34,
0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 25, 2, 10, 0, 0, 0, 0, 26, 0,
27, 0, 0, 0, 28, 0, 0, 0, 0, 0, 29, 11, 30, 1, 1, 1,
4, 31, 32, 33, 34, 1, 6, 2, 35, 1, 12, 13, 7, 1, 1, 3,
36, 14, 15, 37, 16, 17, 6, 2, 38, 39, 18, 40, 7, 1, 1, 3,
41, 42, 43, 44, 45, 46, 19, 2, 47, 0, 18, 48, 49, 1, 1, 3,
20, 14, 50, 51, 0, 0, 21, 2, 0, 52, 53, 13, 7, 1, 1, 3,
20, 54, 15, 55, 56, 17, 6, 2, 57, 0, 58, 59, 60, 61, 62, 63,
4, 64, 65, 66, 16, 0, 19, 2, 0, 0, 67, 8, 9, 1, 1, 3,
4, 22, 68, 69, 70, 71, 23, 2, 0, 0, 12, 8, 9, 1, 1, 3,
72, 22, 73, 74, 75, 76, 23, 2, 77, 0, 78, 8, 9, 1, 1, 1,
4, 79, 80, 81, 82, 83, 21, 2, 0, 84, 85, 1, 1, 86, 87, 88,
89, 90, 2, 91, 92, 93, 94, 95, 96, 1, 97, 98, 2, 99, 0, 0,
0, 0, 1, 1, 1,100,101, 11,102,103,104,105,106,107, 2, 10,
0, 0, 0, 0,108, 5, 5,109,110,111, 0,112,113, 0,114, 0,
0, 0, 0, 0, 0, 0, 0, 0,115, 0,116, 0, 0, 0, 0, 0,
0, 0, 0,117, 0, 0, 0, 0, 0,118, 0, 0, 0, 0, 5, 5,
119,120, 0, 0, 0, 0,121, 1, 2,122, 0, 0, 0, 0, 1, 1,
123,124, 24, 24, 0, 0, 0, 0, 0, 0,125, 0, 0, 0, 0, 0,
0,126, 0, 0, 2, 2, 2, 10, 0, 0, 0, 0, 2, 2, 2, 2,
4, 4, 4, 4, 10, 2, 2, 2, 26, 2, 2, 2, 8, 8, 8, 8,
6, 18, 0, 4, 20, 14, 24, 2, 6, 6, 20, 6, 20, 6, 24, 2,
4, 0, 0, 0, 6, 6, 6, 6, 66, 12, 14, 6, 6, 6, 20, 14,
2, 0, 36, 50, 52, 18, 38, 68, 0, 0, 0, 32, 0, 0, 2, 16,
56, 12, 14, 6, 0, 0, 0, 4, 44, 2, 16, 2, 6, 22, 0, 4,
2, 0, 36, 28, 6, 28, 0, 4, 30, 30, 30, 30, 0, 0, 42, 0,
34, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 42, 12, 12, 6, 6,
6, 6, 24, 2, 2, 18, 36,112, 18, 18, 18, 18, 18, 18,114,116,
118,120,122, 18, 0, 6, 6, 6, 44, 10, 0, 2, 54, 32, 46, 10,
26, 0, 0, 0, 0, 0, 34, 70, 6, 20, 0, 14, 44, 2, 16, 10,
2, 0, 72, 50,124, 48, 0, 32, 48, 32, 46, 0,126, 0, 0, 0,
16, 2, 10, 10, 12, 2,128, 0, 6, 6, 6, 14, 6, 14, 24, 2,
22, 22, 52, 74, 76, 32, 46, 0, 16, 58, 58, 78,130, 12, 14, 6,
2, 0, 36,132,134, 32, 46, 0, 0, 0, 80,136, 16, 0, 0, 0,
0, 70, 14, 6, 6, 20, 0, 6, 20, 6, 24, 0, 16, 10, 10, 2,
0, 16, 10, 0, 2, 10, 0, 2, 2, 0, 0, 22, 76, 48, 0, 82,
54, 22, 84, 0, 12, 12,138, 6, 28, 60, 38, 28, 86, 28, 88, 0,
0, 0,140, 86, 2, 10, 16, 0, 26, 2, 16, 2, 28, 60, 38, 60,
38, 18, 88, 0, 0, 0, 74, 38, 0, 0, 16, 10,142,144, 0, 0,
12, 12,146, 6, 2,148,150, 22, 22, 22, 48, 82, 54, 22, 84,152,
0, 0, 2,154, 0, 0, 0, 14, 0, 2, 2, 2, 2, 2, 26, 2,
2,156, 2, 2, 90, 6, 6, 6, 6,158, 92, 94,160,162, 62, 58,
164,166,168,170, 4, 4, 0, 10, 2, 6, 6, 96, 98, 26, 2,172,
174,100,176,178,100,102,102, 2,104, 62,180, 2, 2,182,184,186,
12, 12, 12,188, 4, 12,190, 0, 2, 26, 2, 2, 2, 90, 6, 6,
6, 6, 0, 92, 62, 94, 98,192,194,196, 96,198,200,106,106,108,
108,202, 0, 0, 42, 0,204, 0, 8,206, 8, 8,208, 40,210, 40,
40, 2,212,214, 8, 34, 0, 0, 0, 0,216, 0, 4, 4, 4, 0,
0, 34, 0, 0, 0, 0,110, 0, 0, 64,110, 0, 0, 0,218, 0,
0, 42, 4, 34, 8, 40, 40, 40, 0, 0, 0,220, 2, 2,104, 16,
4, 2, 2, 10, 16, 2, 4, 34, 0,222, 78, 2, 56, 12, 0, 0,
0, 80, 72, 0, 37, 37, 2, 2, 6, 6, 31, 31, 0, 0, 2, 37,
29, 29, 37, 31, 37, 2, 12, 12, 31, 37, 11, 11, 31, 2, 24, 2,
14, 14, 36, 36, 37, 11, 6, 37, 22, 27, 12, 37, 27, 27, 37, 6,
24, 37, 11, 7, 11, 37, 11, 15, 11, 12, 15, 37, 37, 29, 0, 22,
14, 12, 32, 32, 30, 30, 6, 29, 37, 15, 29, 37, 22, 37, 37, 12,
12, 11, 22, 22, 37, 22, 15, 15, 11, 8, 14, 37, 14, 8, 2, 31,
35, 32, 32, 33, 35, 35, 33, 33, 35, 23, 23, 23, 2, 32, 26, 38,
38, 38, 30, 37, 12, 15, 12, 7, 15, 12, 37, 0, 0, 29, 29, 12,
18, 11, 37, 13, 37, 3, 37, 28, 11, 10, 10, 37, 10, 11, 29, 31,
37, 14, 37, 4, 4, 29, 6, 31, 2, 12, 12, 27, 25, 37, 2, 11,
2, 24, 31, 35, 33, 34, 0, 32, 29, 9, 1, 21, 19, 20, 16, 2,
21, 21, 17, 2, 23, 2, 2, 35, 32, 2, 20, 35, 34, 32, 32, 29,
2, 29, 29, 32, 32, 35, 35, 34, 34, 34, 38, 39, 39, 26, 9, 39,
27, 39, 0, 37, 0, 27, 27, 0, 0, 2, 2, 0, 41, 40, 5, 37,
31, 12, 2, 23,
];
#[inline(always)]
fn _hb_indic_b4 (a: &[u8], i: usize) -> u8
{
(a[i>>1]>>((i&1)<<2))&15
}
#[inline]
pub(crate) fn _hb_indic_get_categories_index (u: usize) -> u8
{
if u<71396usize { (_hb_indic_u8[996usize+(((_hb_indic_u8[488usize+((((_hb_indic_u8[186usize+((((_hb_indic_u8[70usize+((((_hb_indic_b4(&_hb_indic_u8,(((((((((u)>>1))>>2))>>3))>>3) as usize) as usize)) as usize)<<3) as usize+((((((((u)>>1))>>2))>>3))&7) as usize) as usize]) as usize)<<3) as usize+((((((u)>>1))>>2))&7) as usize) as usize]) as usize)<<2) as usize+((((u)>>1))&3) as usize) as usize]) as usize) as usize+((u)&1) as usize) as usize]) as u8 } else { 37 }
}
#[inline]
pub(crate) fn get_categories (u: u32) -> (u8, u8)
{
let v = _hb_indic_values[_hb_indic_get_categories_index (u as usize) as usize];
((v & 0xFF) as u8, (v >> 8) as u8)
}