From dc7e44a68ce1548fcb3922d57834da72152c58da Mon Sep 17 00:00:00 2001 From: may Date: Thu, 23 Oct 2025 18:23:08 +0200 Subject: [PATCH 1/3] add enumerated property for Numeric_Type --- components/properties/src/names.rs | 8 ++ components/properties/src/props.rs | 73 +++++++++++++++++ components/properties/src/provider.rs | 37 ++++++--- components/properties/src/provider/names.rs | 18 +++++ components/properties/src/trievalue.rs | 14 +++- provider/data/properties/data/mod.rs | 8 ++ .../property_enum_numeric_type_v1.rs.data | 80 ++++++++++++++++++ ...property_name_long_numeric_type_v1.rs.data | 80 ++++++++++++++++++ ...roperty_name_parse_numeric_type_v1.rs.data | 81 +++++++++++++++++++ ...roperty_name_short_numeric_type_v1.rs.data | 80 ++++++++++++++++++ provider/data/properties/fingerprints.csv | 4 + provider/data/properties/stubdata/mod.rs | 8 ++ .../property_enum_numeric_type_v1.rs.data | 80 ++++++++++++++++++ ...property_name_long_numeric_type_v1.rs.data | 80 ++++++++++++++++++ ...roperty_name_parse_numeric_type_v1.rs.data | 81 +++++++++++++++++++ ...roperty_name_short_numeric_type_v1.rs.data | 80 ++++++++++++++++++ provider/registry/src/lib.rs | 4 + .../src/properties/enum_codepointtrie.rs | 9 +++ 18 files changed, 813 insertions(+), 12 deletions(-) create mode 100644 provider/data/properties/data/property_enum_numeric_type_v1.rs.data create mode 100644 provider/data/properties/data/property_name_long_numeric_type_v1.rs.data create mode 100644 provider/data/properties/data/property_name_parse_numeric_type_v1.rs.data create mode 100644 provider/data/properties/data/property_name_short_numeric_type_v1.rs.data create mode 100644 provider/data/properties/stubdata/property_enum_numeric_type_v1.rs.data create mode 100644 provider/data/properties/stubdata/property_name_long_numeric_type_v1.rs.data create mode 100644 provider/data/properties/stubdata/property_name_parse_numeric_type_v1.rs.data create mode 100644 provider/data/properties/stubdata/property_name_short_numeric_type_v1.rs.data diff --git a/components/properties/src/names.rs b/components/properties/src/names.rs index d48b52a6a4d..c29c7df5e6c 100644 --- a/components/properties/src/names.rs +++ b/components/properties/src/names.rs @@ -807,6 +807,14 @@ impl_value_getter! { } } +impl_value_getter! { + impl NumericType { + PropertyNameParseNumericTypeV1 / SINGLETON_PROPERTY_NAME_PARSE_NUMERIC_TYPE_V1; + PropertyEnumToValueNameLinearMap / PropertyNameShortNumericTypeV1 / SINGLETON_PROPERTY_NAME_SHORT_NUMERIC_TYPE_V1; + PropertyEnumToValueNameLinearMap / PropertyNameLongNumericTypeV1 / SINGLETON_PROPERTY_NAME_LONG_NUMERIC_TYPE_V1; + } +} + impl_value_getter! { impl GeneralCategory { PropertyNameParseGeneralCategoryV1 / SINGLETON_PROPERTY_NAME_PARSE_GENERAL_CATEGORY_V1; diff --git a/components/properties/src/props.rs b/components/properties/src/props.rs index 7a35cd0e6e9..5463c71d5fa 100644 --- a/components/properties/src/props.rs +++ b/components/properties/src/props.rs @@ -112,6 +112,71 @@ macro_rules! make_enumerated_property { }; } +/// Enumerated property Numeric_Type. +/// +/// See Section 4.6, Numeric Value in The Unicode Standard for the summary of +/// each property value. +/// +/// # Example +/// +/// ``` +/// use icu::properties::{props::NumericType, CodePointMapData}; +/// +/// assert_eq!( +/// CodePointMapData::::new().get('0'), +/// NumericType::Decimal, +/// ); // U+0030 +/// assert_eq!( +/// CodePointMapData::::new().get('½'), +/// NumericType::Numeric, +/// ); // U+00BD +/// ``` +#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +#[allow(clippy::exhaustive_structs)] // newtype +#[repr(transparent)] +pub struct NumericType(pub(crate) u8); + +impl NumericType { + /// Returns an ICU4C `UNumericType` value. + pub const fn to_icu4c_value(self) -> u8 { + self.0 + } + /// Constructor from an ICU4C `UNumericType` value. + pub const fn from_icu4c_value(value: u8) -> Self { + Self(value) + } +} + +create_const_array! { +#[allow(non_upper_case_globals)] +impl NumericType { + /// Characters without numeric value + pub const None: NumericType = NumericType(0); + /// (`De`) Characters of positional decimal systems + /// + /// These are coextensive with [`GeneralCategory::DecimalNumber`]. + pub const Decimal: NumericType = NumericType(1); + /// (`Di`) Variants of positional or sequences thereof. + /// + /// The distinction between [`NumericType::Digit`] and [`NumericType::Numeric`] + /// has not proven to be useful, so no further characters will be added to + /// this type. + pub const Digit: NumericType = NumericType(2); + /// (`Nu`) Other characters with numeric value + pub const Numeric: NumericType = NumericType(3); +} +} + +make_enumerated_property! { + name: "Numeric_Type"; + short_name: "nt"; + ident: NumericType; + data_marker: crate::provider::PropertyEnumNumericTypeV1; + singleton: SINGLETON_PROPERTY_ENUM_NUMERIC_TYPE_V1; + ule_ty: u8; +} + /// Enumerated property Bidi_Class /// /// These are the categories required by the Unicode Bidirectional Algorithm. @@ -3303,6 +3368,14 @@ mod test_enumerated_property_completeness { ); } + #[test] + fn test_nt() { + check_enum( + crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_NUMERIC_TYPE_V1, + NumericType::ALL_VALUES, + ); + } + #[test] fn test_hst() { check_enum( diff --git a/components/properties/src/provider.rs b/components/properties/src/provider.rs index 399b6ae2dcd..e90a7625eda 100644 --- a/components/properties/src/provider.rs +++ b/components/properties/src/provider.rs @@ -26,21 +26,22 @@ pub use names::{ PropertyNameLongBidiClassV1, PropertyNameLongEastAsianWidthV1, PropertyNameLongGeneralCategoryV1, PropertyNameLongGraphemeClusterBreakV1, PropertyNameLongHangulSyllableTypeV1, PropertyNameLongIndicSyllabicCategoryV1, - PropertyNameLongJoiningTypeV1, PropertyNameLongLineBreakV1, PropertyNameLongScriptV1, - PropertyNameLongSentenceBreakV1, PropertyNameLongVerticalOrientationV1, - PropertyNameLongWordBreakV1, PropertyNameParseBidiClassV1, - PropertyNameParseCanonicalCombiningClassV1, PropertyNameParseEastAsianWidthV1, - PropertyNameParseGeneralCategoryMaskV1, PropertyNameParseGeneralCategoryV1, - PropertyNameParseGraphemeClusterBreakV1, PropertyNameParseHangulSyllableTypeV1, - PropertyNameParseIndicSyllabicCategoryV1, PropertyNameParseJoiningTypeV1, - PropertyNameParseLineBreakV1, PropertyNameParseScriptV1, PropertyNameParseSentenceBreakV1, + PropertyNameLongJoiningTypeV1, PropertyNameLongLineBreakV1, PropertyNameLongNumericTypeV1, + PropertyNameLongScriptV1, PropertyNameLongSentenceBreakV1, + PropertyNameLongVerticalOrientationV1, PropertyNameLongWordBreakV1, + PropertyNameParseBidiClassV1, PropertyNameParseCanonicalCombiningClassV1, + PropertyNameParseEastAsianWidthV1, PropertyNameParseGeneralCategoryMaskV1, + PropertyNameParseGeneralCategoryV1, PropertyNameParseGraphemeClusterBreakV1, + PropertyNameParseHangulSyllableTypeV1, PropertyNameParseIndicSyllabicCategoryV1, + PropertyNameParseJoiningTypeV1, PropertyNameParseLineBreakV1, PropertyNameParseNumericTypeV1, + PropertyNameParseScriptV1, PropertyNameParseSentenceBreakV1, PropertyNameParseVerticalOrientationV1, PropertyNameParseWordBreakV1, PropertyNameShortBidiClassV1, PropertyNameShortEastAsianWidthV1, PropertyNameShortGeneralCategoryV1, PropertyNameShortGraphemeClusterBreakV1, PropertyNameShortHangulSyllableTypeV1, PropertyNameShortIndicSyllabicCategoryV1, - PropertyNameShortJoiningTypeV1, PropertyNameShortLineBreakV1, PropertyNameShortScriptV1, - PropertyNameShortSentenceBreakV1, PropertyNameShortVerticalOrientationV1, - PropertyNameShortWordBreakV1, + PropertyNameShortJoiningTypeV1, PropertyNameShortLineBreakV1, PropertyNameShortNumericTypeV1, + PropertyNameShortScriptV1, PropertyNameShortSentenceBreakV1, + PropertyNameShortVerticalOrientationV1, PropertyNameShortWordBreakV1, }; pub use crate::props::gc::GeneralCategoryULE; @@ -145,6 +146,7 @@ const _: () = { impl_property_binary_xid_continue_v1!(Baked); impl_property_binary_xid_start_v1!(Baked); impl_property_enum_bidi_class_v1!(Baked); + impl_property_enum_numeric_type_v1!(Baked); impl_property_enum_bidi_mirroring_glyph_v1!(Baked); impl_property_enum_canonical_combining_class_v1!(Baked); impl_property_enum_east_asian_width_v1!(Baked); @@ -160,6 +162,7 @@ const _: () = { impl_property_enum_vertical_orientation_v1!(Baked); impl_property_enum_word_break_v1!(Baked); impl_property_name_long_bidi_class_v1!(Baked); + impl_property_name_long_numeric_type_v1!(Baked); #[cfg(feature = "alloc")] impl_property_name_long_canonical_combining_class_v1!(Baked); impl_property_name_long_east_asian_width_v1!(Baked); @@ -174,6 +177,7 @@ const _: () = { impl_property_name_long_vertical_orientation_v1!(Baked); impl_property_name_long_word_break_v1!(Baked); impl_property_name_parse_bidi_class_v1!(Baked); + impl_property_name_parse_numeric_type_v1!(Baked); impl_property_name_parse_canonical_combining_class_v1!(Baked); impl_property_name_parse_east_asian_width_v1!(Baked); impl_property_name_parse_general_category_mask_v1!(Baked); @@ -188,6 +192,7 @@ const _: () = { impl_property_name_parse_vertical_orientation_v1!(Baked); impl_property_name_parse_word_break_v1!(Baked); impl_property_name_short_bidi_class_v1!(Baked); + impl_property_name_short_numeric_type_v1!(Baked); #[cfg(feature = "alloc")] impl_property_name_short_canonical_combining_class_v1!(Baked); impl_property_name_short_east_asian_width_v1!(Baked); @@ -624,6 +629,12 @@ icu_provider::data_marker!( PropertyCodePointMap<'static, crate::props::BidiClass>, is_singleton = true, ); +icu_provider::data_marker!( + /// Data marker for the #NumericValue' Unicode property + PropertyEnumNumericTypeV1, + PropertyCodePointMap<'static, crate::props::NumericType>, + is_singleton = true, +); icu_provider::data_marker!( /// Data marker for the 'CanonicalCombiningClass' Unicode property PropertyEnumCanonicalCombiningClassV1, @@ -724,6 +735,7 @@ icu_provider::data_marker!( /// All data keys in this module. pub const MARKERS: &[DataMarkerInfo] = &[ PropertyNameLongBidiClassV1::INFO, + PropertyNameLongNumericTypeV1::INFO, #[cfg(feature = "alloc")] PropertyNameLongCanonicalCombiningClassV1::INFO, PropertyNameLongEastAsianWidthV1::INFO, @@ -738,6 +750,7 @@ pub const MARKERS: &[DataMarkerInfo] = &[ PropertyNameLongVerticalOrientationV1::INFO, PropertyNameLongWordBreakV1::INFO, PropertyNameParseBidiClassV1::INFO, + PropertyNameParseNumericTypeV1::INFO, PropertyNameParseCanonicalCombiningClassV1::INFO, PropertyNameParseEastAsianWidthV1::INFO, PropertyNameParseGeneralCategoryMaskV1::INFO, @@ -752,6 +765,7 @@ pub const MARKERS: &[DataMarkerInfo] = &[ PropertyNameParseVerticalOrientationV1::INFO, PropertyNameParseWordBreakV1::INFO, PropertyNameShortBidiClassV1::INFO, + PropertyNameShortNumericTypeV1::INFO, #[cfg(feature = "alloc")] PropertyNameShortCanonicalCombiningClassV1::INFO, PropertyNameShortEastAsianWidthV1::INFO, @@ -835,6 +849,7 @@ pub const MARKERS: &[DataMarkerInfo] = &[ PropertyBinaryXidContinueV1::INFO, PropertyBinaryXidStartV1::INFO, PropertyEnumBidiClassV1::INFO, + PropertyEnumNumericTypeV1::INFO, PropertyEnumCanonicalCombiningClassV1::INFO, PropertyEnumEastAsianWidthV1::INFO, PropertyEnumGeneralCategoryV1::INFO, diff --git a/components/properties/src/provider/names.rs b/components/properties/src/provider/names.rs index b85a2df139e..34d9d731083 100644 --- a/components/properties/src/provider/names.rs +++ b/components/properties/src/provider/names.rs @@ -25,6 +25,12 @@ icu_provider::data_marker!( PropertyValueNameToEnumMap<'static>, is_singleton = true ); +icu_provider::data_marker!( + /// `PropertyNameParseNumericTypeV1` + PropertyNameParseNumericTypeV1, + PropertyValueNameToEnumMap<'static>, + is_singleton = true +); icu_provider::data_marker!( /// `PropertyNameParseCanonicalCombiningClassV1` PropertyNameParseCanonicalCombiningClassV1, @@ -115,6 +121,18 @@ icu_provider::data_marker!( PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); +icu_provider::data_marker!( + /// `PropertyNameLongNumericTypeV1` + PropertyNameLongNumericTypeV1, + PropertyEnumToValueNameLinearMap<'static>, + is_singleton = true, +); +icu_provider::data_marker!( + /// `PropertyNameShortNumericTypeV1` + PropertyNameShortNumericTypeV1, + PropertyEnumToValueNameLinearMap<'static>, + is_singleton = true, +); icu_provider::data_marker!( /// `PropertyNameLongEastAsianWidthV1` PropertyNameLongEastAsianWidthV1, diff --git a/components/properties/src/trievalue.rs b/components/properties/src/trievalue.rs index 9b19d8a6390..a2b2875f497 100644 --- a/components/properties/src/trievalue.rs +++ b/components/properties/src/trievalue.rs @@ -6,7 +6,7 @@ use crate::bidi::BidiMirroringGlyph; use crate::props::{ BidiClass, CanonicalCombiningClass, EastAsianWidth, GeneralCategory, GeneralCategoryGroup, GraphemeClusterBreak, HangulSyllableType, IndicConjunctBreak, IndicSyllabicCategory, - JoiningType, LineBreak, Script, SentenceBreak, VerticalOrientation, WordBreak, + JoiningType, LineBreak, NumericType, Script, SentenceBreak, VerticalOrientation, WordBreak, }; use crate::script::ScriptWithExt; use core::convert::TryInto; @@ -29,6 +29,18 @@ impl TrieValue for CanonicalCombiningClass { } } +impl TrieValue for NumericType { + type TryFromU32Error = TryFromIntError; + + fn try_from_u32(i: u32) -> Result { + u8::try_from(i).map(Self) + } + + fn to_u32(self) -> u32 { + u32::from(self.0) + } +} + impl TrieValue for BidiClass { type TryFromU32Error = TryFromIntError; diff --git a/provider/data/properties/data/mod.rs b/provider/data/properties/data/mod.rs index eb70a6d4cb5..3fa986b7813 100644 --- a/provider/data/properties/data/mod.rs +++ b/provider/data/properties/data/mod.rs @@ -52,6 +52,7 @@ include!("property_binary_quotation_mark_v1.rs.data"); include!("property_binary_deprecated_v1.rs.data"); include!("property_binary_xid_start_v1.rs.data"); include!("property_binary_segment_starter_v1.rs.data"); +include!("property_name_long_numeric_type_v1.rs.data"); include!("property_binary_hyphen_v1.rs.data"); include!("property_binary_variation_selector_v1.rs.data"); include!("property_enum_word_break_v1.rs.data"); @@ -66,12 +67,14 @@ include!("property_enum_canonical_combining_class_v1.rs.data"); include!("property_binary_terminal_punctuation_v1.rs.data"); include!("property_enum_vertical_orientation_v1.rs.data"); include!("property_binary_cased_v1.rs.data"); +include!("property_name_parse_numeric_type_v1.rs.data"); include!("property_binary_nfkc_inert_v1.rs.data"); include!("property_binary_id_continue_v1.rs.data"); include!("property_binary_basic_emoji_v1.rs.data"); include!("property_binary_id_start_v1.rs.data"); include!("property_binary_uppercase_v1.rs.data"); include!("property_name_short_script_v1.rs.data"); +include!("property_enum_numeric_type_v1.rs.data"); include!("property_enum_hangul_syllable_type_v1.rs.data"); include!("property_binary_xdigit_v1.rs.data"); include!("property_binary_full_composition_exclusion_v1.rs.data"); @@ -101,6 +104,7 @@ include!("property_binary_grapheme_extend_v1.rs.data"); include!("property_enum_bidi_mirroring_glyph_v1.rs.data"); include!("property_name_parse_general_category_mask_v1.rs.data"); include!("property_binary_nfc_inert_v1.rs.data"); +include!("property_name_short_numeric_type_v1.rs.data"); include!("property_name_parse_script_v1.rs.data"); include!("property_binary_lowercase_v1.rs.data"); include!("property_name_long_joining_type_v1.rs.data"); @@ -212,6 +216,7 @@ macro_rules! impl_data_provider { impl_property_binary_deprecated_v1!($provider); impl_property_binary_xid_start_v1!($provider); impl_property_binary_segment_starter_v1!($provider); + impl_property_name_long_numeric_type_v1!($provider); impl_property_binary_hyphen_v1!($provider); impl_property_binary_variation_selector_v1!($provider); impl_property_enum_word_break_v1!($provider); @@ -226,12 +231,14 @@ macro_rules! impl_data_provider { impl_property_binary_terminal_punctuation_v1!($provider); impl_property_enum_vertical_orientation_v1!($provider); impl_property_binary_cased_v1!($provider); + impl_property_name_parse_numeric_type_v1!($provider); impl_property_binary_nfkc_inert_v1!($provider); impl_property_binary_id_continue_v1!($provider); impl_property_binary_basic_emoji_v1!($provider); impl_property_binary_id_start_v1!($provider); impl_property_binary_uppercase_v1!($provider); impl_property_name_short_script_v1!($provider); + impl_property_enum_numeric_type_v1!($provider); impl_property_enum_hangul_syllable_type_v1!($provider); impl_property_binary_xdigit_v1!($provider); impl_property_binary_full_composition_exclusion_v1!($provider); @@ -261,6 +268,7 @@ macro_rules! impl_data_provider { impl_property_enum_bidi_mirroring_glyph_v1!($provider); impl_property_name_parse_general_category_mask_v1!($provider); impl_property_binary_nfc_inert_v1!($provider); + impl_property_name_short_numeric_type_v1!($provider); impl_property_name_parse_script_v1!($provider); impl_property_binary_lowercase_v1!($provider); impl_property_name_long_joining_type_v1!($provider); diff --git a/provider/data/properties/data/property_enum_numeric_type_v1.rs.data b/provider/data/properties/data/property_enum_numeric_type_v1.rs.data new file mode 100644 index 00000000000..1a400239f21 --- /dev/null +++ b/provider/data/properties/data/property_enum_numeric_type_v1.rs.data @@ -0,0 +1,80 @@ +// @generated +/// Implement `DataProvider` on the given struct using the data +/// hardcoded in this file. This allows the struct to be used with +/// `icu`'s `_unstable` constructors. +/// +/// Using this implementation will embed the following data in the binary's data segment: +/// * 5900B[^1] for the singleton data struct +/// +/// [^1]: these numbers can be smaller in practice due to linker deduplication +/// +/// This macro requires the following crates: +/// * `icu` +/// * `icu_provider` +/// * `zerovec` +#[doc(hidden)] +#[macro_export] +macro_rules! __impl_property_enum_numeric_type_v1 { + ($ provider : ty) => { + #[clippy::msrv = "1.83"] + const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO; + #[clippy::msrv = "1.83"] + impl $provider { + #[doc(hidden)] + pub const SINGLETON_PROPERTY_ENUM_NUMERIC_TYPE_V1: &'static ::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(unsafe { icu::collections::codepointtrie::CodePointTrie::from_parts_unstable_unchecked_v1(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 195072u32, shifted12_high_start: 48u16, index3_null_offset: 307u16, data_null_offset: 64u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0N\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\x10\0@\0\0\0@\0@\0@\x000\0@\0@\0@\0@\0@\0\n\0@\0\x8D\0@\0\n\0@\0\n\0@\0\xC7\0@\0\xFF\0@\x002\x01@\0\n\0@\0q\x01@\0\n\0@\0 \0@\0 \0\xAA\x01@\0@\0@\0\n\x08(\x08H\x08^\x08~\x08\x91\x08\xA9\x08\xC3\x08\xE3\x08\x01\t\xA9\x08\x13\t\0\0\x10\0 \x000\0@\0P\0`\0p\0N\0^\0n\0~\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0\x10\0 \x000\0@\0@\0P\0`\0p\0\0\0\x10\0 \x000\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\x000\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0\n\0\x1A\0*\0:\0@\0P\0`\0p\0\x8D\0\x9D\0\xAD\0\xBD\0@\0P\0`\0p\0\n\0\x1A\0*\0:\0@\0P\0`\0p\0\n\0\x1A\0*\0:\0@\0P\0`\0p\0\xC7\0\xD7\0\xE7\0\xF7\0@\0P\0`\0p\0\xFF\0\x0F\x01\x1F\x01/\x01@\0P\0`\0p\x002\x01B\x01R\x01b\x01@\0P\0`\0p\0\n\0\x1A\0*\0:\0@\0P\0`\0p\0q\x01\x81\x01\x91\x01\xA1\x01@\0P\0`\0p\0\n\0\x1A\0*\0:\0@\0P\0`\0p\0 \x000\0@\0P\0@\0P\0`\0p\0 \x000\0@\0P\0\xAA\x01\xBA\x01\xCA\x01\xDA\x01@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0@\0@\0@\x000\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xE1\x01\xEF\x01@\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{\x01\x8C\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0\xD4\x01@\x000\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\xFF\x01@\0@\0@\0@\0@\0@\0@\0@\x000\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\x000\x000\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\x0F\x02\x1F\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0/\x02/\x02/\x02<\x02@\0@\0@\0@\0@\0@\0@\0L\x02X\x02e\x02t\x02@\0@\0@\0@\0\x80\x02\x8B\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0F\x02\x90\x02\x9D\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA1\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA7\x02@\0\xB6\x02\xC0\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xCE\x02@\0@\0@\0@\0@\0@\0\xD4\x01@\0\xAF\x02.\x02@\0@\0\xD4\x01@\0@\0.\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xD9\x02@\0@\0@\0@\0@\0@\0@\0\xDB\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA4\x02@\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\xA1\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xEB\x02@\0\xDA\x02@\0@\0\xA1\x02@\0@\0\xA2\x02\xF7\x02\xA2\x02z\x01\x8C\0z\x01\xA6\x02@\0\xA1\x02@\0@\0@\0@\0@\0@\0\x8C\0@\0@\0@\0@\0@\0@\0\xA5\x02@\0\xD8\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xDA\x02@\0@\0@\0\xD8\x02@\0\xFE\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\r\x03@\0@\0@\0@\0@\0@\0@\0\x1C\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA3\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0+\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA4\x02@\0@\0@\0@\0@\0@\0@\0{\x015\x03\x8C\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\x8C\0@\0D\x03@\0@\0@\0@\0\xA2\x02@\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@\0P\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0D\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xD8\x02@\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\xD8\x02@\0@\0@\0@\0@\0@\0@\0D\x03@\0\xD9\x02@\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\xA1\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0D\x03\xDB\x02@\0@\0@\0@\0@\0@\0@\0\x8C\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0D\x03@\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\xA5\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0Q\x03@\0[\x03@\0@\0\xA6\x02@\0@\0@\0@\0@\0@\0@\0\xD8\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0)\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xC1\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\x000\0@\0@\0@\0@\0@\x000\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@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA3\x02d\x03@\0@\0@\0P\x03@\0s\x03@\0\xA1\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xB0\x02/\x02/\x02\xC3\0/\x02/\x02/\x02\xA1\x01y\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0.\x02\x89\x03@\0@\0\xC3\0@\0\x98\x03@\0@\0@\0@\0@\0@\0@\0@\0\xA7\x03@\0@\0@\0@\0@\0\xAF\x02@\0\x80\x01@\0@\0\xB0\x02@\0@\0@\0@\0~\x01@\0\xB1\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0w\x03/\x02-\x02/\x02/\x02@\0@\0@\0@\0\xC1\x03@\0@\0\xCA\x03@\0|\x01@\0@\0@\0@\0~\x01@\0@\0@\0@\0@\0@\0\xAF\x02@\0\xAF\x02@\0@\0\x80\x01@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\x7F\x01@\0@\0@\x000\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0L\x020\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0|\x01j\x01@\0@\0\x1C\x03@\0@\0@\0@\0@\0@\0e\x01@\0@\0@\0@\0@\0J\x02\xDA\x03@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0*\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0.\x02\xC2\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\x000\0\xE0\x036\0@\0@\0@\0@\0\xE6\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\x97\x01\x8A\0@\0@\0@\0@\0@\x000\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@\x000\0@\0@\0@\0@\0@\0\x97\x01\xF6\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\x000\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0/\x02\xC2\0@\0@\0@\0\x03\x04@\0@\0@\0\xA5\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\r\x04@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\x19\x04@\0@\0@\0@\0@\0@\0@\0@\0\xA5\x02@\0@\0@\0@\0@\0@\0/\x02/\x02/\x02/\x02/\x02/\x020\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0)\x04\x8B\0@\0@\0@\0@\0@\0@\0@\0@\0@\0/\x02j\x01@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0=\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0/\x02\xC3\0/\x02\xC3\0@\0@\0@\0@\0@\0@\0/\x02\xA1\x01@\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\xE0\x03\xE0\x03\xE0\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\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\xB0\x02@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0.\x02/\x02/\x024\x04\x1C\x03@\0@\0@\0@\0.\x02/\x02A\x041\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0Q\x04@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0Q\x03@\0@\0@\0@\0@\0\xDA\x02@\0@\0@\0@\0@\0@\0@\0P\x03@\0@\0@\0Q\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA4\x02@\0@\0@\0@\0@\0\x96\x03\xA2\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA4\x02\xA1\x02@\0\xA5\x02@\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\x8C\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\xA6\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA3\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA1\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0L\0X\0X\0t\0\x91\0\xB1\0\xD1\0\xF1\0\x11\x01\x1B\x013\x01E\x01e\x01\x83\x01\x9F\x013\x01\xB8\x013\x01\xD2\x01\xE2\x013\x013\x01\xFC\x013\x01\x1C\x02:\x02Z\x023\x01x\x02\x84\x023\x013\x013\x013\x013\x013\x013\x01\xA4\x02\xC4\x02\xDB\x023\x01\xF8\x02\t\x033\x013\x01\"\x033\x015\x033\x01J\x033\x013\x01h\x03z\x033\x01\x8B\x033\x01\xA5\x03\xAF\x033\x013\x013\x01\x82\x033\x01G\x033\x013\x013\x01\xCE\x033\x013\x01\xEE\x03\x04\x04\"\x043\x013\x013\x013\x013\x013\x013\x01@\x04]\x04}\x043\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x01\x9D\x043\x013\x01\x8B\x04\xBD\x04\xD6\x04\x92\x043\x01\xF4\x04\x14\x05/\x05I\x05f\x05\x8D\x04\x86\x05\xA1\x05\xB5\x05\xCB\x05\xEB\x05\n\x06(\x06F\x06f\x063\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x01\x89\x043\x013\x013\x013\x01\x80\x06\x85\x04\x98\x063\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x01\x8D\x043\x013\x01\xB8\x063\x01\xD0\x063\x013\x013\x013\x01\x88\x04\x8D\x04\xF0\x063\x01\x10\x073\x01)\x073\x01=\x073\x013\x013\x013\x01\xCB\x053\x013\x01]\x073\x013\x013\x01p\x07\x8A\x073\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x01\x9C\x073\x013\x01\xB6\x073\x013\x013\x013\x013\x013\x013\x013\x01\xD0\x073\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x01\xEA\x073\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x01\xAC\x07") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\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\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\0\0\0\0\0\0\x02\x02\0\0\0\0\0\x02\0\0\x03\x03\x03\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\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x03\x03\x03\x03\x03\x03\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\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x03\x03\x03\x03\x03\x03\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\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x03\x03\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\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x03\x03\x03\x03\x03\x03\x03\x03\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\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\0\0\0\0\0\x02\0\0\0\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\x03\x03\x03\x03\x03\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\x02\x03\x03\x03\x03\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x02\x02\x02\x02\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\x03\x03\x03\0\0\0\0\0\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\x03\0\0\0\x03\0\x03\0\0\0\0\0\0\x03\0\x03\0\0\0\0\0\0\0\0\0\x03\0\x03\0\x03\0\0\x03\0\x03\x03\x03\0\0\0\0\0\0\x03\0\0\0\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\x03\0\0\0\0\x03\0\0\0\0\0\0\0\x03\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\x03\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\0\0\0\0\x02\x02\x02\x02\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\0\x03\x03\x03\x03\x03\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x03\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\x03\x03\0\0\0\0\0\0\x03\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\x03\0\x03\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x03\0\0\0\0\0\0") }, icu::properties::props::NumericType::None) }); + } + #[clippy::msrv = "1.83"] + impl icu_provider::DataProvider for $provider { + fn load(&self, req: icu_provider::DataRequest) -> Result, icu_provider::DataError> { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_NUMERIC_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() }) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , ITER) => { + __impl_property_enum_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; + ($ provider : ty , DRY) => { + __impl_property_enum_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , DRY , ITER) => { + __impl_property_enum_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; +} +#[doc(inline)] +pub use __impl_property_enum_numeric_type_v1 as impl_property_enum_numeric_type_v1; diff --git a/provider/data/properties/data/property_name_long_numeric_type_v1.rs.data b/provider/data/properties/data/property_name_long_numeric_type_v1.rs.data new file mode 100644 index 00000000000..c470e7192f0 --- /dev/null +++ b/provider/data/properties/data/property_name_long_numeric_type_v1.rs.data @@ -0,0 +1,80 @@ +// @generated +/// Implement `DataProvider` on the given struct using the data +/// hardcoded in this file. This allows the struct to be used with +/// `icu`'s `_unstable` constructors. +/// +/// Using this implementation will embed the following data in the binary's data segment: +/// * 55B[^1] for the singleton data struct +/// +/// [^1]: these numbers can be smaller in practice due to linker deduplication +/// +/// This macro requires the following crates: +/// * `icu` +/// * `icu_provider` +/// * `zerovec` +#[doc(hidden)] +#[macro_export] +macro_rules! __impl_property_name_long_numeric_type_v1 { + ($ provider : ty) => { + #[clippy::msrv = "1.83"] + const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO; + #[clippy::msrv = "1.83"] + impl $provider { + #[doc(hidden)] + pub const SINGLETON_PROPERTY_NAME_LONG_NUMERIC_TYPE_V1: &'static ::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x04\0\x04\0\x0B\0\x10\0NoneDecimalDigitNumeric") } }; + } + #[clippy::msrv = "1.83"] + impl icu_provider::DataProvider for $provider { + fn load(&self, req: icu_provider::DataRequest) -> Result, icu_provider::DataError> { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_NUMERIC_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() }) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , ITER) => { + __impl_property_name_long_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; + ($ provider : ty , DRY) => { + __impl_property_name_long_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , DRY , ITER) => { + __impl_property_name_long_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; +} +#[doc(inline)] +pub use __impl_property_name_long_numeric_type_v1 as impl_property_name_long_numeric_type_v1; diff --git a/provider/data/properties/data/property_name_parse_numeric_type_v1.rs.data b/provider/data/properties/data/property_name_parse_numeric_type_v1.rs.data new file mode 100644 index 00000000000..94769864b13 --- /dev/null +++ b/provider/data/properties/data/property_name_parse_numeric_type_v1.rs.data @@ -0,0 +1,81 @@ +// @generated +/// Implement `DataProvider` on the given struct using the data +/// hardcoded in this file. This allows the struct to be used with +/// `icu`'s `_unstable` constructors. +/// +/// Using this implementation will embed the following data in the binary's data segment: +/// * 58B[^1] for the singleton data struct +/// +/// [^1]: these numbers can be smaller in practice due to linker deduplication +/// +/// This macro requires the following crates: +/// * `icu` +/// * `icu_provider` +/// * `zerotrie` +/// * `zerovec` +#[doc(hidden)] +#[macro_export] +macro_rules! __impl_property_name_parse_numeric_type_v1 { + ($ provider : ty) => { + #[clippy::msrv = "1.83"] + const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO; + #[clippy::msrv = "1.83"] + impl $provider { + #[doc(hidden)] + pub const SINGLETON_PROPERTY_NAME_PARSE_NUMERIC_TYPE_V1: &'static ::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xC2DN\x10\xC2ei\x07\x81cimal\x81\x82git\x82\xC2ou\x03ne\x80\x83meric\x83") } } }; + } + #[clippy::msrv = "1.83"] + impl icu_provider::DataProvider for $provider { + fn load(&self, req: icu_provider::DataRequest) -> Result, icu_provider::DataError> { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_NUMERIC_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() }) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , ITER) => { + __impl_property_name_parse_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; + ($ provider : ty , DRY) => { + __impl_property_name_parse_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , DRY , ITER) => { + __impl_property_name_parse_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; +} +#[doc(inline)] +pub use __impl_property_name_parse_numeric_type_v1 as impl_property_name_parse_numeric_type_v1; diff --git a/provider/data/properties/data/property_name_short_numeric_type_v1.rs.data b/provider/data/properties/data/property_name_short_numeric_type_v1.rs.data new file mode 100644 index 00000000000..0ec5b182b92 --- /dev/null +++ b/provider/data/properties/data/property_name_short_numeric_type_v1.rs.data @@ -0,0 +1,80 @@ +// @generated +/// Implement `DataProvider` on the given struct using the data +/// hardcoded in this file. This allows the struct to be used with +/// `icu`'s `_unstable` constructors. +/// +/// Using this implementation will embed the following data in the binary's data segment: +/// * 42B[^1] for the singleton data struct +/// +/// [^1]: these numbers can be smaller in practice due to linker deduplication +/// +/// This macro requires the following crates: +/// * `icu` +/// * `icu_provider` +/// * `zerovec` +#[doc(hidden)] +#[macro_export] +macro_rules! __impl_property_name_short_numeric_type_v1 { + ($ provider : ty) => { + #[clippy::msrv = "1.83"] + const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO; + #[clippy::msrv = "1.83"] + impl $provider { + #[doc(hidden)] + pub const SINGLETON_PROPERTY_NAME_SHORT_NUMERIC_TYPE_V1: &'static ::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x04\0\x04\0\x06\0\x08\0NoneDeDiNu") } }; + } + #[clippy::msrv = "1.83"] + impl icu_provider::DataProvider for $provider { + fn load(&self, req: icu_provider::DataRequest) -> Result, icu_provider::DataError> { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_NUMERIC_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() }) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , ITER) => { + __impl_property_name_short_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; + ($ provider : ty , DRY) => { + __impl_property_name_short_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , DRY , ITER) => { + __impl_property_name_short_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; +} +#[doc(inline)] +pub use __impl_property_name_short_numeric_type_v1 as impl_property_name_short_numeric_type_v1; diff --git a/provider/data/properties/fingerprints.csv b/provider/data/properties/fingerprints.csv index de30d8bbd09..f03e1c0ec89 100644 --- a/provider/data/properties/fingerprints.csv +++ b/provider/data/properties/fingerprints.csv @@ -79,6 +79,7 @@ property/enum/indic/conjunct/break/v1, , 7228B, 7171B, 94e0a1eb991ecb property/enum/indic/syllabic/category/v1, , 6288B, 6229B, c0084799788acd9c property/enum/joining/type/v1, , 7136B, 7079B, 39f05bd0b9931b55 property/enum/line/break/v1, , 15328B, 15272B, d392409dfdd00a74 +property/enum/numeric/type/v1, , 5900B, 5842B, 9ffe79ebbb54f863 property/enum/script/v1, , 25902B, 25847B, 1b972fe75ad7b369 property/enum/sentence/break/v1, , 13964B, 13907B, 36e6dafc005907f8 property/enum/vertical/orientation/v1, , 3280B, 3222B, 36f945b6b4d90bc8 @@ -92,6 +93,7 @@ property/name/long/hangul/syllable/type/v1, , 108B, 85B, 739628a2dc23 property/name/long/indic/syllabic/category/v1, , 622B, 600B, 9664fa6930864c55 property/name/long/joining/type/v1, , 107B, 84B, 67264eb9f128eed3 property/name/long/line/break/v1, , 636B, 614B, 52eebfc0e663e772 +property/name/long/numeric/type/v1, , 55B, 32B, b458c91f3aeac354 property/name/long/script/v1, , 2103B, 2081B, d388e3f594c6bcff property/name/long/sentence/break/v1, , 128B, 105B, 5070087b62744fab property/name/long/vertical/orientation/v1, , 84B, 61B, 36a3f40d2a644910 @@ -106,6 +108,7 @@ property/name/parse/hangul/syllable/type/v1, , 116B, 94B, 70df5ae746d property/name/parse/indic/syllabic/category/v1, , 510B, 489B, 543dd0a1fa40fe58 property/name/parse/joining/type/v1, , 117B, 95B, 4a919456a9260ca7 property/name/parse/line/break/v1, , 804B, 783B, a9ba4f0de536a3b +property/name/parse/numeric/type/v1, , 58B, 36B, 1e89fc370a6ae5ef property/name/parse/script/v1, , 2673B, 2652B, b93cb0229f21d94c property/name/parse/sentence/break/v1, , 164B, 143B, 7a8e570bdbb11805 property/name/parse/vertical/orientation/v1, , 80B, 58B, 1b5772c217084ff @@ -119,6 +122,7 @@ property/name/short/hangul/syllable/type/v1, , 46B, 23B, 7b01686176b2 property/name/short/indic/syllabic/category/v1, , 622B, 600B, 9664fa6930864c55 property/name/short/joining/type/v1, , 42B, 19B, 162afda01b84cd1f property/name/short/line/break/v1, , 221B, 199B, d7df5d8b133bf645 +property/name/short/numeric/type/v1, , 42B, 19B, 63ce845cffd73411 property/name/short/script/v1, , 876B, 854B, dde0d91e1aaa9bdb property/name/short/sentence/break/v1, , 84B, 61B, 317ae9daab3bfd00 property/name/short/vertical/orientation/v1, , 38B, 15B, 4a8372161d54b5a5 diff --git a/provider/data/properties/stubdata/mod.rs b/provider/data/properties/stubdata/mod.rs index eb70a6d4cb5..3fa986b7813 100644 --- a/provider/data/properties/stubdata/mod.rs +++ b/provider/data/properties/stubdata/mod.rs @@ -52,6 +52,7 @@ include!("property_binary_quotation_mark_v1.rs.data"); include!("property_binary_deprecated_v1.rs.data"); include!("property_binary_xid_start_v1.rs.data"); include!("property_binary_segment_starter_v1.rs.data"); +include!("property_name_long_numeric_type_v1.rs.data"); include!("property_binary_hyphen_v1.rs.data"); include!("property_binary_variation_selector_v1.rs.data"); include!("property_enum_word_break_v1.rs.data"); @@ -66,12 +67,14 @@ include!("property_enum_canonical_combining_class_v1.rs.data"); include!("property_binary_terminal_punctuation_v1.rs.data"); include!("property_enum_vertical_orientation_v1.rs.data"); include!("property_binary_cased_v1.rs.data"); +include!("property_name_parse_numeric_type_v1.rs.data"); include!("property_binary_nfkc_inert_v1.rs.data"); include!("property_binary_id_continue_v1.rs.data"); include!("property_binary_basic_emoji_v1.rs.data"); include!("property_binary_id_start_v1.rs.data"); include!("property_binary_uppercase_v1.rs.data"); include!("property_name_short_script_v1.rs.data"); +include!("property_enum_numeric_type_v1.rs.data"); include!("property_enum_hangul_syllable_type_v1.rs.data"); include!("property_binary_xdigit_v1.rs.data"); include!("property_binary_full_composition_exclusion_v1.rs.data"); @@ -101,6 +104,7 @@ include!("property_binary_grapheme_extend_v1.rs.data"); include!("property_enum_bidi_mirroring_glyph_v1.rs.data"); include!("property_name_parse_general_category_mask_v1.rs.data"); include!("property_binary_nfc_inert_v1.rs.data"); +include!("property_name_short_numeric_type_v1.rs.data"); include!("property_name_parse_script_v1.rs.data"); include!("property_binary_lowercase_v1.rs.data"); include!("property_name_long_joining_type_v1.rs.data"); @@ -212,6 +216,7 @@ macro_rules! impl_data_provider { impl_property_binary_deprecated_v1!($provider); impl_property_binary_xid_start_v1!($provider); impl_property_binary_segment_starter_v1!($provider); + impl_property_name_long_numeric_type_v1!($provider); impl_property_binary_hyphen_v1!($provider); impl_property_binary_variation_selector_v1!($provider); impl_property_enum_word_break_v1!($provider); @@ -226,12 +231,14 @@ macro_rules! impl_data_provider { impl_property_binary_terminal_punctuation_v1!($provider); impl_property_enum_vertical_orientation_v1!($provider); impl_property_binary_cased_v1!($provider); + impl_property_name_parse_numeric_type_v1!($provider); impl_property_binary_nfkc_inert_v1!($provider); impl_property_binary_id_continue_v1!($provider); impl_property_binary_basic_emoji_v1!($provider); impl_property_binary_id_start_v1!($provider); impl_property_binary_uppercase_v1!($provider); impl_property_name_short_script_v1!($provider); + impl_property_enum_numeric_type_v1!($provider); impl_property_enum_hangul_syllable_type_v1!($provider); impl_property_binary_xdigit_v1!($provider); impl_property_binary_full_composition_exclusion_v1!($provider); @@ -261,6 +268,7 @@ macro_rules! impl_data_provider { impl_property_enum_bidi_mirroring_glyph_v1!($provider); impl_property_name_parse_general_category_mask_v1!($provider); impl_property_binary_nfc_inert_v1!($provider); + impl_property_name_short_numeric_type_v1!($provider); impl_property_name_parse_script_v1!($provider); impl_property_binary_lowercase_v1!($provider); impl_property_name_long_joining_type_v1!($provider); diff --git a/provider/data/properties/stubdata/property_enum_numeric_type_v1.rs.data b/provider/data/properties/stubdata/property_enum_numeric_type_v1.rs.data new file mode 100644 index 00000000000..1a400239f21 --- /dev/null +++ b/provider/data/properties/stubdata/property_enum_numeric_type_v1.rs.data @@ -0,0 +1,80 @@ +// @generated +/// Implement `DataProvider` on the given struct using the data +/// hardcoded in this file. This allows the struct to be used with +/// `icu`'s `_unstable` constructors. +/// +/// Using this implementation will embed the following data in the binary's data segment: +/// * 5900B[^1] for the singleton data struct +/// +/// [^1]: these numbers can be smaller in practice due to linker deduplication +/// +/// This macro requires the following crates: +/// * `icu` +/// * `icu_provider` +/// * `zerovec` +#[doc(hidden)] +#[macro_export] +macro_rules! __impl_property_enum_numeric_type_v1 { + ($ provider : ty) => { + #[clippy::msrv = "1.83"] + const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO; + #[clippy::msrv = "1.83"] + impl $provider { + #[doc(hidden)] + pub const SINGLETON_PROPERTY_ENUM_NUMERIC_TYPE_V1: &'static ::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(unsafe { icu::collections::codepointtrie::CodePointTrie::from_parts_unstable_unchecked_v1(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 195072u32, shifted12_high_start: 48u16, index3_null_offset: 307u16, data_null_offset: 64u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0N\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\x10\0@\0\0\0@\0@\0@\x000\0@\0@\0@\0@\0@\0\n\0@\0\x8D\0@\0\n\0@\0\n\0@\0\xC7\0@\0\xFF\0@\x002\x01@\0\n\0@\0q\x01@\0\n\0@\0 \0@\0 \0\xAA\x01@\0@\0@\0\n\x08(\x08H\x08^\x08~\x08\x91\x08\xA9\x08\xC3\x08\xE3\x08\x01\t\xA9\x08\x13\t\0\0\x10\0 \x000\0@\0P\0`\0p\0N\0^\0n\0~\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0\x10\0 \x000\0@\0@\0P\0`\0p\0\0\0\x10\0 \x000\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\x000\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0\n\0\x1A\0*\0:\0@\0P\0`\0p\0\x8D\0\x9D\0\xAD\0\xBD\0@\0P\0`\0p\0\n\0\x1A\0*\0:\0@\0P\0`\0p\0\n\0\x1A\0*\0:\0@\0P\0`\0p\0\xC7\0\xD7\0\xE7\0\xF7\0@\0P\0`\0p\0\xFF\0\x0F\x01\x1F\x01/\x01@\0P\0`\0p\x002\x01B\x01R\x01b\x01@\0P\0`\0p\0\n\0\x1A\0*\0:\0@\0P\0`\0p\0q\x01\x81\x01\x91\x01\xA1\x01@\0P\0`\0p\0\n\0\x1A\0*\0:\0@\0P\0`\0p\0 \x000\0@\0P\0@\0P\0`\0p\0 \x000\0@\0P\0\xAA\x01\xBA\x01\xCA\x01\xDA\x01@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0@\0@\0@\x000\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xE1\x01\xEF\x01@\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{\x01\x8C\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0\xD4\x01@\x000\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\xFF\x01@\0@\0@\0@\0@\0@\0@\0@\x000\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\x000\x000\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\x0F\x02\x1F\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0/\x02/\x02/\x02<\x02@\0@\0@\0@\0@\0@\0@\0L\x02X\x02e\x02t\x02@\0@\0@\0@\0\x80\x02\x8B\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0F\x02\x90\x02\x9D\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA1\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA7\x02@\0\xB6\x02\xC0\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xCE\x02@\0@\0@\0@\0@\0@\0\xD4\x01@\0\xAF\x02.\x02@\0@\0\xD4\x01@\0@\0.\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xD9\x02@\0@\0@\0@\0@\0@\0@\0\xDB\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA4\x02@\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\xA1\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xEB\x02@\0\xDA\x02@\0@\0\xA1\x02@\0@\0\xA2\x02\xF7\x02\xA2\x02z\x01\x8C\0z\x01\xA6\x02@\0\xA1\x02@\0@\0@\0@\0@\0@\0\x8C\0@\0@\0@\0@\0@\0@\0\xA5\x02@\0\xD8\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xDA\x02@\0@\0@\0\xD8\x02@\0\xFE\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\r\x03@\0@\0@\0@\0@\0@\0@\0\x1C\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA3\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0+\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA4\x02@\0@\0@\0@\0@\0@\0@\0{\x015\x03\x8C\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\x8C\0@\0D\x03@\0@\0@\0@\0\xA2\x02@\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@\0P\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0D\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xD8\x02@\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\xD8\x02@\0@\0@\0@\0@\0@\0@\0D\x03@\0\xD9\x02@\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\xA1\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0D\x03\xDB\x02@\0@\0@\0@\0@\0@\0@\0\x8C\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0D\x03@\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\xA5\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0Q\x03@\0[\x03@\0@\0\xA6\x02@\0@\0@\0@\0@\0@\0@\0\xD8\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0)\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xC1\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\x000\0@\0@\0@\0@\0@\x000\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@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA3\x02d\x03@\0@\0@\0P\x03@\0s\x03@\0\xA1\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xB0\x02/\x02/\x02\xC3\0/\x02/\x02/\x02\xA1\x01y\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0.\x02\x89\x03@\0@\0\xC3\0@\0\x98\x03@\0@\0@\0@\0@\0@\0@\0@\0\xA7\x03@\0@\0@\0@\0@\0\xAF\x02@\0\x80\x01@\0@\0\xB0\x02@\0@\0@\0@\0~\x01@\0\xB1\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0w\x03/\x02-\x02/\x02/\x02@\0@\0@\0@\0\xC1\x03@\0@\0\xCA\x03@\0|\x01@\0@\0@\0@\0~\x01@\0@\0@\0@\0@\0@\0\xAF\x02@\0\xAF\x02@\0@\0\x80\x01@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\x7F\x01@\0@\0@\x000\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0L\x020\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0|\x01j\x01@\0@\0\x1C\x03@\0@\0@\0@\0@\0@\0e\x01@\0@\0@\0@\0@\0J\x02\xDA\x03@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0*\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0.\x02\xC2\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\x000\0\xE0\x036\0@\0@\0@\0@\0\xE6\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\x97\x01\x8A\0@\0@\0@\0@\0@\x000\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@\x000\0@\0@\0@\0@\0@\0\x97\x01\xF6\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\x000\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0/\x02\xC2\0@\0@\0@\0\x03\x04@\0@\0@\0\xA5\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\r\x04@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\x19\x04@\0@\0@\0@\0@\0@\0@\0@\0\xA5\x02@\0@\0@\0@\0@\0@\0/\x02/\x02/\x02/\x02/\x02/\x020\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0)\x04\x8B\0@\0@\0@\0@\0@\0@\0@\0@\0@\0/\x02j\x01@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0=\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0/\x02\xC3\0/\x02\xC3\0@\0@\0@\0@\0@\0@\0/\x02\xA1\x01@\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\xE0\x03\xE0\x03\xE0\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\x000\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\xB0\x02@\0@\0@\0@\0@\0@\0@\0@\x000\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0.\x02/\x02/\x024\x04\x1C\x03@\0@\0@\0@\0.\x02/\x02A\x041\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0Q\x04@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0Q\x03@\0@\0@\0@\0@\0\xDA\x02@\0@\0@\0@\0@\0@\0@\0P\x03@\0@\0@\0Q\x03@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA4\x02@\0@\0@\0@\0@\0\x96\x03\xA2\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA4\x02\xA1\x02@\0\xA5\x02@\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\x8C\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\xA6\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA3\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xA1\x02@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0L\0X\0X\0t\0\x91\0\xB1\0\xD1\0\xF1\0\x11\x01\x1B\x013\x01E\x01e\x01\x83\x01\x9F\x013\x01\xB8\x013\x01\xD2\x01\xE2\x013\x013\x01\xFC\x013\x01\x1C\x02:\x02Z\x023\x01x\x02\x84\x023\x013\x013\x013\x013\x013\x013\x01\xA4\x02\xC4\x02\xDB\x023\x01\xF8\x02\t\x033\x013\x01\"\x033\x015\x033\x01J\x033\x013\x01h\x03z\x033\x01\x8B\x033\x01\xA5\x03\xAF\x033\x013\x013\x01\x82\x033\x01G\x033\x013\x013\x01\xCE\x033\x013\x01\xEE\x03\x04\x04\"\x043\x013\x013\x013\x013\x013\x013\x01@\x04]\x04}\x043\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x01\x9D\x043\x013\x01\x8B\x04\xBD\x04\xD6\x04\x92\x043\x01\xF4\x04\x14\x05/\x05I\x05f\x05\x8D\x04\x86\x05\xA1\x05\xB5\x05\xCB\x05\xEB\x05\n\x06(\x06F\x06f\x063\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x01\x89\x043\x013\x013\x013\x01\x80\x06\x85\x04\x98\x063\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x01\x8D\x043\x013\x01\xB8\x063\x01\xD0\x063\x013\x013\x013\x01\x88\x04\x8D\x04\xF0\x063\x01\x10\x073\x01)\x073\x01=\x073\x013\x013\x013\x01\xCB\x053\x013\x01]\x073\x013\x013\x01p\x07\x8A\x073\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x01\x9C\x073\x013\x01\xB6\x073\x013\x013\x013\x013\x013\x013\x013\x01\xD0\x073\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x01\xEA\x073\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x01\xAC\x07") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\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\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\0\0\0\0\0\0\x02\x02\0\0\0\0\0\x02\0\0\x03\x03\x03\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\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x03\x03\x03\x03\x03\x03\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\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x03\x03\x03\x03\x03\x03\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\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x03\x03\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\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x03\x03\x03\x03\x03\x03\x03\x03\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\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\0\0\0\0\0\x02\0\0\0\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\x03\x03\x03\x03\x03\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\x02\x03\x03\x03\x03\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x02\x02\x02\x02\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\x03\x03\x03\0\0\0\0\0\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\x03\0\0\0\x03\0\x03\0\0\0\0\0\0\x03\0\x03\0\0\0\0\0\0\0\0\0\x03\0\x03\0\x03\0\0\x03\0\x03\x03\x03\0\0\0\0\0\0\x03\0\0\0\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\x03\0\0\0\0\x03\0\0\0\0\0\0\0\x03\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\x03\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\0\0\0\0\x02\x02\x02\x02\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\0\x03\x03\x03\x03\x03\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x03\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\x03\x03\0\0\0\0\0\0\x03\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\x03\0\x03\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x03\0\0\0\0\0\0") }, icu::properties::props::NumericType::None) }); + } + #[clippy::msrv = "1.83"] + impl icu_provider::DataProvider for $provider { + fn load(&self, req: icu_provider::DataRequest) -> Result, icu_provider::DataError> { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_NUMERIC_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() }) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , ITER) => { + __impl_property_enum_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; + ($ provider : ty , DRY) => { + __impl_property_enum_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , DRY , ITER) => { + __impl_property_enum_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; +} +#[doc(inline)] +pub use __impl_property_enum_numeric_type_v1 as impl_property_enum_numeric_type_v1; diff --git a/provider/data/properties/stubdata/property_name_long_numeric_type_v1.rs.data b/provider/data/properties/stubdata/property_name_long_numeric_type_v1.rs.data new file mode 100644 index 00000000000..c470e7192f0 --- /dev/null +++ b/provider/data/properties/stubdata/property_name_long_numeric_type_v1.rs.data @@ -0,0 +1,80 @@ +// @generated +/// Implement `DataProvider` on the given struct using the data +/// hardcoded in this file. This allows the struct to be used with +/// `icu`'s `_unstable` constructors. +/// +/// Using this implementation will embed the following data in the binary's data segment: +/// * 55B[^1] for the singleton data struct +/// +/// [^1]: these numbers can be smaller in practice due to linker deduplication +/// +/// This macro requires the following crates: +/// * `icu` +/// * `icu_provider` +/// * `zerovec` +#[doc(hidden)] +#[macro_export] +macro_rules! __impl_property_name_long_numeric_type_v1 { + ($ provider : ty) => { + #[clippy::msrv = "1.83"] + const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO; + #[clippy::msrv = "1.83"] + impl $provider { + #[doc(hidden)] + pub const SINGLETON_PROPERTY_NAME_LONG_NUMERIC_TYPE_V1: &'static ::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x04\0\x04\0\x0B\0\x10\0NoneDecimalDigitNumeric") } }; + } + #[clippy::msrv = "1.83"] + impl icu_provider::DataProvider for $provider { + fn load(&self, req: icu_provider::DataRequest) -> Result, icu_provider::DataError> { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_NUMERIC_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() }) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , ITER) => { + __impl_property_name_long_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; + ($ provider : ty , DRY) => { + __impl_property_name_long_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , DRY , ITER) => { + __impl_property_name_long_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; +} +#[doc(inline)] +pub use __impl_property_name_long_numeric_type_v1 as impl_property_name_long_numeric_type_v1; diff --git a/provider/data/properties/stubdata/property_name_parse_numeric_type_v1.rs.data b/provider/data/properties/stubdata/property_name_parse_numeric_type_v1.rs.data new file mode 100644 index 00000000000..94769864b13 --- /dev/null +++ b/provider/data/properties/stubdata/property_name_parse_numeric_type_v1.rs.data @@ -0,0 +1,81 @@ +// @generated +/// Implement `DataProvider` on the given struct using the data +/// hardcoded in this file. This allows the struct to be used with +/// `icu`'s `_unstable` constructors. +/// +/// Using this implementation will embed the following data in the binary's data segment: +/// * 58B[^1] for the singleton data struct +/// +/// [^1]: these numbers can be smaller in practice due to linker deduplication +/// +/// This macro requires the following crates: +/// * `icu` +/// * `icu_provider` +/// * `zerotrie` +/// * `zerovec` +#[doc(hidden)] +#[macro_export] +macro_rules! __impl_property_name_parse_numeric_type_v1 { + ($ provider : ty) => { + #[clippy::msrv = "1.83"] + const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO; + #[clippy::msrv = "1.83"] + impl $provider { + #[doc(hidden)] + pub const SINGLETON_PROPERTY_NAME_PARSE_NUMERIC_TYPE_V1: &'static ::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xC2DN\x10\xC2ei\x07\x81cimal\x81\x82git\x82\xC2ou\x03ne\x80\x83meric\x83") } } }; + } + #[clippy::msrv = "1.83"] + impl icu_provider::DataProvider for $provider { + fn load(&self, req: icu_provider::DataRequest) -> Result, icu_provider::DataError> { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_NUMERIC_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() }) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , ITER) => { + __impl_property_name_parse_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; + ($ provider : ty , DRY) => { + __impl_property_name_parse_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , DRY , ITER) => { + __impl_property_name_parse_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; +} +#[doc(inline)] +pub use __impl_property_name_parse_numeric_type_v1 as impl_property_name_parse_numeric_type_v1; diff --git a/provider/data/properties/stubdata/property_name_short_numeric_type_v1.rs.data b/provider/data/properties/stubdata/property_name_short_numeric_type_v1.rs.data new file mode 100644 index 00000000000..0ec5b182b92 --- /dev/null +++ b/provider/data/properties/stubdata/property_name_short_numeric_type_v1.rs.data @@ -0,0 +1,80 @@ +// @generated +/// Implement `DataProvider` on the given struct using the data +/// hardcoded in this file. This allows the struct to be used with +/// `icu`'s `_unstable` constructors. +/// +/// Using this implementation will embed the following data in the binary's data segment: +/// * 42B[^1] for the singleton data struct +/// +/// [^1]: these numbers can be smaller in practice due to linker deduplication +/// +/// This macro requires the following crates: +/// * `icu` +/// * `icu_provider` +/// * `zerovec` +#[doc(hidden)] +#[macro_export] +macro_rules! __impl_property_name_short_numeric_type_v1 { + ($ provider : ty) => { + #[clippy::msrv = "1.83"] + const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO; + #[clippy::msrv = "1.83"] + impl $provider { + #[doc(hidden)] + pub const SINGLETON_PROPERTY_NAME_SHORT_NUMERIC_TYPE_V1: &'static ::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x04\0\x04\0\x06\0\x08\0NoneDeDiNu") } }; + } + #[clippy::msrv = "1.83"] + impl icu_provider::DataProvider for $provider { + fn load(&self, req: icu_provider::DataRequest) -> Result, icu_provider::DataError> { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_NUMERIC_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() }) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , ITER) => { + __impl_property_name_short_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; + ($ provider : ty , DRY) => { + __impl_property_name_short_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + }; + ($ provider : ty , DRY , ITER) => { + __impl_property_name_short_numeric_type_v1!($provider); + #[clippy::msrv = "1.83"] + impl icu_provider::DryDataProvider for $provider { + fn dry_load(&self, req: icu_provider::DataRequest) -> Result { + if req.id.locale.is_unknown() { + Ok(icu_provider::DataResponseMetadata::default()) + } else { + Err(icu_provider::DataErrorKind::InvalidRequest.with_req(::INFO, req)) + } + } + } + #[clippy::msrv = "1.83"] + impl icu_provider::IterableDataProvider for $provider { + fn iter_ids(&self) -> Result>, icu_provider::DataError> { + Ok([Default::default()].into_iter().collect()) + } + } + }; +} +#[doc(inline)] +pub use __impl_property_name_short_numeric_type_v1 as impl_property_name_short_numeric_type_v1; diff --git a/provider/registry/src/lib.rs b/provider/registry/src/lib.rs index 6535b9c971a..ad25da87c58 100644 --- a/provider/registry/src/lib.rs +++ b/provider/registry/src/lib.rs @@ -70,6 +70,7 @@ macro_rules! registry( icu::plurals::provider::PluralsCardinalV1: PluralsCardinalV1, icu::plurals::provider::PluralsOrdinalV1: PluralsOrdinalV1, icu::properties::provider::PropertyNameLongBidiClassV1: PropertyNameLongBidiClassV1, + icu::properties::provider::PropertyNameLongNumericTypeV1: PropertyNameLongNumericTypeV1, icu::properties::provider::PropertyNameLongCanonicalCombiningClassV1: PropertyNameLongCanonicalCombiningClassV1, icu::properties::provider::PropertyNameLongEastAsianWidthV1: PropertyNameLongEastAsianWidthV1, icu::properties::provider::PropertyNameLongGeneralCategoryV1: PropertyNameLongGeneralCategoryV1, @@ -83,6 +84,7 @@ macro_rules! registry( icu::properties::provider::PropertyNameLongVerticalOrientationV1: PropertyNameLongVerticalOrientationV1, icu::properties::provider::PropertyNameLongWordBreakV1: PropertyNameLongWordBreakV1, icu::properties::provider::PropertyNameParseBidiClassV1: PropertyNameParseBidiClassV1, + icu::properties::provider::PropertyNameParseNumericTypeV1: PropertyNameParseNumericTypeV1, icu::properties::provider::PropertyNameParseCanonicalCombiningClassV1: PropertyNameParseCanonicalCombiningClassV1, icu::properties::provider::PropertyNameParseEastAsianWidthV1: PropertyNameParseEastAsianWidthV1, icu::properties::provider::PropertyNameParseGeneralCategoryMaskV1: PropertyNameParseGeneralCategoryMaskV1, @@ -97,6 +99,7 @@ macro_rules! registry( icu::properties::provider::PropertyNameParseVerticalOrientationV1: PropertyNameParseVerticalOrientationV1, icu::properties::provider::PropertyNameParseWordBreakV1: PropertyNameParseWordBreakV1, icu::properties::provider::PropertyNameShortBidiClassV1: PropertyNameShortBidiClassV1, + icu::properties::provider::PropertyNameShortNumericTypeV1: PropertyNameShortNumericTypeV1, icu::properties::provider::PropertyNameShortCanonicalCombiningClassV1: PropertyNameShortCanonicalCombiningClassV1, icu::properties::provider::PropertyNameShortEastAsianWidthV1: PropertyNameShortEastAsianWidthV1, icu::properties::provider::PropertyNameShortGeneralCategoryV1: PropertyNameShortGeneralCategoryV1, @@ -179,6 +182,7 @@ macro_rules! registry( icu::properties::provider::PropertyBinaryXidContinueV1: PropertyBinaryXidContinueV1, icu::properties::provider::PropertyBinaryXidStartV1: PropertyBinaryXidStartV1, icu::properties::provider::PropertyEnumBidiClassV1: PropertyEnumBidiClassV1, + icu::properties::provider::PropertyEnumNumericTypeV1: PropertyEnumNumericTypeV1, icu::properties::provider::PropertyEnumCanonicalCombiningClassV1: PropertyEnumCanonicalCombiningClassV1, icu::properties::provider::PropertyEnumEastAsianWidthV1: PropertyEnumEastAsianWidthV1, icu::properties::provider::PropertyEnumGeneralCategoryV1: PropertyEnumGeneralCategoryV1, diff --git a/provider/source/src/properties/enum_codepointtrie.rs b/provider/source/src/properties/enum_codepointtrie.rs index 0271ad9f698..b5c5906a80d 100644 --- a/provider/source/src/properties/enum_codepointtrie.rs +++ b/provider/source/src/properties/enum_codepointtrie.rs @@ -466,6 +466,15 @@ expand!( ), "bc" ), + ( + PropertyEnumNumericTypeV1, + PropertyNameParseNumericTypeV1, + ( + linear: PropertyNameShortNumericTypeV1, + PropertyNameLongNumericTypeV1 + ), + "nt" + ), ( PropertyEnumScriptV1, PropertyNameParseScriptV1, From 5835bd13e170bd0bbbdff17c4287f4a61bff18ca Mon Sep 17 00:00:00 2001 From: may Date: Thu, 23 Oct 2025 20:37:39 +0200 Subject: [PATCH 2/3] add bindings for NumericType --- ffi/capi/bindings/c/CodePointMapData8.h | 5 + ffi/capi/bindings/c/NumericType.d.h | 25 ++++ ffi/capi/bindings/c/NumericType.h | 29 ++++ .../c/PropertyValueNameToEnumMapper.h | 5 + .../cpp/icu4x/CodePointMapData8.d.hpp | 14 ++ .../bindings/cpp/icu4x/CodePointMapData8.hpp | 15 ++ ffi/capi/bindings/cpp/icu4x/NumericType.d.hpp | 79 +++++++++++ ffi/capi/bindings/cpp/icu4x/NumericType.hpp | 62 ++++++++ .../icu4x/PropertyValueNameToEnumMapper.d.hpp | 14 ++ .../icu4x/PropertyValueNameToEnumMapper.hpp | 15 ++ .../bindings/dart/CodePointMapData8.g.dart | 31 ++++ ffi/capi/bindings/dart/NumericType.g.dart | 63 +++++++++ .../dart/PropertyValueNameToEnumMapper.g.dart | 31 ++++ ffi/capi/bindings/dart/lib.g.dart | 1 + ffi/capi/bindings/js/CodePointMapData8.d.ts | 14 ++ ffi/capi/bindings/js/CodePointMapData8.mjs | 41 ++++++ ffi/capi/bindings/js/NumericType.d.ts | 45 ++++++ ffi/capi/bindings/js/NumericType.mjs | 133 ++++++++++++++++++ .../js/PropertyValueNameToEnumMapper.d.ts | 14 ++ .../js/PropertyValueNameToEnumMapper.mjs | 41 ++++++ ffi/capi/bindings/js/index.d.ts | 2 + ffi/capi/bindings/js/index.mjs | 2 + ffi/capi/src/properties_enums.rs | 61 ++++++++ ffi/capi/src/properties_maps.rs | 27 +++- ffi/capi/src/properties_names.rs | 24 ++++ tools/web-demo/gen/index.mjs | 17 +++ 26 files changed, 808 insertions(+), 2 deletions(-) create mode 100644 ffi/capi/bindings/c/NumericType.d.h create mode 100644 ffi/capi/bindings/c/NumericType.h create mode 100644 ffi/capi/bindings/cpp/icu4x/NumericType.d.hpp create mode 100644 ffi/capi/bindings/cpp/icu4x/NumericType.hpp create mode 100644 ffi/capi/bindings/dart/NumericType.g.dart create mode 100644 ffi/capi/bindings/js/NumericType.d.ts create mode 100644 ffi/capi/bindings/js/NumericType.mjs diff --git a/ffi/capi/bindings/c/CodePointMapData8.h b/ffi/capi/bindings/c/CodePointMapData8.h index 12badb2c195..af883c71457 100644 --- a/ffi/capi/bindings/c/CodePointMapData8.h +++ b/ffi/capi/bindings/c/CodePointMapData8.h @@ -40,6 +40,11 @@ CodePointMapData8* icu4x_CodePointMapData8_create_bidi_class_mv1(void); typedef struct icu4x_CodePointMapData8_create_bidi_class_with_provider_mv1_result {union {CodePointMapData8* ok; DataError err;}; bool is_ok;} icu4x_CodePointMapData8_create_bidi_class_with_provider_mv1_result; icu4x_CodePointMapData8_create_bidi_class_with_provider_mv1_result icu4x_CodePointMapData8_create_bidi_class_with_provider_mv1(const DataProvider* provider); +CodePointMapData8* icu4x_CodePointMapData8_create_numeric_type_mv1(void); + +typedef struct icu4x_CodePointMapData8_create_numeric_type_with_provider_mv1_result {union {CodePointMapData8* ok; DataError err;}; bool is_ok;} icu4x_CodePointMapData8_create_numeric_type_with_provider_mv1_result; +icu4x_CodePointMapData8_create_numeric_type_with_provider_mv1_result icu4x_CodePointMapData8_create_numeric_type_with_provider_mv1(const DataProvider* provider); + CodePointMapData8* icu4x_CodePointMapData8_create_east_asian_width_mv1(void); typedef struct icu4x_CodePointMapData8_create_east_asian_width_with_provider_mv1_result {union {CodePointMapData8* ok; DataError err;}; bool is_ok;} icu4x_CodePointMapData8_create_east_asian_width_with_provider_mv1_result; diff --git a/ffi/capi/bindings/c/NumericType.d.h b/ffi/capi/bindings/c/NumericType.d.h new file mode 100644 index 00000000000..9134504c6be --- /dev/null +++ b/ffi/capi/bindings/c/NumericType.d.h @@ -0,0 +1,25 @@ +#ifndef NumericType_D_H +#define NumericType_D_H + +#include +#include +#include +#include +#include "diplomat_runtime.h" + + + + + +typedef enum NumericType { + NumericType_None = 0, + NumericType_Decimal = 1, + NumericType_Digit = 2, + NumericType_Numeric = 3, +} NumericType; + +typedef struct NumericType_option {union { NumericType ok; }; bool is_ok; } NumericType_option; + + + +#endif // NumericType_D_H diff --git a/ffi/capi/bindings/c/NumericType.h b/ffi/capi/bindings/c/NumericType.h new file mode 100644 index 00000000000..dd10d50fdd2 --- /dev/null +++ b/ffi/capi/bindings/c/NumericType.h @@ -0,0 +1,29 @@ +#ifndef NumericType_H +#define NumericType_H + +#include +#include +#include +#include +#include "diplomat_runtime.h" + + +#include "NumericType.d.h" + + + + + + +NumericType icu4x_NumericType_for_char_mv1(char32_t ch); + +uint8_t icu4x_NumericType_to_integer_value_mv1(NumericType self); + +typedef struct icu4x_NumericType_from_integer_value_mv1_result {union {NumericType ok; }; bool is_ok;} icu4x_NumericType_from_integer_value_mv1_result; +icu4x_NumericType_from_integer_value_mv1_result icu4x_NumericType_from_integer_value_mv1(uint8_t other); + + + + + +#endif // NumericType_H diff --git a/ffi/capi/bindings/c/PropertyValueNameToEnumMapper.h b/ffi/capi/bindings/c/PropertyValueNameToEnumMapper.h index d9e13fafd26..9bce489de2e 100644 --- a/ffi/capi/bindings/c/PropertyValueNameToEnumMapper.h +++ b/ffi/capi/bindings/c/PropertyValueNameToEnumMapper.h @@ -41,6 +41,11 @@ PropertyValueNameToEnumMapper* icu4x_PropertyValueNameToEnumMapper_create_bidi_c typedef struct icu4x_PropertyValueNameToEnumMapper_create_bidi_class_with_provider_mv1_result {union {PropertyValueNameToEnumMapper* ok; DataError err;}; bool is_ok;} icu4x_PropertyValueNameToEnumMapper_create_bidi_class_with_provider_mv1_result; icu4x_PropertyValueNameToEnumMapper_create_bidi_class_with_provider_mv1_result icu4x_PropertyValueNameToEnumMapper_create_bidi_class_with_provider_mv1(const DataProvider* provider); +PropertyValueNameToEnumMapper* icu4x_PropertyValueNameToEnumMapper_create_numeric_type_mv1(void); + +typedef struct icu4x_PropertyValueNameToEnumMapper_create_numeric_type_with_provider_mv1_result {union {PropertyValueNameToEnumMapper* ok; DataError err;}; bool is_ok;} icu4x_PropertyValueNameToEnumMapper_create_numeric_type_with_provider_mv1_result; +icu4x_PropertyValueNameToEnumMapper_create_numeric_type_with_provider_mv1_result icu4x_PropertyValueNameToEnumMapper_create_numeric_type_with_provider_mv1(const DataProvider* provider); + PropertyValueNameToEnumMapper* icu4x_PropertyValueNameToEnumMapper_create_indic_syllabic_category_mv1(void); typedef struct icu4x_PropertyValueNameToEnumMapper_create_indic_syllabic_category_with_provider_mv1_result {union {PropertyValueNameToEnumMapper* ok; DataError err;}; bool is_ok;} icu4x_PropertyValueNameToEnumMapper_create_indic_syllabic_category_with_provider_mv1_result; diff --git a/ffi/capi/bindings/cpp/icu4x/CodePointMapData8.d.hpp b/ffi/capi/bindings/cpp/icu4x/CodePointMapData8.d.hpp index c8e82df743e..cb94c092847 100644 --- a/ffi/capi/bindings/cpp/icu4x/CodePointMapData8.d.hpp +++ b/ffi/capi/bindings/cpp/icu4x/CodePointMapData8.d.hpp @@ -116,6 +116,20 @@ class CodePointMapData8 { */ inline static icu4x::diplomat::result, icu4x::DataError> create_bidi_class_with_provider(const icu4x::DataProvider& provider); + /** + * Create a map for the `Numeric_Type` property, using compiled data. + * + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ + inline static std::unique_ptr create_numeric_type(); + + /** + * Create a map for the `Bidi_Class` property, using a particular data source. + * + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ + inline static icu4x::diplomat::result, icu4x::DataError> create_numeric_type_with_provider(const icu4x::DataProvider& provider); + /** * Create a map for the `East_Asian_Width` property, using compiled data. * diff --git a/ffi/capi/bindings/cpp/icu4x/CodePointMapData8.hpp b/ffi/capi/bindings/cpp/icu4x/CodePointMapData8.hpp index b336a448bc6..f61da0849d8 100644 --- a/ffi/capi/bindings/cpp/icu4x/CodePointMapData8.hpp +++ b/ffi/capi/bindings/cpp/icu4x/CodePointMapData8.hpp @@ -43,6 +43,11 @@ namespace capi { typedef struct icu4x_CodePointMapData8_create_bidi_class_with_provider_mv1_result {union {icu4x::capi::CodePointMapData8* ok; icu4x::capi::DataError err;}; bool is_ok;} icu4x_CodePointMapData8_create_bidi_class_with_provider_mv1_result; icu4x_CodePointMapData8_create_bidi_class_with_provider_mv1_result icu4x_CodePointMapData8_create_bidi_class_with_provider_mv1(const icu4x::capi::DataProvider* provider); + icu4x::capi::CodePointMapData8* icu4x_CodePointMapData8_create_numeric_type_mv1(void); + + typedef struct icu4x_CodePointMapData8_create_numeric_type_with_provider_mv1_result {union {icu4x::capi::CodePointMapData8* ok; icu4x::capi::DataError err;}; bool is_ok;} icu4x_CodePointMapData8_create_numeric_type_with_provider_mv1_result; + icu4x_CodePointMapData8_create_numeric_type_with_provider_mv1_result icu4x_CodePointMapData8_create_numeric_type_with_provider_mv1(const icu4x::capi::DataProvider* provider); + icu4x::capi::CodePointMapData8* icu4x_CodePointMapData8_create_east_asian_width_mv1(void); typedef struct icu4x_CodePointMapData8_create_east_asian_width_with_provider_mv1_result {union {icu4x::capi::CodePointMapData8* ok; icu4x::capi::DataError err;}; bool is_ok;} icu4x_CodePointMapData8_create_east_asian_width_with_provider_mv1_result; @@ -149,6 +154,16 @@ inline icu4x::diplomat::result, icu4x: return result.is_ok ? icu4x::diplomat::result, icu4x::DataError>(icu4x::diplomat::Ok>(std::unique_ptr(icu4x::CodePointMapData8::FromFFI(result.ok)))) : icu4x::diplomat::result, icu4x::DataError>(icu4x::diplomat::Err(icu4x::DataError::FromFFI(result.err))); } +inline std::unique_ptr icu4x::CodePointMapData8::create_numeric_type() { + auto result = icu4x::capi::icu4x_CodePointMapData8_create_numeric_type_mv1(); + return std::unique_ptr(icu4x::CodePointMapData8::FromFFI(result)); +} + +inline icu4x::diplomat::result, icu4x::DataError> icu4x::CodePointMapData8::create_numeric_type_with_provider(const icu4x::DataProvider& provider) { + auto result = icu4x::capi::icu4x_CodePointMapData8_create_numeric_type_with_provider_mv1(provider.AsFFI()); + return result.is_ok ? icu4x::diplomat::result, icu4x::DataError>(icu4x::diplomat::Ok>(std::unique_ptr(icu4x::CodePointMapData8::FromFFI(result.ok)))) : icu4x::diplomat::result, icu4x::DataError>(icu4x::diplomat::Err(icu4x::DataError::FromFFI(result.err))); +} + inline std::unique_ptr icu4x::CodePointMapData8::create_east_asian_width() { auto result = icu4x::capi::icu4x_CodePointMapData8_create_east_asian_width_mv1(); return std::unique_ptr(icu4x::CodePointMapData8::FromFFI(result)); diff --git a/ffi/capi/bindings/cpp/icu4x/NumericType.d.hpp b/ffi/capi/bindings/cpp/icu4x/NumericType.d.hpp new file mode 100644 index 00000000000..fbd400bcb4c --- /dev/null +++ b/ffi/capi/bindings/cpp/icu4x/NumericType.d.hpp @@ -0,0 +1,79 @@ +#ifndef ICU4X_NumericType_D_HPP +#define ICU4X_NumericType_D_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include "diplomat_runtime.hpp" +namespace icu4x { +class NumericType; +} // namespace icu4x + + + +namespace icu4x { +namespace capi { + enum NumericType { + NumericType_None = 0, + NumericType_Decimal = 1, + NumericType_Digit = 2, + NumericType_Numeric = 3, + }; + + typedef struct NumericType_option {union { NumericType ok; }; bool is_ok; } NumericType_option; +} // namespace capi +} // namespace + +namespace icu4x { +/** + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ +class NumericType { +public: + enum Value { + None = 0, + Decimal = 1, + Digit = 2, + Numeric = 3, + }; + + NumericType(): value(Value::None) {} + + // Implicit conversions between enum and ::Value + constexpr NumericType(Value v) : value(v) {} + constexpr operator Value() const { return value; } + // Prevent usage as boolean value + explicit operator bool() const = delete; + + /** + * See the [Rust documentation for `for_char`](https://docs.rs/icu/2.1.1/icu/properties/props/trait.EnumeratedProperty.html#tymethod.for_char) for more information. + */ + inline static icu4x::NumericType for_char(char32_t ch); + + /** + * Convert to an integer value usable with ICU4C and CodePointMapData + * + * See the [Rust documentation for `to_icu4c_value`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html#method.to_icu4c_value) for more information. + */ + inline uint8_t to_integer_value() const; + + /** + * Convert from an integer value from ICU4C or CodePointMapData + * + * See the [Rust documentation for `from_icu4c_value`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html#method.from_icu4c_value) for more information. + */ + inline static std::optional from_integer_value(uint8_t other); + + inline icu4x::capi::NumericType AsFFI() const; + inline static icu4x::NumericType FromFFI(icu4x::capi::NumericType c_enum); +private: + Value value; +}; + +} // namespace +#endif // ICU4X_NumericType_D_HPP diff --git a/ffi/capi/bindings/cpp/icu4x/NumericType.hpp b/ffi/capi/bindings/cpp/icu4x/NumericType.hpp new file mode 100644 index 00000000000..4a2f2afe49b --- /dev/null +++ b/ffi/capi/bindings/cpp/icu4x/NumericType.hpp @@ -0,0 +1,62 @@ +#ifndef ICU4X_NumericType_HPP +#define ICU4X_NumericType_HPP + +#include "NumericType.d.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include "diplomat_runtime.hpp" + + +namespace icu4x { +namespace capi { + extern "C" { + + icu4x::capi::NumericType icu4x_NumericType_for_char_mv1(char32_t ch); + + uint8_t icu4x_NumericType_to_integer_value_mv1(icu4x::capi::NumericType self); + + typedef struct icu4x_NumericType_from_integer_value_mv1_result {union {icu4x::capi::NumericType ok; }; bool is_ok;} icu4x_NumericType_from_integer_value_mv1_result; + icu4x_NumericType_from_integer_value_mv1_result icu4x_NumericType_from_integer_value_mv1(uint8_t other); + + } // extern "C" +} // namespace capi +} // namespace + +inline icu4x::capi::NumericType icu4x::NumericType::AsFFI() const { + return static_cast(value); +} + +inline icu4x::NumericType icu4x::NumericType::FromFFI(icu4x::capi::NumericType c_enum) { + switch (c_enum) { + case icu4x::capi::NumericType_None: + case icu4x::capi::NumericType_Decimal: + case icu4x::capi::NumericType_Digit: + case icu4x::capi::NumericType_Numeric: + return static_cast(c_enum); + default: + std::abort(); + } +} + +inline icu4x::NumericType icu4x::NumericType::for_char(char32_t ch) { + auto result = icu4x::capi::icu4x_NumericType_for_char_mv1(ch); + return icu4x::NumericType::FromFFI(result); +} + +inline uint8_t icu4x::NumericType::to_integer_value() const { + auto result = icu4x::capi::icu4x_NumericType_to_integer_value_mv1(this->AsFFI()); + return result; +} + +inline std::optional icu4x::NumericType::from_integer_value(uint8_t other) { + auto result = icu4x::capi::icu4x_NumericType_from_integer_value_mv1(other); + return result.is_ok ? std::optional(icu4x::NumericType::FromFFI(result.ok)) : std::nullopt; +} +#endif // ICU4X_NumericType_HPP diff --git a/ffi/capi/bindings/cpp/icu4x/PropertyValueNameToEnumMapper.d.hpp b/ffi/capi/bindings/cpp/icu4x/PropertyValueNameToEnumMapper.d.hpp index 58b3de59f99..71d19667078 100644 --- a/ffi/capi/bindings/cpp/icu4x/PropertyValueNameToEnumMapper.d.hpp +++ b/ffi/capi/bindings/cpp/icu4x/PropertyValueNameToEnumMapper.d.hpp @@ -113,6 +113,20 @@ class PropertyValueNameToEnumMapper { */ inline static icu4x::diplomat::result, icu4x::DataError> create_bidi_class_with_provider(const icu4x::DataProvider& provider); + /** + * Create a name-to-enum mapper for the `Numeric_Type` property, using compiled data. + * + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ + inline static std::unique_ptr create_numeric_type(); + + /** + * Create a name-to-enum mapper for the `Numeric_Type` property, using a particular data source. + * + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ + inline static icu4x::diplomat::result, icu4x::DataError> create_numeric_type_with_provider(const icu4x::DataProvider& provider); + /** * Create a name-to-enum mapper for the `Indic_Syllabic_Category` property, using compiled data. * diff --git a/ffi/capi/bindings/cpp/icu4x/PropertyValueNameToEnumMapper.hpp b/ffi/capi/bindings/cpp/icu4x/PropertyValueNameToEnumMapper.hpp index d91b51dcc99..d40fbcc6b0f 100644 --- a/ffi/capi/bindings/cpp/icu4x/PropertyValueNameToEnumMapper.hpp +++ b/ffi/capi/bindings/cpp/icu4x/PropertyValueNameToEnumMapper.hpp @@ -44,6 +44,11 @@ namespace capi { typedef struct icu4x_PropertyValueNameToEnumMapper_create_bidi_class_with_provider_mv1_result {union {icu4x::capi::PropertyValueNameToEnumMapper* ok; icu4x::capi::DataError err;}; bool is_ok;} icu4x_PropertyValueNameToEnumMapper_create_bidi_class_with_provider_mv1_result; icu4x_PropertyValueNameToEnumMapper_create_bidi_class_with_provider_mv1_result icu4x_PropertyValueNameToEnumMapper_create_bidi_class_with_provider_mv1(const icu4x::capi::DataProvider* provider); + icu4x::capi::PropertyValueNameToEnumMapper* icu4x_PropertyValueNameToEnumMapper_create_numeric_type_mv1(void); + + typedef struct icu4x_PropertyValueNameToEnumMapper_create_numeric_type_with_provider_mv1_result {union {icu4x::capi::PropertyValueNameToEnumMapper* ok; icu4x::capi::DataError err;}; bool is_ok;} icu4x_PropertyValueNameToEnumMapper_create_numeric_type_with_provider_mv1_result; + icu4x_PropertyValueNameToEnumMapper_create_numeric_type_with_provider_mv1_result icu4x_PropertyValueNameToEnumMapper_create_numeric_type_with_provider_mv1(const icu4x::capi::DataProvider* provider); + icu4x::capi::PropertyValueNameToEnumMapper* icu4x_PropertyValueNameToEnumMapper_create_indic_syllabic_category_mv1(void); typedef struct icu4x_PropertyValueNameToEnumMapper_create_indic_syllabic_category_with_provider_mv1_result {union {icu4x::capi::PropertyValueNameToEnumMapper* ok; icu4x::capi::DataError err;}; bool is_ok;} icu4x_PropertyValueNameToEnumMapper_create_indic_syllabic_category_with_provider_mv1_result; @@ -137,6 +142,16 @@ inline icu4x::diplomat::result, icu4x::DataError>(icu4x::diplomat::Ok>(std::unique_ptr(icu4x::PropertyValueNameToEnumMapper::FromFFI(result.ok)))) : icu4x::diplomat::result, icu4x::DataError>(icu4x::diplomat::Err(icu4x::DataError::FromFFI(result.err))); } +inline std::unique_ptr icu4x::PropertyValueNameToEnumMapper::create_numeric_type() { + auto result = icu4x::capi::icu4x_PropertyValueNameToEnumMapper_create_numeric_type_mv1(); + return std::unique_ptr(icu4x::PropertyValueNameToEnumMapper::FromFFI(result)); +} + +inline icu4x::diplomat::result, icu4x::DataError> icu4x::PropertyValueNameToEnumMapper::create_numeric_type_with_provider(const icu4x::DataProvider& provider) { + auto result = icu4x::capi::icu4x_PropertyValueNameToEnumMapper_create_numeric_type_with_provider_mv1(provider.AsFFI()); + return result.is_ok ? icu4x::diplomat::result, icu4x::DataError>(icu4x::diplomat::Ok>(std::unique_ptr(icu4x::PropertyValueNameToEnumMapper::FromFFI(result.ok)))) : icu4x::diplomat::result, icu4x::DataError>(icu4x::diplomat::Err(icu4x::DataError::FromFFI(result.err))); +} + inline std::unique_ptr icu4x::PropertyValueNameToEnumMapper::create_indic_syllabic_category() { auto result = icu4x::capi::icu4x_PropertyValueNameToEnumMapper_create_indic_syllabic_category_mv1(); return std::unique_ptr(icu4x::PropertyValueNameToEnumMapper::FromFFI(result)); diff --git a/ffi/capi/bindings/dart/CodePointMapData8.g.dart b/ffi/capi/bindings/dart/CodePointMapData8.g.dart index e629485880a..67e573100bf 100644 --- a/ffi/capi/bindings/dart/CodePointMapData8.g.dart +++ b/ffi/capi/bindings/dart/CodePointMapData8.g.dart @@ -128,6 +128,27 @@ final class CodePointMapData8 implements ffi.Finalizable { return CodePointMapData8._fromFfi(result.union.ok, []); } + /// Create a map for the `Numeric_Type` property, using compiled data. + /// + /// See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + factory CodePointMapData8.numericType() { + final result = _icu4x_CodePointMapData8_create_numeric_type_mv1(); + return CodePointMapData8._fromFfi(result, []); + } + + /// Create a map for the `Bidi_Class` property, using a particular data source. + /// + /// See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + /// + /// Throws [DataError] on failure. + factory CodePointMapData8.numericTypeWithProvider(DataProvider provider) { + final result = _icu4x_CodePointMapData8_create_numeric_type_with_provider_mv1(provider._ffi); + if (!result.isOk) { + throw DataError.values[result.union.err]; + } + return CodePointMapData8._fromFfi(result.union.ok, []); + } + /// Create a map for the `East_Asian_Width` property, using compiled data. /// /// See the [Rust documentation for `EastAsianWidth`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.EastAsianWidth.html) for more information. @@ -390,6 +411,16 @@ external ffi.Pointer _icu4x_CodePointMapData8_create_bidi_class_mv1( // ignore: non_constant_identifier_names external _ResultOpaqueInt32 _icu4x_CodePointMapData8_create_bidi_class_with_provider_mv1(ffi.Pointer provider); +@_DiplomatFfiUse('icu4x_CodePointMapData8_create_numeric_type_mv1') +@ffi.Native Function()>(isLeaf: true, symbol: 'icu4x_CodePointMapData8_create_numeric_type_mv1') +// ignore: non_constant_identifier_names +external ffi.Pointer _icu4x_CodePointMapData8_create_numeric_type_mv1(); + +@_DiplomatFfiUse('icu4x_CodePointMapData8_create_numeric_type_with_provider_mv1') +@ffi.Native<_ResultOpaqueInt32 Function(ffi.Pointer)>(isLeaf: true, symbol: 'icu4x_CodePointMapData8_create_numeric_type_with_provider_mv1') +// ignore: non_constant_identifier_names +external _ResultOpaqueInt32 _icu4x_CodePointMapData8_create_numeric_type_with_provider_mv1(ffi.Pointer provider); + @_DiplomatFfiUse('icu4x_CodePointMapData8_create_east_asian_width_mv1') @ffi.Native Function()>(isLeaf: true, symbol: 'icu4x_CodePointMapData8_create_east_asian_width_mv1') // ignore: non_constant_identifier_names diff --git a/ffi/capi/bindings/dart/NumericType.g.dart b/ffi/capi/bindings/dart/NumericType.g.dart new file mode 100644 index 00000000000..08d86e0c053 --- /dev/null +++ b/ffi/capi/bindings/dart/NumericType.g.dart @@ -0,0 +1,63 @@ +// generated by diplomat-tool +// dart format off + +part of 'lib.g.dart'; + +/// See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. +enum NumericType { + /// See the [Rust documentation for `None`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html#associatedconstant.None) for more information. + // ignore: public_member_api_docs + none, + /// See the [Rust documentation for `Decimal`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html#associatedconstant.Decimal) for more information. + // ignore: public_member_api_docs + decimal, + /// See the [Rust documentation for `Digit`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html#associatedconstant.Digit) for more information. + // ignore: public_member_api_docs + digit, + /// See the [Rust documentation for `Numeric`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html#associatedconstant.Numeric) for more information. + // ignore: public_member_api_docs + numeric; + + /// See the [Rust documentation for `for_char`](https://docs.rs/icu/2.1.1/icu/properties/props/trait.EnumeratedProperty.html#tymethod.for_char) for more information. + static NumericType forChar(Rune ch) { + final result = _icu4x_NumericType_for_char_mv1(ch); + return NumericType.values[result]; + } + + /// Convert to an integer value usable with ICU4C and CodePointMapData + /// + /// See the [Rust documentation for `to_icu4c_value`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html#method.to_icu4c_value) for more information. + int toIntegerValue() { + final result = _icu4x_NumericType_to_integer_value_mv1(index); + return result; + } + + /// Convert from an integer value from ICU4C or CodePointMapData + /// + /// See the [Rust documentation for `from_icu4c_value`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html#method.from_icu4c_value) for more information. + static NumericType? fromIntegerValue(int other) { + final result = _icu4x_NumericType_from_integer_value_mv1(other); + if (!result.isOk) { + return null; + } + return NumericType.values[result.union.ok]; + } + +} + +@_DiplomatFfiUse('icu4x_NumericType_for_char_mv1') +@ffi.Native(isLeaf: true, symbol: 'icu4x_NumericType_for_char_mv1') +// ignore: non_constant_identifier_names +external int _icu4x_NumericType_for_char_mv1(Rune ch); + +@_DiplomatFfiUse('icu4x_NumericType_to_integer_value_mv1') +@ffi.Native(isLeaf: true, symbol: 'icu4x_NumericType_to_integer_value_mv1') +// ignore: non_constant_identifier_names +external int _icu4x_NumericType_to_integer_value_mv1(int self); + +@_DiplomatFfiUse('icu4x_NumericType_from_integer_value_mv1') +@ffi.Native<_ResultInt32Void Function(ffi.Uint8)>(isLeaf: true, symbol: 'icu4x_NumericType_from_integer_value_mv1') +// ignore: non_constant_identifier_names +external _ResultInt32Void _icu4x_NumericType_from_integer_value_mv1(int other); + +// dart format on diff --git a/ffi/capi/bindings/dart/PropertyValueNameToEnumMapper.g.dart b/ffi/capi/bindings/dart/PropertyValueNameToEnumMapper.g.dart index 7647ed8ceb9..c138115e392 100644 --- a/ffi/capi/bindings/dart/PropertyValueNameToEnumMapper.g.dart +++ b/ffi/capi/bindings/dart/PropertyValueNameToEnumMapper.g.dart @@ -136,6 +136,27 @@ final class PropertyValueNameToEnumMapper implements ffi.Finalizable { return PropertyValueNameToEnumMapper._fromFfi(result.union.ok, []); } + /// Create a name-to-enum mapper for the `Numeric_Type` property, using compiled data. + /// + /// See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + factory PropertyValueNameToEnumMapper.numericType() { + final result = _icu4x_PropertyValueNameToEnumMapper_create_numeric_type_mv1(); + return PropertyValueNameToEnumMapper._fromFfi(result, []); + } + + /// Create a name-to-enum mapper for the `Numeric_Type` property, using a particular data source. + /// + /// See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + /// + /// Throws [DataError] on failure. + factory PropertyValueNameToEnumMapper.numericTypeWithProvider(DataProvider provider) { + final result = _icu4x_PropertyValueNameToEnumMapper_create_numeric_type_with_provider_mv1(provider._ffi); + if (!result.isOk) { + throw DataError.values[result.union.err]; + } + return PropertyValueNameToEnumMapper._fromFfi(result.union.ok, []); + } + /// Create a name-to-enum mapper for the `Indic_Syllabic_Category` property, using compiled data. /// /// See the [Rust documentation for `IndicSyllabicCategory`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.IndicSyllabicCategory.html) for more information. @@ -340,6 +361,16 @@ external ffi.Pointer _icu4x_PropertyValueNameToEnumMapper_create_bid // ignore: non_constant_identifier_names external _ResultOpaqueInt32 _icu4x_PropertyValueNameToEnumMapper_create_bidi_class_with_provider_mv1(ffi.Pointer provider); +@_DiplomatFfiUse('icu4x_PropertyValueNameToEnumMapper_create_numeric_type_mv1') +@ffi.Native Function()>(isLeaf: true, symbol: 'icu4x_PropertyValueNameToEnumMapper_create_numeric_type_mv1') +// ignore: non_constant_identifier_names +external ffi.Pointer _icu4x_PropertyValueNameToEnumMapper_create_numeric_type_mv1(); + +@_DiplomatFfiUse('icu4x_PropertyValueNameToEnumMapper_create_numeric_type_with_provider_mv1') +@ffi.Native<_ResultOpaqueInt32 Function(ffi.Pointer)>(isLeaf: true, symbol: 'icu4x_PropertyValueNameToEnumMapper_create_numeric_type_with_provider_mv1') +// ignore: non_constant_identifier_names +external _ResultOpaqueInt32 _icu4x_PropertyValueNameToEnumMapper_create_numeric_type_with_provider_mv1(ffi.Pointer provider); + @_DiplomatFfiUse('icu4x_PropertyValueNameToEnumMapper_create_indic_syllabic_category_mv1') @ffi.Native Function()>(isLeaf: true, symbol: 'icu4x_PropertyValueNameToEnumMapper_create_indic_syllabic_category_mv1') // ignore: non_constant_identifier_names diff --git a/ffi/capi/bindings/dart/lib.g.dart b/ffi/capi/bindings/dart/lib.g.dart index fa14f977ba4..c6bebe75323 100644 --- a/ffi/capi/bindings/dart/lib.g.dart +++ b/ffi/capi/bindings/dart/lib.g.dart @@ -119,6 +119,7 @@ part 'LocaleFallbacker.g.dart'; part 'LocaleFallbackerWithConfig.g.dart'; part 'LocaleParseError.g.dart'; part 'Logger.g.dart'; +part 'NumericType.g.dart'; part 'PluralCategories.g.dart'; part 'PluralCategory.g.dart'; part 'PluralOperands.g.dart'; diff --git a/ffi/capi/bindings/js/CodePointMapData8.d.ts b/ffi/capi/bindings/js/CodePointMapData8.d.ts index 1e73dffd071..ce5b2e958b9 100644 --- a/ffi/capi/bindings/js/CodePointMapData8.d.ts +++ b/ffi/capi/bindings/js/CodePointMapData8.d.ts @@ -97,6 +97,20 @@ export class CodePointMapData8 { */ static createBidiClassWithProvider(provider: DataProvider): CodePointMapData8; + /** + * Create a map for the `Numeric_Type` property, using compiled data. + * + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ + static createNumericType(): CodePointMapData8; + + /** + * Create a map for the `Bidi_Class` property, using a particular data source. + * + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ + static createNumericTypeWithProvider(provider: DataProvider): CodePointMapData8; + /** * Create a map for the `East_Asian_Width` property, using compiled data. * diff --git a/ffi/capi/bindings/js/CodePointMapData8.mjs b/ffi/capi/bindings/js/CodePointMapData8.mjs index c9006993ae2..3586672c97b 100644 --- a/ffi/capi/bindings/js/CodePointMapData8.mjs +++ b/ffi/capi/bindings/js/CodePointMapData8.mjs @@ -238,6 +238,47 @@ export class CodePointMapData8 { } } + /** + * Create a map for the `Numeric_Type` property, using compiled data. + * + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ + static createNumericType() { + + const result = wasm.icu4x_CodePointMapData8_create_numeric_type_mv1(); + + try { + return new CodePointMapData8(diplomatRuntime.internalConstructor, result, []); + } + + finally { + } + } + + /** + * Create a map for the `Bidi_Class` property, using a particular data source. + * + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ + static createNumericTypeWithProvider(provider) { + const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true); + + + const result = wasm.icu4x_CodePointMapData8_create_numeric_type_with_provider_mv1(diplomatReceive.buffer, provider.ffiValue); + + try { + if (!diplomatReceive.resultFlag) { + const cause = new DataError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer)); + throw new globalThis.Error('DataError.' + cause.value, { cause }); + } + return new CodePointMapData8(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []); + } + + finally { + diplomatReceive.free(); + } + } + /** * Create a map for the `East_Asian_Width` property, using compiled data. * diff --git a/ffi/capi/bindings/js/NumericType.d.ts b/ffi/capi/bindings/js/NumericType.d.ts new file mode 100644 index 00000000000..7c8828074e7 --- /dev/null +++ b/ffi/capi/bindings/js/NumericType.d.ts @@ -0,0 +1,45 @@ +// generated by diplomat-tool +import type { pointer, codepoint } from "./diplomat-runtime.d.ts"; + + + +/** + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ +export class NumericType { + + /** @internal */ + static fromValue(value: NumericType | string): NumericType; + + get value(): string; + + /** @internal */ + get ffiValue(): number; + + static None : NumericType; + static Decimal : NumericType; + static Digit : NumericType; + static Numeric : NumericType; + + + /** + * See the [Rust documentation for `for_char`](https://docs.rs/icu/2.1.1/icu/properties/props/trait.EnumeratedProperty.html#tymethod.for_char) for more information. + */ + static forChar(ch: codepoint): NumericType; + + /** + * Convert to an integer value usable with ICU4C and CodePointMapData + * + * See the [Rust documentation for `to_icu4c_value`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html#method.to_icu4c_value) for more information. + */ + toIntegerValue(): number; + + /** + * Convert from an integer value from ICU4C or CodePointMapData + * + * See the [Rust documentation for `from_icu4c_value`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html#method.from_icu4c_value) for more information. + */ + static fromIntegerValue(other: number): NumericType | null; + + constructor(value: NumericType | string ); +} \ No newline at end of file diff --git a/ffi/capi/bindings/js/NumericType.mjs b/ffi/capi/bindings/js/NumericType.mjs new file mode 100644 index 00000000000..7df5edfe2df --- /dev/null +++ b/ffi/capi/bindings/js/NumericType.mjs @@ -0,0 +1,133 @@ +// generated by diplomat-tool +import wasm from "./diplomat-wasm.mjs"; +import * as diplomatRuntime from "./diplomat-runtime.mjs"; + + + +/** + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ +export class NumericType { + #value = undefined; + + static #values = new Map([ + ["None", 0], + ["Decimal", 1], + ["Digit", 2], + ["Numeric", 3] + ]); + + static getAllEntries() { + return NumericType.#values.entries(); + } + + #internalConstructor(value) { + if (arguments.length > 1 && arguments[0] === diplomatRuntime.internalConstructor) { + // We pass in two internalConstructor arguments to create *new* + // instances of this type, otherwise the enums are treated as singletons. + if (arguments[1] === diplomatRuntime.internalConstructor ) { + this.#value = arguments[2]; + return this; + } + return NumericType.#objectValues[arguments[1]]; + } + + if (value instanceof NumericType) { + return value; + } + + let intVal = NumericType.#values.get(value); + + // Nullish check, checks for null or undefined + if (intVal != null) { + return NumericType.#objectValues[intVal]; + } + + throw TypeError(value + " is not a NumericType and does not correspond to any of its enumerator values."); + } + + /** @internal */ + static fromValue(value) { + return new NumericType(value); + } + + get value(){ + return [...NumericType.#values.keys()][this.#value]; + } + + /** @internal */ + get ffiValue(){ + return this.#value; + } + static #objectValues = [ + new NumericType(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 0), + new NumericType(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 1), + new NumericType(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 2), + new NumericType(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 3), + ]; + + static None = NumericType.#objectValues[0]; + static Decimal = NumericType.#objectValues[1]; + static Digit = NumericType.#objectValues[2]; + static Numeric = NumericType.#objectValues[3]; + + + /** + * See the [Rust documentation for `for_char`](https://docs.rs/icu/2.1.1/icu/properties/props/trait.EnumeratedProperty.html#tymethod.for_char) for more information. + */ + static forChar(ch) { + + const result = wasm.icu4x_NumericType_for_char_mv1(ch); + + try { + return new NumericType(diplomatRuntime.internalConstructor, result); + } + + finally { + } + } + + /** + * Convert to an integer value usable with ICU4C and CodePointMapData + * + * See the [Rust documentation for `to_icu4c_value`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html#method.to_icu4c_value) for more information. + */ + toIntegerValue() { + + const result = wasm.icu4x_NumericType_to_integer_value_mv1(this.ffiValue); + + try { + return result; + } + + finally { + } + } + + /** + * Convert from an integer value from ICU4C or CodePointMapData + * + * See the [Rust documentation for `from_icu4c_value`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html#method.from_icu4c_value) for more information. + */ + static fromIntegerValue(other) { + const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true); + + + const result = wasm.icu4x_NumericType_from_integer_value_mv1(diplomatReceive.buffer, other); + + try { + if (!diplomatReceive.resultFlag) { + return null; + } + return new NumericType(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer)); + } + + finally { + diplomatReceive.free(); + } + } + + constructor(value) { + return this.#internalConstructor(...arguments) + } +} \ No newline at end of file diff --git a/ffi/capi/bindings/js/PropertyValueNameToEnumMapper.d.ts b/ffi/capi/bindings/js/PropertyValueNameToEnumMapper.d.ts index fef4b904fbf..392cf70f6ca 100644 --- a/ffi/capi/bindings/js/PropertyValueNameToEnumMapper.d.ts +++ b/ffi/capi/bindings/js/PropertyValueNameToEnumMapper.d.ts @@ -95,6 +95,20 @@ export class PropertyValueNameToEnumMapper { */ static createBidiClassWithProvider(provider: DataProvider): PropertyValueNameToEnumMapper; + /** + * Create a name-to-enum mapper for the `Numeric_Type` property, using compiled data. + * + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ + static createNumericType(): PropertyValueNameToEnumMapper; + + /** + * Create a name-to-enum mapper for the `Numeric_Type` property, using a particular data source. + * + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ + static createNumericTypeWithProvider(provider: DataProvider): PropertyValueNameToEnumMapper; + /** * Create a name-to-enum mapper for the `Indic_Syllabic_Category` property, using compiled data. * diff --git a/ffi/capi/bindings/js/PropertyValueNameToEnumMapper.mjs b/ffi/capi/bindings/js/PropertyValueNameToEnumMapper.mjs index c4aafcddb3d..8e3356818eb 100644 --- a/ffi/capi/bindings/js/PropertyValueNameToEnumMapper.mjs +++ b/ffi/capi/bindings/js/PropertyValueNameToEnumMapper.mjs @@ -258,6 +258,47 @@ export class PropertyValueNameToEnumMapper { } } + /** + * Create a name-to-enum mapper for the `Numeric_Type` property, using compiled data. + * + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ + static createNumericType() { + + const result = wasm.icu4x_PropertyValueNameToEnumMapper_create_numeric_type_mv1(); + + try { + return new PropertyValueNameToEnumMapper(diplomatRuntime.internalConstructor, result, []); + } + + finally { + } + } + + /** + * Create a name-to-enum mapper for the `Numeric_Type` property, using a particular data source. + * + * See the [Rust documentation for `NumericType`](https://docs.rs/icu/2.1.1/icu/properties/props/struct.NumericType.html) for more information. + */ + static createNumericTypeWithProvider(provider) { + const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true); + + + const result = wasm.icu4x_PropertyValueNameToEnumMapper_create_numeric_type_with_provider_mv1(diplomatReceive.buffer, provider.ffiValue); + + try { + if (!diplomatReceive.resultFlag) { + const cause = new DataError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer)); + throw new globalThis.Error('DataError.' + cause.value, { cause }); + } + return new PropertyValueNameToEnumMapper(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []); + } + + finally { + diplomatReceive.free(); + } + } + /** * Create a name-to-enum mapper for the `Indic_Syllabic_Category` property, using compiled data. * diff --git a/ffi/capi/bindings/js/index.d.ts b/ffi/capi/bindings/js/index.d.ts index cd417b55ee8..43992fd95c6 100644 --- a/ffi/capi/bindings/js/index.d.ts +++ b/ffi/capi/bindings/js/index.d.ts @@ -314,6 +314,8 @@ export { JoiningType } from "./JoiningType" export { LineBreak } from "./LineBreak" +export { NumericType } from "./NumericType" + export { Script } from "./Script" export { SentenceBreak } from "./SentenceBreak" diff --git a/ffi/capi/bindings/js/index.mjs b/ffi/capi/bindings/js/index.mjs index c86d10feaed..577d95bfb7d 100644 --- a/ffi/capi/bindings/js/index.mjs +++ b/ffi/capi/bindings/js/index.mjs @@ -312,6 +312,8 @@ export { JoiningType } from "./JoiningType.mjs" export { LineBreak } from "./LineBreak.mjs" +export { NumericType } from "./NumericType.mjs" + export { Script } from "./Script.mjs" export { SentenceBreak } from "./SentenceBreak.mjs" diff --git a/ffi/capi/src/properties_enums.rs b/ffi/capi/src/properties_enums.rs index 4e28d99545b..db81bb7bd61 100644 --- a/ffi/capi/src/properties_enums.rs +++ b/ffi/capi/src/properties_enums.rs @@ -210,6 +210,60 @@ pub mod ffi { } } + #[diplomat::rust_link(icu::properties::props::NumericType, Struct)] + #[diplomat::enum_convert(icu_properties::props::NumericType, needs_wildcard)] + #[non_exhaustive] + pub enum NumericType { + #[diplomat::rust_link( + icu::properties::props::NumericType::None, + AssociatedConstantInStruct + )] + None = 0, + #[diplomat::rust_link( + icu::properties::props::NumericType::Decimal, + AssociatedConstantInStruct + )] + Decimal = 1, + #[diplomat::rust_link( + icu::properties::props::NumericType::Digit, + AssociatedConstantInStruct + )] + Digit = 2, + #[diplomat::rust_link( + icu::properties::props::NumericType::Numeric, + AssociatedConstantInStruct + )] + Numeric = 3, + } + + impl NumericType { + #[diplomat::rust_link(icu::properties::props::EnumeratedProperty::for_char, FnInTrait)] + #[cfg(feature = "compiled_data")] + pub fn for_char(ch: DiplomatChar) -> Self { + icu_properties::CodePointMapData::::new() + .get32(ch) + .into() + } + #[diplomat::rust_link(icu::properties::props::NumericType::to_icu4c_value, FnInStruct)] + #[diplomat::attr(demo_gen, disable)] // semi-internal, also too many of these + /// Convert to an integer value usable with ICU4C and CodePointMapData + pub fn to_integer_value(self) -> u8 { + self as u8 + } + #[diplomat::rust_link(icu::properties::props::NumericType::from_icu4c_value, FnInStruct)] + #[diplomat::attr(demo_gen, disable)] // semi-internal, also too many of these + /// Convert from an integer value from ICU4C or CodePointMapData + pub fn from_integer_value(other: u8) -> Option { + Some(match other { + 0 => Self::None, + 1 => Self::Decimal, + 2 => Self::Digit, + 3 => Self::Numeric, + _ => return None, + }) + } + } + #[diplomat::rust_link(icu::properties::props::Script, Struct)] #[diplomat::enum_convert(icu_properties::props::Script, needs_wildcard)] #[non_exhaustive] @@ -3029,6 +3083,13 @@ mod test { assert_eq!(*prop, props::BidiClass::from(ffi_prop)); } + for prop in props::NumericType::ALL_VALUES { + let ffi_prop = NumericType::from_integer_value(prop.to_icu4c_value()) + .expect("Found NumericType value not supported in ffi"); + assert_eq!(prop.to_icu4c_value(), ffi_prop.to_integer_value()); + assert_eq!(*prop, props::NumericType::from(ffi_prop)); + } + for prop in props::Script::ALL_VALUES { let ffi_prop = Script::from_integer_value(prop.to_icu4c_value()) .expect("Found Script value not supported in ffi"); diff --git a/ffi/capi/src/properties_maps.rs b/ffi/capi/src/properties_maps.rs index 75dc0257632..ecb1f0d2da0 100644 --- a/ffi/capi/src/properties_maps.rs +++ b/ffi/capi/src/properties_maps.rs @@ -9,8 +9,8 @@ pub mod ffi { #[cfg(any(feature = "compiled_data", feature = "buffer_provider"))] use icu_properties::props::{ BidiClass, CanonicalCombiningClass, EastAsianWidth, GeneralCategory, GraphemeClusterBreak, - HangulSyllableType, IndicSyllabicCategory, JoiningType, LineBreak, Script, SentenceBreak, - VerticalOrientation, WordBreak, + HangulSyllableType, IndicSyllabicCategory, JoiningType, LineBreak, NumericType, Script, + SentenceBreak, VerticalOrientation, WordBreak, }; use crate::unstable::properties_enums::ffi::GeneralCategoryGroup; @@ -164,6 +164,29 @@ pub mod ffi { )?, )) } + + /// Create a map for the `Numeric_Type` property, using compiled data. + #[diplomat::rust_link(icu::properties::props::NumericType, Struct)] + #[diplomat::attr(auto, named_constructor = "numeric_type")] + #[cfg(feature = "compiled_data")] + pub fn create_numeric_type() -> Box { + convert_8(icu_properties::CodePointMapData::::new().static_to_owned()) + } + + /// Create a map for the `Bidi_Class` property, using a particular data source. + #[diplomat::rust_link(icu::properties::props::NumericType, Struct)] + #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "numeric_type_with_provider")] + #[cfg(feature = "buffer_provider")] + pub fn create_numeric_type_with_provider( + provider: &DataProvider, + ) -> Result, DataError> { + Ok(convert_8( + icu_properties::CodePointMapData::::try_new_unstable( + &provider.get_unstable()?, + )?, + )) + } + /// Create a map for the `East_Asian_Width` property, using compiled data. #[diplomat::rust_link(icu::properties::props::EastAsianWidth, Struct)] #[diplomat::attr(auto, named_constructor = "east_asian_width")] diff --git a/ffi/capi/src/properties_names.rs b/ffi/capi/src/properties_names.rs index c286848e625..cb27476227e 100644 --- a/ffi/capi/src/properties_names.rs +++ b/ffi/capi/src/properties_names.rs @@ -164,6 +164,30 @@ pub mod ffi { .erase(), ))) } + + /// Create a name-to-enum mapper for the `Numeric_Type` property, using compiled data. + #[diplomat::rust_link(icu::properties::props::NumericType, Struct)] + #[diplomat::attr(auto, named_constructor = "numeric_type")] + #[cfg(feature = "compiled_data")] + pub fn create_numeric_type() -> Box { + Box::new(PropertyValueNameToEnumMapper( + icu_properties::PropertyParser::::new() + .static_to_owned() + .erase(), + )) + } + /// Create a name-to-enum mapper for the `Numeric_Type` property, using a particular data source. + #[diplomat::rust_link(icu::properties::props::NumericType, Struct)] + #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "numeric_type_with_provider")] + #[cfg(feature = "buffer_provider")] + pub fn create_numeric_type_with_provider( + provider: &DataProvider, + ) -> Result, DataError> { + Ok(Box::new(PropertyValueNameToEnumMapper( + icu_properties::PropertyParser::::try_new_unstable(&provider.get_unstable()?)? + .erase(), + ))) + } /// Create a name-to-enum mapper for the `Indic_Syllabic_Category` property, using compiled data. #[diplomat::rust_link(icu::properties::props::IndicSyllabicCategory, Struct)] #[diplomat::attr(auto, named_constructor = "indic_syllabic_category")] diff --git a/tools/web-demo/gen/index.mjs b/tools/web-demo/gen/index.mjs index c6024cb7459..5d7689d03c5 100644 --- a/tools/web-demo/gen/index.mjs +++ b/tools/web-demo/gen/index.mjs @@ -2690,6 +2690,23 @@ let termini = Object.assign({ ] }, + "NumericType.forChar": { + func: (ch) => icu.NumericType.forChar(ch), + // For avoiding webpacking minifying issues: + funcName: "NumericType.forChar", + expr: (ch) => "icu.NumericType.forChar(ch)".replace(/([\( ])ch([,\) \n])/, '$1' + ch + '$2'), + display: displayOptionalEnum, + parameters: [ + + { + name: "ch", + type: "codepoint", + typeUse: "codepoint" + } + + ] + }, + "Script.forChar": { func: (ch) => icu.Script.forChar(ch), // For avoiding webpacking minifying issues: From ca21812b23b69200f3c4430a1aa756a96a98e809 Mon Sep 17 00:00:00 2001 From: may Date: Thu, 23 Oct 2025 20:52:37 +0200 Subject: [PATCH 3/3] add nt.toml data --- .../debug/property/enum/numeric/type/v1.json | 3492 +++++++++++++++++ .../property/name/long/numeric/type/v1.json | 8 + .../property/name/parse/numeric/type/v1.json | 11 + .../property/name/short/numeric/type/v1.json | 8 + provider/source/src/tests/data.rs | 1 + .../tests/data/icuexport/uprops/small/nt.toml | 754 ++++ .../make/download-repo-sources/globs.rs.data | 1 + 7 files changed, 4275 insertions(+) create mode 100644 provider/source/data/debug/property/enum/numeric/type/v1.json create mode 100644 provider/source/data/debug/property/name/long/numeric/type/v1.json create mode 100644 provider/source/data/debug/property/name/parse/numeric/type/v1.json create mode 100644 provider/source/data/debug/property/name/short/numeric/type/v1.json create mode 100644 provider/source/tests/data/icuexport/uprops/small/nt.toml diff --git a/provider/source/data/debug/property/enum/numeric/type/v1.json b/provider/source/data/debug/property/enum/numeric/type/v1.json new file mode 100644 index 00000000000..51fc852646f --- /dev/null +++ b/provider/source/data/debug/property/enum/numeric/type/v1.json @@ -0,0 +1,3492 @@ +{ + "CodePointTrie": { + "header": { + "high_start": 195072, + "shifted12_high_start": 48, + "index3_null_offset": 307, + "data_null_offset": 64, + "null_value": 0, + "trie_type": "Small" + }, + "index": [ + 0, + 64, + 78, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 16, + 64, + 0, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 10, + 64, + 141, + 64, + 10, + 64, + 10, + 64, + 199, + 64, + 255, + 64, + 306, + 64, + 10, + 64, + 369, + 64, + 10, + 64, + 32, + 64, + 32, + 426, + 64, + 64, + 64, + 2058, + 2088, + 2120, + 2142, + 2174, + 2193, + 2217, + 2243, + 2275, + 2305, + 2217, + 2323, + 0, + 16, + 32, + 48, + 64, + 80, + 96, + 112, + 78, + 94, + 110, + 126, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 16, + 32, + 48, + 64, + 64, + 80, + 96, + 112, + 0, + 16, + 32, + 48, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 48, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 10, + 26, + 42, + 58, + 64, + 80, + 96, + 112, + 141, + 157, + 173, + 189, + 64, + 80, + 96, + 112, + 10, + 26, + 42, + 58, + 64, + 80, + 96, + 112, + 10, + 26, + 42, + 58, + 64, + 80, + 96, + 112, + 199, + 215, + 231, + 247, + 64, + 80, + 96, + 112, + 255, + 271, + 287, + 303, + 64, + 80, + 96, + 112, + 306, + 322, + 338, + 354, + 64, + 80, + 96, + 112, + 10, + 26, + 42, + 58, + 64, + 80, + 96, + 112, + 369, + 385, + 401, + 417, + 64, + 80, + 96, + 112, + 10, + 26, + 42, + 58, + 64, + 80, + 96, + 112, + 32, + 48, + 64, + 80, + 64, + 80, + 96, + 112, + 32, + 48, + 64, + 80, + 426, + 442, + 458, + 474, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 64, + 80, + 96, + 112, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 481, + 495, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 379, + 140, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 468, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 42, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 511, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 48, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 527, + 543, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 559, + 559, + 559, + 572, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 588, + 600, + 613, + 628, + 64, + 64, + 64, + 64, + 640, + 651, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 582, + 656, + 669, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 673, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 679, + 64, + 694, + 704, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 718, + 64, + 64, + 64, + 64, + 64, + 64, + 468, + 64, + 687, + 558, + 64, + 64, + 468, + 64, + 64, + 558, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 729, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 731, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 676, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 673, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 747, + 64, + 730, + 64, + 64, + 673, + 64, + 64, + 674, + 759, + 674, + 378, + 140, + 378, + 678, + 64, + 673, + 64, + 64, + 64, + 64, + 64, + 64, + 140, + 64, + 64, + 64, + 64, + 64, + 64, + 677, + 64, + 728, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 730, + 64, + 64, + 64, + 728, + 64, + 766, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 781, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 796, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 675, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 811, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 676, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 379, + 821, + 140, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 140, + 64, + 836, + 64, + 64, + 64, + 64, + 674, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 848, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 836, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 728, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 728, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 836, + 64, + 729, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 673, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 836, + 731, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 140, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 836, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 677, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 849, + 64, + 859, + 64, + 64, + 678, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 728, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 553, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 193, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 675, + 868, + 64, + 64, + 64, + 848, + 64, + 883, + 64, + 673, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 688, + 559, + 559, + 195, + 559, + 559, + 559, + 417, + 889, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 558, + 905, + 64, + 64, + 195, + 64, + 920, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 935, + 64, + 64, + 64, + 64, + 64, + 687, + 64, + 384, + 64, + 64, + 688, + 64, + 64, + 64, + 64, + 382, + 64, + 945, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 887, + 559, + 557, + 559, + 559, + 64, + 64, + 64, + 64, + 961, + 64, + 64, + 970, + 64, + 380, + 64, + 64, + 64, + 64, + 382, + 64, + 64, + 64, + 64, + 64, + 64, + 687, + 64, + 687, + 64, + 64, + 384, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 383, + 64, + 64, + 64, + 48, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 588, + 560, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 380, + 362, + 64, + 64, + 796, + 64, + 64, + 64, + 64, + 64, + 64, + 357, + 64, + 64, + 64, + 64, + 64, + 586, + 986, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 42, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 558, + 194, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 992, + 54, + 64, + 64, + 64, + 64, + 998, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 407, + 138, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 407, + 1014, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 559, + 194, + 64, + 64, + 64, + 1027, + 64, + 64, + 64, + 677, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 1037, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 1049, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 677, + 64, + 64, + 64, + 64, + 64, + 64, + 559, + 559, + 559, + 559, + 559, + 559, + 560, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 1065, + 139, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 559, + 362, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 829, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 559, + 195, + 559, + 195, + 64, + 64, + 64, + 64, + 64, + 64, + 559, + 417, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 34, + 992, + 992, + 992, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 47, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 688, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 48, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 558, + 559, + 559, + 1076, + 796, + 64, + 64, + 64, + 64, + 558, + 559, + 1089, + 561, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 1105, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 849, + 64, + 64, + 64, + 64, + 64, + 730, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 848, + 64, + 64, + 64, + 849, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 676, + 64, + 64, + 64, + 64, + 64, + 918, + 674, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 676, + 673, + 64, + 677, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 140, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 678, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 675, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 673, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 76, + 88, + 88, + 116, + 145, + 177, + 209, + 241, + 273, + 283, + 307, + 325, + 357, + 387, + 415, + 307, + 440, + 307, + 466, + 482, + 307, + 307, + 508, + 307, + 540, + 570, + 602, + 307, + 632, + 644, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 676, + 708, + 731, + 307, + 760, + 777, + 307, + 307, + 802, + 307, + 821, + 307, + 842, + 307, + 307, + 872, + 890, + 307, + 907, + 307, + 933, + 943, + 307, + 307, + 307, + 898, + 307, + 839, + 307, + 307, + 307, + 974, + 307, + 307, + 1006, + 1028, + 1058, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 1088, + 1117, + 1149, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 1181, + 307, + 307, + 1163, + 1213, + 1238, + 1170, + 307, + 1268, + 1300, + 1327, + 1353, + 1382, + 1165, + 1414, + 1441, + 1461, + 1483, + 1515, + 1546, + 1576, + 1606, + 1638, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 1161, + 307, + 307, + 307, + 307, + 1664, + 1157, + 1688, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 1165, + 307, + 307, + 1720, + 307, + 1744, + 307, + 307, + 307, + 307, + 1160, + 1165, + 1776, + 307, + 1808, + 307, + 1833, + 307, + 1853, + 307, + 307, + 307, + 307, + 1483, + 307, + 307, + 1885, + 307, + 307, + 307, + 1904, + 1930, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 1948, + 307, + 307, + 1974, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 2000, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 2026, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 307, + 1964 + ], + "data": [ + 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, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 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, + 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, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 2, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 3, + 3, + 3, + 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, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 3, + 3, + 3, + 3, + 3, + 3, + 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, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 3, + 3, + 3, + 3, + 3, + 3, + 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, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 3, + 3, + 3, + 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, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 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, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 2, + 2, + 2, + 2, + 2, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 0, + 0, + 3, + 3, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 3, + 3, + 3, + 3, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 3, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 3, + 0, + 0, + 0, + 3, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 3, + 0, + 3, + 0, + 0, + 3, + 0, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 3, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 3, + 0, + 0, + 0, + 0, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 3, + 3, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 3, + 3, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 3, + 0, + 3, + 3, + 3, + 3, + 3, + 3, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 3, + 3, + 0, + 0, + 0, + 0, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 3, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 0, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 0, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } +} diff --git a/provider/source/data/debug/property/name/long/numeric/type/v1.json b/provider/source/data/debug/property/name/long/numeric/type/v1.json new file mode 100644 index 00000000000..22c49b18b76 --- /dev/null +++ b/provider/source/data/debug/property/name/long/numeric/type/v1.json @@ -0,0 +1,8 @@ +{ + "map": [ + "None", + "Decimal", + "Digit", + "Numeric" + ] +} diff --git a/provider/source/data/debug/property/name/parse/numeric/type/v1.json b/provider/source/data/debug/property/name/parse/numeric/type/v1.json new file mode 100644 index 00000000000..18c5aa24167 --- /dev/null +++ b/provider/source/data/debug/property/name/parse/numeric/type/v1.json @@ -0,0 +1,11 @@ +{ + "map": { + "De": 1, + "Decimal": 1, + "Di": 2, + "Digit": 2, + "None": 0, + "Nu": 3, + "Numeric": 3 + } +} diff --git a/provider/source/data/debug/property/name/short/numeric/type/v1.json b/provider/source/data/debug/property/name/short/numeric/type/v1.json new file mode 100644 index 00000000000..5131b19d847 --- /dev/null +++ b/provider/source/data/debug/property/name/short/numeric/type/v1.json @@ -0,0 +1,8 @@ +{ + "map": [ + "None", + "De", + "Di", + "Nu" + ] +} diff --git a/provider/source/src/tests/data.rs b/provider/source/src/tests/data.rs index d61da5b99a6..03fbdaa5519 100644 --- a/provider/source/src/tests/data.rs +++ b/provider/source/src/tests/data.rs @@ -649,6 +649,7 @@ impl SourceDataProvider { ("uprops/small/nfdinert.toml", include_bytes!("../../tests/data/icuexport/uprops/small/nfdinert.toml").as_slice()), ("uprops/small/nfkcinert.toml", include_bytes!("../../tests/data/icuexport/uprops/small/nfkcinert.toml").as_slice()), ("uprops/small/nfkdinert.toml", include_bytes!("../../tests/data/icuexport/uprops/small/nfkdinert.toml").as_slice()), + ("uprops/small/nt.toml", include_bytes!("../../tests/data/icuexport/uprops/small/nt.toml").as_slice()), ("uprops/small/Pat_Syn.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Pat_Syn.toml").as_slice()), ("uprops/small/Pat_WS.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Pat_WS.toml").as_slice()), ("uprops/small/PCM.toml", include_bytes!("../../tests/data/icuexport/uprops/small/PCM.toml").as_slice()), diff --git a/provider/source/tests/data/icuexport/uprops/small/nt.toml b/provider/source/tests/data/icuexport/uprops/small/nt.toml new file mode 100644 index 00000000000..887aee7c6bc --- /dev/null +++ b/provider/source/tests/data/icuexport/uprops/small/nt.toml @@ -0,0 +1,754 @@ +# Copyright (C) 2021 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html +# +# file name: nt +# +# machine-generated by: icuexportdata.cpp + +icu_version = "78.1" +unicode_version = "17.0" + +[[enum_property]] +long_name = "Numeric_Type" +short_name = "nt" +uproperty_discr = 0x1009 +values = [ + {discr = 0, long = "None", short = "None"}, + {discr = 1, long = "Decimal", short = "De"}, + {discr = 2, long = "Digit", short = "Di"}, + {discr = 3, long = "Numeric", short = "Nu"}, +] +# Code points `a` through `b` have value `v`, corresponding to `name`. +ranges = [ + {a=0x0, b=0x2f, v=0, name="None"}, + {a=0x30, b=0x39, v=1, name="De"}, + {a=0x3a, b=0xb1, v=0, name="None"}, + {a=0xb2, b=0xb3, v=2, name="Di"}, + {a=0xb4, b=0xb8, v=0, name="None"}, + {a=0xb9, b=0xb9, v=2, name="Di"}, + {a=0xba, b=0xbb, v=0, name="None"}, + {a=0xbc, b=0xbe, v=3, name="Nu"}, + {a=0xbf, b=0x65f, v=0, name="None"}, + {a=0x660, b=0x669, v=1, name="De"}, + {a=0x66a, b=0x6ef, v=0, name="None"}, + {a=0x6f0, b=0x6f9, v=1, name="De"}, + {a=0x6fa, b=0x7bf, v=0, name="None"}, + {a=0x7c0, b=0x7c9, v=1, name="De"}, + {a=0x7ca, b=0x965, v=0, name="None"}, + {a=0x966, b=0x96f, v=1, name="De"}, + {a=0x970, b=0x9e5, v=0, name="None"}, + {a=0x9e6, b=0x9ef, v=1, name="De"}, + {a=0x9f0, b=0x9f3, v=0, name="None"}, + {a=0x9f4, b=0x9f9, v=3, name="Nu"}, + {a=0x9fa, b=0xa65, v=0, name="None"}, + {a=0xa66, b=0xa6f, v=1, name="De"}, + {a=0xa70, b=0xae5, v=0, name="None"}, + {a=0xae6, b=0xaef, v=1, name="De"}, + {a=0xaf0, b=0xb65, v=0, name="None"}, + {a=0xb66, b=0xb6f, v=1, name="De"}, + {a=0xb70, b=0xb71, v=0, name="None"}, + {a=0xb72, b=0xb77, v=3, name="Nu"}, + {a=0xb78, b=0xbe5, v=0, name="None"}, + {a=0xbe6, b=0xbef, v=1, name="De"}, + {a=0xbf0, b=0xbf2, v=3, name="Nu"}, + {a=0xbf3, b=0xc65, v=0, name="None"}, + {a=0xc66, b=0xc6f, v=1, name="De"}, + {a=0xc70, b=0xc77, v=0, name="None"}, + {a=0xc78, b=0xc7e, v=3, name="Nu"}, + {a=0xc7f, b=0xce5, v=0, name="None"}, + {a=0xce6, b=0xcef, v=1, name="De"}, + {a=0xcf0, b=0xd57, v=0, name="None"}, + {a=0xd58, b=0xd5e, v=3, name="Nu"}, + {a=0xd5f, b=0xd65, v=0, name="None"}, + {a=0xd66, b=0xd6f, v=1, name="De"}, + {a=0xd70, b=0xd78, v=3, name="Nu"}, + {a=0xd79, b=0xde5, v=0, name="None"}, + {a=0xde6, b=0xdef, v=1, name="De"}, + {a=0xdf0, b=0xe4f, v=0, name="None"}, + {a=0xe50, b=0xe59, v=1, name="De"}, + {a=0xe5a, b=0xecf, v=0, name="None"}, + {a=0xed0, b=0xed9, v=1, name="De"}, + {a=0xeda, b=0xf1f, v=0, name="None"}, + {a=0xf20, b=0xf29, v=1, name="De"}, + {a=0xf2a, b=0xf33, v=3, name="Nu"}, + {a=0xf34, b=0x103f, v=0, name="None"}, + {a=0x1040, b=0x1049, v=1, name="De"}, + {a=0x104a, b=0x108f, v=0, name="None"}, + {a=0x1090, b=0x1099, v=1, name="De"}, + {a=0x109a, b=0x1368, v=0, name="None"}, + {a=0x1369, b=0x1371, v=2, name="Di"}, + {a=0x1372, b=0x137c, v=3, name="Nu"}, + {a=0x137d, b=0x16ed, v=0, name="None"}, + {a=0x16ee, b=0x16f0, v=3, name="Nu"}, + {a=0x16f1, b=0x17df, v=0, name="None"}, + {a=0x17e0, b=0x17e9, v=1, name="De"}, + {a=0x17ea, b=0x17ef, v=0, name="None"}, + {a=0x17f0, b=0x17f9, v=3, name="Nu"}, + {a=0x17fa, b=0x180f, v=0, name="None"}, + {a=0x1810, b=0x1819, v=1, name="De"}, + {a=0x181a, b=0x1945, v=0, name="None"}, + {a=0x1946, b=0x194f, v=1, name="De"}, + {a=0x1950, b=0x19cf, v=0, name="None"}, + {a=0x19d0, b=0x19d9, v=1, name="De"}, + {a=0x19da, b=0x19da, v=2, name="Di"}, + {a=0x19db, b=0x1a7f, v=0, name="None"}, + {a=0x1a80, b=0x1a89, v=1, name="De"}, + {a=0x1a8a, b=0x1a8f, v=0, name="None"}, + {a=0x1a90, b=0x1a99, v=1, name="De"}, + {a=0x1a9a, b=0x1b4f, v=0, name="None"}, + {a=0x1b50, b=0x1b59, v=1, name="De"}, + {a=0x1b5a, b=0x1baf, v=0, name="None"}, + {a=0x1bb0, b=0x1bb9, v=1, name="De"}, + {a=0x1bba, b=0x1c3f, v=0, name="None"}, + {a=0x1c40, b=0x1c49, v=1, name="De"}, + {a=0x1c4a, b=0x1c4f, v=0, name="None"}, + {a=0x1c50, b=0x1c59, v=1, name="De"}, + {a=0x1c5a, b=0x206f, v=0, name="None"}, + {a=0x2070, b=0x2070, v=2, name="Di"}, + {a=0x2071, b=0x2073, v=0, name="None"}, + {a=0x2074, b=0x2079, v=2, name="Di"}, + {a=0x207a, b=0x207f, v=0, name="None"}, + {a=0x2080, b=0x2089, v=2, name="Di"}, + {a=0x208a, b=0x214f, v=0, name="None"}, + {a=0x2150, b=0x2182, v=3, name="Nu"}, + {a=0x2183, b=0x2184, v=0, name="None"}, + {a=0x2185, b=0x2189, v=3, name="Nu"}, + {a=0x218a, b=0x245f, v=0, name="None"}, + {a=0x2460, b=0x2468, v=2, name="Di"}, + {a=0x2469, b=0x2473, v=3, name="Nu"}, + {a=0x2474, b=0x247c, v=2, name="Di"}, + {a=0x247d, b=0x2487, v=3, name="Nu"}, + {a=0x2488, b=0x2490, v=2, name="Di"}, + {a=0x2491, b=0x249b, v=3, name="Nu"}, + {a=0x249c, b=0x24e9, v=0, name="None"}, + {a=0x24ea, b=0x24ea, v=2, name="Di"}, + {a=0x24eb, b=0x24f4, v=3, name="Nu"}, + {a=0x24f5, b=0x24fd, v=2, name="Di"}, + {a=0x24fe, b=0x24fe, v=3, name="Nu"}, + {a=0x24ff, b=0x24ff, v=2, name="Di"}, + {a=0x2500, b=0x2775, v=0, name="None"}, + {a=0x2776, b=0x277e, v=2, name="Di"}, + {a=0x277f, b=0x277f, v=3, name="Nu"}, + {a=0x2780, b=0x2788, v=2, name="Di"}, + {a=0x2789, b=0x2789, v=3, name="Nu"}, + {a=0x278a, b=0x2792, v=2, name="Di"}, + {a=0x2793, b=0x2793, v=3, name="Nu"}, + {a=0x2794, b=0x2cfc, v=0, name="None"}, + {a=0x2cfd, b=0x2cfd, v=3, name="Nu"}, + {a=0x2cfe, b=0x3006, v=0, name="None"}, + {a=0x3007, b=0x3007, v=3, name="Nu"}, + {a=0x3008, b=0x3020, v=0, name="None"}, + {a=0x3021, b=0x3029, v=3, name="Nu"}, + {a=0x302a, b=0x3037, v=0, name="None"}, + {a=0x3038, b=0x303a, v=3, name="Nu"}, + {a=0x303b, b=0x3191, v=0, name="None"}, + {a=0x3192, b=0x3195, v=3, name="Nu"}, + {a=0x3196, b=0x321f, v=0, name="None"}, + {a=0x3220, b=0x3229, v=3, name="Nu"}, + {a=0x322a, b=0x3247, v=0, name="None"}, + {a=0x3248, b=0x324f, v=3, name="Nu"}, + {a=0x3250, b=0x3250, v=0, name="None"}, + {a=0x3251, b=0x325f, v=3, name="Nu"}, + {a=0x3260, b=0x327f, v=0, name="None"}, + {a=0x3280, b=0x3289, v=3, name="Nu"}, + {a=0x328a, b=0x32b0, v=0, name="None"}, + {a=0x32b1, b=0x32bf, v=3, name="Nu"}, + {a=0x32c0, b=0x3404, v=0, name="None"}, + {a=0x3405, b=0x3405, v=3, name="Nu"}, + {a=0x3406, b=0x3482, v=0, name="None"}, + {a=0x3483, b=0x3483, v=3, name="Nu"}, + {a=0x3484, b=0x3829, v=0, name="None"}, + {a=0x382a, b=0x382a, v=3, name="Nu"}, + {a=0x382b, b=0x3b4c, v=0, name="None"}, + {a=0x3b4d, b=0x3b4d, v=3, name="Nu"}, + {a=0x3b4e, b=0x4dff, v=0, name="None"}, + {a=0x4e00, b=0x4e00, v=3, name="Nu"}, + {a=0x4e01, b=0x4e02, v=0, name="None"}, + {a=0x4e03, b=0x4e03, v=3, name="Nu"}, + {a=0x4e04, b=0x4e06, v=0, name="None"}, + {a=0x4e07, b=0x4e07, v=3, name="Nu"}, + {a=0x4e08, b=0x4e08, v=0, name="None"}, + {a=0x4e09, b=0x4e09, v=3, name="Nu"}, + {a=0x4e0a, b=0x4e23, v=0, name="None"}, + {a=0x4e24, b=0x4e24, v=3, name="Nu"}, + {a=0x4e25, b=0x4e5c, v=0, name="None"}, + {a=0x4e5d, b=0x4e5d, v=3, name="Nu"}, + {a=0x4e5e, b=0x4e8b, v=0, name="None"}, + {a=0x4e8c, b=0x4e8c, v=3, name="Nu"}, + {a=0x4e8d, b=0x4e93, v=0, name="None"}, + {a=0x4e94, b=0x4e94, v=3, name="Nu"}, + {a=0x4e95, b=0x4e95, v=0, name="None"}, + {a=0x4e96, b=0x4e96, v=3, name="Nu"}, + {a=0x4e97, b=0x4eab, v=0, name="None"}, + {a=0x4eac, b=0x4eac, v=3, name="Nu"}, + {a=0x4ead, b=0x4ebe, v=0, name="None"}, + {a=0x4ebf, b=0x4ec0, v=3, name="Nu"}, + {a=0x4ec1, b=0x4ede, v=0, name="None"}, + {a=0x4edf, b=0x4edf, v=3, name="Nu"}, + {a=0x4ee0, b=0x4ee7, v=0, name="None"}, + {a=0x4ee8, b=0x4ee8, v=3, name="Nu"}, + {a=0x4ee9, b=0x4f0c, v=0, name="None"}, + {a=0x4f0d, b=0x4f0d, v=3, name="Nu"}, + {a=0x4f0e, b=0x4f6f, v=0, name="None"}, + {a=0x4f70, b=0x4f70, v=3, name="Nu"}, + {a=0x4f71, b=0x4fe8, v=0, name="None"}, + {a=0x4fe9, b=0x4fe9, v=3, name="Nu"}, + {a=0x4fea, b=0x5005, v=0, name="None"}, + {a=0x5006, b=0x5006, v=3, name="Nu"}, + {a=0x5007, b=0x5103, v=0, name="None"}, + {a=0x5104, b=0x5104, v=3, name="Nu"}, + {a=0x5105, b=0x5145, v=0, name="None"}, + {a=0x5146, b=0x5146, v=3, name="Nu"}, + {a=0x5147, b=0x5168, v=0, name="None"}, + {a=0x5169, b=0x5169, v=3, name="Nu"}, + {a=0x516a, b=0x516a, v=0, name="None"}, + {a=0x516b, b=0x516b, v=3, name="Nu"}, + {a=0x516c, b=0x516c, v=0, name="None"}, + {a=0x516d, b=0x516d, v=3, name="Nu"}, + {a=0x516e, b=0x5340, v=0, name="None"}, + {a=0x5341, b=0x5341, v=3, name="Nu"}, + {a=0x5342, b=0x5342, v=0, name="None"}, + {a=0x5343, b=0x5345, v=3, name="Nu"}, + {a=0x5346, b=0x534b, v=0, name="None"}, + {a=0x534c, b=0x534c, v=3, name="Nu"}, + {a=0x534d, b=0x53c0, v=0, name="None"}, + {a=0x53c1, b=0x53c4, v=3, name="Nu"}, + {a=0x53c5, b=0x56da, v=0, name="None"}, + {a=0x56db, b=0x56db, v=3, name="Nu"}, + {a=0x56dc, b=0x58f0, v=0, name="None"}, + {a=0x58f1, b=0x58f1, v=3, name="Nu"}, + {a=0x58f2, b=0x58f8, v=0, name="None"}, + {a=0x58f9, b=0x58f9, v=3, name="Nu"}, + {a=0x58fa, b=0x5e79, v=0, name="None"}, + {a=0x5e7a, b=0x5e7a, v=3, name="Nu"}, + {a=0x5e7b, b=0x5efd, v=0, name="None"}, + {a=0x5efe, b=0x5eff, v=3, name="Nu"}, + {a=0x5f00, b=0x5f0b, v=0, name="None"}, + {a=0x5f0c, b=0x5f0e, v=3, name="Nu"}, + {a=0x5f0f, b=0x5f0f, v=0, name="None"}, + {a=0x5f10, b=0x5f10, v=3, name="Nu"}, + {a=0x5f11, b=0x62cf, v=0, name="None"}, + {a=0x62d0, b=0x62d0, v=3, name="Nu"}, + {a=0x62d1, b=0x62fd, v=0, name="None"}, + {a=0x62fe, b=0x62fe, v=3, name="Nu"}, + {a=0x62ff, b=0x634b, v=0, name="None"}, + {a=0x634c, b=0x634c, v=3, name="Nu"}, + {a=0x634d, b=0x67d1, v=0, name="None"}, + {a=0x67d2, b=0x67d2, v=3, name="Nu"}, + {a=0x67d3, b=0x6d1d, v=0, name="None"}, + {a=0x6d1e, b=0x6d1e, v=3, name="Nu"}, + {a=0x6d1f, b=0x6f05, v=0, name="None"}, + {a=0x6f06, b=0x6f06, v=3, name="Nu"}, + {a=0x6f07, b=0x7395, v=0, name="None"}, + {a=0x7396, b=0x7396, v=3, name="Nu"}, + {a=0x7397, b=0x767d, v=0, name="None"}, + {a=0x767e, b=0x767e, v=3, name="Nu"}, + {a=0x767f, b=0x7694, v=0, name="None"}, + {a=0x7695, b=0x7695, v=3, name="Nu"}, + {a=0x7696, b=0x79ec, v=0, name="None"}, + {a=0x79ed, b=0x79ed, v=3, name="Nu"}, + {a=0x79ee, b=0x8085, v=0, name="None"}, + {a=0x8086, b=0x8086, v=3, name="Nu"}, + {a=0x8087, b=0x842b, v=0, name="None"}, + {a=0x842c, b=0x842c, v=3, name="Nu"}, + {a=0x842d, b=0x8cad, v=0, name="None"}, + {a=0x8cae, b=0x8cae, v=3, name="Nu"}, + {a=0x8caf, b=0x8cb2, v=0, name="None"}, + {a=0x8cb3, b=0x8cb3, v=3, name="Nu"}, + {a=0x8cb4, b=0x8d2f, v=0, name="None"}, + {a=0x8d30, b=0x8d30, v=3, name="Nu"}, + {a=0x8d31, b=0x920d, v=0, name="None"}, + {a=0x920e, b=0x920e, v=3, name="Nu"}, + {a=0x920f, b=0x94a8, v=0, name="None"}, + {a=0x94a9, b=0x94a9, v=3, name="Nu"}, + {a=0x94aa, b=0x9620, v=0, name="None"}, + {a=0x9621, b=0x9621, v=3, name="Nu"}, + {a=0x9622, b=0x9645, v=0, name="None"}, + {a=0x9646, b=0x9646, v=3, name="Nu"}, + {a=0x9647, b=0x964b, v=0, name="None"}, + {a=0x964c, b=0x964c, v=3, name="Nu"}, + {a=0x964d, b=0x9677, v=0, name="None"}, + {a=0x9678, b=0x9678, v=3, name="Nu"}, + {a=0x9679, b=0x96f5, v=0, name="None"}, + {a=0x96f6, b=0x96f6, v=3, name="Nu"}, + {a=0x96f7, b=0xa61f, v=0, name="None"}, + {a=0xa620, b=0xa629, v=1, name="De"}, + {a=0xa62a, b=0xa6e5, v=0, name="None"}, + {a=0xa6e6, b=0xa6ef, v=3, name="Nu"}, + {a=0xa6f0, b=0xa82f, v=0, name="None"}, + {a=0xa830, b=0xa835, v=3, name="Nu"}, + {a=0xa836, b=0xa8cf, v=0, name="None"}, + {a=0xa8d0, b=0xa8d9, v=1, name="De"}, + {a=0xa8da, b=0xa8ff, v=0, name="None"}, + {a=0xa900, b=0xa909, v=1, name="De"}, + {a=0xa90a, b=0xa9cf, v=0, name="None"}, + {a=0xa9d0, b=0xa9d9, v=1, name="De"}, + {a=0xa9da, b=0xa9ef, v=0, name="None"}, + {a=0xa9f0, b=0xa9f9, v=1, name="De"}, + {a=0xa9fa, b=0xaa4f, v=0, name="None"}, + {a=0xaa50, b=0xaa59, v=1, name="De"}, + {a=0xaa5a, b=0xabef, v=0, name="None"}, + {a=0xabf0, b=0xabf9, v=1, name="De"}, + {a=0xabfa, b=0xf96a, v=0, name="None"}, + {a=0xf96b, b=0xf96b, v=3, name="Nu"}, + {a=0xf96c, b=0xf972, v=0, name="None"}, + {a=0xf973, b=0xf973, v=3, name="Nu"}, + {a=0xf974, b=0xf977, v=0, name="None"}, + {a=0xf978, b=0xf978, v=3, name="Nu"}, + {a=0xf979, b=0xf9b1, v=0, name="None"}, + {a=0xf9b2, b=0xf9b2, v=3, name="Nu"}, + {a=0xf9b3, b=0xf9d0, v=0, name="None"}, + {a=0xf9d1, b=0xf9d1, v=3, name="Nu"}, + {a=0xf9d2, b=0xf9d2, v=0, name="None"}, + {a=0xf9d3, b=0xf9d3, v=3, name="Nu"}, + {a=0xf9d4, b=0xf9fc, v=0, name="None"}, + {a=0xf9fd, b=0xf9fd, v=3, name="Nu"}, + {a=0xf9fe, b=0xff0f, v=0, name="None"}, + {a=0xff10, b=0xff19, v=1, name="De"}, + {a=0xff1a, b=0x10106, v=0, name="None"}, + {a=0x10107, b=0x10133, v=3, name="Nu"}, + {a=0x10134, b=0x1013f, v=0, name="None"}, + {a=0x10140, b=0x10178, v=3, name="Nu"}, + {a=0x10179, b=0x10189, v=0, name="None"}, + {a=0x1018a, b=0x1018b, v=3, name="Nu"}, + {a=0x1018c, b=0x102e0, v=0, name="None"}, + {a=0x102e1, b=0x102fb, v=3, name="Nu"}, + {a=0x102fc, b=0x1031f, v=0, name="None"}, + {a=0x10320, b=0x10323, v=3, name="Nu"}, + {a=0x10324, b=0x10340, v=0, name="None"}, + {a=0x10341, b=0x10341, v=3, name="Nu"}, + {a=0x10342, b=0x10349, v=0, name="None"}, + {a=0x1034a, b=0x1034a, v=3, name="Nu"}, + {a=0x1034b, b=0x103d0, v=0, name="None"}, + {a=0x103d1, b=0x103d5, v=3, name="Nu"}, + {a=0x103d6, b=0x1049f, v=0, name="None"}, + {a=0x104a0, b=0x104a9, v=1, name="De"}, + {a=0x104aa, b=0x10857, v=0, name="None"}, + {a=0x10858, b=0x1085f, v=3, name="Nu"}, + {a=0x10860, b=0x10878, v=0, name="None"}, + {a=0x10879, b=0x1087f, v=3, name="Nu"}, + {a=0x10880, b=0x108a6, v=0, name="None"}, + {a=0x108a7, b=0x108af, v=3, name="Nu"}, + {a=0x108b0, b=0x108fa, v=0, name="None"}, + {a=0x108fb, b=0x108ff, v=3, name="Nu"}, + {a=0x10900, b=0x10915, v=0, name="None"}, + {a=0x10916, b=0x1091b, v=3, name="Nu"}, + {a=0x1091c, b=0x109bb, v=0, name="None"}, + {a=0x109bc, b=0x109bd, v=3, name="Nu"}, + {a=0x109be, b=0x109bf, v=0, name="None"}, + {a=0x109c0, b=0x109cf, v=3, name="Nu"}, + {a=0x109d0, b=0x109d1, v=0, name="None"}, + {a=0x109d2, b=0x109ff, v=3, name="Nu"}, + {a=0x10a00, b=0x10a3f, v=0, name="None"}, + {a=0x10a40, b=0x10a43, v=2, name="Di"}, + {a=0x10a44, b=0x10a48, v=3, name="Nu"}, + {a=0x10a49, b=0x10a7c, v=0, name="None"}, + {a=0x10a7d, b=0x10a7e, v=3, name="Nu"}, + {a=0x10a7f, b=0x10a9c, v=0, name="None"}, + {a=0x10a9d, b=0x10a9f, v=3, name="Nu"}, + {a=0x10aa0, b=0x10aea, v=0, name="None"}, + {a=0x10aeb, b=0x10aef, v=3, name="Nu"}, + {a=0x10af0, b=0x10b57, v=0, name="None"}, + {a=0x10b58, b=0x10b5f, v=3, name="Nu"}, + {a=0x10b60, b=0x10b77, v=0, name="None"}, + {a=0x10b78, b=0x10b7f, v=3, name="Nu"}, + {a=0x10b80, b=0x10ba8, v=0, name="None"}, + {a=0x10ba9, b=0x10baf, v=3, name="Nu"}, + {a=0x10bb0, b=0x10cf9, v=0, name="None"}, + {a=0x10cfa, b=0x10cff, v=3, name="Nu"}, + {a=0x10d00, b=0x10d2f, v=0, name="None"}, + {a=0x10d30, b=0x10d39, v=1, name="De"}, + {a=0x10d3a, b=0x10d3f, v=0, name="None"}, + {a=0x10d40, b=0x10d49, v=1, name="De"}, + {a=0x10d4a, b=0x10e5f, v=0, name="None"}, + {a=0x10e60, b=0x10e68, v=2, name="Di"}, + {a=0x10e69, b=0x10e7e, v=3, name="Nu"}, + {a=0x10e7f, b=0x10f1c, v=0, name="None"}, + {a=0x10f1d, b=0x10f26, v=3, name="Nu"}, + {a=0x10f27, b=0x10f50, v=0, name="None"}, + {a=0x10f51, b=0x10f54, v=3, name="Nu"}, + {a=0x10f55, b=0x10fc4, v=0, name="None"}, + {a=0x10fc5, b=0x10fcb, v=3, name="Nu"}, + {a=0x10fcc, b=0x11051, v=0, name="None"}, + {a=0x11052, b=0x1105a, v=2, name="Di"}, + {a=0x1105b, b=0x11065, v=3, name="Nu"}, + {a=0x11066, b=0x1106f, v=1, name="De"}, + {a=0x11070, b=0x110ef, v=0, name="None"}, + {a=0x110f0, b=0x110f9, v=1, name="De"}, + {a=0x110fa, b=0x11135, v=0, name="None"}, + {a=0x11136, b=0x1113f, v=1, name="De"}, + {a=0x11140, b=0x111cf, v=0, name="None"}, + {a=0x111d0, b=0x111d9, v=1, name="De"}, + {a=0x111da, b=0x111e0, v=0, name="None"}, + {a=0x111e1, b=0x111f4, v=3, name="Nu"}, + {a=0x111f5, b=0x112ef, v=0, name="None"}, + {a=0x112f0, b=0x112f9, v=1, name="De"}, + {a=0x112fa, b=0x1144f, v=0, name="None"}, + {a=0x11450, b=0x11459, v=1, name="De"}, + {a=0x1145a, b=0x114cf, v=0, name="None"}, + {a=0x114d0, b=0x114d9, v=1, name="De"}, + {a=0x114da, b=0x1164f, v=0, name="None"}, + {a=0x11650, b=0x11659, v=1, name="De"}, + {a=0x1165a, b=0x116bf, v=0, name="None"}, + {a=0x116c0, b=0x116c9, v=1, name="De"}, + {a=0x116ca, b=0x116cf, v=0, name="None"}, + {a=0x116d0, b=0x116e3, v=1, name="De"}, + {a=0x116e4, b=0x1172f, v=0, name="None"}, + {a=0x11730, b=0x11739, v=1, name="De"}, + {a=0x1173a, b=0x1173b, v=3, name="Nu"}, + {a=0x1173c, b=0x118df, v=0, name="None"}, + {a=0x118e0, b=0x118e9, v=1, name="De"}, + {a=0x118ea, b=0x118f2, v=3, name="Nu"}, + {a=0x118f3, b=0x1194f, v=0, name="None"}, + {a=0x11950, b=0x11959, v=1, name="De"}, + {a=0x1195a, b=0x11bef, v=0, name="None"}, + {a=0x11bf0, b=0x11bf9, v=1, name="De"}, + {a=0x11bfa, b=0x11c4f, v=0, name="None"}, + {a=0x11c50, b=0x11c59, v=1, name="De"}, + {a=0x11c5a, b=0x11c6c, v=3, name="Nu"}, + {a=0x11c6d, b=0x11d4f, v=0, name="None"}, + {a=0x11d50, b=0x11d59, v=1, name="De"}, + {a=0x11d5a, b=0x11d9f, v=0, name="None"}, + {a=0x11da0, b=0x11da9, v=1, name="De"}, + {a=0x11daa, b=0x11ddf, v=0, name="None"}, + {a=0x11de0, b=0x11de9, v=1, name="De"}, + {a=0x11dea, b=0x11f4f, v=0, name="None"}, + {a=0x11f50, b=0x11f59, v=1, name="De"}, + {a=0x11f5a, b=0x11fbf, v=0, name="None"}, + {a=0x11fc0, b=0x11fd4, v=3, name="Nu"}, + {a=0x11fd5, b=0x12037, v=0, name="None"}, + {a=0x12038, b=0x12039, v=3, name="Nu"}, + {a=0x1203a, b=0x12078, v=0, name="None"}, + {a=0x12079, b=0x12079, v=3, name="Nu"}, + {a=0x1207a, b=0x12225, v=0, name="None"}, + {a=0x12226, b=0x12226, v=3, name="Nu"}, + {a=0x12227, b=0x1222a, v=0, name="None"}, + {a=0x1222b, b=0x1222b, v=3, name="Nu"}, + {a=0x1222c, b=0x1230a, v=0, name="None"}, + {a=0x1230b, b=0x1230b, v=3, name="Nu"}, + {a=0x1230c, b=0x1230c, v=0, name="None"}, + {a=0x1230d, b=0x1230d, v=3, name="Nu"}, + {a=0x1230e, b=0x12398, v=0, name="None"}, + {a=0x12399, b=0x12399, v=3, name="Nu"}, + {a=0x1239a, b=0x123ff, v=0, name="None"}, + {a=0x12400, b=0x1246e, v=3, name="Nu"}, + {a=0x1246f, b=0x1612f, v=0, name="None"}, + {a=0x16130, b=0x16139, v=1, name="De"}, + {a=0x1613a, b=0x16a5f, v=0, name="None"}, + {a=0x16a60, b=0x16a69, v=1, name="De"}, + {a=0x16a6a, b=0x16abf, v=0, name="None"}, + {a=0x16ac0, b=0x16ac9, v=1, name="De"}, + {a=0x16aca, b=0x16b4f, v=0, name="None"}, + {a=0x16b50, b=0x16b59, v=1, name="De"}, + {a=0x16b5a, b=0x16b5a, v=0, name="None"}, + {a=0x16b5b, b=0x16b61, v=3, name="Nu"}, + {a=0x16b62, b=0x16d6f, v=0, name="None"}, + {a=0x16d70, b=0x16d79, v=1, name="De"}, + {a=0x16d7a, b=0x16e7f, v=0, name="None"}, + {a=0x16e80, b=0x16e96, v=3, name="Nu"}, + {a=0x16e97, b=0x16ff3, v=0, name="None"}, + {a=0x16ff4, b=0x16ff6, v=3, name="Nu"}, + {a=0x16ff7, b=0x1ccef, v=0, name="None"}, + {a=0x1ccf0, b=0x1ccf9, v=1, name="De"}, + {a=0x1ccfa, b=0x1d2bf, v=0, name="None"}, + {a=0x1d2c0, b=0x1d2d3, v=3, name="Nu"}, + {a=0x1d2d4, b=0x1d2df, v=0, name="None"}, + {a=0x1d2e0, b=0x1d2f3, v=3, name="Nu"}, + {a=0x1d2f4, b=0x1d35f, v=0, name="None"}, + {a=0x1d360, b=0x1d378, v=3, name="Nu"}, + {a=0x1d379, b=0x1d7cd, v=0, name="None"}, + {a=0x1d7ce, b=0x1d7ff, v=1, name="De"}, + {a=0x1d800, b=0x1e13f, v=0, name="None"}, + {a=0x1e140, b=0x1e149, v=1, name="De"}, + {a=0x1e14a, b=0x1e2ef, v=0, name="None"}, + {a=0x1e2f0, b=0x1e2f9, v=1, name="De"}, + {a=0x1e2fa, b=0x1e4ef, v=0, name="None"}, + {a=0x1e4f0, b=0x1e4f9, v=1, name="De"}, + {a=0x1e4fa, b=0x1e5f0, v=0, name="None"}, + {a=0x1e5f1, b=0x1e5fa, v=1, name="De"}, + {a=0x1e5fb, b=0x1e8c6, v=0, name="None"}, + {a=0x1e8c7, b=0x1e8cf, v=3, name="Nu"}, + {a=0x1e8d0, b=0x1e94f, v=0, name="None"}, + {a=0x1e950, b=0x1e959, v=1, name="De"}, + {a=0x1e95a, b=0x1ec70, v=0, name="None"}, + {a=0x1ec71, b=0x1ecab, v=3, name="Nu"}, + {a=0x1ecac, b=0x1ecac, v=0, name="None"}, + {a=0x1ecad, b=0x1ecaf, v=3, name="Nu"}, + {a=0x1ecb0, b=0x1ecb0, v=0, name="None"}, + {a=0x1ecb1, b=0x1ecb4, v=3, name="Nu"}, + {a=0x1ecb5, b=0x1ed00, v=0, name="None"}, + {a=0x1ed01, b=0x1ed2d, v=3, name="Nu"}, + {a=0x1ed2e, b=0x1ed2e, v=0, name="None"}, + {a=0x1ed2f, b=0x1ed3d, v=3, name="Nu"}, + {a=0x1ed3e, b=0x1f0ff, v=0, name="None"}, + {a=0x1f100, b=0x1f10a, v=2, name="Di"}, + {a=0x1f10b, b=0x1f10c, v=3, name="Nu"}, + {a=0x1f10d, b=0x1fbef, v=0, name="None"}, + {a=0x1fbf0, b=0x1fbf9, v=1, name="De"}, + {a=0x1fbfa, b=0x20000, v=0, name="None"}, + {a=0x20001, b=0x20001, v=3, name="Nu"}, + {a=0x20002, b=0x20063, v=0, name="None"}, + {a=0x20064, b=0x20064, v=3, name="Nu"}, + {a=0x20065, b=0x200e1, v=0, name="None"}, + {a=0x200e2, b=0x200e2, v=3, name="Nu"}, + {a=0x200e3, b=0x20120, v=0, name="None"}, + {a=0x20121, b=0x20121, v=3, name="Nu"}, + {a=0x20122, b=0x20929, v=0, name="None"}, + {a=0x2092a, b=0x2092a, v=3, name="Nu"}, + {a=0x2092b, b=0x20982, v=0, name="None"}, + {a=0x20983, b=0x20983, v=3, name="Nu"}, + {a=0x20984, b=0x2098b, v=0, name="None"}, + {a=0x2098c, b=0x2098c, v=3, name="Nu"}, + {a=0x2098d, b=0x2099b, v=0, name="None"}, + {a=0x2099c, b=0x2099c, v=3, name="Nu"}, + {a=0x2099d, b=0x20ae9, v=0, name="None"}, + {a=0x20aea, b=0x20aea, v=3, name="Nu"}, + {a=0x20aeb, b=0x20afc, v=0, name="None"}, + {a=0x20afd, b=0x20afd, v=3, name="Nu"}, + {a=0x20afe, b=0x20b18, v=0, name="None"}, + {a=0x20b19, b=0x20b19, v=3, name="Nu"}, + {a=0x20b1a, b=0x2238f, v=0, name="None"}, + {a=0x22390, b=0x22390, v=3, name="Nu"}, + {a=0x22391, b=0x22997, v=0, name="None"}, + {a=0x22998, b=0x22998, v=3, name="Nu"}, + {a=0x22999, b=0x23b1a, v=0, name="None"}, + {a=0x23b1b, b=0x23b1b, v=3, name="Nu"}, + {a=0x23b1c, b=0x2626c, v=0, name="None"}, + {a=0x2626d, b=0x2626d, v=3, name="Nu"}, + {a=0x2626e, b=0x2f88f, v=0, name="None"}, + {a=0x2f890, b=0x2f890, v=3, name="Nu"}, + {a=0x2f891, b=0x10ffff, v=0, name="None"}, +] + +[enum_property.code_point_trie] +index = [ + 0,0x40,0x4e,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x10,0x40,0,0x40,0x40,0x40,0x30, + 0x40,0x40,0x40,0x40,0x40,0xa,0x40,0x8d,0x40,0xa,0x40,0xa,0x40,0xc7,0x40,0xff, + 0x40,0x132,0x40,0xa,0x40,0x171,0x40,0xa,0x40,0x20,0x40,0x20,0x1aa,0x40,0x40,0x40, + 0x80a,0x828,0x848,0x85e,0x87e,0x891,0x8a9,0x8c3,0x8e3,0x901,0x8a9,0x913,0,0x10,0x20,0x30, + 0x40,0x50,0x60,0x70,0x4e,0x5e,0x6e,0x7e,0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70, + 0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70, + 0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70,0x10,0x20,0x30,0x40,0x40,0x50,0x60,0x70, + 0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70, + 0x30,0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70,0x40,0x50,0x60, + 0x70,0x40,0x50,0x60,0x70,0xa,0x1a,0x2a,0x3a,0x40,0x50,0x60,0x70,0x8d,0x9d,0xad, + 0xbd,0x40,0x50,0x60,0x70,0xa,0x1a,0x2a,0x3a,0x40,0x50,0x60,0x70,0xa,0x1a,0x2a, + 0x3a,0x40,0x50,0x60,0x70,0xc7,0xd7,0xe7,0xf7,0x40,0x50,0x60,0x70,0xff,0x10f,0x11f, + 0x12f,0x40,0x50,0x60,0x70,0x132,0x142,0x152,0x162,0x40,0x50,0x60,0x70,0xa,0x1a,0x2a, + 0x3a,0x40,0x50,0x60,0x70,0x171,0x181,0x191,0x1a1,0x40,0x50,0x60,0x70,0xa,0x1a,0x2a, + 0x3a,0x40,0x50,0x60,0x70,0x20,0x30,0x40,0x50,0x40,0x50,0x60,0x70,0x20,0x30,0x40, + 0x50,0x1aa,0x1ba,0x1ca,0x1da,0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70,0x40,0x50,0x60, + 0x70,0x40,0x40,0x40,0x40,0x30,0x40,0x40,0x40,0x40,0x30,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x1e1,0x1ef,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x17b,0x8c,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x30,0x1d4,0x40,0x30,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2a,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x1ff,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x30,0x30,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x30,0x40,0x40,0x40,0x40,0x40,0x30,0x40, + 0x40,0x40,0x40,0x30,0x30,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x20f, + 0x21f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x22f,0x22f,0x22f, + 0x23c,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x24c,0x258,0x265,0x274,0x40,0x40,0x40,0x40, + 0x280,0x28b,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x246,0x290,0x29d,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2a1,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2a7,0x40,0x2b6,0x2c0, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x2ce,0x40,0x40,0x40,0x40,0x40,0x40,0x1d4,0x40,0x2af,0x22e, + 0x40,0x40,0x1d4,0x40,0x40,0x22e,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2d9,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x2db,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2a4,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2a1,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x2eb,0x40,0x2da,0x40,0x40,0x2a1,0x40,0x40,0x2a2,0x2f7,0x2a2,0x17a, + 0x8c,0x17a,0x2a6,0x40,0x2a1,0x40,0x40,0x40,0x40,0x40,0x40,0x8c,0x40,0x40,0x40,0x40, + 0x40,0x40,0x2a5,0x40,0x2d8,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x2da,0x40,0x40,0x40,0x2d8,0x40,0x2fe,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x30d, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x31c,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x2a3,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x32b,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2a4,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x17b,0x335,0x8c,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x8c,0x40,0x344,0x40,0x40,0x40,0x40,0x2a2,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x350,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x344,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2d8,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x2d8,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x344,0x40,0x2d9,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2a1,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x344,0x2db,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x8c,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x344,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2a5,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x351,0x40,0x35b,0x40,0x40,0x2a6,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x2d8,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x30,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x229,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0xc1,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x30,0x40,0x40,0x30,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x30,0x40,0x30,0x40,0x40,0x40, + 0x40,0x40,0x30,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x30,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x2a3,0x364,0x40,0x40,0x40,0x350,0x40,0x373,0x40,0x2a1,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2b0,0x22f,0x22f, + 0xc3,0x22f,0x22f,0x22f,0x1a1,0x379,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x22e,0x389,0x40,0x40,0xc3,0x40,0x398,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x3a7,0x40,0x40,0x40,0x40,0x40,0x2af,0x40,0x180,0x40,0x40,0x2b0,0x40, + 0x40,0x40,0x40,0x17e,0x40,0x3b1,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x377, + 0x22f,0x22d,0x22f,0x22f,0x40,0x40,0x40,0x40,0x3c1,0x40,0x40,0x3ca,0x40,0x17c,0x40,0x40, + 0x40,0x40,0x17e,0x40,0x40,0x40,0x40,0x40,0x40,0x2af,0x40,0x2af,0x40,0x40,0x180,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x17f,0x40, + 0x40,0x40,0x30,0x30,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x24c, + 0x230,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x17c,0x16a,0x40,0x40,0x31c,0x40, + 0x40,0x40,0x40,0x40,0x40,0x165,0x40,0x40,0x40,0x40,0x40,0x24a,0x3da,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x30,0x40,0x40,0x40,0x2a,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x30,0x22e,0xc2,0x40,0x40,0x40,0x40,0x40,0x30,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x30,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x30,0x40,0x40,0x40,0x40,0x40,0x40,0x30,0x3e0,0x36, + 0x40,0x40,0x40,0x40,0x3e6,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x197,0x8a,0x40,0x40,0x40,0x40,0x40,0x30,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x30,0x40,0x40,0x40,0x40,0x40, + 0x197,0x3f6,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x30,0x40,0x40,0x40,0x40,0x30,0x40,0x40,0x40,0x30,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x30, + 0x40,0x40,0x40,0x40,0x40,0x40,0x22f,0xc2,0x40,0x40,0x40,0x403,0x40,0x40,0x40,0x2a5, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40d,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x419,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2a5, + 0x40,0x40,0x40,0x40,0x40,0x40,0x22f,0x22f,0x22f,0x22f,0x22f,0x22f,0x230,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x30,0x40,0x40,0x40,0x40,0x40,0x30,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x429,0x8b,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x22f,0x16a,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x33d,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x22f,0xc3,0x22f,0xc3,0x40,0x40,0x40,0x40,0x40,0x40,0x22f,0x1a1, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x22,0x3e0,0x3e0,0x3e0, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x30, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2f, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2b0,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x30,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x22e,0x22f,0x22f,0x434,0x31c,0x40,0x40,0x40,0x40,0x22e,0x22f,0x441,0x231,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x451,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x351,0x40,0x40, + 0x40,0x40,0x40,0x2da,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x350,0x40,0x40,0x40,0x351, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x2a4,0x40,0x40,0x40,0x40,0x40,0x396,0x2a2,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2a4,0x2a1,0x40,0x2a5,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x8c,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2a6, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x2a3,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x2a1,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x4c,0x58,0x58,0x74,0x91,0xb1, + 0xd1,0xf1,0x111,0x11b,0x133,0x145,0x165,0x183,0x19f,0x133,0x1b8,0x133,0x1d2,0x1e2,0x133,0x133, + 0x1fc,0x133,0x21c,0x23a,0x25a,0x133,0x278,0x284,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x2a4, + 0x2c4,0x2db,0x133,0x2f8,0x309,0x133,0x133,0x322,0x133,0x335,0x133,0x34a,0x133,0x133,0x368,0x37a, + 0x133,0x38b,0x133,0x3a5,0x3af,0x133,0x133,0x133,0x382,0x133,0x347,0x133,0x133,0x133,0x3ce,0x133, + 0x133,0x3ee,0x404,0x422,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x440,0x45d,0x47d,0x133,0x133, + 0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133, + 0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x49d,0x133,0x133,0x48b,0x4bd,0x4d6, + 0x492,0x133,0x4f4,0x514,0x52f,0x549,0x566,0x48d,0x586,0x5a1,0x5b5,0x5cb,0x5eb,0x60a,0x628,0x646, + 0x666,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133, + 0x133,0x489,0x133,0x133,0x133,0x133,0x680,0x485,0x698,0x133,0x133,0x133,0x133,0x133,0x133,0x133, + 0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133, + 0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x48d,0x133,0x133,0x6b8,0x133,0x6d0,0x133, + 0x133,0x133,0x133,0x488,0x48d,0x6f0,0x133,0x710,0x133,0x729,0x133,0x73d,0x133,0x133,0x133,0x133, + 0x5cb,0x133,0x133,0x75d,0x133,0x133,0x133,0x770,0x78a,0x133,0x133,0x133,0x133,0x133,0x133,0x133, + 0x133,0x133,0x133,0x133,0x79c,0x133,0x133,0x7b6,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133, + 0x7d0,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133, + 0x133,0x133,0x7ea,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133, + 0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x133,0x7ac +] +data_8 = [ + 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, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,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,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,0,0,0,0,0,0, + 2,2,0,0,0,0,0,2,0,0,3,3,3,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,0,0,0, + 0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0, + 0,3,3,3,3,3,3,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,0,0,0,0,0,0,1,1,1, + 1,1,1,1,1,1,1,0,0,3,3,3,3,3,3,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,0, + 0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,3, + 3,3,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,0,0,0,0,0,0,1,1,1,1,1,1,1,1, + 1,1,0,0,0,0,0,0,0,0,3,3,3,3,3,3, + 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3, + 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1, + 1,3,3,3,3,3,3,3,3,3,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,1,1,1,1,1,1, + 1,1,1,1,3,3,3,3,3,3,3,3,3,3,0,0, + 0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2, + 2,3,3,3,3,3,3,3,3,3,3,3,0,0,0,1, + 1,1,1,1,1,1,1,1,1,2,0,0,0,0,0,2, + 0,0,0,2,2,2,2,2,2,0,0,0,0,0,0,2, + 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0, + 0,3,3,3,3,3,0,0,0,0,0,0,2,2,2,2, + 2,2,2,2,2,3,3,3,3,3,3,3,2,2,2,2, + 2,2,2,2,2,3,3,3,3,3,3,3,3,2,2,2, + 2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3, + 0,0,0,0,0,0,0,0,0,0,2,3,3,3,3,3, + 2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2, + 3,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3, + 0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0, + 3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,0, + 0,0,3,0,3,0,0,0,0,0,0,3,0,3,0,0, + 0,0,0,0,0,0,0,3,0,3,0,3,0,0,3,0, + 3,3,3,0,0,0,0,0,0,3,0,0,0,3,3,3, + 3,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0, + 0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,0,0,3,0,0,0,0,3,0,0,0, + 0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0, + 0,0,0,3,3,0,0,0,0,3,3,3,3,3,3,3, + 3,3,3,3,3,0,0,0,0,3,0,0,0,0,0,0, + 0,0,3,0,0,0,0,0,3,3,3,3,3,0,0,0, + 0,0,0,0,0,0,0,3,3,3,3,3,3,0,0,0, + 0,2,2,2,2,3,3,3,3,3,0,0,0,0,0,0, + 0,0,0,0,0,0,0,3,3,0,3,3,3,3,3,3, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 3,3,0,0,0,0,3,3,3,3,3,3,3,3,3,3, + 3,3,3,0,0,0,0,0,0,0,0,3,3,0,0,0, + 0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0, + 0,0,0,0,3,0,3,0,0,1,1,1,1,1,1,1, + 1,1,1,0,3,3,3,3,3,3,3,3,3,3,3,3, + 0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0, + 3,2,2,2,2,2,2,2,2,2,2,2,3,3,0,0, + 0,0,0,0 +] +indexLength = 2352 +dataLength = 1124 +highStart = 0x2fa00 +shifted12HighStart = 0x30 +type = 1 +valueWidth = 2 +index3NullOffset = 0x133 +dataNullOffset = 0x40 +nullValue = 0x0 diff --git a/tools/make/download-repo-sources/globs.rs.data b/tools/make/download-repo-sources/globs.rs.data index b39237cb20d..534ab1cc583 100644 --- a/tools/make/download-repo-sources/globs.rs.data +++ b/tools/make/download-repo-sources/globs.rs.data @@ -175,6 +175,7 @@ const ICUEXPORTDATA_GLOB: &[&str] = &[ "uprops/small/nfdinert.toml", "uprops/small/nfkcinert.toml", "uprops/small/nfkdinert.toml", + "uprops/small/nt.toml", "uprops/small/Pat_Syn.toml", "uprops/small/Pat_WS.toml", "uprops/small/PCM.toml",