/* * SPDX-FileCopyrightText: 2020 Stalwart Labs LLC * * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL * * Modified by Coffey Labs in 2026 for INBUXA. */ // This file is auto-generated. Do not edit directly. use crate::schema::prelude::*; impl EnumImpl for AccountType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"User" => AccountType::User, b"Group" => AccountType::Group, } } fn as_str(&self) -> &'static str { match self { AccountType::User => "User", AccountType::Group => "Group", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(AccountType::User), 1 => Some(AccountType::Group), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for AccountType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for AccountType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for AcmeChallengeType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"TlsAlpn01" => AcmeChallengeType::TlsAlpn01, b"DnsPersist01" => AcmeChallengeType::DnsPersist01, b"Dns01" => AcmeChallengeType::Dns01, b"Http01" => AcmeChallengeType::Http01, } } fn as_str(&self) -> &'static str { match self { AcmeChallengeType::TlsAlpn01 => "TlsAlpn01", AcmeChallengeType::DnsPersist01 => "DnsPersist01", AcmeChallengeType::Dns01 => "Dns01", AcmeChallengeType::Http01 => "Http01", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(AcmeChallengeType::TlsAlpn01), 1 => Some(AcmeChallengeType::DnsPersist01), 2 => Some(AcmeChallengeType::Dns01), 3 => Some(AcmeChallengeType::Http01), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for AcmeChallengeType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for AcmeChallengeType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for AcmeRenewBefore { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"R12" => AcmeRenewBefore::R12, b"R23" => AcmeRenewBefore::R23, b"R34" => AcmeRenewBefore::R34, b"R45" => AcmeRenewBefore::R45, } } fn as_str(&self) -> &'static str { match self { AcmeRenewBefore::R12 => "R12", AcmeRenewBefore::R23 => "R23", AcmeRenewBefore::R34 => "R34", AcmeRenewBefore::R45 => "R45", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(AcmeRenewBefore::R12), 1 => Some(AcmeRenewBefore::R23), 2 => Some(AcmeRenewBefore::R34), 3 => Some(AcmeRenewBefore::R45), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for AcmeRenewBefore { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for AcmeRenewBefore { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ActionType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"ReloadSettings" => ActionType::ReloadSettings, b"ReloadTlsCertificates" => ActionType::ReloadTlsCertificates, b"ReloadLookupStores" => ActionType::ReloadLookupStores, b"ReloadBlockedIps" => ActionType::ReloadBlockedIps, b"UpdateApps" => ActionType::UpdateApps, b"TroubleshootDmarc" => ActionType::TroubleshootDmarc, b"ClassifySpam" => ActionType::ClassifySpam, b"InvalidateCaches" => ActionType::InvalidateCaches, b"InvalidateNegativeCaches" => ActionType::InvalidateNegativeCaches, b"PauseMtaQueue" => ActionType::PauseMtaQueue, b"ResumeMtaQueue" => ActionType::ResumeMtaQueue, } } fn as_str(&self) -> &'static str { match self { ActionType::ReloadSettings => "ReloadSettings", ActionType::ReloadTlsCertificates => "ReloadTlsCertificates", ActionType::ReloadLookupStores => "ReloadLookupStores", ActionType::ReloadBlockedIps => "ReloadBlockedIps", ActionType::UpdateApps => "UpdateApps", ActionType::TroubleshootDmarc => "TroubleshootDmarc", ActionType::ClassifySpam => "ClassifySpam", ActionType::InvalidateCaches => "InvalidateCaches", ActionType::InvalidateNegativeCaches => "InvalidateNegativeCaches", ActionType::PauseMtaQueue => "PauseMtaQueue", ActionType::ResumeMtaQueue => "ResumeMtaQueue", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ActionType::ReloadSettings), 1 => Some(ActionType::ReloadTlsCertificates), 2 => Some(ActionType::ReloadLookupStores), 3 => Some(ActionType::ReloadBlockedIps), 4 => Some(ActionType::UpdateApps), 5 => Some(ActionType::TroubleshootDmarc), 6 => Some(ActionType::ClassifySpam), 7 => Some(ActionType::InvalidateCaches), 8 => Some(ActionType::InvalidateNegativeCaches), 9 => Some(ActionType::PauseMtaQueue), 10 => Some(ActionType::ResumeMtaQueue), _ => None, } } const COUNT: usize = 11; } impl serde::Serialize for ActionType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ActionType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for AiModelType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Chat" => AiModelType::Chat, b"Text" => AiModelType::Text, } } fn as_str(&self) -> &'static str { match self { AiModelType::Chat => "Chat", AiModelType::Text => "Text", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(AiModelType::Chat), 1 => Some(AiModelType::Text), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for AiModelType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for AiModelType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for AlertEmailType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Disabled" => AlertEmailType::Disabled, b"Enabled" => AlertEmailType::Enabled, } } fn as_str(&self) -> &'static str { match self { AlertEmailType::Disabled => "Disabled", AlertEmailType::Enabled => "Enabled", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(AlertEmailType::Disabled), 1 => Some(AlertEmailType::Enabled), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for AlertEmailType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for AlertEmailType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for AlertEventType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Disabled" => AlertEventType::Disabled, b"Enabled" => AlertEventType::Enabled, } } fn as_str(&self) -> &'static str { match self { AlertEventType::Disabled => "Disabled", AlertEventType::Enabled => "Enabled", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(AlertEventType::Disabled), 1 => Some(AlertEventType::Enabled), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for AlertEventType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for AlertEventType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ArchivedItemStatus { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"archived" => ArchivedItemStatus::Archived, b"requestRestore" => ArchivedItemStatus::RequestRestore, } } fn as_str(&self) -> &'static str { match self { ArchivedItemStatus::Archived => "archived", ArchivedItemStatus::RequestRestore => "requestRestore", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ArchivedItemStatus::Archived), 1 => Some(ArchivedItemStatus::RequestRestore), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for ArchivedItemStatus { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ArchivedItemStatus { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ArchivedItemType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Email" => ArchivedItemType::Email, b"FileNode" => ArchivedItemType::FileNode, b"CalendarEvent" => ArchivedItemType::CalendarEvent, b"ContactCard" => ArchivedItemType::ContactCard, b"SieveScript" => ArchivedItemType::SieveScript, } } fn as_str(&self) -> &'static str { match self { ArchivedItemType::Email => "Email", ArchivedItemType::FileNode => "FileNode", ArchivedItemType::CalendarEvent => "CalendarEvent", ArchivedItemType::ContactCard => "ContactCard", ArchivedItemType::SieveScript => "SieveScript", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ArchivedItemType::Email), 1 => Some(ArchivedItemType::FileNode), 2 => Some(ArchivedItemType::CalendarEvent), 3 => Some(ArchivedItemType::ContactCard), 4 => Some(ArchivedItemType::SieveScript), _ => None, } } const COUNT: usize = 5; } impl serde::Serialize for ArchivedItemType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ArchivedItemType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ArfAuthFailureType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"adsp" => ArfAuthFailureType::Adsp, b"bodyHash" => ArfAuthFailureType::BodyHash, b"revoked" => ArfAuthFailureType::Revoked, b"signature" => ArfAuthFailureType::Signature, b"spf" => ArfAuthFailureType::Spf, b"dmarc" => ArfAuthFailureType::Dmarc, b"unspecified" => ArfAuthFailureType::Unspecified, } } fn as_str(&self) -> &'static str { match self { ArfAuthFailureType::Adsp => "adsp", ArfAuthFailureType::BodyHash => "bodyHash", ArfAuthFailureType::Revoked => "revoked", ArfAuthFailureType::Signature => "signature", ArfAuthFailureType::Spf => "spf", ArfAuthFailureType::Dmarc => "dmarc", ArfAuthFailureType::Unspecified => "unspecified", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ArfAuthFailureType::Adsp), 1 => Some(ArfAuthFailureType::BodyHash), 2 => Some(ArfAuthFailureType::Revoked), 3 => Some(ArfAuthFailureType::Signature), 4 => Some(ArfAuthFailureType::Spf), 5 => Some(ArfAuthFailureType::Dmarc), 6 => Some(ArfAuthFailureType::Unspecified), _ => None, } } const COUNT: usize = 7; } impl serde::Serialize for ArfAuthFailureType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ArfAuthFailureType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ArfDeliveryResult { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"delivered" => ArfDeliveryResult::Delivered, b"spam" => ArfDeliveryResult::Spam, b"policy" => ArfDeliveryResult::Policy, b"reject" => ArfDeliveryResult::Reject, b"other" => ArfDeliveryResult::Other, b"unspecified" => ArfDeliveryResult::Unspecified, } } fn as_str(&self) -> &'static str { match self { ArfDeliveryResult::Delivered => "delivered", ArfDeliveryResult::Spam => "spam", ArfDeliveryResult::Policy => "policy", ArfDeliveryResult::Reject => "reject", ArfDeliveryResult::Other => "other", ArfDeliveryResult::Unspecified => "unspecified", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ArfDeliveryResult::Delivered), 1 => Some(ArfDeliveryResult::Spam), 2 => Some(ArfDeliveryResult::Policy), 3 => Some(ArfDeliveryResult::Reject), 4 => Some(ArfDeliveryResult::Other), 5 => Some(ArfDeliveryResult::Unspecified), _ => None, } } const COUNT: usize = 6; } impl serde::Serialize for ArfDeliveryResult { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ArfDeliveryResult { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ArfFeedbackType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"abuse" => ArfFeedbackType::Abuse, b"authFailure" => ArfFeedbackType::AuthFailure, b"fraud" => ArfFeedbackType::Fraud, b"notSpam" => ArfFeedbackType::NotSpam, b"virus" => ArfFeedbackType::Virus, b"other" => ArfFeedbackType::Other, } } fn as_str(&self) -> &'static str { match self { ArfFeedbackType::Abuse => "abuse", ArfFeedbackType::AuthFailure => "authFailure", ArfFeedbackType::Fraud => "fraud", ArfFeedbackType::NotSpam => "notSpam", ArfFeedbackType::Virus => "virus", ArfFeedbackType::Other => "other", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ArfFeedbackType::Abuse), 1 => Some(ArfFeedbackType::AuthFailure), 2 => Some(ArfFeedbackType::Fraud), 3 => Some(ArfFeedbackType::NotSpam), 4 => Some(ArfFeedbackType::Virus), 5 => Some(ArfFeedbackType::Other), _ => None, } } const COUNT: usize = 6; } impl serde::Serialize for ArfFeedbackType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ArfFeedbackType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ArfIdentityAlignment { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"none" => ArfIdentityAlignment::None, b"spf" => ArfIdentityAlignment::Spf, b"dkim" => ArfIdentityAlignment::Dkim, b"dkimSpf" => ArfIdentityAlignment::DkimSpf, b"unspecified" => ArfIdentityAlignment::Unspecified, } } fn as_str(&self) -> &'static str { match self { ArfIdentityAlignment::None => "none", ArfIdentityAlignment::Spf => "spf", ArfIdentityAlignment::Dkim => "dkim", ArfIdentityAlignment::DkimSpf => "dkimSpf", ArfIdentityAlignment::Unspecified => "unspecified", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ArfIdentityAlignment::None), 1 => Some(ArfIdentityAlignment::Spf), 2 => Some(ArfIdentityAlignment::Dkim), 3 => Some(ArfIdentityAlignment::DkimSpf), 4 => Some(ArfIdentityAlignment::Unspecified), _ => None, } } const COUNT: usize = 5; } impl serde::Serialize for ArfIdentityAlignment { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ArfIdentityAlignment { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for AsnType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Disabled" => AsnType::Disabled, b"Resource" => AsnType::Resource, b"Dns" => AsnType::Dns, } } fn as_str(&self) -> &'static str { match self { AsnType::Disabled => "Disabled", AsnType::Resource => "Resource", AsnType::Dns => "Dns", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(AsnType::Disabled), 1 => Some(AsnType::Resource), 2 => Some(AsnType::Dns), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for AsnType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for AsnType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for AzureEnvironment { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"public" => AzureEnvironment::Public, b"china" => AzureEnvironment::China, b"us-government" => AzureEnvironment::UsGovernment, } } fn as_str(&self) -> &'static str { match self { AzureEnvironment::Public => "public", AzureEnvironment::China => "china", AzureEnvironment::UsGovernment => "us-government", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(AzureEnvironment::Public), 1 => Some(AzureEnvironment::China), 2 => Some(AzureEnvironment::UsGovernment), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for AzureEnvironment { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for AzureEnvironment { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for BlobStoreBaseType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"S3" => BlobStoreBaseType::S3, b"Azure" => BlobStoreBaseType::Azure, b"FileSystem" => BlobStoreBaseType::FileSystem, b"FoundationDb" => BlobStoreBaseType::FoundationDb, b"PostgreSql" => BlobStoreBaseType::PostgreSql, b"MySql" => BlobStoreBaseType::MySql, } } fn as_str(&self) -> &'static str { match self { BlobStoreBaseType::S3 => "S3", BlobStoreBaseType::Azure => "Azure", BlobStoreBaseType::FileSystem => "FileSystem", BlobStoreBaseType::FoundationDb => "FoundationDb", BlobStoreBaseType::PostgreSql => "PostgreSql", BlobStoreBaseType::MySql => "MySql", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(BlobStoreBaseType::S3), 1 => Some(BlobStoreBaseType::Azure), 2 => Some(BlobStoreBaseType::FileSystem), 3 => Some(BlobStoreBaseType::FoundationDb), 4 => Some(BlobStoreBaseType::PostgreSql), 5 => Some(BlobStoreBaseType::MySql), _ => None, } } const COUNT: usize = 6; } impl serde::Serialize for BlobStoreBaseType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for BlobStoreBaseType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for BlobStoreType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Default" => BlobStoreType::Default, b"Sharded" => BlobStoreType::Sharded, b"S3" => BlobStoreType::S3, b"Azure" => BlobStoreType::Azure, b"FileSystem" => BlobStoreType::FileSystem, b"FoundationDb" => BlobStoreType::FoundationDb, b"PostgreSql" => BlobStoreType::PostgreSql, b"MySql" => BlobStoreType::MySql, } } fn as_str(&self) -> &'static str { match self { BlobStoreType::Default => "Default", BlobStoreType::Sharded => "Sharded", BlobStoreType::S3 => "S3", BlobStoreType::Azure => "Azure", BlobStoreType::FileSystem => "FileSystem", BlobStoreType::FoundationDb => "FoundationDb", BlobStoreType::PostgreSql => "PostgreSql", BlobStoreType::MySql => "MySql", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(BlobStoreType::Default), 1 => Some(BlobStoreType::Sharded), 2 => Some(BlobStoreType::S3), 3 => Some(BlobStoreType::Azure), 4 => Some(BlobStoreType::FileSystem), 5 => Some(BlobStoreType::FoundationDb), 6 => Some(BlobStoreType::PostgreSql), 7 => Some(BlobStoreType::MySql), _ => None, } } const COUNT: usize = 8; } impl serde::Serialize for BlobStoreType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for BlobStoreType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for BlockReason { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"rcptToFailure" => BlockReason::RcptToFailure, b"authFailure" => BlockReason::AuthFailure, b"loitering" => BlockReason::Loitering, b"portScanning" => BlockReason::PortScanning, b"manual" => BlockReason::Manual, b"other" => BlockReason::Other, } } fn as_str(&self) -> &'static str { match self { BlockReason::RcptToFailure => "rcptToFailure", BlockReason::AuthFailure => "authFailure", BlockReason::Loitering => "loitering", BlockReason::PortScanning => "portScanning", BlockReason::Manual => "manual", BlockReason::Other => "other", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(BlockReason::RcptToFailure), 1 => Some(BlockReason::AuthFailure), 2 => Some(BlockReason::Loitering), 3 => Some(BlockReason::PortScanning), 4 => Some(BlockReason::Manual), 5 => Some(BlockReason::Other), _ => None, } } const COUNT: usize = 6; } impl serde::Serialize for BlockReason { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for BlockReason { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for CertificateManagementType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Manual" => CertificateManagementType::Manual, b"Automatic" => CertificateManagementType::Automatic, } } fn as_str(&self) -> &'static str { match self { CertificateManagementType::Manual => "Manual", CertificateManagementType::Automatic => "Automatic", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(CertificateManagementType::Manual), 1 => Some(CertificateManagementType::Automatic), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for CertificateManagementType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for CertificateManagementType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ClusterListenerGroupType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"EnableAll" => ClusterListenerGroupType::EnableAll, b"DisableAll" => ClusterListenerGroupType::DisableAll, b"EnableSome" => ClusterListenerGroupType::EnableSome, b"DisableSome" => ClusterListenerGroupType::DisableSome, } } fn as_str(&self) -> &'static str { match self { ClusterListenerGroupType::EnableAll => "EnableAll", ClusterListenerGroupType::DisableAll => "DisableAll", ClusterListenerGroupType::EnableSome => "EnableSome", ClusterListenerGroupType::DisableSome => "DisableSome", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ClusterListenerGroupType::EnableAll), 1 => Some(ClusterListenerGroupType::DisableAll), 2 => Some(ClusterListenerGroupType::EnableSome), 3 => Some(ClusterListenerGroupType::DisableSome), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for ClusterListenerGroupType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ClusterListenerGroupType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ClusterNodeStatus { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"active" => ClusterNodeStatus::Active, b"stale" => ClusterNodeStatus::Stale, b"inactive" => ClusterNodeStatus::Inactive, } } fn as_str(&self) -> &'static str { match self { ClusterNodeStatus::Active => "active", ClusterNodeStatus::Stale => "stale", ClusterNodeStatus::Inactive => "inactive", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ClusterNodeStatus::Active), 1 => Some(ClusterNodeStatus::Stale), 2 => Some(ClusterNodeStatus::Inactive), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for ClusterNodeStatus { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ClusterNodeStatus { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ClusterTaskGroupType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"EnableAll" => ClusterTaskGroupType::EnableAll, b"DisableAll" => ClusterTaskGroupType::DisableAll, b"EnableSome" => ClusterTaskGroupType::EnableSome, b"DisableSome" => ClusterTaskGroupType::DisableSome, } } fn as_str(&self) -> &'static str { match self { ClusterTaskGroupType::EnableAll => "EnableAll", ClusterTaskGroupType::DisableAll => "DisableAll", ClusterTaskGroupType::EnableSome => "EnableSome", ClusterTaskGroupType::DisableSome => "DisableSome", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ClusterTaskGroupType::EnableAll), 1 => Some(ClusterTaskGroupType::DisableAll), 2 => Some(ClusterTaskGroupType::EnableSome), 3 => Some(ClusterTaskGroupType::DisableSome), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for ClusterTaskGroupType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ClusterTaskGroupType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ClusterTaskType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"storeMaintenance" => ClusterTaskType::StoreMaintenance, b"accountMaintenance" => ClusterTaskType::AccountMaintenance, b"metricsCalculate" => ClusterTaskType::MetricsCalculate, b"metricsPush" => ClusterTaskType::MetricsPush, b"pushNotifications" => ClusterTaskType::PushNotifications, b"searchIndexing" => ClusterTaskType::SearchIndexing, b"spamClassifierTraining" => ClusterTaskType::SpamClassifierTraining, b"outboundMta" => ClusterTaskType::OutboundMta, b"taskQueueProcessing" => ClusterTaskType::TaskQueueProcessing, b"taskScheduler" => ClusterTaskType::TaskScheduler, } } fn as_str(&self) -> &'static str { match self { ClusterTaskType::StoreMaintenance => "storeMaintenance", ClusterTaskType::AccountMaintenance => "accountMaintenance", ClusterTaskType::MetricsCalculate => "metricsCalculate", ClusterTaskType::MetricsPush => "metricsPush", ClusterTaskType::PushNotifications => "pushNotifications", ClusterTaskType::SearchIndexing => "searchIndexing", ClusterTaskType::SpamClassifierTraining => "spamClassifierTraining", ClusterTaskType::OutboundMta => "outboundMta", ClusterTaskType::TaskQueueProcessing => "taskQueueProcessing", ClusterTaskType::TaskScheduler => "taskScheduler", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ClusterTaskType::StoreMaintenance), 1 => Some(ClusterTaskType::AccountMaintenance), 2 => Some(ClusterTaskType::MetricsCalculate), 3 => Some(ClusterTaskType::MetricsPush), 4 => Some(ClusterTaskType::PushNotifications), 5 => Some(ClusterTaskType::SearchIndexing), 6 => Some(ClusterTaskType::SpamClassifierTraining), 7 => Some(ClusterTaskType::OutboundMta), 8 => Some(ClusterTaskType::TaskQueueProcessing), 9 => Some(ClusterTaskType::TaskScheduler), _ => None, } } const COUNT: usize = 10; } impl serde::Serialize for ClusterTaskType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ClusterTaskType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for CompressionAlgo { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"lz4" => CompressionAlgo::Lz4, b"none" => CompressionAlgo::None, } } fn as_str(&self) -> &'static str { match self { CompressionAlgo::Lz4 => "lz4", CompressionAlgo::None => "none", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(CompressionAlgo::Lz4), 1 => Some(CompressionAlgo::None), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for CompressionAlgo { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for CompressionAlgo { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for CoordinatorType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Disabled" => CoordinatorType::Disabled, b"Default" => CoordinatorType::Default, b"Kafka" => CoordinatorType::Kafka, b"Nats" => CoordinatorType::Nats, b"Zenoh" => CoordinatorType::Zenoh, b"Redis" => CoordinatorType::Redis, b"RedisCluster" => CoordinatorType::RedisCluster, b"RedisSentinel" => CoordinatorType::RedisSentinel, } } fn as_str(&self) -> &'static str { match self { CoordinatorType::Disabled => "Disabled", CoordinatorType::Default => "Default", CoordinatorType::Kafka => "Kafka", CoordinatorType::Nats => "Nats", CoordinatorType::Zenoh => "Zenoh", CoordinatorType::Redis => "Redis", CoordinatorType::RedisCluster => "RedisCluster", CoordinatorType::RedisSentinel => "RedisSentinel", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(CoordinatorType::Disabled), 1 => Some(CoordinatorType::Default), 2 => Some(CoordinatorType::Kafka), 3 => Some(CoordinatorType::Nats), 4 => Some(CoordinatorType::Zenoh), 5 => Some(CoordinatorType::Redis), 6 => Some(CoordinatorType::RedisCluster), 7 => Some(CoordinatorType::RedisSentinel), _ => None, } } const COUNT: usize = 8; } impl serde::Serialize for CoordinatorType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for CoordinatorType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for CredentialPermissionsType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Inherit" => CredentialPermissionsType::Inherit, b"Disable" => CredentialPermissionsType::Disable, b"Replace" => CredentialPermissionsType::Replace, } } fn as_str(&self) -> &'static str { match self { CredentialPermissionsType::Inherit => "Inherit", CredentialPermissionsType::Disable => "Disable", CredentialPermissionsType::Replace => "Replace", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(CredentialPermissionsType::Inherit), 1 => Some(CredentialPermissionsType::Disable), 2 => Some(CredentialPermissionsType::Replace), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for CredentialPermissionsType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for CredentialPermissionsType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for CredentialType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Password" => CredentialType::Password, b"AppPassword" => CredentialType::AppPassword, b"ApiKey" => CredentialType::ApiKey, } } fn as_str(&self) -> &'static str { match self { CredentialType::Password => "Password", CredentialType::AppPassword => "AppPassword", CredentialType::ApiKey => "ApiKey", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(CredentialType::Password), 1 => Some(CredentialType::AppPassword), 2 => Some(CredentialType::ApiKey), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for CredentialType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for CredentialType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for CronType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Daily" => CronType::Daily, b"Weekly" => CronType::Weekly, b"Hourly" => CronType::Hourly, } } fn as_str(&self) -> &'static str { match self { CronType::Daily => "Daily", CronType::Weekly => "Weekly", CronType::Hourly => "Hourly", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(CronType::Daily), 1 => Some(CronType::Weekly), 2 => Some(CronType::Hourly), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for CronType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for CronType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DataStoreType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"RocksDb" => DataStoreType::RocksDb, b"Sqlite" => DataStoreType::Sqlite, b"FoundationDb" => DataStoreType::FoundationDb, b"PostgreSql" => DataStoreType::PostgreSql, b"MySql" => DataStoreType::MySql, } } fn as_str(&self) -> &'static str { match self { DataStoreType::RocksDb => "RocksDb", DataStoreType::Sqlite => "Sqlite", DataStoreType::FoundationDb => "FoundationDb", DataStoreType::PostgreSql => "PostgreSql", DataStoreType::MySql => "MySql", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DataStoreType::RocksDb), 1 => Some(DataStoreType::Sqlite), 2 => Some(DataStoreType::FoundationDb), 3 => Some(DataStoreType::PostgreSql), 4 => Some(DataStoreType::MySql), _ => None, } } const COUNT: usize = 5; } impl serde::Serialize for DataStoreType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DataStoreType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DeliveryErrorType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"dnsError" => DeliveryErrorType::DnsError, b"unexpectedResponse" => DeliveryErrorType::UnexpectedResponse, b"connectionError" => DeliveryErrorType::ConnectionError, b"tlsError" => DeliveryErrorType::TlsError, b"daneError" => DeliveryErrorType::DaneError, b"mtaStsError" => DeliveryErrorType::MtaStsError, b"rateLimited" => DeliveryErrorType::RateLimited, b"concurrencyLimited" => DeliveryErrorType::ConcurrencyLimited, b"io" => DeliveryErrorType::Io, } } fn as_str(&self) -> &'static str { match self { DeliveryErrorType::DnsError => "dnsError", DeliveryErrorType::UnexpectedResponse => "unexpectedResponse", DeliveryErrorType::ConnectionError => "connectionError", DeliveryErrorType::TlsError => "tlsError", DeliveryErrorType::DaneError => "daneError", DeliveryErrorType::MtaStsError => "mtaStsError", DeliveryErrorType::RateLimited => "rateLimited", DeliveryErrorType::ConcurrencyLimited => "concurrencyLimited", DeliveryErrorType::Io => "io", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DeliveryErrorType::DnsError), 1 => Some(DeliveryErrorType::UnexpectedResponse), 2 => Some(DeliveryErrorType::ConnectionError), 3 => Some(DeliveryErrorType::TlsError), 4 => Some(DeliveryErrorType::DaneError), 5 => Some(DeliveryErrorType::MtaStsError), 6 => Some(DeliveryErrorType::RateLimited), 7 => Some(DeliveryErrorType::ConcurrencyLimited), 8 => Some(DeliveryErrorType::Io), _ => None, } } const COUNT: usize = 9; } impl serde::Serialize for DeliveryErrorType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DeliveryErrorType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DirectoryBootstrapType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Internal" => DirectoryBootstrapType::Internal, b"Ldap" => DirectoryBootstrapType::Ldap, b"Sql" => DirectoryBootstrapType::Sql, b"Oidc" => DirectoryBootstrapType::Oidc, } } fn as_str(&self) -> &'static str { match self { DirectoryBootstrapType::Internal => "Internal", DirectoryBootstrapType::Ldap => "Ldap", DirectoryBootstrapType::Sql => "Sql", DirectoryBootstrapType::Oidc => "Oidc", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DirectoryBootstrapType::Internal), 1 => Some(DirectoryBootstrapType::Ldap), 2 => Some(DirectoryBootstrapType::Sql), 3 => Some(DirectoryBootstrapType::Oidc), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for DirectoryBootstrapType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DirectoryBootstrapType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DirectoryType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Ldap" => DirectoryType::Ldap, b"Sql" => DirectoryType::Sql, b"Oidc" => DirectoryType::Oidc, } } fn as_str(&self) -> &'static str { match self { DirectoryType::Ldap => "Ldap", DirectoryType::Sql => "Sql", DirectoryType::Oidc => "Oidc", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DirectoryType::Ldap), 1 => Some(DirectoryType::Sql), 2 => Some(DirectoryType::Oidc), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for DirectoryType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DirectoryType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for Dkim2Flag { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"donotmodify" => Dkim2Flag::Donotmodify, b"donotexplode" => Dkim2Flag::Donotexplode, b"feedback" => Dkim2Flag::Feedback, } } fn as_str(&self) -> &'static str { match self { Dkim2Flag::Donotmodify => "donotmodify", Dkim2Flag::Donotexplode => "donotexplode", Dkim2Flag::Feedback => "feedback", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(Dkim2Flag::Donotmodify), 1 => Some(Dkim2Flag::Donotexplode), 2 => Some(Dkim2Flag::Feedback), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for Dkim2Flag { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for Dkim2Flag { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DkimAuthResult { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"none" => DkimAuthResult::None, b"pass" => DkimAuthResult::Pass, b"fail" => DkimAuthResult::Fail, b"policy" => DkimAuthResult::Policy, b"neutral" => DkimAuthResult::Neutral, b"tempError" => DkimAuthResult::TempError, b"permError" => DkimAuthResult::PermError, } } fn as_str(&self) -> &'static str { match self { DkimAuthResult::None => "none", DkimAuthResult::Pass => "pass", DkimAuthResult::Fail => "fail", DkimAuthResult::Policy => "policy", DkimAuthResult::Neutral => "neutral", DkimAuthResult::TempError => "tempError", DkimAuthResult::PermError => "permError", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DkimAuthResult::None), 1 => Some(DkimAuthResult::Pass), 2 => Some(DkimAuthResult::Fail), 3 => Some(DkimAuthResult::Policy), 4 => Some(DkimAuthResult::Neutral), 5 => Some(DkimAuthResult::TempError), 6 => Some(DkimAuthResult::PermError), _ => None, } } const COUNT: usize = 7; } impl serde::Serialize for DkimAuthResult { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DkimAuthResult { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DkimCanonicalization { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"relaxed/relaxed" => DkimCanonicalization::RelaxedRelaxed, b"simple/simple" => DkimCanonicalization::SimpleSimple, b"relaxed/simple" => DkimCanonicalization::RelaxedSimple, b"simple/relaxed" => DkimCanonicalization::SimpleRelaxed, } } fn as_str(&self) -> &'static str { match self { DkimCanonicalization::RelaxedRelaxed => "relaxed/relaxed", DkimCanonicalization::SimpleSimple => "simple/simple", DkimCanonicalization::RelaxedSimple => "relaxed/simple", DkimCanonicalization::SimpleRelaxed => "simple/relaxed", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DkimCanonicalization::RelaxedRelaxed), 1 => Some(DkimCanonicalization::SimpleSimple), 2 => Some(DkimCanonicalization::RelaxedSimple), 3 => Some(DkimCanonicalization::SimpleRelaxed), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for DkimCanonicalization { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DkimCanonicalization { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DkimHash { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"sha256" => DkimHash::Sha256, b"sha1" => DkimHash::Sha1, } } fn as_str(&self) -> &'static str { match self { DkimHash::Sha256 => "sha256", DkimHash::Sha1 => "sha1", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DkimHash::Sha256), 1 => Some(DkimHash::Sha1), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for DkimHash { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DkimHash { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DkimManagementType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Automatic" => DkimManagementType::Automatic, b"Manual" => DkimManagementType::Manual, } } fn as_str(&self) -> &'static str { match self { DkimManagementType::Automatic => "Automatic", DkimManagementType::Manual => "Manual", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DkimManagementType::Automatic), 1 => Some(DkimManagementType::Manual), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for DkimManagementType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DkimManagementType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DkimRotationStage { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"active" => DkimRotationStage::Active, b"pending" => DkimRotationStage::Pending, b"retiring" => DkimRotationStage::Retiring, b"retired" => DkimRotationStage::Retired, } } fn as_str(&self) -> &'static str { match self { DkimRotationStage::Active => "active", DkimRotationStage::Pending => "pending", DkimRotationStage::Retiring => "retiring", DkimRotationStage::Retired => "retired", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DkimRotationStage::Active), 1 => Some(DkimRotationStage::Pending), 2 => Some(DkimRotationStage::Retiring), 3 => Some(DkimRotationStage::Retired), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for DkimRotationStage { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DkimRotationStage { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DkimSignatureType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Dkim1Ed25519Sha256" => DkimSignatureType::Dkim1Ed25519Sha256, b"Dkim1RsaSha256" => DkimSignatureType::Dkim1RsaSha256, b"Dkim2Ed25519Sha256" => DkimSignatureType::Dkim2Ed25519Sha256, b"Dkim2RsaSha256" => DkimSignatureType::Dkim2RsaSha256, } } fn as_str(&self) -> &'static str { match self { DkimSignatureType::Dkim1Ed25519Sha256 => "Dkim1Ed25519Sha256", DkimSignatureType::Dkim1RsaSha256 => "Dkim1RsaSha256", DkimSignatureType::Dkim2Ed25519Sha256 => "Dkim2Ed25519Sha256", DkimSignatureType::Dkim2RsaSha256 => "Dkim2RsaSha256", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DkimSignatureType::Dkim1Ed25519Sha256), 1 => Some(DkimSignatureType::Dkim1RsaSha256), 2 => Some(DkimSignatureType::Dkim2Ed25519Sha256), 3 => Some(DkimSignatureType::Dkim2RsaSha256), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for DkimSignatureType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DkimSignatureType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DmarcActionDisposition { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"none" => DmarcActionDisposition::None, b"pass" => DmarcActionDisposition::Pass, b"quarantine" => DmarcActionDisposition::Quarantine, b"reject" => DmarcActionDisposition::Reject, b"unspecified" => DmarcActionDisposition::Unspecified, } } fn as_str(&self) -> &'static str { match self { DmarcActionDisposition::None => "none", DmarcActionDisposition::Pass => "pass", DmarcActionDisposition::Quarantine => "quarantine", DmarcActionDisposition::Reject => "reject", DmarcActionDisposition::Unspecified => "unspecified", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DmarcActionDisposition::None), 1 => Some(DmarcActionDisposition::Pass), 2 => Some(DmarcActionDisposition::Quarantine), 3 => Some(DmarcActionDisposition::Reject), 4 => Some(DmarcActionDisposition::Unspecified), _ => None, } } const COUNT: usize = 5; } impl serde::Serialize for DmarcActionDisposition { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DmarcActionDisposition { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DmarcAlignment { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"relaxed" => DmarcAlignment::Relaxed, b"strict" => DmarcAlignment::Strict, b"unspecified" => DmarcAlignment::Unspecified, } } fn as_str(&self) -> &'static str { match self { DmarcAlignment::Relaxed => "relaxed", DmarcAlignment::Strict => "strict", DmarcAlignment::Unspecified => "unspecified", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DmarcAlignment::Relaxed), 1 => Some(DmarcAlignment::Strict), 2 => Some(DmarcAlignment::Unspecified), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for DmarcAlignment { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DmarcAlignment { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DmarcDiscovery { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"psl" => DmarcDiscovery::Psl, b"treewalk" => DmarcDiscovery::Treewalk, b"unspecified" => DmarcDiscovery::Unspecified, } } fn as_str(&self) -> &'static str { match self { DmarcDiscovery::Psl => "psl", DmarcDiscovery::Treewalk => "treewalk", DmarcDiscovery::Unspecified => "unspecified", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DmarcDiscovery::Psl), 1 => Some(DmarcDiscovery::Treewalk), 2 => Some(DmarcDiscovery::Unspecified), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for DmarcDiscovery { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DmarcDiscovery { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DmarcDisposition { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"none" => DmarcDisposition::None, b"quarantine" => DmarcDisposition::Quarantine, b"reject" => DmarcDisposition::Reject, b"unspecified" => DmarcDisposition::Unspecified, } } fn as_str(&self) -> &'static str { match self { DmarcDisposition::None => "none", DmarcDisposition::Quarantine => "quarantine", DmarcDisposition::Reject => "reject", DmarcDisposition::Unspecified => "unspecified", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DmarcDisposition::None), 1 => Some(DmarcDisposition::Quarantine), 2 => Some(DmarcDisposition::Reject), 3 => Some(DmarcDisposition::Unspecified), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for DmarcDisposition { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DmarcDisposition { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DmarcPolicyOverride { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Forwarded" => DmarcPolicyOverride::Forwarded, b"SampledOut" => DmarcPolicyOverride::SampledOut, b"TrustedForwarder" => DmarcPolicyOverride::TrustedForwarder, b"MailingList" => DmarcPolicyOverride::MailingList, b"LocalPolicy" => DmarcPolicyOverride::LocalPolicy, b"Other" => DmarcPolicyOverride::Other, b"PolicyTestMode" => DmarcPolicyOverride::PolicyTestMode, } } fn as_str(&self) -> &'static str { match self { DmarcPolicyOverride::Forwarded => "Forwarded", DmarcPolicyOverride::SampledOut => "SampledOut", DmarcPolicyOverride::TrustedForwarder => "TrustedForwarder", DmarcPolicyOverride::MailingList => "MailingList", DmarcPolicyOverride::LocalPolicy => "LocalPolicy", DmarcPolicyOverride::Other => "Other", DmarcPolicyOverride::PolicyTestMode => "PolicyTestMode", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DmarcPolicyOverride::Forwarded), 1 => Some(DmarcPolicyOverride::SampledOut), 2 => Some(DmarcPolicyOverride::TrustedForwarder), 3 => Some(DmarcPolicyOverride::MailingList), 4 => Some(DmarcPolicyOverride::LocalPolicy), 5 => Some(DmarcPolicyOverride::Other), 6 => Some(DmarcPolicyOverride::PolicyTestMode), _ => None, } } const COUNT: usize = 7; } impl serde::Serialize for DmarcPolicyOverride { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DmarcPolicyOverride { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DmarcResult { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"pass" => DmarcResult::Pass, b"fail" => DmarcResult::Fail, b"unspecified" => DmarcResult::Unspecified, } } fn as_str(&self) -> &'static str { match self { DmarcResult::Pass => "pass", DmarcResult::Fail => "fail", DmarcResult::Unspecified => "unspecified", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DmarcResult::Pass), 1 => Some(DmarcResult::Fail), 2 => Some(DmarcResult::Unspecified), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for DmarcResult { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DmarcResult { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DmarcTroubleshootAuthResultType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Pass" => DmarcTroubleshootAuthResultType::Pass, b"Fail" => DmarcTroubleshootAuthResultType::Fail, b"SoftFail" => DmarcTroubleshootAuthResultType::SoftFail, b"TempError" => DmarcTroubleshootAuthResultType::TempError, b"PermError" => DmarcTroubleshootAuthResultType::PermError, b"Neutral" => DmarcTroubleshootAuthResultType::Neutral, b"None" => DmarcTroubleshootAuthResultType::None, } } fn as_str(&self) -> &'static str { match self { DmarcTroubleshootAuthResultType::Pass => "Pass", DmarcTroubleshootAuthResultType::Fail => "Fail", DmarcTroubleshootAuthResultType::SoftFail => "SoftFail", DmarcTroubleshootAuthResultType::TempError => "TempError", DmarcTroubleshootAuthResultType::PermError => "PermError", DmarcTroubleshootAuthResultType::Neutral => "Neutral", DmarcTroubleshootAuthResultType::None => "None", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DmarcTroubleshootAuthResultType::Pass), 1 => Some(DmarcTroubleshootAuthResultType::Fail), 2 => Some(DmarcTroubleshootAuthResultType::SoftFail), 3 => Some(DmarcTroubleshootAuthResultType::TempError), 4 => Some(DmarcTroubleshootAuthResultType::PermError), 5 => Some(DmarcTroubleshootAuthResultType::Neutral), 6 => Some(DmarcTroubleshootAuthResultType::None), _ => None, } } const COUNT: usize = 7; } impl serde::Serialize for DmarcTroubleshootAuthResultType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DmarcTroubleshootAuthResultType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DnsManagementType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Manual" => DnsManagementType::Manual, b"Automatic" => DnsManagementType::Automatic, } } fn as_str(&self) -> &'static str { match self { DnsManagementType::Manual => "Manual", DnsManagementType::Automatic => "Automatic", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DnsManagementType::Manual), 1 => Some(DnsManagementType::Automatic), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for DnsManagementType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DnsManagementType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DnsPublishStatus { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"synced" => DnsPublishStatus::Synced, b"pending" => DnsPublishStatus::Pending, b"failed" => DnsPublishStatus::Failed, b"unknown" => DnsPublishStatus::Unknown, } } fn as_str(&self) -> &'static str { match self { DnsPublishStatus::Synced => "synced", DnsPublishStatus::Pending => "pending", DnsPublishStatus::Failed => "failed", DnsPublishStatus::Unknown => "unknown", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DnsPublishStatus::Synced), 1 => Some(DnsPublishStatus::Pending), 2 => Some(DnsPublishStatus::Failed), 3 => Some(DnsPublishStatus::Unknown), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for DnsPublishStatus { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DnsPublishStatus { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DnsRecordType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"dkim" => DnsRecordType::Dkim, b"tlsa" => DnsRecordType::Tlsa, b"spf" => DnsRecordType::Spf, b"mx" => DnsRecordType::Mx, b"dmarc" => DnsRecordType::Dmarc, b"srv" => DnsRecordType::Srv, b"mtaSts" => DnsRecordType::MtaSts, b"tlsRpt" => DnsRecordType::TlsRpt, b"caa" => DnsRecordType::Caa, b"autoConfig" => DnsRecordType::AutoConfig, b"autoConfigLegacy" => DnsRecordType::AutoConfigLegacy, b"autoDiscover" => DnsRecordType::AutoDiscover, } } fn as_str(&self) -> &'static str { match self { DnsRecordType::Dkim => "dkim", DnsRecordType::Tlsa => "tlsa", DnsRecordType::Spf => "spf", DnsRecordType::Mx => "mx", DnsRecordType::Dmarc => "dmarc", DnsRecordType::Srv => "srv", DnsRecordType::MtaSts => "mtaSts", DnsRecordType::TlsRpt => "tlsRpt", DnsRecordType::Caa => "caa", DnsRecordType::AutoConfig => "autoConfig", DnsRecordType::AutoConfigLegacy => "autoConfigLegacy", DnsRecordType::AutoDiscover => "autoDiscover", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DnsRecordType::Dkim), 1 => Some(DnsRecordType::Tlsa), 2 => Some(DnsRecordType::Spf), 3 => Some(DnsRecordType::Mx), 4 => Some(DnsRecordType::Dmarc), 5 => Some(DnsRecordType::Srv), 6 => Some(DnsRecordType::MtaSts), 7 => Some(DnsRecordType::TlsRpt), 8 => Some(DnsRecordType::Caa), 9 => Some(DnsRecordType::AutoConfig), 10 => Some(DnsRecordType::AutoConfigLegacy), 11 => Some(DnsRecordType::AutoDiscover), _ => None, } } const COUNT: usize = 12; } impl serde::Serialize for DnsRecordType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DnsRecordType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DnsResolverProtocol { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"tls" => DnsResolverProtocol::Tls, b"udp" => DnsResolverProtocol::Udp, b"tcp" => DnsResolverProtocol::Tcp, } } fn as_str(&self) -> &'static str { match self { DnsResolverProtocol::Tls => "tls", DnsResolverProtocol::Udp => "udp", DnsResolverProtocol::Tcp => "tcp", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DnsResolverProtocol::Tls), 1 => Some(DnsResolverProtocol::Udp), 2 => Some(DnsResolverProtocol::Tcp), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for DnsResolverProtocol { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DnsResolverProtocol { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DnsResolverType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"System" => DnsResolverType::System, b"Custom" => DnsResolverType::Custom, b"Cloudflare" => DnsResolverType::Cloudflare, b"Quad9" => DnsResolverType::Quad9, b"Google" => DnsResolverType::Google, } } fn as_str(&self) -> &'static str { match self { DnsResolverType::System => "System", DnsResolverType::Custom => "Custom", DnsResolverType::Cloudflare => "Cloudflare", DnsResolverType::Quad9 => "Quad9", DnsResolverType::Google => "Google", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DnsResolverType::System), 1 => Some(DnsResolverType::Custom), 2 => Some(DnsResolverType::Cloudflare), 3 => Some(DnsResolverType::Quad9), 4 => Some(DnsResolverType::Google), _ => None, } } const COUNT: usize = 5; } impl serde::Serialize for DnsResolverType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DnsResolverType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DnsServerBootstrapType { fn parse(value: &str) -> Option { hashify::map! { value.as_bytes(), DnsServerBootstrapType, b"Manual" => DnsServerBootstrapType::Manual, b"Tsig" => DnsServerBootstrapType::Tsig, b"Deprecated1" => DnsServerBootstrapType::Deprecated1, b"Cloudflare" => DnsServerBootstrapType::Cloudflare, b"DigitalOcean" => DnsServerBootstrapType::DigitalOcean, b"DeSEC" => DnsServerBootstrapType::DeSEC, b"Ovh" => DnsServerBootstrapType::Ovh, b"Bunny" => DnsServerBootstrapType::Bunny, b"Porkbun" => DnsServerBootstrapType::Porkbun, b"Dnsimple" => DnsServerBootstrapType::Dnsimple, b"Spaceship" => DnsServerBootstrapType::Spaceship, b"Route53" => DnsServerBootstrapType::Route53, b"GoogleCloudDns" => DnsServerBootstrapType::GoogleCloudDns, b"Alidns" => DnsServerBootstrapType::Alidns, b"ArvanCloud" => DnsServerBootstrapType::ArvanCloud, b"Autodns" => DnsServerBootstrapType::Autodns, b"AzureDns" => DnsServerBootstrapType::AzureDns, b"BaiduCloud" => DnsServerBootstrapType::BaiduCloud, b"BluecatV2" => DnsServerBootstrapType::BluecatV2, b"ClouDns" => DnsServerBootstrapType::ClouDns, b"Constellix" => DnsServerBootstrapType::Constellix, b"Cpanel" => DnsServerBootstrapType::Cpanel, b"Ddnss" => DnsServerBootstrapType::Ddnss, b"DnsMadeEasy" => DnsServerBootstrapType::DnsMadeEasy, b"Domeneshop" => DnsServerBootstrapType::Domeneshop, b"Dreamhost" => DnsServerBootstrapType::Dreamhost, b"DuckDns" => DnsServerBootstrapType::DuckDns, b"Dynu" => DnsServerBootstrapType::Dynu, b"EasyDns" => DnsServerBootstrapType::EasyDns, b"EdgeDns" => DnsServerBootstrapType::EdgeDns, b"Exoscale" => DnsServerBootstrapType::Exoscale, b"FreeMyIp" => DnsServerBootstrapType::FreeMyIp, b"GandiV5" => DnsServerBootstrapType::GandiV5, b"Gcore" => DnsServerBootstrapType::Gcore, b"Glesys" => DnsServerBootstrapType::Glesys, b"Godaddy" => DnsServerBootstrapType::Godaddy, b"Hetzner" => DnsServerBootstrapType::Hetzner, b"HostingDe" => DnsServerBootstrapType::HostingDe, b"Hostinger" => DnsServerBootstrapType::Hostinger, b"HuaweiCloud" => DnsServerBootstrapType::HuaweiCloud, b"Hurricane" => DnsServerBootstrapType::Hurricane, b"IbmCloud" => DnsServerBootstrapType::IbmCloud, b"Infoblox" => DnsServerBootstrapType::Infoblox, b"Infomaniak" => DnsServerBootstrapType::Infomaniak, b"Inwx" => DnsServerBootstrapType::Inwx, b"Ionos" => DnsServerBootstrapType::Ionos, b"Ipv64" => DnsServerBootstrapType::Ipv64, b"Joker" => DnsServerBootstrapType::Joker, b"Lightsail" => DnsServerBootstrapType::Lightsail, b"Linode" => DnsServerBootstrapType::Linode, b"LuaDns" => DnsServerBootstrapType::LuaDns, b"MythicBeasts" => DnsServerBootstrapType::MythicBeasts, b"Namecheap" => DnsServerBootstrapType::Namecheap, b"NameDotCom" => DnsServerBootstrapType::NameDotCom, b"NameSilo" => DnsServerBootstrapType::NameSilo, b"Netcup" => DnsServerBootstrapType::Netcup, b"Netlify" => DnsServerBootstrapType::Netlify, b"Nifcloud" => DnsServerBootstrapType::Nifcloud, b"Ns1" => DnsServerBootstrapType::Ns1, b"OracleCloud" => DnsServerBootstrapType::OracleCloud, b"Plesk" => DnsServerBootstrapType::Plesk, b"Safedns" => DnsServerBootstrapType::Safedns, b"Scaleway" => DnsServerBootstrapType::Scaleway, b"TencentCloud" => DnsServerBootstrapType::TencentCloud, b"Transip" => DnsServerBootstrapType::Transip, b"UltraDns" => DnsServerBootstrapType::UltraDns, b"Vercel" => DnsServerBootstrapType::Vercel, b"Volcengine" => DnsServerBootstrapType::Volcengine, b"Vultr" => DnsServerBootstrapType::Vultr, b"WebSupport" => DnsServerBootstrapType::WebSupport, b"YandexCloud" => DnsServerBootstrapType::YandexCloud, } .copied() } fn as_str(&self) -> &'static str { match self { DnsServerBootstrapType::Manual => "Manual", DnsServerBootstrapType::Tsig => "Tsig", DnsServerBootstrapType::Deprecated1 => "Deprecated1", DnsServerBootstrapType::Cloudflare => "Cloudflare", DnsServerBootstrapType::DigitalOcean => "DigitalOcean", DnsServerBootstrapType::DeSEC => "DeSEC", DnsServerBootstrapType::Ovh => "Ovh", DnsServerBootstrapType::Bunny => "Bunny", DnsServerBootstrapType::Porkbun => "Porkbun", DnsServerBootstrapType::Dnsimple => "Dnsimple", DnsServerBootstrapType::Spaceship => "Spaceship", DnsServerBootstrapType::Route53 => "Route53", DnsServerBootstrapType::GoogleCloudDns => "GoogleCloudDns", DnsServerBootstrapType::Alidns => "Alidns", DnsServerBootstrapType::ArvanCloud => "ArvanCloud", DnsServerBootstrapType::Autodns => "Autodns", DnsServerBootstrapType::AzureDns => "AzureDns", DnsServerBootstrapType::BaiduCloud => "BaiduCloud", DnsServerBootstrapType::BluecatV2 => "BluecatV2", DnsServerBootstrapType::ClouDns => "ClouDns", DnsServerBootstrapType::Constellix => "Constellix", DnsServerBootstrapType::Cpanel => "Cpanel", DnsServerBootstrapType::Ddnss => "Ddnss", DnsServerBootstrapType::DnsMadeEasy => "DnsMadeEasy", DnsServerBootstrapType::Domeneshop => "Domeneshop", DnsServerBootstrapType::Dreamhost => "Dreamhost", DnsServerBootstrapType::DuckDns => "DuckDns", DnsServerBootstrapType::Dynu => "Dynu", DnsServerBootstrapType::EasyDns => "EasyDns", DnsServerBootstrapType::EdgeDns => "EdgeDns", DnsServerBootstrapType::Exoscale => "Exoscale", DnsServerBootstrapType::FreeMyIp => "FreeMyIp", DnsServerBootstrapType::GandiV5 => "GandiV5", DnsServerBootstrapType::Gcore => "Gcore", DnsServerBootstrapType::Glesys => "Glesys", DnsServerBootstrapType::Godaddy => "Godaddy", DnsServerBootstrapType::Hetzner => "Hetzner", DnsServerBootstrapType::HostingDe => "HostingDe", DnsServerBootstrapType::Hostinger => "Hostinger", DnsServerBootstrapType::HuaweiCloud => "HuaweiCloud", DnsServerBootstrapType::Hurricane => "Hurricane", DnsServerBootstrapType::IbmCloud => "IbmCloud", DnsServerBootstrapType::Infoblox => "Infoblox", DnsServerBootstrapType::Infomaniak => "Infomaniak", DnsServerBootstrapType::Inwx => "Inwx", DnsServerBootstrapType::Ionos => "Ionos", DnsServerBootstrapType::Ipv64 => "Ipv64", DnsServerBootstrapType::Joker => "Joker", DnsServerBootstrapType::Lightsail => "Lightsail", DnsServerBootstrapType::Linode => "Linode", DnsServerBootstrapType::LuaDns => "LuaDns", DnsServerBootstrapType::MythicBeasts => "MythicBeasts", DnsServerBootstrapType::Namecheap => "Namecheap", DnsServerBootstrapType::NameDotCom => "NameDotCom", DnsServerBootstrapType::NameSilo => "NameSilo", DnsServerBootstrapType::Netcup => "Netcup", DnsServerBootstrapType::Netlify => "Netlify", DnsServerBootstrapType::Nifcloud => "Nifcloud", DnsServerBootstrapType::Ns1 => "Ns1", DnsServerBootstrapType::OracleCloud => "OracleCloud", DnsServerBootstrapType::Plesk => "Plesk", DnsServerBootstrapType::Safedns => "Safedns", DnsServerBootstrapType::Scaleway => "Scaleway", DnsServerBootstrapType::TencentCloud => "TencentCloud", DnsServerBootstrapType::Transip => "Transip", DnsServerBootstrapType::UltraDns => "UltraDns", DnsServerBootstrapType::Vercel => "Vercel", DnsServerBootstrapType::Volcengine => "Volcengine", DnsServerBootstrapType::Vultr => "Vultr", DnsServerBootstrapType::WebSupport => "WebSupport", DnsServerBootstrapType::YandexCloud => "YandexCloud", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DnsServerBootstrapType::Manual), 1 => Some(DnsServerBootstrapType::Tsig), 2 => Some(DnsServerBootstrapType::Deprecated1), 3 => Some(DnsServerBootstrapType::Cloudflare), 4 => Some(DnsServerBootstrapType::DigitalOcean), 5 => Some(DnsServerBootstrapType::DeSEC), 6 => Some(DnsServerBootstrapType::Ovh), 7 => Some(DnsServerBootstrapType::Bunny), 8 => Some(DnsServerBootstrapType::Porkbun), 9 => Some(DnsServerBootstrapType::Dnsimple), 10 => Some(DnsServerBootstrapType::Spaceship), 11 => Some(DnsServerBootstrapType::Route53), 12 => Some(DnsServerBootstrapType::GoogleCloudDns), 13 => Some(DnsServerBootstrapType::Alidns), 14 => Some(DnsServerBootstrapType::ArvanCloud), 15 => Some(DnsServerBootstrapType::Autodns), 16 => Some(DnsServerBootstrapType::AzureDns), 17 => Some(DnsServerBootstrapType::BaiduCloud), 18 => Some(DnsServerBootstrapType::BluecatV2), 19 => Some(DnsServerBootstrapType::ClouDns), 20 => Some(DnsServerBootstrapType::Constellix), 21 => Some(DnsServerBootstrapType::Cpanel), 22 => Some(DnsServerBootstrapType::Ddnss), 23 => Some(DnsServerBootstrapType::DnsMadeEasy), 24 => Some(DnsServerBootstrapType::Domeneshop), 25 => Some(DnsServerBootstrapType::Dreamhost), 26 => Some(DnsServerBootstrapType::DuckDns), 27 => Some(DnsServerBootstrapType::Dynu), 28 => Some(DnsServerBootstrapType::EasyDns), 29 => Some(DnsServerBootstrapType::EdgeDns), 30 => Some(DnsServerBootstrapType::Exoscale), 31 => Some(DnsServerBootstrapType::FreeMyIp), 32 => Some(DnsServerBootstrapType::GandiV5), 33 => Some(DnsServerBootstrapType::Gcore), 34 => Some(DnsServerBootstrapType::Glesys), 35 => Some(DnsServerBootstrapType::Godaddy), 36 => Some(DnsServerBootstrapType::Hetzner), 37 => Some(DnsServerBootstrapType::HostingDe), 38 => Some(DnsServerBootstrapType::Hostinger), 39 => Some(DnsServerBootstrapType::HuaweiCloud), 40 => Some(DnsServerBootstrapType::Hurricane), 41 => Some(DnsServerBootstrapType::IbmCloud), 42 => Some(DnsServerBootstrapType::Infoblox), 43 => Some(DnsServerBootstrapType::Infomaniak), 44 => Some(DnsServerBootstrapType::Inwx), 45 => Some(DnsServerBootstrapType::Ionos), 46 => Some(DnsServerBootstrapType::Ipv64), 47 => Some(DnsServerBootstrapType::Joker), 48 => Some(DnsServerBootstrapType::Lightsail), 49 => Some(DnsServerBootstrapType::Linode), 50 => Some(DnsServerBootstrapType::LuaDns), 51 => Some(DnsServerBootstrapType::MythicBeasts), 52 => Some(DnsServerBootstrapType::Namecheap), 53 => Some(DnsServerBootstrapType::NameDotCom), 54 => Some(DnsServerBootstrapType::NameSilo), 55 => Some(DnsServerBootstrapType::Netcup), 56 => Some(DnsServerBootstrapType::Netlify), 57 => Some(DnsServerBootstrapType::Nifcloud), 58 => Some(DnsServerBootstrapType::Ns1), 59 => Some(DnsServerBootstrapType::OracleCloud), 60 => Some(DnsServerBootstrapType::Plesk), 61 => Some(DnsServerBootstrapType::Safedns), 62 => Some(DnsServerBootstrapType::Scaleway), 63 => Some(DnsServerBootstrapType::TencentCloud), 64 => Some(DnsServerBootstrapType::Transip), 65 => Some(DnsServerBootstrapType::UltraDns), 66 => Some(DnsServerBootstrapType::Vercel), 67 => Some(DnsServerBootstrapType::Volcengine), 68 => Some(DnsServerBootstrapType::Vultr), 69 => Some(DnsServerBootstrapType::WebSupport), 70 => Some(DnsServerBootstrapType::YandexCloud), _ => None, } } const COUNT: usize = 71; } impl serde::Serialize for DnsServerBootstrapType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DnsServerBootstrapType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for DnsServerType { fn parse(value: &str) -> Option { hashify::map! { value.as_bytes(), DnsServerType, b"Tsig" => DnsServerType::Tsig, b"Deprecated1" => DnsServerType::Deprecated1, b"Cloudflare" => DnsServerType::Cloudflare, b"DigitalOcean" => DnsServerType::DigitalOcean, b"DeSEC" => DnsServerType::DeSEC, b"Ovh" => DnsServerType::Ovh, b"Bunny" => DnsServerType::Bunny, b"Porkbun" => DnsServerType::Porkbun, b"Dnsimple" => DnsServerType::Dnsimple, b"Spaceship" => DnsServerType::Spaceship, b"Route53" => DnsServerType::Route53, b"GoogleCloudDns" => DnsServerType::GoogleCloudDns, b"Alidns" => DnsServerType::Alidns, b"ArvanCloud" => DnsServerType::ArvanCloud, b"Autodns" => DnsServerType::Autodns, b"AzureDns" => DnsServerType::AzureDns, b"BaiduCloud" => DnsServerType::BaiduCloud, b"BluecatV2" => DnsServerType::BluecatV2, b"ClouDns" => DnsServerType::ClouDns, b"Constellix" => DnsServerType::Constellix, b"Cpanel" => DnsServerType::Cpanel, b"Ddnss" => DnsServerType::Ddnss, b"DnsMadeEasy" => DnsServerType::DnsMadeEasy, b"Domeneshop" => DnsServerType::Domeneshop, b"Dreamhost" => DnsServerType::Dreamhost, b"DuckDns" => DnsServerType::DuckDns, b"Dynu" => DnsServerType::Dynu, b"EasyDns" => DnsServerType::EasyDns, b"EdgeDns" => DnsServerType::EdgeDns, b"Exoscale" => DnsServerType::Exoscale, b"FreeMyIp" => DnsServerType::FreeMyIp, b"GandiV5" => DnsServerType::GandiV5, b"Gcore" => DnsServerType::Gcore, b"Glesys" => DnsServerType::Glesys, b"Godaddy" => DnsServerType::Godaddy, b"Hetzner" => DnsServerType::Hetzner, b"HostingDe" => DnsServerType::HostingDe, b"Hostinger" => DnsServerType::Hostinger, b"HuaweiCloud" => DnsServerType::HuaweiCloud, b"Hurricane" => DnsServerType::Hurricane, b"IbmCloud" => DnsServerType::IbmCloud, b"Infoblox" => DnsServerType::Infoblox, b"Infomaniak" => DnsServerType::Infomaniak, b"Inwx" => DnsServerType::Inwx, b"Ionos" => DnsServerType::Ionos, b"Ipv64" => DnsServerType::Ipv64, b"Joker" => DnsServerType::Joker, b"Lightsail" => DnsServerType::Lightsail, b"Linode" => DnsServerType::Linode, b"LuaDns" => DnsServerType::LuaDns, b"MythicBeasts" => DnsServerType::MythicBeasts, b"Namecheap" => DnsServerType::Namecheap, b"NameDotCom" => DnsServerType::NameDotCom, b"NameSilo" => DnsServerType::NameSilo, b"Netcup" => DnsServerType::Netcup, b"Netlify" => DnsServerType::Netlify, b"Nifcloud" => DnsServerType::Nifcloud, b"Ns1" => DnsServerType::Ns1, b"OracleCloud" => DnsServerType::OracleCloud, b"Plesk" => DnsServerType::Plesk, b"Safedns" => DnsServerType::Safedns, b"Scaleway" => DnsServerType::Scaleway, b"TencentCloud" => DnsServerType::TencentCloud, b"Transip" => DnsServerType::Transip, b"UltraDns" => DnsServerType::UltraDns, b"Vercel" => DnsServerType::Vercel, b"Volcengine" => DnsServerType::Volcengine, b"Vultr" => DnsServerType::Vultr, b"WebSupport" => DnsServerType::WebSupport, b"YandexCloud" => DnsServerType::YandexCloud, } .copied() } fn as_str(&self) -> &'static str { match self { DnsServerType::Tsig => "Tsig", DnsServerType::Deprecated1 => "Deprecated1", DnsServerType::Cloudflare => "Cloudflare", DnsServerType::DigitalOcean => "DigitalOcean", DnsServerType::DeSEC => "DeSEC", DnsServerType::Ovh => "Ovh", DnsServerType::Bunny => "Bunny", DnsServerType::Porkbun => "Porkbun", DnsServerType::Dnsimple => "Dnsimple", DnsServerType::Spaceship => "Spaceship", DnsServerType::Route53 => "Route53", DnsServerType::GoogleCloudDns => "GoogleCloudDns", DnsServerType::Alidns => "Alidns", DnsServerType::ArvanCloud => "ArvanCloud", DnsServerType::Autodns => "Autodns", DnsServerType::AzureDns => "AzureDns", DnsServerType::BaiduCloud => "BaiduCloud", DnsServerType::BluecatV2 => "BluecatV2", DnsServerType::ClouDns => "ClouDns", DnsServerType::Constellix => "Constellix", DnsServerType::Cpanel => "Cpanel", DnsServerType::Ddnss => "Ddnss", DnsServerType::DnsMadeEasy => "DnsMadeEasy", DnsServerType::Domeneshop => "Domeneshop", DnsServerType::Dreamhost => "Dreamhost", DnsServerType::DuckDns => "DuckDns", DnsServerType::Dynu => "Dynu", DnsServerType::EasyDns => "EasyDns", DnsServerType::EdgeDns => "EdgeDns", DnsServerType::Exoscale => "Exoscale", DnsServerType::FreeMyIp => "FreeMyIp", DnsServerType::GandiV5 => "GandiV5", DnsServerType::Gcore => "Gcore", DnsServerType::Glesys => "Glesys", DnsServerType::Godaddy => "Godaddy", DnsServerType::Hetzner => "Hetzner", DnsServerType::HostingDe => "HostingDe", DnsServerType::Hostinger => "Hostinger", DnsServerType::HuaweiCloud => "HuaweiCloud", DnsServerType::Hurricane => "Hurricane", DnsServerType::IbmCloud => "IbmCloud", DnsServerType::Infoblox => "Infoblox", DnsServerType::Infomaniak => "Infomaniak", DnsServerType::Inwx => "Inwx", DnsServerType::Ionos => "Ionos", DnsServerType::Ipv64 => "Ipv64", DnsServerType::Joker => "Joker", DnsServerType::Lightsail => "Lightsail", DnsServerType::Linode => "Linode", DnsServerType::LuaDns => "LuaDns", DnsServerType::MythicBeasts => "MythicBeasts", DnsServerType::Namecheap => "Namecheap", DnsServerType::NameDotCom => "NameDotCom", DnsServerType::NameSilo => "NameSilo", DnsServerType::Netcup => "Netcup", DnsServerType::Netlify => "Netlify", DnsServerType::Nifcloud => "Nifcloud", DnsServerType::Ns1 => "Ns1", DnsServerType::OracleCloud => "OracleCloud", DnsServerType::Plesk => "Plesk", DnsServerType::Safedns => "Safedns", DnsServerType::Scaleway => "Scaleway", DnsServerType::TencentCloud => "TencentCloud", DnsServerType::Transip => "Transip", DnsServerType::UltraDns => "UltraDns", DnsServerType::Vercel => "Vercel", DnsServerType::Volcengine => "Volcengine", DnsServerType::Vultr => "Vultr", DnsServerType::WebSupport => "WebSupport", DnsServerType::YandexCloud => "YandexCloud", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(DnsServerType::Tsig), 1 => Some(DnsServerType::Deprecated1), 2 => Some(DnsServerType::Cloudflare), 3 => Some(DnsServerType::DigitalOcean), 4 => Some(DnsServerType::DeSEC), 5 => Some(DnsServerType::Ovh), 6 => Some(DnsServerType::Bunny), 7 => Some(DnsServerType::Porkbun), 8 => Some(DnsServerType::Dnsimple), 9 => Some(DnsServerType::Spaceship), 10 => Some(DnsServerType::Route53), 11 => Some(DnsServerType::GoogleCloudDns), 12 => Some(DnsServerType::Alidns), 13 => Some(DnsServerType::ArvanCloud), 14 => Some(DnsServerType::Autodns), 15 => Some(DnsServerType::AzureDns), 16 => Some(DnsServerType::BaiduCloud), 17 => Some(DnsServerType::BluecatV2), 18 => Some(DnsServerType::ClouDns), 19 => Some(DnsServerType::Constellix), 20 => Some(DnsServerType::Cpanel), 21 => Some(DnsServerType::Ddnss), 22 => Some(DnsServerType::DnsMadeEasy), 23 => Some(DnsServerType::Domeneshop), 24 => Some(DnsServerType::Dreamhost), 25 => Some(DnsServerType::DuckDns), 26 => Some(DnsServerType::Dynu), 27 => Some(DnsServerType::EasyDns), 28 => Some(DnsServerType::EdgeDns), 29 => Some(DnsServerType::Exoscale), 30 => Some(DnsServerType::FreeMyIp), 31 => Some(DnsServerType::GandiV5), 32 => Some(DnsServerType::Gcore), 33 => Some(DnsServerType::Glesys), 34 => Some(DnsServerType::Godaddy), 35 => Some(DnsServerType::Hetzner), 36 => Some(DnsServerType::HostingDe), 37 => Some(DnsServerType::Hostinger), 38 => Some(DnsServerType::HuaweiCloud), 39 => Some(DnsServerType::Hurricane), 40 => Some(DnsServerType::IbmCloud), 41 => Some(DnsServerType::Infoblox), 42 => Some(DnsServerType::Infomaniak), 43 => Some(DnsServerType::Inwx), 44 => Some(DnsServerType::Ionos), 45 => Some(DnsServerType::Ipv64), 46 => Some(DnsServerType::Joker), 47 => Some(DnsServerType::Lightsail), 48 => Some(DnsServerType::Linode), 49 => Some(DnsServerType::LuaDns), 50 => Some(DnsServerType::MythicBeasts), 51 => Some(DnsServerType::Namecheap), 52 => Some(DnsServerType::NameDotCom), 53 => Some(DnsServerType::NameSilo), 54 => Some(DnsServerType::Netcup), 55 => Some(DnsServerType::Netlify), 56 => Some(DnsServerType::Nifcloud), 57 => Some(DnsServerType::Ns1), 58 => Some(DnsServerType::OracleCloud), 59 => Some(DnsServerType::Plesk), 60 => Some(DnsServerType::Safedns), 61 => Some(DnsServerType::Scaleway), 62 => Some(DnsServerType::TencentCloud), 63 => Some(DnsServerType::Transip), 64 => Some(DnsServerType::UltraDns), 65 => Some(DnsServerType::Vercel), 66 => Some(DnsServerType::Volcengine), 67 => Some(DnsServerType::Vultr), 68 => Some(DnsServerType::WebSupport), 69 => Some(DnsServerType::YandexCloud), _ => None, } } const COUNT: usize = 70; } impl serde::Serialize for DnsServerType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for DnsServerType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for EncryptionAtRestType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Disabled" => EncryptionAtRestType::Disabled, b"Aes128" => EncryptionAtRestType::Aes128, b"Aes256" => EncryptionAtRestType::Aes256, b"Aes256Gcm" => EncryptionAtRestType::Aes256Gcm, b"ChaCha20Poly1305" => EncryptionAtRestType::ChaCha20Poly1305, } } fn as_str(&self) -> &'static str { match self { EncryptionAtRestType::Disabled => "Disabled", EncryptionAtRestType::Aes128 => "Aes128", EncryptionAtRestType::Aes256 => "Aes256", EncryptionAtRestType::Aes256Gcm => "Aes256Gcm", EncryptionAtRestType::ChaCha20Poly1305 => "ChaCha20Poly1305", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(EncryptionAtRestType::Disabled), 1 => Some(EncryptionAtRestType::Aes128), 2 => Some(EncryptionAtRestType::Aes256), 3 => Some(EncryptionAtRestType::Aes256Gcm), 4 => Some(EncryptionAtRestType::ChaCha20Poly1305), _ => None, } } const COUNT: usize = 5; } impl serde::Serialize for EncryptionAtRestType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for EncryptionAtRestType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for EventPolicy { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"include" => EventPolicy::Include, b"exclude" => EventPolicy::Exclude, } } fn as_str(&self) -> &'static str { match self { EventPolicy::Include => "include", EventPolicy::Exclude => "exclude", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(EventPolicy::Include), 1 => Some(EventPolicy::Exclude), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for EventPolicy { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for EventPolicy { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ExpressionConstant { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"relaxed" => ExpressionConstant::Relaxed, b"strict" => ExpressionConstant::Strict, b"disable" => ExpressionConstant::Disable, b"optional" => ExpressionConstant::Optional, b"require" => ExpressionConstant::Require, b"ipv4_only" => ExpressionConstant::Ipv4Only, b"ipv6_only" => ExpressionConstant::Ipv6Only, b"ipv6_then_ipv4" => ExpressionConstant::Ipv6ThenIpv4, b"ipv4_then_ipv6" => ExpressionConstant::Ipv4ThenIpv6, b"hourly" => ExpressionConstant::Hourly, b"daily" => ExpressionConstant::Daily, b"weekly" => ExpressionConstant::Weekly, b"login" => ExpressionConstant::Login, b"plain" => ExpressionConstant::Plain, b"xoauth2" => ExpressionConstant::Xoauth2, b"oauthbearer" => ExpressionConstant::Oauthbearer, b"mixer" => ExpressionConstant::Mixer, b"stanag4406" => ExpressionConstant::Stanag4406, b"nsep" => ExpressionConstant::Nsep, } } fn as_str(&self) -> &'static str { match self { ExpressionConstant::Relaxed => "relaxed", ExpressionConstant::Strict => "strict", ExpressionConstant::Disable => "disable", ExpressionConstant::Optional => "optional", ExpressionConstant::Require => "require", ExpressionConstant::Ipv4Only => "ipv4_only", ExpressionConstant::Ipv6Only => "ipv6_only", ExpressionConstant::Ipv6ThenIpv4 => "ipv6_then_ipv4", ExpressionConstant::Ipv4ThenIpv6 => "ipv4_then_ipv6", ExpressionConstant::Hourly => "hourly", ExpressionConstant::Daily => "daily", ExpressionConstant::Weekly => "weekly", ExpressionConstant::Login => "login", ExpressionConstant::Plain => "plain", ExpressionConstant::Xoauth2 => "xoauth2", ExpressionConstant::Oauthbearer => "oauthbearer", ExpressionConstant::Mixer => "mixer", ExpressionConstant::Stanag4406 => "stanag4406", ExpressionConstant::Nsep => "nsep", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ExpressionConstant::Relaxed), 1 => Some(ExpressionConstant::Strict), 2 => Some(ExpressionConstant::Disable), 3 => Some(ExpressionConstant::Optional), 4 => Some(ExpressionConstant::Require), 5 => Some(ExpressionConstant::Ipv4Only), 6 => Some(ExpressionConstant::Ipv6Only), 7 => Some(ExpressionConstant::Ipv6ThenIpv4), 8 => Some(ExpressionConstant::Ipv4ThenIpv6), 9 => Some(ExpressionConstant::Hourly), 10 => Some(ExpressionConstant::Daily), 11 => Some(ExpressionConstant::Weekly), 12 => Some(ExpressionConstant::Login), 13 => Some(ExpressionConstant::Plain), 14 => Some(ExpressionConstant::Xoauth2), 15 => Some(ExpressionConstant::Oauthbearer), 16 => Some(ExpressionConstant::Mixer), 17 => Some(ExpressionConstant::Stanag4406), 18 => Some(ExpressionConstant::Nsep), _ => None, } } const COUNT: usize = 19; } impl serde::Serialize for ExpressionConstant { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ExpressionConstant { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ExpressionVariable { fn parse(value: &str) -> Option { hashify::map! { value.as_bytes(), ExpressionVariable, b"asn" => ExpressionVariable::Asn, b"attributes" => ExpressionVariable::Attributes, b"authenticated_as" => ExpressionVariable::AuthenticatedAs, b"authority" => ExpressionVariable::Authority, b"bcc" => ExpressionVariable::Bcc, b"bcc.domain" => ExpressionVariable::BccDomain, b"bcc.local" => ExpressionVariable::BccLocal, b"bcc.name" => ExpressionVariable::BccName, b"body" => ExpressionVariable::Body, b"body.html" => ExpressionVariable::BodyHtml, b"body.raw" => ExpressionVariable::BodyRaw, b"body.text" => ExpressionVariable::BodyText, b"body.words" => ExpressionVariable::BodyWords, b"cc" => ExpressionVariable::Cc, b"cc.domain" => ExpressionVariable::CcDomain, b"cc.local" => ExpressionVariable::CcLocal, b"cc.name" => ExpressionVariable::CcName, b"country" => ExpressionVariable::Country, b"domain" => ExpressionVariable::Domain, b"email" => ExpressionVariable::Email, b"email_lower" => ExpressionVariable::EmailLower, b"env_from" => ExpressionVariable::EnvFrom, b"env_from.domain" => ExpressionVariable::EnvFromDomain, b"env_from.local" => ExpressionVariable::EnvFromLocal, b"env_to" => ExpressionVariable::EnvTo, b"expires_in" => ExpressionVariable::ExpiresIn, b"from" => ExpressionVariable::From, b"from.domain" => ExpressionVariable::FromDomain, b"from.local" => ExpressionVariable::FromLocal, b"from.name" => ExpressionVariable::FromName, b"headers" => ExpressionVariable::Headers, b"helo_domain" => ExpressionVariable::HeloDomain, b"host" => ExpressionVariable::Host, b"ip" => ExpressionVariable::Ip, b"ip_reverse" => ExpressionVariable::IpReverse, b"is_tls" => ExpressionVariable::IsTls, b"is_v4" => ExpressionVariable::IsV4, b"is_v6" => ExpressionVariable::IsV6, b"last_error" => ExpressionVariable::LastError, b"last_status" => ExpressionVariable::LastStatus, b"listener" => ExpressionVariable::Listener, b"local" => ExpressionVariable::Local, b"local_ip" => ExpressionVariable::LocalIp, b"local_port" => ExpressionVariable::LocalPort, b"location" => ExpressionVariable::Location, b"method" => ExpressionVariable::Method, b"mx" => ExpressionVariable::Mx, b"name" => ExpressionVariable::Name, b"name_lower" => ExpressionVariable::NameLower, b"notify_num" => ExpressionVariable::NotifyNum, b"octets" => ExpressionVariable::Octets, b"path" => ExpressionVariable::Path, b"path_query" => ExpressionVariable::PathQuery, b"port" => ExpressionVariable::Port, b"priority" => ExpressionVariable::Priority, b"protocol" => ExpressionVariable::Protocol, b"query" => ExpressionVariable::Query, b"queue_age" => ExpressionVariable::QueueAge, b"queue_name" => ExpressionVariable::QueueName, b"raw" => ExpressionVariable::Raw, b"raw_lower" => ExpressionVariable::RawLower, b"rcpt" => ExpressionVariable::Rcpt, b"rcpt_domain" => ExpressionVariable::RcptDomain, b"received_from_ip" => ExpressionVariable::ReceivedFromIp, b"received_via_port" => ExpressionVariable::ReceivedViaPort, b"recipients" => ExpressionVariable::Recipients, b"remote_ip" => ExpressionVariable::RemoteIp, b"remote_ip.ptr" => ExpressionVariable::RemoteIpPtr, b"remote_port" => ExpressionVariable::RemotePort, b"reply_to" => ExpressionVariable::ReplyTo, b"reply_to.domain" => ExpressionVariable::ReplyToDomain, b"reply_to.local" => ExpressionVariable::ReplyToLocal, b"reply_to.name" => ExpressionVariable::ReplyToName, b"retry_num" => ExpressionVariable::RetryNum, b"reverse_ip" => ExpressionVariable::ReverseIp, b"scheme" => ExpressionVariable::Scheme, b"sender" => ExpressionVariable::Sender, b"sender_domain" => ExpressionVariable::SenderDomain, b"size" => ExpressionVariable::Size, b"sld" => ExpressionVariable::Sld, b"source" => ExpressionVariable::Source, b"subject" => ExpressionVariable::Subject, b"subject.thread" => ExpressionVariable::SubjectThread, b"subject.words" => ExpressionVariable::SubjectWords, b"to" => ExpressionVariable::To, b"to.domain" => ExpressionVariable::ToDomain, b"to.local" => ExpressionVariable::ToLocal, b"to.name" => ExpressionVariable::ToName, b"url" => ExpressionVariable::Url, b"url_original" => ExpressionVariable::UrlOriginal, b"value" => ExpressionVariable::Value, b"value_lower" => ExpressionVariable::ValueLower, } .copied() } fn as_str(&self) -> &'static str { match self { ExpressionVariable::Asn => "asn", ExpressionVariable::Attributes => "attributes", ExpressionVariable::AuthenticatedAs => "authenticated_as", ExpressionVariable::Authority => "authority", ExpressionVariable::Bcc => "bcc", ExpressionVariable::BccDomain => "bcc.domain", ExpressionVariable::BccLocal => "bcc.local", ExpressionVariable::BccName => "bcc.name", ExpressionVariable::Body => "body", ExpressionVariable::BodyHtml => "body.html", ExpressionVariable::BodyRaw => "body.raw", ExpressionVariable::BodyText => "body.text", ExpressionVariable::BodyWords => "body.words", ExpressionVariable::Cc => "cc", ExpressionVariable::CcDomain => "cc.domain", ExpressionVariable::CcLocal => "cc.local", ExpressionVariable::CcName => "cc.name", ExpressionVariable::Country => "country", ExpressionVariable::Domain => "domain", ExpressionVariable::Email => "email", ExpressionVariable::EmailLower => "email_lower", ExpressionVariable::EnvFrom => "env_from", ExpressionVariable::EnvFromDomain => "env_from.domain", ExpressionVariable::EnvFromLocal => "env_from.local", ExpressionVariable::EnvTo => "env_to", ExpressionVariable::ExpiresIn => "expires_in", ExpressionVariable::From => "from", ExpressionVariable::FromDomain => "from.domain", ExpressionVariable::FromLocal => "from.local", ExpressionVariable::FromName => "from.name", ExpressionVariable::Headers => "headers", ExpressionVariable::HeloDomain => "helo_domain", ExpressionVariable::Host => "host", ExpressionVariable::Ip => "ip", ExpressionVariable::IpReverse => "ip_reverse", ExpressionVariable::IsTls => "is_tls", ExpressionVariable::IsV4 => "is_v4", ExpressionVariable::IsV6 => "is_v6", ExpressionVariable::LastError => "last_error", ExpressionVariable::LastStatus => "last_status", ExpressionVariable::Listener => "listener", ExpressionVariable::Local => "local", ExpressionVariable::LocalIp => "local_ip", ExpressionVariable::LocalPort => "local_port", ExpressionVariable::Location => "location", ExpressionVariable::Method => "method", ExpressionVariable::Mx => "mx", ExpressionVariable::Name => "name", ExpressionVariable::NameLower => "name_lower", ExpressionVariable::NotifyNum => "notify_num", ExpressionVariable::Octets => "octets", ExpressionVariable::Path => "path", ExpressionVariable::PathQuery => "path_query", ExpressionVariable::Port => "port", ExpressionVariable::Priority => "priority", ExpressionVariable::Protocol => "protocol", ExpressionVariable::Query => "query", ExpressionVariable::QueueAge => "queue_age", ExpressionVariable::QueueName => "queue_name", ExpressionVariable::Raw => "raw", ExpressionVariable::RawLower => "raw_lower", ExpressionVariable::Rcpt => "rcpt", ExpressionVariable::RcptDomain => "rcpt_domain", ExpressionVariable::ReceivedFromIp => "received_from_ip", ExpressionVariable::ReceivedViaPort => "received_via_port", ExpressionVariable::Recipients => "recipients", ExpressionVariable::RemoteIp => "remote_ip", ExpressionVariable::RemoteIpPtr => "remote_ip.ptr", ExpressionVariable::RemotePort => "remote_port", ExpressionVariable::ReplyTo => "reply_to", ExpressionVariable::ReplyToDomain => "reply_to.domain", ExpressionVariable::ReplyToLocal => "reply_to.local", ExpressionVariable::ReplyToName => "reply_to.name", ExpressionVariable::RetryNum => "retry_num", ExpressionVariable::ReverseIp => "reverse_ip", ExpressionVariable::Scheme => "scheme", ExpressionVariable::Sender => "sender", ExpressionVariable::SenderDomain => "sender_domain", ExpressionVariable::Size => "size", ExpressionVariable::Sld => "sld", ExpressionVariable::Source => "source", ExpressionVariable::Subject => "subject", ExpressionVariable::SubjectThread => "subject.thread", ExpressionVariable::SubjectWords => "subject.words", ExpressionVariable::To => "to", ExpressionVariable::ToDomain => "to.domain", ExpressionVariable::ToLocal => "to.local", ExpressionVariable::ToName => "to.name", ExpressionVariable::Url => "url", ExpressionVariable::UrlOriginal => "url_original", ExpressionVariable::Value => "value", ExpressionVariable::ValueLower => "value_lower", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ExpressionVariable::Asn), 1 => Some(ExpressionVariable::Attributes), 2 => Some(ExpressionVariable::AuthenticatedAs), 3 => Some(ExpressionVariable::Authority), 4 => Some(ExpressionVariable::Bcc), 5 => Some(ExpressionVariable::BccDomain), 6 => Some(ExpressionVariable::BccLocal), 7 => Some(ExpressionVariable::BccName), 8 => Some(ExpressionVariable::Body), 9 => Some(ExpressionVariable::BodyHtml), 10 => Some(ExpressionVariable::BodyRaw), 11 => Some(ExpressionVariable::BodyText), 12 => Some(ExpressionVariable::BodyWords), 13 => Some(ExpressionVariable::Cc), 14 => Some(ExpressionVariable::CcDomain), 15 => Some(ExpressionVariable::CcLocal), 16 => Some(ExpressionVariable::CcName), 17 => Some(ExpressionVariable::Country), 18 => Some(ExpressionVariable::Domain), 19 => Some(ExpressionVariable::Email), 20 => Some(ExpressionVariable::EmailLower), 21 => Some(ExpressionVariable::EnvFrom), 22 => Some(ExpressionVariable::EnvFromDomain), 23 => Some(ExpressionVariable::EnvFromLocal), 24 => Some(ExpressionVariable::EnvTo), 25 => Some(ExpressionVariable::ExpiresIn), 26 => Some(ExpressionVariable::From), 27 => Some(ExpressionVariable::FromDomain), 28 => Some(ExpressionVariable::FromLocal), 29 => Some(ExpressionVariable::FromName), 30 => Some(ExpressionVariable::Headers), 31 => Some(ExpressionVariable::HeloDomain), 32 => Some(ExpressionVariable::Host), 33 => Some(ExpressionVariable::Ip), 34 => Some(ExpressionVariable::IpReverse), 35 => Some(ExpressionVariable::IsTls), 36 => Some(ExpressionVariable::IsV4), 37 => Some(ExpressionVariable::IsV6), 38 => Some(ExpressionVariable::LastError), 39 => Some(ExpressionVariable::LastStatus), 40 => Some(ExpressionVariable::Listener), 41 => Some(ExpressionVariable::Local), 42 => Some(ExpressionVariable::LocalIp), 43 => Some(ExpressionVariable::LocalPort), 44 => Some(ExpressionVariable::Location), 45 => Some(ExpressionVariable::Method), 46 => Some(ExpressionVariable::Mx), 47 => Some(ExpressionVariable::Name), 48 => Some(ExpressionVariable::NameLower), 49 => Some(ExpressionVariable::NotifyNum), 50 => Some(ExpressionVariable::Octets), 51 => Some(ExpressionVariable::Path), 52 => Some(ExpressionVariable::PathQuery), 53 => Some(ExpressionVariable::Port), 54 => Some(ExpressionVariable::Priority), 55 => Some(ExpressionVariable::Protocol), 56 => Some(ExpressionVariable::Query), 57 => Some(ExpressionVariable::QueueAge), 58 => Some(ExpressionVariable::QueueName), 59 => Some(ExpressionVariable::Raw), 60 => Some(ExpressionVariable::RawLower), 61 => Some(ExpressionVariable::Rcpt), 62 => Some(ExpressionVariable::RcptDomain), 63 => Some(ExpressionVariable::ReceivedFromIp), 64 => Some(ExpressionVariable::ReceivedViaPort), 65 => Some(ExpressionVariable::Recipients), 66 => Some(ExpressionVariable::RemoteIp), 67 => Some(ExpressionVariable::RemoteIpPtr), 68 => Some(ExpressionVariable::RemotePort), 69 => Some(ExpressionVariable::ReplyTo), 70 => Some(ExpressionVariable::ReplyToDomain), 71 => Some(ExpressionVariable::ReplyToLocal), 72 => Some(ExpressionVariable::ReplyToName), 73 => Some(ExpressionVariable::RetryNum), 74 => Some(ExpressionVariable::ReverseIp), 75 => Some(ExpressionVariable::Scheme), 76 => Some(ExpressionVariable::Sender), 77 => Some(ExpressionVariable::SenderDomain), 78 => Some(ExpressionVariable::Size), 79 => Some(ExpressionVariable::Sld), 80 => Some(ExpressionVariable::Source), 81 => Some(ExpressionVariable::Subject), 82 => Some(ExpressionVariable::SubjectThread), 83 => Some(ExpressionVariable::SubjectWords), 84 => Some(ExpressionVariable::To), 85 => Some(ExpressionVariable::ToDomain), 86 => Some(ExpressionVariable::ToLocal), 87 => Some(ExpressionVariable::ToName), 88 => Some(ExpressionVariable::Url), 89 => Some(ExpressionVariable::UrlOriginal), 90 => Some(ExpressionVariable::Value), 91 => Some(ExpressionVariable::ValueLower), _ => None, } } const COUNT: usize = 92; } impl serde::Serialize for ExpressionVariable { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ExpressionVariable { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for FailureReportingOption { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"all" => FailureReportingOption::All, b"any" => FailureReportingOption::Any, b"dkimFailure" => FailureReportingOption::DkimFailure, b"spfFailure" => FailureReportingOption::SpfFailure, } } fn as_str(&self) -> &'static str { match self { FailureReportingOption::All => "all", FailureReportingOption::Any => "any", FailureReportingOption::DkimFailure => "dkimFailure", FailureReportingOption::SpfFailure => "spfFailure", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(FailureReportingOption::All), 1 => Some(FailureReportingOption::Any), 2 => Some(FailureReportingOption::DkimFailure), 3 => Some(FailureReportingOption::SpfFailure), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for FailureReportingOption { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for FailureReportingOption { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for HttpAuthType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Unauthenticated" => HttpAuthType::Unauthenticated, b"Basic" => HttpAuthType::Basic, b"Bearer" => HttpAuthType::Bearer, } } fn as_str(&self) -> &'static str { match self { HttpAuthType::Unauthenticated => "Unauthenticated", HttpAuthType::Basic => "Basic", HttpAuthType::Bearer => "Bearer", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(HttpAuthType::Unauthenticated), 1 => Some(HttpAuthType::Basic), 2 => Some(HttpAuthType::Bearer), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for HttpAuthType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for HttpAuthType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for HttpLookupFormatType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Csv" => HttpLookupFormatType::Csv, b"List" => HttpLookupFormatType::List, } } fn as_str(&self) -> &'static str { match self { HttpLookupFormatType::Csv => "Csv", HttpLookupFormatType::List => "List", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(HttpLookupFormatType::Csv), 1 => Some(HttpLookupFormatType::List), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for HttpLookupFormatType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for HttpLookupFormatType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for InMemoryStoreBaseType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Redis" => InMemoryStoreBaseType::Redis, b"RedisCluster" => InMemoryStoreBaseType::RedisCluster, b"RedisSentinel" => InMemoryStoreBaseType::RedisSentinel, } } fn as_str(&self) -> &'static str { match self { InMemoryStoreBaseType::Redis => "Redis", InMemoryStoreBaseType::RedisCluster => "RedisCluster", InMemoryStoreBaseType::RedisSentinel => "RedisSentinel", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(InMemoryStoreBaseType::Redis), 1 => Some(InMemoryStoreBaseType::RedisCluster), 2 => Some(InMemoryStoreBaseType::RedisSentinel), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for InMemoryStoreBaseType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for InMemoryStoreBaseType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for InMemoryStoreType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Default" => InMemoryStoreType::Default, b"Sharded" => InMemoryStoreType::Sharded, b"Redis" => InMemoryStoreType::Redis, b"RedisCluster" => InMemoryStoreType::RedisCluster, b"RedisSentinel" => InMemoryStoreType::RedisSentinel, } } fn as_str(&self) -> &'static str { match self { InMemoryStoreType::Default => "Default", InMemoryStoreType::Sharded => "Sharded", InMemoryStoreType::Redis => "Redis", InMemoryStoreType::RedisCluster => "RedisCluster", InMemoryStoreType::RedisSentinel => "RedisSentinel", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(InMemoryStoreType::Default), 1 => Some(InMemoryStoreType::Sharded), 2 => Some(InMemoryStoreType::Redis), 3 => Some(InMemoryStoreType::RedisCluster), 4 => Some(InMemoryStoreType::RedisSentinel), _ => None, } } const COUNT: usize = 5; } impl serde::Serialize for InMemoryStoreType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for InMemoryStoreType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for IndexDocumentType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"email" => IndexDocumentType::Email, b"calendar" => IndexDocumentType::Calendar, b"contacts" => IndexDocumentType::Contacts, b"file" => IndexDocumentType::File, } } fn as_str(&self) -> &'static str { match self { IndexDocumentType::Email => "email", IndexDocumentType::Calendar => "calendar", IndexDocumentType::Contacts => "contacts", IndexDocumentType::File => "file", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(IndexDocumentType::Email), 1 => Some(IndexDocumentType::Calendar), 2 => Some(IndexDocumentType::Contacts), 3 => Some(IndexDocumentType::File), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for IndexDocumentType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for IndexDocumentType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for IpProtocol { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"udp" => IpProtocol::Udp, b"tcp" => IpProtocol::Tcp, } } fn as_str(&self) -> &'static str { match self { IpProtocol::Udp => "udp", IpProtocol::Tcp => "tcp", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(IpProtocol::Udp), 1 => Some(IpProtocol::Tcp), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for IpProtocol { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for IpProtocol { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for JokerAuthType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"ApiKey" => JokerAuthType::ApiKey, b"UsernamePassword" => JokerAuthType::UsernamePassword, } } fn as_str(&self) -> &'static str { match self { JokerAuthType::ApiKey => "ApiKey", JokerAuthType::UsernamePassword => "UsernamePassword", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(JokerAuthType::ApiKey), 1 => Some(JokerAuthType::UsernamePassword), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for JokerAuthType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for JokerAuthType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for JwtSignatureAlgorithm { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"es256" => JwtSignatureAlgorithm::Es256, b"es384" => JwtSignatureAlgorithm::Es384, b"ps256" => JwtSignatureAlgorithm::Ps256, b"ps384" => JwtSignatureAlgorithm::Ps384, b"ps512" => JwtSignatureAlgorithm::Ps512, b"rs256" => JwtSignatureAlgorithm::Rs256, b"rs384" => JwtSignatureAlgorithm::Rs384, b"rs512" => JwtSignatureAlgorithm::Rs512, b"hs256" => JwtSignatureAlgorithm::Hs256, b"hs384" => JwtSignatureAlgorithm::Hs384, b"hs512" => JwtSignatureAlgorithm::Hs512, } } fn as_str(&self) -> &'static str { match self { JwtSignatureAlgorithm::Es256 => "es256", JwtSignatureAlgorithm::Es384 => "es384", JwtSignatureAlgorithm::Ps256 => "ps256", JwtSignatureAlgorithm::Ps384 => "ps384", JwtSignatureAlgorithm::Ps512 => "ps512", JwtSignatureAlgorithm::Rs256 => "rs256", JwtSignatureAlgorithm::Rs384 => "rs384", JwtSignatureAlgorithm::Rs512 => "rs512", JwtSignatureAlgorithm::Hs256 => "hs256", JwtSignatureAlgorithm::Hs384 => "hs384", JwtSignatureAlgorithm::Hs512 => "hs512", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(JwtSignatureAlgorithm::Es256), 1 => Some(JwtSignatureAlgorithm::Es384), 2 => Some(JwtSignatureAlgorithm::Ps256), 3 => Some(JwtSignatureAlgorithm::Ps384), 4 => Some(JwtSignatureAlgorithm::Ps512), 5 => Some(JwtSignatureAlgorithm::Rs256), 6 => Some(JwtSignatureAlgorithm::Rs384), 7 => Some(JwtSignatureAlgorithm::Rs512), 8 => Some(JwtSignatureAlgorithm::Hs256), 9 => Some(JwtSignatureAlgorithm::Hs384), 10 => Some(JwtSignatureAlgorithm::Hs512), _ => None, } } const COUNT: usize = 11; } impl serde::Serialize for JwtSignatureAlgorithm { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for JwtSignatureAlgorithm { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for Locale { fn parse(value: &str) -> Option { hashify::map! { value.as_bytes(), Locale, b"en-US" => Locale::EnUS, b"aa-DJ" => Locale::AaDJ, b"aa-ER" => Locale::AaER, b"ssy-ER" => Locale::SsyER, b"aa-ET" => Locale::AaET, b"af-ZA" => Locale::AfZA, b"agr-PE" => Locale::AgrPE, b"ak-GH" => Locale::AkGH, b"am-ET" => Locale::AmET, b"an-ES" => Locale::AnES, b"anp-IN" => Locale::AnpIN, b"ar-AE" => Locale::ArAE, b"ar-BH" => Locale::ArBH, b"ar-DZ" => Locale::ArDZ, b"ar-EG" => Locale::ArEG, b"ar-IN" => Locale::ArIN, b"ar-IQ" => Locale::ArIQ, b"ar-JO" => Locale::ArJO, b"ar-KW" => Locale::ArKW, b"ar-LB" => Locale::ArLB, b"ar-LY" => Locale::ArLY, b"ar-MA" => Locale::ArMA, b"ar-OM" => Locale::ArOM, b"ar-QA" => Locale::ArQA, b"ar-SA" => Locale::ArSA, b"ar-SD" => Locale::ArSD, b"ar-SS" => Locale::ArSS, b"ar-SY" => Locale::ArSY, b"ar-TN" => Locale::ArTN, b"ar-YE" => Locale::ArYE, b"as-IN" => Locale::AsIN, b"ast-ES" => Locale::AstES, b"ayc-PE" => Locale::AycPE, b"az-AZ" => Locale::AzAZ, b"az-IR" => Locale::AzIR, b"be-BY" => Locale::BeBY, b"be-Latn-BY" => Locale::BeLatnBY, b"bem-ZM" => Locale::BemZM, b"ber-DZ" => Locale::BerDZ, b"ber-MA" => Locale::BerMA, b"bg-BG" => Locale::BgBG, b"bhb-IN" => Locale::BhbIN, b"bho-IN" => Locale::BhoIN, b"bho-NP" => Locale::BhoNP, b"bi-VU" => Locale::BiVU, b"bn-BD" => Locale::BnBD, b"bn-IN" => Locale::BnIN, b"bo-CN" => Locale::BoCN, b"bo-IN" => Locale::BoIN, b"br-FR" => Locale::BrFR, b"es-419" => Locale::Es419, b"brx-IN" => Locale::BrxIN, b"bs-BA" => Locale::BsBA, b"byn-ER" => Locale::BynER, b"ca-AD" => Locale::CaAD, b"ca-ES" => Locale::CaES, b"en-150" => Locale::En150, b"ca-ES-valencia" => Locale::CaESValencia, b"ca-FR" => Locale::CaFR, b"ca-IT" => Locale::CaIT, b"ce-RU" => Locale::CeRU, b"chr-US" => Locale::ChrUS, b"cmn-TW" => Locale::CmnTW, b"crh-UA" => Locale::CrhUA, b"cs-CZ" => Locale::CsCZ, b"csb-PL" => Locale::CsbPL, b"cv-RU" => Locale::CvRU, b"cy-GB" => Locale::CyGB, b"da-DK" => Locale::DaDK, b"de-AT" => Locale::DeAT, b"de-BE" => Locale::DeBE, b"en-001" => Locale::En001, b"de-CH" => Locale::DeCH, b"de-DE" => Locale::DeDE, b"de-IT" => Locale::DeIT, b"de-LI" => Locale::DeLI, b"de-LU" => Locale::DeLU, b"ar-001" => Locale::Ar001, b"doi-IN" => Locale::DoiIN, b"dsb-DE" => Locale::DsbDE, b"dv-MV" => Locale::DvMV, b"dz-BT" => Locale::DzBT, b"el-CY" => Locale::ElCY, b"el-GR" => Locale::ElGR, b"en-AG" => Locale::EnAG, b"en-AU" => Locale::EnAU, b"en-BW" => Locale::EnBW, b"en-CA" => Locale::EnCA, b"en-DK" => Locale::EnDK, b"en-GB" => Locale::EnGB, b"en-HK" => Locale::EnHK, b"en-IE" => Locale::EnIE, b"en-IL" => Locale::EnIL, b"en-IN" => Locale::EnIN, b"en-NG" => Locale::EnNG, b"en-NZ" => Locale::EnNZ, b"en-PH" => Locale::EnPH, b"en-SC" => Locale::EnSC, b"en-SG" => Locale::EnSG, b"en-ZA" => Locale::EnZA, b"en-ZM" => Locale::EnZM, b"en-ZW" => Locale::EnZW, b"eo" => Locale::Eo, b"es-AR" => Locale::EsAR, b"es-BO" => Locale::EsBO, b"es-CL" => Locale::EsCL, b"es-CO" => Locale::EsCO, b"es-CR" => Locale::EsCR, b"es-CU" => Locale::EsCU, b"es-DO" => Locale::EsDO, b"es-EC" => Locale::EsEC, b"es-ES" => Locale::EsES, b"es-GT" => Locale::EsGT, b"es-HN" => Locale::EsHN, b"es-MX" => Locale::EsMX, b"es-NI" => Locale::EsNI, b"es-PA" => Locale::EsPA, b"es-PE" => Locale::EsPE, b"es-PR" => Locale::EsPR, b"es-PY" => Locale::EsPY, b"es-SV" => Locale::EsSV, b"es-US" => Locale::EsUS, b"es-UY" => Locale::EsUY, b"es-VE" => Locale::EsVE, b"et-EE" => Locale::EtEE, b"eu-ES" => Locale::EuES, b"zh-Hans" => Locale::ZhHans, b"fa-IR" => Locale::FaIR, b"ff-SN" => Locale::FfSN, b"fi-FI" => Locale::FiFI, b"fil-PH" => Locale::FilPH, b"fo-FO" => Locale::FoFO, b"fr-BE" => Locale::FrBE, b"fr-CA" => Locale::FrCA, b"fr-CH" => Locale::FrCH, b"fr-FR" => Locale::FrFR, b"fr-LU" => Locale::FrLU, b"zh-Hant" => Locale::ZhHant, b"fur-IT" => Locale::FurIT, b"fy-DE" => Locale::FyDE, b"fy-NL" => Locale::FyNL, b"ga-IE" => Locale::GaIE, b"zh-Hant-HK" => Locale::ZhHantHK, b"gd-GB" => Locale::GdGB, b"gez-ER" => Locale::GezER, b"sr-Latn-BA" => Locale::SrLatnBA, b"gez-ET" => Locale::GezET, b"sr-Latn-ME" => Locale::SrLatnME, b"gl-ES" => Locale::GlES, b"az-Latn-AZ" => Locale::AzLatnAZ, b"gu-IN" => Locale::GuIN, b"gv-GB" => Locale::GvGB, b"ha-NG" => Locale::HaNG, b"hak-TW" => Locale::HakTW, b"he-IL" => Locale::HeIL, b"hi-IN" => Locale::HiIN, b"hif-FJ" => Locale::HifFJ, b"hne-IN" => Locale::HneIN, b"hr-HR" => Locale::HrHR, b"hsb-DE" => Locale::HsbDE, b"ht-HT" => Locale::HtHT, b"hu-HU" => Locale::HuHU, b"hy-AM" => Locale::HyAM, b"ia-FR" => Locale::IaFR, b"id-ID" => Locale::IdID, b"ig-NG" => Locale::IgNG, b"ik-CA" => Locale::IkCA, b"is-IS" => Locale::IsIS, b"it-CH" => Locale::ItCH, b"it-IT" => Locale::ItIT, b"iu-CA" => Locale::IuCA, b"ja-JP" => Locale::JaJP, b"ka-GE" => Locale::KaGE, b"kab-DZ" => Locale::KabDZ, b"kk-KZ" => Locale::KkKZ, b"kl-GL" => Locale::KlGL, b"km-KH" => Locale::KmKH, b"kn-IN" => Locale::KnIN, b"ko-KR" => Locale::KoKR, b"kok-IN" => Locale::KokIN, b"ks-IN" => Locale::KsIN, b"ks-Deva-IN" => Locale::KsDevaIN, b"ku-TR" => Locale::KuTR, b"kw-GB" => Locale::KwGB, b"ky-KG" => Locale::KyKG, b"lb-LU" => Locale::LbLU, b"lg-UG" => Locale::LgUG, b"li-BE" => Locale::LiBE, b"li-NL" => Locale::LiNL, b"lij-IT" => Locale::LijIT, b"ln-CD" => Locale::LnCD, b"lo-LA" => Locale::LoLA, b"lt-LT" => Locale::LtLT, b"lv-LV" => Locale::LvLV, b"lzh-TW" => Locale::LzhTW, b"mag-IN" => Locale::MagIN, b"mai-IN" => Locale::MaiIN, b"mai-NP" => Locale::MaiNP, b"mfe-MU" => Locale::MfeMU, b"mg-MG" => Locale::MgMG, b"mhr-RU" => Locale::MhrRU, b"mi-NZ" => Locale::MiNZ, b"miq-NI" => Locale::MiqNI, b"mjw-IN" => Locale::MjwIN, b"mk-MK" => Locale::MkMK, b"ml-IN" => Locale::MlIN, b"mn-MN" => Locale::MnMN, b"mni-IN" => Locale::MniIN, b"mnw-MM" => Locale::MnwMM, b"mr-IN" => Locale::MrIN, b"ms-MY" => Locale::MsMY, b"mt-MT" => Locale::MtMT, b"my-MM" => Locale::MyMM, b"nan-TW" => Locale::NanTW, b"nan-Latn-TW" => Locale::NanLatnTW, b"nb-NO" => Locale::NbNO, b"nds-DE" => Locale::NdsDE, b"nds-NL" => Locale::NdsNL, b"ne-NP" => Locale::NeNP, b"nhn-MX" => Locale::NhnMX, b"niu-NU" => Locale::NiuNU, b"niu-NZ" => Locale::NiuNZ, b"nl-AW" => Locale::NlAW, b"nl-BE" => Locale::NlBE, b"nl-NL" => Locale::NlNL, b"nn-NO" => Locale::NnNO, b"nr-ZA" => Locale::NrZA, b"nso-ZA" => Locale::NsoZA, b"oc-FR" => Locale::OcFR, b"om-ET" => Locale::OmET, b"om-KE" => Locale::OmKE, b"or-IN" => Locale::OrIN, b"os-RU" => Locale::OsRU, b"pa-IN" => Locale::PaIN, b"pa-PK" => Locale::PaPK, b"pap-AW" => Locale::PapAW, b"pap-CW" => Locale::PapCW, b"pl-PL" => Locale::PlPL, b"ps-AF" => Locale::PsAF, b"pt-BR" => Locale::PtBR, b"pt-PT" => Locale::PtPT, b"quz-PE" => Locale::QuzPE, b"raj-IN" => Locale::RajIN, b"ro-RO" => Locale::RoRO, b"ru-RU" => Locale::RuRU, b"ru-UA" => Locale::RuUA, b"rw-RW" => Locale::RwRW, b"sa-IN" => Locale::SaIN, b"sah-RU" => Locale::SahRU, b"sat-IN" => Locale::SatIN, b"sc-IT" => Locale::ScIT, b"sd-IN" => Locale::SdIN, b"sd-Deva-IN" => Locale::SdDevaIN, b"se-NO" => Locale::SeNO, b"sgs-LT" => Locale::SgsLT, b"shn-MM" => Locale::ShnMM, b"shs-CA" => Locale::ShsCA, b"si-LK" => Locale::SiLK, b"sid-ET" => Locale::SidET, b"sk-SK" => Locale::SkSK, b"sl-SI" => Locale::SlSI, b"sm-WS" => Locale::SmWS, b"so-DJ" => Locale::SoDJ, b"so-ET" => Locale::SoET, b"so-KE" => Locale::SoKE, b"so-SO" => Locale::SoSO, b"sq-AL" => Locale::SqAL, b"sq-MK" => Locale::SqMK, b"sr-ME" => Locale::SrME, b"sr-RS" => Locale::SrRS, b"sr-Latn-RS" => Locale::SrLatnRS, b"ss-ZA" => Locale::SsZA, b"st-ZA" => Locale::StZA, b"sv-FI" => Locale::SvFI, b"sv-SE" => Locale::SvSE, b"sw-KE" => Locale::SwKE, b"sw-TZ" => Locale::SwTZ, b"szl-PL" => Locale::SzlPL, b"ta-IN" => Locale::TaIN, b"ta-LK" => Locale::TaLK, b"tcy-IN" => Locale::TcyIN, b"te-IN" => Locale::TeIN, b"tg-TJ" => Locale::TgTJ, b"th-TH" => Locale::ThTH, b"the-NP" => Locale::TheNP, b"ti-ER" => Locale::TiER, b"ti-ET" => Locale::TiET, b"tig-ER" => Locale::TigER, b"tk-TM" => Locale::TkTM, b"tl-PH" => Locale::TlPH, b"tn-ZA" => Locale::TnZA, b"to-TO" => Locale::ToTO, b"tpi-PG" => Locale::TpiPG, b"tr-CY" => Locale::TrCY, b"tr-TR" => Locale::TrTR, b"ts-ZA" => Locale::TsZA, b"tt-RU" => Locale::TtRU, b"tt-Latn-RU" => Locale::TtLatnRU, b"ug-CN" => Locale::UgCN, b"uk-UA" => Locale::UkUA, b"unm-US" => Locale::UnmUS, b"ur-IN" => Locale::UrIN, b"ur-PK" => Locale::UrPK, b"uz-UZ" => Locale::UzUZ, b"uz-Cyrl-UZ" => Locale::UzCyrlUZ, b"ve-ZA" => Locale::VeZA, b"vi-VN" => Locale::ViVN, b"wa-BE" => Locale::WaBE, b"uz-Latn-UZ" => Locale::UzLatnUZ, b"wae-CH" => Locale::WaeCH, b"wal-ET" => Locale::WalET, b"wo-SN" => Locale::WoSN, b"xh-ZA" => Locale::XhZA, b"yi-US" => Locale::YiUS, b"yo-NG" => Locale::YoNG, b"yue-HK" => Locale::YueHK, b"yuw-PG" => Locale::YuwPG, b"zh-CN" => Locale::ZhCN, b"zh-HK" => Locale::ZhHK, b"zh-SG" => Locale::ZhSG, b"zh-TW" => Locale::ZhTW, b"zu-ZA" => Locale::ZuZA, } .copied() } fn as_str(&self) -> &'static str { match self { Locale::EnUS => "en-US", Locale::AaDJ => "aa-DJ", Locale::AaER => "aa-ER", Locale::SsyER => "ssy-ER", Locale::AaET => "aa-ET", Locale::AfZA => "af-ZA", Locale::AgrPE => "agr-PE", Locale::AkGH => "ak-GH", Locale::AmET => "am-ET", Locale::AnES => "an-ES", Locale::AnpIN => "anp-IN", Locale::ArAE => "ar-AE", Locale::ArBH => "ar-BH", Locale::ArDZ => "ar-DZ", Locale::ArEG => "ar-EG", Locale::ArIN => "ar-IN", Locale::ArIQ => "ar-IQ", Locale::ArJO => "ar-JO", Locale::ArKW => "ar-KW", Locale::ArLB => "ar-LB", Locale::ArLY => "ar-LY", Locale::ArMA => "ar-MA", Locale::ArOM => "ar-OM", Locale::ArQA => "ar-QA", Locale::ArSA => "ar-SA", Locale::ArSD => "ar-SD", Locale::ArSS => "ar-SS", Locale::ArSY => "ar-SY", Locale::ArTN => "ar-TN", Locale::ArYE => "ar-YE", Locale::AsIN => "as-IN", Locale::AstES => "ast-ES", Locale::AycPE => "ayc-PE", Locale::AzAZ => "az-AZ", Locale::AzIR => "az-IR", Locale::BeBY => "be-BY", Locale::BeLatnBY => "be-Latn-BY", Locale::BemZM => "bem-ZM", Locale::BerDZ => "ber-DZ", Locale::BerMA => "ber-MA", Locale::BgBG => "bg-BG", Locale::BhbIN => "bhb-IN", Locale::BhoIN => "bho-IN", Locale::BhoNP => "bho-NP", Locale::BiVU => "bi-VU", Locale::BnBD => "bn-BD", Locale::BnIN => "bn-IN", Locale::BoCN => "bo-CN", Locale::BoIN => "bo-IN", Locale::BrFR => "br-FR", Locale::Es419 => "es-419", Locale::BrxIN => "brx-IN", Locale::BsBA => "bs-BA", Locale::BynER => "byn-ER", Locale::CaAD => "ca-AD", Locale::CaES => "ca-ES", Locale::En150 => "en-150", Locale::CaESValencia => "ca-ES-valencia", Locale::CaFR => "ca-FR", Locale::CaIT => "ca-IT", Locale::CeRU => "ce-RU", Locale::ChrUS => "chr-US", Locale::CmnTW => "cmn-TW", Locale::CrhUA => "crh-UA", Locale::CsCZ => "cs-CZ", Locale::CsbPL => "csb-PL", Locale::CvRU => "cv-RU", Locale::CyGB => "cy-GB", Locale::DaDK => "da-DK", Locale::DeAT => "de-AT", Locale::DeBE => "de-BE", Locale::En001 => "en-001", Locale::DeCH => "de-CH", Locale::DeDE => "de-DE", Locale::DeIT => "de-IT", Locale::DeLI => "de-LI", Locale::DeLU => "de-LU", Locale::Ar001 => "ar-001", Locale::DoiIN => "doi-IN", Locale::DsbDE => "dsb-DE", Locale::DvMV => "dv-MV", Locale::DzBT => "dz-BT", Locale::ElCY => "el-CY", Locale::ElGR => "el-GR", Locale::EnAG => "en-AG", Locale::EnAU => "en-AU", Locale::EnBW => "en-BW", Locale::EnCA => "en-CA", Locale::EnDK => "en-DK", Locale::EnGB => "en-GB", Locale::EnHK => "en-HK", Locale::EnIE => "en-IE", Locale::EnIL => "en-IL", Locale::EnIN => "en-IN", Locale::EnNG => "en-NG", Locale::EnNZ => "en-NZ", Locale::EnPH => "en-PH", Locale::EnSC => "en-SC", Locale::EnSG => "en-SG", Locale::EnZA => "en-ZA", Locale::EnZM => "en-ZM", Locale::EnZW => "en-ZW", Locale::Eo => "eo", Locale::EsAR => "es-AR", Locale::EsBO => "es-BO", Locale::EsCL => "es-CL", Locale::EsCO => "es-CO", Locale::EsCR => "es-CR", Locale::EsCU => "es-CU", Locale::EsDO => "es-DO", Locale::EsEC => "es-EC", Locale::EsES => "es-ES", Locale::EsGT => "es-GT", Locale::EsHN => "es-HN", Locale::EsMX => "es-MX", Locale::EsNI => "es-NI", Locale::EsPA => "es-PA", Locale::EsPE => "es-PE", Locale::EsPR => "es-PR", Locale::EsPY => "es-PY", Locale::EsSV => "es-SV", Locale::EsUS => "es-US", Locale::EsUY => "es-UY", Locale::EsVE => "es-VE", Locale::EtEE => "et-EE", Locale::EuES => "eu-ES", Locale::ZhHans => "zh-Hans", Locale::FaIR => "fa-IR", Locale::FfSN => "ff-SN", Locale::FiFI => "fi-FI", Locale::FilPH => "fil-PH", Locale::FoFO => "fo-FO", Locale::FrBE => "fr-BE", Locale::FrCA => "fr-CA", Locale::FrCH => "fr-CH", Locale::FrFR => "fr-FR", Locale::FrLU => "fr-LU", Locale::ZhHant => "zh-Hant", Locale::FurIT => "fur-IT", Locale::FyDE => "fy-DE", Locale::FyNL => "fy-NL", Locale::GaIE => "ga-IE", Locale::ZhHantHK => "zh-Hant-HK", Locale::GdGB => "gd-GB", Locale::GezER => "gez-ER", Locale::SrLatnBA => "sr-Latn-BA", Locale::GezET => "gez-ET", Locale::SrLatnME => "sr-Latn-ME", Locale::GlES => "gl-ES", Locale::AzLatnAZ => "az-Latn-AZ", Locale::GuIN => "gu-IN", Locale::GvGB => "gv-GB", Locale::HaNG => "ha-NG", Locale::HakTW => "hak-TW", Locale::HeIL => "he-IL", Locale::HiIN => "hi-IN", Locale::HifFJ => "hif-FJ", Locale::HneIN => "hne-IN", Locale::HrHR => "hr-HR", Locale::HsbDE => "hsb-DE", Locale::HtHT => "ht-HT", Locale::HuHU => "hu-HU", Locale::HyAM => "hy-AM", Locale::IaFR => "ia-FR", Locale::IdID => "id-ID", Locale::IgNG => "ig-NG", Locale::IkCA => "ik-CA", Locale::IsIS => "is-IS", Locale::ItCH => "it-CH", Locale::ItIT => "it-IT", Locale::IuCA => "iu-CA", Locale::JaJP => "ja-JP", Locale::KaGE => "ka-GE", Locale::KabDZ => "kab-DZ", Locale::KkKZ => "kk-KZ", Locale::KlGL => "kl-GL", Locale::KmKH => "km-KH", Locale::KnIN => "kn-IN", Locale::KoKR => "ko-KR", Locale::KokIN => "kok-IN", Locale::KsIN => "ks-IN", Locale::KsDevaIN => "ks-Deva-IN", Locale::KuTR => "ku-TR", Locale::KwGB => "kw-GB", Locale::KyKG => "ky-KG", Locale::LbLU => "lb-LU", Locale::LgUG => "lg-UG", Locale::LiBE => "li-BE", Locale::LiNL => "li-NL", Locale::LijIT => "lij-IT", Locale::LnCD => "ln-CD", Locale::LoLA => "lo-LA", Locale::LtLT => "lt-LT", Locale::LvLV => "lv-LV", Locale::LzhTW => "lzh-TW", Locale::MagIN => "mag-IN", Locale::MaiIN => "mai-IN", Locale::MaiNP => "mai-NP", Locale::MfeMU => "mfe-MU", Locale::MgMG => "mg-MG", Locale::MhrRU => "mhr-RU", Locale::MiNZ => "mi-NZ", Locale::MiqNI => "miq-NI", Locale::MjwIN => "mjw-IN", Locale::MkMK => "mk-MK", Locale::MlIN => "ml-IN", Locale::MnMN => "mn-MN", Locale::MniIN => "mni-IN", Locale::MnwMM => "mnw-MM", Locale::MrIN => "mr-IN", Locale::MsMY => "ms-MY", Locale::MtMT => "mt-MT", Locale::MyMM => "my-MM", Locale::NanTW => "nan-TW", Locale::NanLatnTW => "nan-Latn-TW", Locale::NbNO => "nb-NO", Locale::NdsDE => "nds-DE", Locale::NdsNL => "nds-NL", Locale::NeNP => "ne-NP", Locale::NhnMX => "nhn-MX", Locale::NiuNU => "niu-NU", Locale::NiuNZ => "niu-NZ", Locale::NlAW => "nl-AW", Locale::NlBE => "nl-BE", Locale::NlNL => "nl-NL", Locale::NnNO => "nn-NO", Locale::NrZA => "nr-ZA", Locale::NsoZA => "nso-ZA", Locale::OcFR => "oc-FR", Locale::OmET => "om-ET", Locale::OmKE => "om-KE", Locale::OrIN => "or-IN", Locale::OsRU => "os-RU", Locale::PaIN => "pa-IN", Locale::PaPK => "pa-PK", Locale::PapAW => "pap-AW", Locale::PapCW => "pap-CW", Locale::PlPL => "pl-PL", Locale::PsAF => "ps-AF", Locale::PtBR => "pt-BR", Locale::PtPT => "pt-PT", Locale::QuzPE => "quz-PE", Locale::RajIN => "raj-IN", Locale::RoRO => "ro-RO", Locale::RuRU => "ru-RU", Locale::RuUA => "ru-UA", Locale::RwRW => "rw-RW", Locale::SaIN => "sa-IN", Locale::SahRU => "sah-RU", Locale::SatIN => "sat-IN", Locale::ScIT => "sc-IT", Locale::SdIN => "sd-IN", Locale::SdDevaIN => "sd-Deva-IN", Locale::SeNO => "se-NO", Locale::SgsLT => "sgs-LT", Locale::ShnMM => "shn-MM", Locale::ShsCA => "shs-CA", Locale::SiLK => "si-LK", Locale::SidET => "sid-ET", Locale::SkSK => "sk-SK", Locale::SlSI => "sl-SI", Locale::SmWS => "sm-WS", Locale::SoDJ => "so-DJ", Locale::SoET => "so-ET", Locale::SoKE => "so-KE", Locale::SoSO => "so-SO", Locale::SqAL => "sq-AL", Locale::SqMK => "sq-MK", Locale::SrME => "sr-ME", Locale::SrRS => "sr-RS", Locale::SrLatnRS => "sr-Latn-RS", Locale::SsZA => "ss-ZA", Locale::StZA => "st-ZA", Locale::SvFI => "sv-FI", Locale::SvSE => "sv-SE", Locale::SwKE => "sw-KE", Locale::SwTZ => "sw-TZ", Locale::SzlPL => "szl-PL", Locale::TaIN => "ta-IN", Locale::TaLK => "ta-LK", Locale::TcyIN => "tcy-IN", Locale::TeIN => "te-IN", Locale::TgTJ => "tg-TJ", Locale::ThTH => "th-TH", Locale::TheNP => "the-NP", Locale::TiER => "ti-ER", Locale::TiET => "ti-ET", Locale::TigER => "tig-ER", Locale::TkTM => "tk-TM", Locale::TlPH => "tl-PH", Locale::TnZA => "tn-ZA", Locale::ToTO => "to-TO", Locale::TpiPG => "tpi-PG", Locale::TrCY => "tr-CY", Locale::TrTR => "tr-TR", Locale::TsZA => "ts-ZA", Locale::TtRU => "tt-RU", Locale::TtLatnRU => "tt-Latn-RU", Locale::UgCN => "ug-CN", Locale::UkUA => "uk-UA", Locale::UnmUS => "unm-US", Locale::UrIN => "ur-IN", Locale::UrPK => "ur-PK", Locale::UzUZ => "uz-UZ", Locale::UzCyrlUZ => "uz-Cyrl-UZ", Locale::VeZA => "ve-ZA", Locale::ViVN => "vi-VN", Locale::WaBE => "wa-BE", Locale::UzLatnUZ => "uz-Latn-UZ", Locale::WaeCH => "wae-CH", Locale::WalET => "wal-ET", Locale::WoSN => "wo-SN", Locale::XhZA => "xh-ZA", Locale::YiUS => "yi-US", Locale::YoNG => "yo-NG", Locale::YueHK => "yue-HK", Locale::YuwPG => "yuw-PG", Locale::ZhCN => "zh-CN", Locale::ZhHK => "zh-HK", Locale::ZhSG => "zh-SG", Locale::ZhTW => "zh-TW", Locale::ZuZA => "zu-ZA", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(Locale::EnUS), 1 => Some(Locale::AaDJ), 2 => Some(Locale::AaER), 3 => Some(Locale::SsyER), 4 => Some(Locale::AaET), 5 => Some(Locale::AfZA), 6 => Some(Locale::AgrPE), 7 => Some(Locale::AkGH), 8 => Some(Locale::AmET), 9 => Some(Locale::AnES), 10 => Some(Locale::AnpIN), 11 => Some(Locale::ArAE), 12 => Some(Locale::ArBH), 13 => Some(Locale::ArDZ), 14 => Some(Locale::ArEG), 15 => Some(Locale::ArIN), 16 => Some(Locale::ArIQ), 17 => Some(Locale::ArJO), 18 => Some(Locale::ArKW), 19 => Some(Locale::ArLB), 20 => Some(Locale::ArLY), 21 => Some(Locale::ArMA), 22 => Some(Locale::ArOM), 23 => Some(Locale::ArQA), 24 => Some(Locale::ArSA), 25 => Some(Locale::ArSD), 26 => Some(Locale::ArSS), 27 => Some(Locale::ArSY), 28 => Some(Locale::ArTN), 29 => Some(Locale::ArYE), 30 => Some(Locale::AsIN), 31 => Some(Locale::AstES), 32 => Some(Locale::AycPE), 33 => Some(Locale::AzAZ), 34 => Some(Locale::AzIR), 35 => Some(Locale::BeBY), 36 => Some(Locale::BeLatnBY), 37 => Some(Locale::BemZM), 38 => Some(Locale::BerDZ), 39 => Some(Locale::BerMA), 40 => Some(Locale::BgBG), 41 => Some(Locale::BhbIN), 42 => Some(Locale::BhoIN), 43 => Some(Locale::BhoNP), 44 => Some(Locale::BiVU), 45 => Some(Locale::BnBD), 46 => Some(Locale::BnIN), 47 => Some(Locale::BoCN), 48 => Some(Locale::BoIN), 49 => Some(Locale::BrFR), 50 => Some(Locale::Es419), 51 => Some(Locale::BrxIN), 52 => Some(Locale::BsBA), 53 => Some(Locale::BynER), 54 => Some(Locale::CaAD), 55 => Some(Locale::CaES), 56 => Some(Locale::En150), 57 => Some(Locale::CaESValencia), 58 => Some(Locale::CaFR), 59 => Some(Locale::CaIT), 60 => Some(Locale::CeRU), 61 => Some(Locale::ChrUS), 62 => Some(Locale::CmnTW), 63 => Some(Locale::CrhUA), 64 => Some(Locale::CsCZ), 65 => Some(Locale::CsbPL), 66 => Some(Locale::CvRU), 67 => Some(Locale::CyGB), 68 => Some(Locale::DaDK), 69 => Some(Locale::DeAT), 71 => Some(Locale::DeBE), 72 => Some(Locale::En001), 73 => Some(Locale::DeCH), 74 => Some(Locale::DeDE), 76 => Some(Locale::DeIT), 77 => Some(Locale::DeLI), 78 => Some(Locale::DeLU), 79 => Some(Locale::Ar001), 80 => Some(Locale::DoiIN), 81 => Some(Locale::DsbDE), 82 => Some(Locale::DvMV), 83 => Some(Locale::DzBT), 84 => Some(Locale::ElCY), 85 => Some(Locale::ElGR), 87 => Some(Locale::EnAG), 88 => Some(Locale::EnAU), 89 => Some(Locale::EnBW), 90 => Some(Locale::EnCA), 91 => Some(Locale::EnDK), 92 => Some(Locale::EnGB), 93 => Some(Locale::EnHK), 94 => Some(Locale::EnIE), 96 => Some(Locale::EnIL), 97 => Some(Locale::EnIN), 98 => Some(Locale::EnNG), 99 => Some(Locale::EnNZ), 100 => Some(Locale::EnPH), 101 => Some(Locale::EnSC), 102 => Some(Locale::EnSG), 104 => Some(Locale::EnZA), 105 => Some(Locale::EnZM), 106 => Some(Locale::EnZW), 107 => Some(Locale::Eo), 108 => Some(Locale::EsAR), 109 => Some(Locale::EsBO), 110 => Some(Locale::EsCL), 111 => Some(Locale::EsCO), 112 => Some(Locale::EsCR), 113 => Some(Locale::EsCU), 114 => Some(Locale::EsDO), 115 => Some(Locale::EsEC), 116 => Some(Locale::EsES), 118 => Some(Locale::EsGT), 119 => Some(Locale::EsHN), 120 => Some(Locale::EsMX), 121 => Some(Locale::EsNI), 122 => Some(Locale::EsPA), 123 => Some(Locale::EsPE), 124 => Some(Locale::EsPR), 125 => Some(Locale::EsPY), 126 => Some(Locale::EsSV), 127 => Some(Locale::EsUS), 128 => Some(Locale::EsUY), 129 => Some(Locale::EsVE), 130 => Some(Locale::EtEE), 131 => Some(Locale::EuES), 132 => Some(Locale::ZhHans), 133 => Some(Locale::FaIR), 134 => Some(Locale::FfSN), 135 => Some(Locale::FiFI), 137 => Some(Locale::FilPH), 138 => Some(Locale::FoFO), 139 => Some(Locale::FrBE), 141 => Some(Locale::FrCA), 142 => Some(Locale::FrCH), 143 => Some(Locale::FrFR), 145 => Some(Locale::FrLU), 146 => Some(Locale::ZhHant), 147 => Some(Locale::FurIT), 148 => Some(Locale::FyDE), 149 => Some(Locale::FyNL), 150 => Some(Locale::GaIE), 151 => Some(Locale::ZhHantHK), 152 => Some(Locale::GdGB), 153 => Some(Locale::GezER), 154 => Some(Locale::SrLatnBA), 155 => Some(Locale::GezET), 156 => Some(Locale::SrLatnME), 157 => Some(Locale::GlES), 158 => Some(Locale::AzLatnAZ), 159 => Some(Locale::GuIN), 160 => Some(Locale::GvGB), 161 => Some(Locale::HaNG), 162 => Some(Locale::HakTW), 163 => Some(Locale::HeIL), 164 => Some(Locale::HiIN), 165 => Some(Locale::HifFJ), 166 => Some(Locale::HneIN), 167 => Some(Locale::HrHR), 168 => Some(Locale::HsbDE), 169 => Some(Locale::HtHT), 170 => Some(Locale::HuHU), 171 => Some(Locale::HyAM), 172 => Some(Locale::IaFR), 173 => Some(Locale::IdID), 174 => Some(Locale::IgNG), 175 => Some(Locale::IkCA), 176 => Some(Locale::IsIS), 177 => Some(Locale::ItCH), 178 => Some(Locale::ItIT), 180 => Some(Locale::IuCA), 181 => Some(Locale::JaJP), 182 => Some(Locale::KaGE), 183 => Some(Locale::KabDZ), 184 => Some(Locale::KkKZ), 185 => Some(Locale::KlGL), 186 => Some(Locale::KmKH), 187 => Some(Locale::KnIN), 188 => Some(Locale::KoKR), 189 => Some(Locale::KokIN), 190 => Some(Locale::KsIN), 191 => Some(Locale::KsDevaIN), 192 => Some(Locale::KuTR), 193 => Some(Locale::KwGB), 194 => Some(Locale::KyKG), 195 => Some(Locale::LbLU), 196 => Some(Locale::LgUG), 197 => Some(Locale::LiBE), 198 => Some(Locale::LiNL), 199 => Some(Locale::LijIT), 200 => Some(Locale::LnCD), 201 => Some(Locale::LoLA), 202 => Some(Locale::LtLT), 203 => Some(Locale::LvLV), 204 => Some(Locale::LzhTW), 205 => Some(Locale::MagIN), 206 => Some(Locale::MaiIN), 207 => Some(Locale::MaiNP), 208 => Some(Locale::MfeMU), 209 => Some(Locale::MgMG), 210 => Some(Locale::MhrRU), 211 => Some(Locale::MiNZ), 212 => Some(Locale::MiqNI), 213 => Some(Locale::MjwIN), 214 => Some(Locale::MkMK), 215 => Some(Locale::MlIN), 216 => Some(Locale::MnMN), 217 => Some(Locale::MniIN), 218 => Some(Locale::MnwMM), 219 => Some(Locale::MrIN), 220 => Some(Locale::MsMY), 221 => Some(Locale::MtMT), 222 => Some(Locale::MyMM), 223 => Some(Locale::NanTW), 224 => Some(Locale::NanLatnTW), 225 => Some(Locale::NbNO), 226 => Some(Locale::NdsDE), 227 => Some(Locale::NdsNL), 228 => Some(Locale::NeNP), 229 => Some(Locale::NhnMX), 230 => Some(Locale::NiuNU), 231 => Some(Locale::NiuNZ), 232 => Some(Locale::NlAW), 233 => Some(Locale::NlBE), 235 => Some(Locale::NlNL), 237 => Some(Locale::NnNO), 238 => Some(Locale::NrZA), 239 => Some(Locale::NsoZA), 240 => Some(Locale::OcFR), 241 => Some(Locale::OmET), 242 => Some(Locale::OmKE), 243 => Some(Locale::OrIN), 244 => Some(Locale::OsRU), 245 => Some(Locale::PaIN), 246 => Some(Locale::PaPK), 247 => Some(Locale::PapAW), 248 => Some(Locale::PapCW), 249 => Some(Locale::PlPL), 250 => Some(Locale::PsAF), 251 => Some(Locale::PtBR), 252 => Some(Locale::PtPT), 254 => Some(Locale::QuzPE), 255 => Some(Locale::RajIN), 256 => Some(Locale::RoRO), 257 => Some(Locale::RuRU), 258 => Some(Locale::RuUA), 259 => Some(Locale::RwRW), 260 => Some(Locale::SaIN), 261 => Some(Locale::SahRU), 262 => Some(Locale::SatIN), 263 => Some(Locale::ScIT), 264 => Some(Locale::SdIN), 265 => Some(Locale::SdDevaIN), 266 => Some(Locale::SeNO), 267 => Some(Locale::SgsLT), 268 => Some(Locale::ShnMM), 269 => Some(Locale::ShsCA), 270 => Some(Locale::SiLK), 271 => Some(Locale::SidET), 272 => Some(Locale::SkSK), 273 => Some(Locale::SlSI), 274 => Some(Locale::SmWS), 275 => Some(Locale::SoDJ), 276 => Some(Locale::SoET), 277 => Some(Locale::SoKE), 278 => Some(Locale::SoSO), 279 => Some(Locale::SqAL), 280 => Some(Locale::SqMK), 281 => Some(Locale::SrME), 282 => Some(Locale::SrRS), 283 => Some(Locale::SrLatnRS), 284 => Some(Locale::SsZA), 285 => Some(Locale::StZA), 286 => Some(Locale::SvFI), 288 => Some(Locale::SvSE), 289 => Some(Locale::SwKE), 290 => Some(Locale::SwTZ), 291 => Some(Locale::SzlPL), 292 => Some(Locale::TaIN), 293 => Some(Locale::TaLK), 294 => Some(Locale::TcyIN), 295 => Some(Locale::TeIN), 296 => Some(Locale::TgTJ), 297 => Some(Locale::ThTH), 298 => Some(Locale::TheNP), 299 => Some(Locale::TiER), 300 => Some(Locale::TiET), 301 => Some(Locale::TigER), 302 => Some(Locale::TkTM), 303 => Some(Locale::TlPH), 304 => Some(Locale::TnZA), 305 => Some(Locale::ToTO), 306 => Some(Locale::TpiPG), 307 => Some(Locale::TrCY), 308 => Some(Locale::TrTR), 309 => Some(Locale::TsZA), 310 => Some(Locale::TtRU), 311 => Some(Locale::TtLatnRU), 312 => Some(Locale::UgCN), 313 => Some(Locale::UkUA), 314 => Some(Locale::UnmUS), 315 => Some(Locale::UrIN), 316 => Some(Locale::UrPK), 317 => Some(Locale::UzUZ), 318 => Some(Locale::UzCyrlUZ), 319 => Some(Locale::VeZA), 320 => Some(Locale::ViVN), 321 => Some(Locale::WaBE), 322 => Some(Locale::UzLatnUZ), 323 => Some(Locale::WaeCH), 324 => Some(Locale::WalET), 325 => Some(Locale::WoSN), 326 => Some(Locale::XhZA), 327 => Some(Locale::YiUS), 328 => Some(Locale::YoNG), 329 => Some(Locale::YueHK), 330 => Some(Locale::YuwPG), 331 => Some(Locale::ZhCN), 332 => Some(Locale::ZhHK), 333 => Some(Locale::ZhSG), 334 => Some(Locale::ZhTW), 335 => Some(Locale::ZuZA), 70 | 75 | 86 | 95 | 103 | 117 | 136 | 140 | 144 | 179 | 234 | 236 | 253 | 287 => { Some(Locale::EnUS) } _ => None, } } const COUNT: usize = 336; } impl serde::Serialize for Locale { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for Locale { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for LogRotateFrequency { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"daily" => LogRotateFrequency::Daily, b"hourly" => LogRotateFrequency::Hourly, b"minutely" => LogRotateFrequency::Minutely, b"never" => LogRotateFrequency::Never, } } fn as_str(&self) -> &'static str { match self { LogRotateFrequency::Daily => "daily", LogRotateFrequency::Hourly => "hourly", LogRotateFrequency::Minutely => "minutely", LogRotateFrequency::Never => "never", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(LogRotateFrequency::Daily), 1 => Some(LogRotateFrequency::Hourly), 2 => Some(LogRotateFrequency::Minutely), 3 => Some(LogRotateFrequency::Never), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for LogRotateFrequency { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for LogRotateFrequency { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for LookupStoreType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"PostgreSql" => LookupStoreType::PostgreSql, b"MySql" => LookupStoreType::MySql, b"Sqlite" => LookupStoreType::Sqlite, b"Sharded" => LookupStoreType::Sharded, b"Redis" => LookupStoreType::Redis, b"RedisCluster" => LookupStoreType::RedisCluster, b"RedisSentinel" => LookupStoreType::RedisSentinel, } } fn as_str(&self) -> &'static str { match self { LookupStoreType::PostgreSql => "PostgreSql", LookupStoreType::MySql => "MySql", LookupStoreType::Sqlite => "Sqlite", LookupStoreType::Sharded => "Sharded", LookupStoreType::Redis => "Redis", LookupStoreType::RedisCluster => "RedisCluster", LookupStoreType::RedisSentinel => "RedisSentinel", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(LookupStoreType::PostgreSql), 1 => Some(LookupStoreType::MySql), 2 => Some(LookupStoreType::Sqlite), 3 => Some(LookupStoreType::Sharded), 4 => Some(LookupStoreType::Redis), 5 => Some(LookupStoreType::RedisCluster), 6 => Some(LookupStoreType::RedisSentinel), _ => None, } } const COUNT: usize = 7; } impl serde::Serialize for LookupStoreType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for LookupStoreType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MessageFlag { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"authenticated" => MessageFlag::Authenticated, b"unauthenticated" => MessageFlag::Unauthenticated, b"unauthenticatedDmarc" => MessageFlag::UnauthenticatedDmarc, b"dsn" => MessageFlag::Dsn, b"report" => MessageFlag::Report, b"autogenerated" => MessageFlag::Autogenerated, } } fn as_str(&self) -> &'static str { match self { MessageFlag::Authenticated => "authenticated", MessageFlag::Unauthenticated => "unauthenticated", MessageFlag::UnauthenticatedDmarc => "unauthenticatedDmarc", MessageFlag::Dsn => "dsn", MessageFlag::Report => "report", MessageFlag::Autogenerated => "autogenerated", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MessageFlag::Authenticated), 1 => Some(MessageFlag::Unauthenticated), 2 => Some(MessageFlag::UnauthenticatedDmarc), 3 => Some(MessageFlag::Dsn), 4 => Some(MessageFlag::Report), 5 => Some(MessageFlag::Autogenerated), _ => None, } } const COUNT: usize = 6; } impl serde::Serialize for MessageFlag { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MessageFlag { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MetricType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Counter" => MetricType::Counter, b"Gauge" => MetricType::Gauge, b"Histogram" => MetricType::Histogram, } } fn as_str(&self) -> &'static str { match self { MetricType::Counter => "Counter", MetricType::Gauge => "Gauge", MetricType::Histogram => "Histogram", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MetricType::Counter), 1 => Some(MetricType::Gauge), 2 => Some(MetricType::Histogram), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for MetricType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MetricType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MetricsOtelType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Disabled" => MetricsOtelType::Disabled, b"Http" => MetricsOtelType::Http, b"Grpc" => MetricsOtelType::Grpc, } } fn as_str(&self) -> &'static str { match self { MetricsOtelType::Disabled => "Disabled", MetricsOtelType::Http => "Http", MetricsOtelType::Grpc => "Grpc", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MetricsOtelType::Disabled), 1 => Some(MetricsOtelType::Http), 2 => Some(MetricsOtelType::Grpc), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for MetricsOtelType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MetricsOtelType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MetricsPrometheusType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Disabled" => MetricsPrometheusType::Disabled, b"Enabled" => MetricsPrometheusType::Enabled, } } fn as_str(&self) -> &'static str { match self { MetricsPrometheusType::Disabled => "Disabled", MetricsPrometheusType::Enabled => "Enabled", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MetricsPrometheusType::Disabled), 1 => Some(MetricsPrometheusType::Enabled), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for MetricsPrometheusType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MetricsPrometheusType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MetricsStoreType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Disabled" => MetricsStoreType::Disabled, b"Default" => MetricsStoreType::Default, b"FoundationDb" => MetricsStoreType::FoundationDb, b"PostgreSql" => MetricsStoreType::PostgreSql, b"MySql" => MetricsStoreType::MySql, } } fn as_str(&self) -> &'static str { match self { MetricsStoreType::Disabled => "Disabled", MetricsStoreType::Default => "Default", MetricsStoreType::FoundationDb => "FoundationDb", MetricsStoreType::PostgreSql => "PostgreSql", MetricsStoreType::MySql => "MySql", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MetricsStoreType::Disabled), 1 => Some(MetricsStoreType::Default), 2 => Some(MetricsStoreType::FoundationDb), 3 => Some(MetricsStoreType::PostgreSql), 4 => Some(MetricsStoreType::MySql), _ => None, } } const COUNT: usize = 5; } impl serde::Serialize for MetricsStoreType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MetricsStoreType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MilterVersion { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"v2" => MilterVersion::V2, b"v6" => MilterVersion::V6, } } fn as_str(&self) -> &'static str { match self { MilterVersion::V2 => "v2", MilterVersion::V6 => "v6", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MilterVersion::V2), 1 => Some(MilterVersion::V6), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for MilterVersion { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MilterVersion { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ModelSize { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"16" => ModelSize::V16, b"17" => ModelSize::V17, b"18" => ModelSize::V18, b"19" => ModelSize::V19, b"20" => ModelSize::V20, b"21" => ModelSize::V21, b"22" => ModelSize::V22, b"23" => ModelSize::V23, b"24" => ModelSize::V24, b"25" => ModelSize::V25, b"26" => ModelSize::V26, b"27" => ModelSize::V27, b"28" => ModelSize::V28, } } fn as_str(&self) -> &'static str { match self { ModelSize::V16 => "16", ModelSize::V17 => "17", ModelSize::V18 => "18", ModelSize::V19 => "19", ModelSize::V20 => "20", ModelSize::V21 => "21", ModelSize::V22 => "22", ModelSize::V23 => "23", ModelSize::V24 => "24", ModelSize::V25 => "25", ModelSize::V26 => "26", ModelSize::V27 => "27", ModelSize::V28 => "28", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ModelSize::V16), 1 => Some(ModelSize::V17), 2 => Some(ModelSize::V18), 3 => Some(ModelSize::V19), 4 => Some(ModelSize::V20), 5 => Some(ModelSize::V21), 6 => Some(ModelSize::V22), 7 => Some(ModelSize::V23), 8 => Some(ModelSize::V24), 9 => Some(ModelSize::V25), 10 => Some(ModelSize::V26), 11 => Some(ModelSize::V27), 12 => Some(ModelSize::V28), _ => None, } } const COUNT: usize = 13; } impl serde::Serialize for ModelSize { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ModelSize { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MtaDeliveryExpirationType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Ttl" => MtaDeliveryExpirationType::Ttl, b"Attempts" => MtaDeliveryExpirationType::Attempts, } } fn as_str(&self) -> &'static str { match self { MtaDeliveryExpirationType::Ttl => "Ttl", MtaDeliveryExpirationType::Attempts => "Attempts", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MtaDeliveryExpirationType::Ttl), 1 => Some(MtaDeliveryExpirationType::Attempts), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for MtaDeliveryExpirationType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MtaDeliveryExpirationType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MtaDeliveryScheduleIntervalsOrDefaultType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Default" => MtaDeliveryScheduleIntervalsOrDefaultType::Default, b"Custom" => MtaDeliveryScheduleIntervalsOrDefaultType::Custom, } } fn as_str(&self) -> &'static str { match self { MtaDeliveryScheduleIntervalsOrDefaultType::Default => "Default", MtaDeliveryScheduleIntervalsOrDefaultType::Custom => "Custom", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MtaDeliveryScheduleIntervalsOrDefaultType::Default), 1 => Some(MtaDeliveryScheduleIntervalsOrDefaultType::Custom), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for MtaDeliveryScheduleIntervalsOrDefaultType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MtaDeliveryScheduleIntervalsOrDefaultType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MtaInboundThrottleKey { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"listener" => MtaInboundThrottleKey::Listener, b"remoteIp" => MtaInboundThrottleKey::RemoteIp, b"localIp" => MtaInboundThrottleKey::LocalIp, b"authenticatedAs" => MtaInboundThrottleKey::AuthenticatedAs, b"heloDomain" => MtaInboundThrottleKey::HeloDomain, b"sender" => MtaInboundThrottleKey::Sender, b"senderDomain" => MtaInboundThrottleKey::SenderDomain, b"rcpt" => MtaInboundThrottleKey::Rcpt, b"rcptDomain" => MtaInboundThrottleKey::RcptDomain, } } fn as_str(&self) -> &'static str { match self { MtaInboundThrottleKey::Listener => "listener", MtaInboundThrottleKey::RemoteIp => "remoteIp", MtaInboundThrottleKey::LocalIp => "localIp", MtaInboundThrottleKey::AuthenticatedAs => "authenticatedAs", MtaInboundThrottleKey::HeloDomain => "heloDomain", MtaInboundThrottleKey::Sender => "sender", MtaInboundThrottleKey::SenderDomain => "senderDomain", MtaInboundThrottleKey::Rcpt => "rcpt", MtaInboundThrottleKey::RcptDomain => "rcptDomain", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MtaInboundThrottleKey::Listener), 1 => Some(MtaInboundThrottleKey::RemoteIp), 2 => Some(MtaInboundThrottleKey::LocalIp), 3 => Some(MtaInboundThrottleKey::AuthenticatedAs), 4 => Some(MtaInboundThrottleKey::HeloDomain), 5 => Some(MtaInboundThrottleKey::Sender), 6 => Some(MtaInboundThrottleKey::SenderDomain), 7 => Some(MtaInboundThrottleKey::Rcpt), 8 => Some(MtaInboundThrottleKey::RcptDomain), _ => None, } } const COUNT: usize = 9; } impl serde::Serialize for MtaInboundThrottleKey { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MtaInboundThrottleKey { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MtaIpStrategy { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"v4ThenV6" => MtaIpStrategy::V4ThenV6, b"v6ThenV4" => MtaIpStrategy::V6ThenV4, b"v4Only" => MtaIpStrategy::V4Only, b"v6Only" => MtaIpStrategy::V6Only, } } fn as_str(&self) -> &'static str { match self { MtaIpStrategy::V4ThenV6 => "v4ThenV6", MtaIpStrategy::V6ThenV4 => "v6ThenV4", MtaIpStrategy::V4Only => "v4Only", MtaIpStrategy::V6Only => "v6Only", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MtaIpStrategy::V4ThenV6), 1 => Some(MtaIpStrategy::V6ThenV4), 2 => Some(MtaIpStrategy::V4Only), 3 => Some(MtaIpStrategy::V6Only), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for MtaIpStrategy { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MtaIpStrategy { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MtaOutboundThrottleKey { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"mx" => MtaOutboundThrottleKey::Mx, b"remoteIp" => MtaOutboundThrottleKey::RemoteIp, b"localIp" => MtaOutboundThrottleKey::LocalIp, b"sender" => MtaOutboundThrottleKey::Sender, b"senderDomain" => MtaOutboundThrottleKey::SenderDomain, b"rcptDomain" => MtaOutboundThrottleKey::RcptDomain, } } fn as_str(&self) -> &'static str { match self { MtaOutboundThrottleKey::Mx => "mx", MtaOutboundThrottleKey::RemoteIp => "remoteIp", MtaOutboundThrottleKey::LocalIp => "localIp", MtaOutboundThrottleKey::Sender => "sender", MtaOutboundThrottleKey::SenderDomain => "senderDomain", MtaOutboundThrottleKey::RcptDomain => "rcptDomain", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MtaOutboundThrottleKey::Mx), 1 => Some(MtaOutboundThrottleKey::RemoteIp), 2 => Some(MtaOutboundThrottleKey::LocalIp), 3 => Some(MtaOutboundThrottleKey::Sender), 4 => Some(MtaOutboundThrottleKey::SenderDomain), 5 => Some(MtaOutboundThrottleKey::RcptDomain), _ => None, } } const COUNT: usize = 6; } impl serde::Serialize for MtaOutboundThrottleKey { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MtaOutboundThrottleKey { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MtaProtocol { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"smtp" => MtaProtocol::Smtp, b"lmtp" => MtaProtocol::Lmtp, } } fn as_str(&self) -> &'static str { match self { MtaProtocol::Smtp => "smtp", MtaProtocol::Lmtp => "lmtp", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MtaProtocol::Smtp), 1 => Some(MtaProtocol::Lmtp), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for MtaProtocol { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MtaProtocol { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MtaQueueQuotaKey { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"sender" => MtaQueueQuotaKey::Sender, b"senderDomain" => MtaQueueQuotaKey::SenderDomain, b"rcpt" => MtaQueueQuotaKey::Rcpt, b"rcptDomain" => MtaQueueQuotaKey::RcptDomain, } } fn as_str(&self) -> &'static str { match self { MtaQueueQuotaKey::Sender => "sender", MtaQueueQuotaKey::SenderDomain => "senderDomain", MtaQueueQuotaKey::Rcpt => "rcpt", MtaQueueQuotaKey::RcptDomain => "rcptDomain", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MtaQueueQuotaKey::Sender), 1 => Some(MtaQueueQuotaKey::SenderDomain), 2 => Some(MtaQueueQuotaKey::Rcpt), 3 => Some(MtaQueueQuotaKey::RcptDomain), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for MtaQueueQuotaKey { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MtaQueueQuotaKey { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MtaRequiredOrOptional { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"optional" => MtaRequiredOrOptional::Optional, b"require" => MtaRequiredOrOptional::Require, b"disable" => MtaRequiredOrOptional::Disable, } } fn as_str(&self) -> &'static str { match self { MtaRequiredOrOptional::Optional => "optional", MtaRequiredOrOptional::Require => "require", MtaRequiredOrOptional::Disable => "disable", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MtaRequiredOrOptional::Optional), 1 => Some(MtaRequiredOrOptional::Require), 2 => Some(MtaRequiredOrOptional::Disable), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for MtaRequiredOrOptional { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MtaRequiredOrOptional { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MtaRouteType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Mx" => MtaRouteType::Mx, b"Relay" => MtaRouteType::Relay, b"Local" => MtaRouteType::Local, } } fn as_str(&self) -> &'static str { match self { MtaRouteType::Mx => "Mx", MtaRouteType::Relay => "Relay", MtaRouteType::Local => "Local", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MtaRouteType::Mx), 1 => Some(MtaRouteType::Relay), 2 => Some(MtaRouteType::Local), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for MtaRouteType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MtaRouteType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for MtaStage { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"connect" => MtaStage::Connect, b"ehlo" => MtaStage::Ehlo, b"auth" => MtaStage::Auth, b"mail" => MtaStage::Mail, b"rcpt" => MtaStage::Rcpt, b"data" => MtaStage::Data, } } fn as_str(&self) -> &'static str { match self { MtaStage::Connect => "connect", MtaStage::Ehlo => "ehlo", MtaStage::Auth => "auth", MtaStage::Mail => "mail", MtaStage::Rcpt => "rcpt", MtaStage::Data => "data", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(MtaStage::Connect), 1 => Some(MtaStage::Ehlo), 2 => Some(MtaStage::Auth), 3 => Some(MtaStage::Mail), 4 => Some(MtaStage::Rcpt), 5 => Some(MtaStage::Data), _ => None, } } const COUNT: usize = 6; } impl serde::Serialize for MtaStage { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for MtaStage { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for NetworkListenerProtocol { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"smtp" => NetworkListenerProtocol::Smtp, b"lmtp" => NetworkListenerProtocol::Lmtp, b"http" => NetworkListenerProtocol::Http, b"imap" => NetworkListenerProtocol::Imap, b"pop3" => NetworkListenerProtocol::Pop3, b"manageSieve" => NetworkListenerProtocol::ManageSieve, } } fn as_str(&self) -> &'static str { match self { NetworkListenerProtocol::Smtp => "smtp", NetworkListenerProtocol::Lmtp => "lmtp", NetworkListenerProtocol::Http => "http", NetworkListenerProtocol::Imap => "imap", NetworkListenerProtocol::Pop3 => "pop3", NetworkListenerProtocol::ManageSieve => "manageSieve", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(NetworkListenerProtocol::Smtp), 1 => Some(NetworkListenerProtocol::Lmtp), 2 => Some(NetworkListenerProtocol::Http), 3 => Some(NetworkListenerProtocol::Imap), 4 => Some(NetworkListenerProtocol::Pop3), 5 => Some(NetworkListenerProtocol::ManageSieve), _ => None, } } const COUNT: usize = 6; } impl serde::Serialize for NetworkListenerProtocol { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for NetworkListenerProtocol { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for OvhEndpoint { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"ovh-eu" => OvhEndpoint::OvhEu, b"ovh-ca" => OvhEndpoint::OvhCa, b"kimsufi-eu" => OvhEndpoint::KimsufiEu, b"kimsufi-ca" => OvhEndpoint::KimsufiCa, b"soyoustart-eu" => OvhEndpoint::SoyoustartEu, b"soyoustart-ca" => OvhEndpoint::SoyoustartCa, } } fn as_str(&self) -> &'static str { match self { OvhEndpoint::OvhEu => "ovh-eu", OvhEndpoint::OvhCa => "ovh-ca", OvhEndpoint::KimsufiEu => "kimsufi-eu", OvhEndpoint::KimsufiCa => "kimsufi-ca", OvhEndpoint::SoyoustartEu => "soyoustart-eu", OvhEndpoint::SoyoustartCa => "soyoustart-ca", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(OvhEndpoint::OvhEu), 1 => Some(OvhEndpoint::OvhCa), 2 => Some(OvhEndpoint::KimsufiEu), 3 => Some(OvhEndpoint::KimsufiCa), 4 => Some(OvhEndpoint::SoyoustartEu), 5 => Some(OvhEndpoint::SoyoustartCa), _ => None, } } const COUNT: usize = 6; } impl serde::Serialize for OvhEndpoint { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for OvhEndpoint { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for PasswordHashAlgorithm { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"argon2id" => PasswordHashAlgorithm::Argon2id, b"bcrypt" => PasswordHashAlgorithm::Bcrypt, b"scrypt" => PasswordHashAlgorithm::Scrypt, b"pbkdf2" => PasswordHashAlgorithm::Pbkdf2, } } fn as_str(&self) -> &'static str { match self { PasswordHashAlgorithm::Argon2id => "argon2id", PasswordHashAlgorithm::Bcrypt => "bcrypt", PasswordHashAlgorithm::Scrypt => "scrypt", PasswordHashAlgorithm::Pbkdf2 => "pbkdf2", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(PasswordHashAlgorithm::Argon2id), 1 => Some(PasswordHashAlgorithm::Bcrypt), 2 => Some(PasswordHashAlgorithm::Scrypt), 3 => Some(PasswordHashAlgorithm::Pbkdf2), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for PasswordHashAlgorithm { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for PasswordHashAlgorithm { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for PasswordStrength { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"zero" => PasswordStrength::Zero, b"one" => PasswordStrength::One, b"two" => PasswordStrength::Two, b"three" => PasswordStrength::Three, b"four" => PasswordStrength::Four, } } fn as_str(&self) -> &'static str { match self { PasswordStrength::Zero => "zero", PasswordStrength::One => "one", PasswordStrength::Two => "two", PasswordStrength::Three => "three", PasswordStrength::Four => "four", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(PasswordStrength::Zero), 1 => Some(PasswordStrength::One), 2 => Some(PasswordStrength::Two), 3 => Some(PasswordStrength::Three), 4 => Some(PasswordStrength::Four), _ => None, } } const COUNT: usize = 5; } impl serde::Serialize for PasswordStrength { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for PasswordStrength { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for Permission { fn parse(value: &str) -> Option { hashify::map! { value.as_bytes(), Permission, b"authenticate" => Permission::Authenticate, b"authenticateWithAlias" => Permission::AuthenticateWithAlias, b"interactAi" => Permission::InteractAi, b"impersonate" => Permission::Impersonate, b"unlimitedRequests" => Permission::UnlimitedRequests, b"unlimitedUploads" => Permission::UnlimitedUploads, b"fetchAnyBlob" => Permission::FetchAnyBlob, b"emailSend" => Permission::EmailSend, b"emailReceive" => Permission::EmailReceive, b"calendarAlarmsSend" => Permission::CalendarAlarmsSend, b"calendarSchedulingSend" => Permission::CalendarSchedulingSend, b"calendarSchedulingReceive" => Permission::CalendarSchedulingReceive, b"jmapPushSubscriptionGet" => Permission::JmapPushSubscriptionGet, b"jmapPushSubscriptionCreate" => Permission::JmapPushSubscriptionCreate, b"jmapPushSubscriptionUpdate" => Permission::JmapPushSubscriptionUpdate, b"jmapPushSubscriptionDestroy" => Permission::JmapPushSubscriptionDestroy, b"jmapMailboxGet" => Permission::JmapMailboxGet, b"jmapMailboxChanges" => Permission::JmapMailboxChanges, b"jmapMailboxQuery" => Permission::JmapMailboxQuery, b"jmapMailboxQueryChanges" => Permission::JmapMailboxQueryChanges, b"jmapMailboxCreate" => Permission::JmapMailboxCreate, b"jmapMailboxUpdate" => Permission::JmapMailboxUpdate, b"jmapMailboxDestroy" => Permission::JmapMailboxDestroy, b"jmapThreadGet" => Permission::JmapThreadGet, b"jmapThreadChanges" => Permission::JmapThreadChanges, b"jmapEmailGet" => Permission::JmapEmailGet, b"jmapEmailChanges" => Permission::JmapEmailChanges, b"jmapEmailQuery" => Permission::JmapEmailQuery, b"jmapEmailQueryChanges" => Permission::JmapEmailQueryChanges, b"jmapEmailCreate" => Permission::JmapEmailCreate, b"jmapEmailUpdate" => Permission::JmapEmailUpdate, b"jmapEmailDestroy" => Permission::JmapEmailDestroy, b"jmapEmailCopy" => Permission::JmapEmailCopy, b"jmapEmailImport" => Permission::JmapEmailImport, b"jmapEmailParse" => Permission::JmapEmailParse, b"jmapSearchSnippetGet" => Permission::JmapSearchSnippetGet, b"jmapIdentityGet" => Permission::JmapIdentityGet, b"jmapIdentityChanges" => Permission::JmapIdentityChanges, b"jmapIdentityCreate" => Permission::JmapIdentityCreate, b"jmapIdentityUpdate" => Permission::JmapIdentityUpdate, b"jmapIdentityDestroy" => Permission::JmapIdentityDestroy, b"jmapEmailSubmissionGet" => Permission::JmapEmailSubmissionGet, b"jmapEmailSubmissionChanges" => Permission::JmapEmailSubmissionChanges, b"jmapEmailSubmissionQuery" => Permission::JmapEmailSubmissionQuery, b"jmapEmailSubmissionQueryChanges" => Permission::JmapEmailSubmissionQueryChanges, b"jmapEmailSubmissionCreate" => Permission::JmapEmailSubmissionCreate, b"jmapEmailSubmissionUpdate" => Permission::JmapEmailSubmissionUpdate, b"jmapEmailSubmissionDestroy" => Permission::JmapEmailSubmissionDestroy, b"jmapVacationResponseGet" => Permission::JmapVacationResponseGet, b"jmapVacationResponseCreate" => Permission::JmapVacationResponseCreate, b"jmapVacationResponseUpdate" => Permission::JmapVacationResponseUpdate, b"jmapVacationResponseDestroy" => Permission::JmapVacationResponseDestroy, b"jmapSieveScriptGet" => Permission::JmapSieveScriptGet, b"jmapSieveScriptQuery" => Permission::JmapSieveScriptQuery, b"jmapSieveScriptValidate" => Permission::JmapSieveScriptValidate, b"jmapSieveScriptCreate" => Permission::JmapSieveScriptCreate, b"jmapSieveScriptUpdate" => Permission::JmapSieveScriptUpdate, b"jmapSieveScriptDestroy" => Permission::JmapSieveScriptDestroy, b"jmapPrincipalGet" => Permission::JmapPrincipalGet, b"jmapPrincipalQuery" => Permission::JmapPrincipalQuery, b"jmapPrincipalChanges" => Permission::JmapPrincipalChanges, b"jmapPrincipalQueryChanges" => Permission::JmapPrincipalQueryChanges, b"jmapPrincipalGetAvailability" => Permission::JmapPrincipalGetAvailability, b"jmapPrincipalCreate" => Permission::JmapPrincipalCreate, b"jmapPrincipalUpdate" => Permission::JmapPrincipalUpdate, b"jmapPrincipalDestroy" => Permission::JmapPrincipalDestroy, b"jmapQuotaGet" => Permission::JmapQuotaGet, b"jmapQuotaChanges" => Permission::JmapQuotaChanges, b"jmapQuotaQuery" => Permission::JmapQuotaQuery, b"jmapQuotaQueryChanges" => Permission::JmapQuotaQueryChanges, b"jmapBlobGet" => Permission::JmapBlobGet, b"jmapBlobCopy" => Permission::JmapBlobCopy, b"jmapBlobLookup" => Permission::JmapBlobLookup, b"jmapBlobUpload" => Permission::JmapBlobUpload, b"jmapAddressBookGet" => Permission::JmapAddressBookGet, b"jmapAddressBookChanges" => Permission::JmapAddressBookChanges, b"jmapAddressBookCreate" => Permission::JmapAddressBookCreate, b"jmapAddressBookUpdate" => Permission::JmapAddressBookUpdate, b"jmapAddressBookDestroy" => Permission::JmapAddressBookDestroy, b"jmapContactCardGet" => Permission::JmapContactCardGet, b"jmapContactCardChanges" => Permission::JmapContactCardChanges, b"jmapContactCardQuery" => Permission::JmapContactCardQuery, b"jmapContactCardQueryChanges" => Permission::JmapContactCardQueryChanges, b"jmapContactCardCreate" => Permission::JmapContactCardCreate, b"jmapContactCardUpdate" => Permission::JmapContactCardUpdate, b"jmapContactCardDestroy" => Permission::JmapContactCardDestroy, b"jmapContactCardCopy" => Permission::JmapContactCardCopy, b"jmapContactCardParse" => Permission::JmapContactCardParse, b"jmapFileNodeGet" => Permission::JmapFileNodeGet, b"jmapFileNodeChanges" => Permission::JmapFileNodeChanges, b"jmapFileNodeQuery" => Permission::JmapFileNodeQuery, b"jmapFileNodeQueryChanges" => Permission::JmapFileNodeQueryChanges, b"jmapFileNodeCreate" => Permission::JmapFileNodeCreate, b"jmapFileNodeUpdate" => Permission::JmapFileNodeUpdate, b"jmapFileNodeDestroy" => Permission::JmapFileNodeDestroy, b"jmapFileNodeCopy" => Permission::JmapFileNodeCopy, b"jmapShareNotificationGet" => Permission::JmapShareNotificationGet, b"jmapShareNotificationChanges" => Permission::JmapShareNotificationChanges, b"jmapShareNotificationQuery" => Permission::JmapShareNotificationQuery, b"jmapShareNotificationQueryChanges" => Permission::JmapShareNotificationQueryChanges, b"jmapShareNotificationCreate" => Permission::JmapShareNotificationCreate, b"jmapShareNotificationUpdate" => Permission::JmapShareNotificationUpdate, b"jmapShareNotificationDestroy" => Permission::JmapShareNotificationDestroy, b"jmapCalendarGet" => Permission::JmapCalendarGet, b"jmapCalendarChanges" => Permission::JmapCalendarChanges, b"jmapCalendarCreate" => Permission::JmapCalendarCreate, b"jmapCalendarUpdate" => Permission::JmapCalendarUpdate, b"jmapCalendarDestroy" => Permission::JmapCalendarDestroy, b"jmapCalendarEventGet" => Permission::JmapCalendarEventGet, b"jmapCalendarEventChanges" => Permission::JmapCalendarEventChanges, b"jmapCalendarEventQuery" => Permission::JmapCalendarEventQuery, b"jmapCalendarEventQueryChanges" => Permission::JmapCalendarEventQueryChanges, b"jmapCalendarEventCreate" => Permission::JmapCalendarEventCreate, b"jmapCalendarEventUpdate" => Permission::JmapCalendarEventUpdate, b"jmapCalendarEventDestroy" => Permission::JmapCalendarEventDestroy, b"jmapCalendarEventCopy" => Permission::JmapCalendarEventCopy, b"jmapCalendarEventParse" => Permission::JmapCalendarEventParse, b"jmapCalendarEventNotificationGet" => Permission::JmapCalendarEventNotificationGet, b"jmapCalendarEventNotificationChanges" => Permission::JmapCalendarEventNotificationChanges, b"jmapCalendarEventNotificationQuery" => Permission::JmapCalendarEventNotificationQuery, b"jmapCalendarEventNotificationQueryChanges" => Permission::JmapCalendarEventNotificationQueryChanges, b"jmapCalendarEventNotificationCreate" => Permission::JmapCalendarEventNotificationCreate, b"jmapCalendarEventNotificationUpdate" => Permission::JmapCalendarEventNotificationUpdate, b"jmapCalendarEventNotificationDestroy" => Permission::JmapCalendarEventNotificationDestroy, b"jmapParticipantIdentityGet" => Permission::JmapParticipantIdentityGet, b"jmapParticipantIdentityChanges" => Permission::JmapParticipantIdentityChanges, b"jmapParticipantIdentityCreate" => Permission::JmapParticipantIdentityCreate, b"jmapParticipantIdentityUpdate" => Permission::JmapParticipantIdentityUpdate, b"jmapParticipantIdentityDestroy" => Permission::JmapParticipantIdentityDestroy, b"jmapCoreEcho" => Permission::JmapCoreEcho, b"imapAuthenticate" => Permission::ImapAuthenticate, b"imapAclGet" => Permission::ImapAclGet, b"imapAclSet" => Permission::ImapAclSet, b"imapMyRights" => Permission::ImapMyRights, b"imapListRights" => Permission::ImapListRights, b"imapAppend" => Permission::ImapAppend, b"imapCapability" => Permission::ImapCapability, b"imapId" => Permission::ImapId, b"imapCopy" => Permission::ImapCopy, b"imapMove" => Permission::ImapMove, b"imapCreate" => Permission::ImapCreate, b"imapDelete" => Permission::ImapDelete, b"imapEnable" => Permission::ImapEnable, b"imapExpunge" => Permission::ImapExpunge, b"imapFetch" => Permission::ImapFetch, b"imapIdle" => Permission::ImapIdle, b"imapList" => Permission::ImapList, b"imapLsub" => Permission::ImapLsub, b"imapNamespace" => Permission::ImapNamespace, b"imapRename" => Permission::ImapRename, b"imapSearch" => Permission::ImapSearch, b"imapSort" => Permission::ImapSort, b"imapSelect" => Permission::ImapSelect, b"imapExamine" => Permission::ImapExamine, b"imapStatus" => Permission::ImapStatus, b"imapStore" => Permission::ImapStore, b"imapSubscribe" => Permission::ImapSubscribe, b"imapThread" => Permission::ImapThread, b"pop3Authenticate" => Permission::Pop3Authenticate, b"pop3List" => Permission::Pop3List, b"pop3Uidl" => Permission::Pop3Uidl, b"pop3Stat" => Permission::Pop3Stat, b"pop3Retr" => Permission::Pop3Retr, b"pop3Dele" => Permission::Pop3Dele, b"sieveAuthenticate" => Permission::SieveAuthenticate, b"sieveListScripts" => Permission::SieveListScripts, b"sieveSetActive" => Permission::SieveSetActive, b"sieveGetScript" => Permission::SieveGetScript, b"sievePutScript" => Permission::SievePutScript, b"sieveDeleteScript" => Permission::SieveDeleteScript, b"sieveRenameScript" => Permission::SieveRenameScript, b"sieveCheckScript" => Permission::SieveCheckScript, b"sieveHaveSpace" => Permission::SieveHaveSpace, b"davSyncCollection" => Permission::DavSyncCollection, b"davExpandProperty" => Permission::DavExpandProperty, b"davPrincipalAcl" => Permission::DavPrincipalAcl, b"davPrincipalList" => Permission::DavPrincipalList, b"davPrincipalMatch" => Permission::DavPrincipalMatch, b"davPrincipalSearch" => Permission::DavPrincipalSearch, b"davPrincipalSearchPropSet" => Permission::DavPrincipalSearchPropSet, b"davFilePropFind" => Permission::DavFilePropFind, b"davFilePropPatch" => Permission::DavFilePropPatch, b"davFileGet" => Permission::DavFileGet, b"davFileMkCol" => Permission::DavFileMkCol, b"davFileDelete" => Permission::DavFileDelete, b"davFilePut" => Permission::DavFilePut, b"davFileCopy" => Permission::DavFileCopy, b"davFileMove" => Permission::DavFileMove, b"davFileLock" => Permission::DavFileLock, b"davFileAcl" => Permission::DavFileAcl, b"davCardPropFind" => Permission::DavCardPropFind, b"davCardPropPatch" => Permission::DavCardPropPatch, b"davCardGet" => Permission::DavCardGet, b"davCardMkCol" => Permission::DavCardMkCol, b"davCardDelete" => Permission::DavCardDelete, b"davCardPut" => Permission::DavCardPut, b"davCardCopy" => Permission::DavCardCopy, b"davCardMove" => Permission::DavCardMove, b"davCardLock" => Permission::DavCardLock, b"davCardAcl" => Permission::DavCardAcl, b"davCardQuery" => Permission::DavCardQuery, b"davCardMultiGet" => Permission::DavCardMultiGet, b"davCalPropFind" => Permission::DavCalPropFind, b"davCalPropPatch" => Permission::DavCalPropPatch, b"davCalGet" => Permission::DavCalGet, b"davCalMkCol" => Permission::DavCalMkCol, b"davCalDelete" => Permission::DavCalDelete, b"davCalPut" => Permission::DavCalPut, b"davCalCopy" => Permission::DavCalCopy, b"davCalMove" => Permission::DavCalMove, b"davCalLock" => Permission::DavCalLock, b"davCalAcl" => Permission::DavCalAcl, b"davCalQuery" => Permission::DavCalQuery, b"davCalMultiGet" => Permission::DavCalMultiGet, b"davCalFreeBusyQuery" => Permission::DavCalFreeBusyQuery, b"oAuthClientRegistration" => Permission::OAuthClientRegistration, b"oAuthClientOverride" => Permission::OAuthClientOverride, b"liveTracing" => Permission::LiveTracing, b"liveMetrics" => Permission::LiveMetrics, b"liveDeliveryTest" => Permission::LiveDeliveryTest, b"scimAccess" => Permission::ScimAccess, b"sysAccountGet" => Permission::SysAccountGet, b"sysAccountCreate" => Permission::SysAccountCreate, b"sysAccountUpdate" => Permission::SysAccountUpdate, b"sysAccountDestroy" => Permission::SysAccountDestroy, b"sysAccountQuery" => Permission::SysAccountQuery, b"sysAccountPasswordGet" => Permission::SysAccountPasswordGet, b"sysAccountPasswordUpdate" => Permission::SysAccountPasswordUpdate, b"sysAccountSettingsGet" => Permission::SysAccountSettingsGet, b"sysAccountSettingsUpdate" => Permission::SysAccountSettingsUpdate, b"sysAcmeProviderGet" => Permission::SysAcmeProviderGet, b"sysAcmeProviderCreate" => Permission::SysAcmeProviderCreate, b"sysAcmeProviderUpdate" => Permission::SysAcmeProviderUpdate, b"sysAcmeProviderDestroy" => Permission::SysAcmeProviderDestroy, b"sysAcmeProviderQuery" => Permission::SysAcmeProviderQuery, b"actionReloadSettings" => Permission::ActionReloadSettings, b"actionReloadTlsCertificates" => Permission::ActionReloadTlsCertificates, b"actionReloadLookupStores" => Permission::ActionReloadLookupStores, b"actionReloadBlockedIps" => Permission::ActionReloadBlockedIps, b"actionUpdateApps" => Permission::ActionUpdateApps, b"actionTroubleshootDmarc" => Permission::ActionTroubleshootDmarc, b"actionClassifySpam" => Permission::ActionClassifySpam, b"actionInvalidateCaches" => Permission::ActionInvalidateCaches, b"actionInvalidateNegativeCaches" => Permission::ActionInvalidateNegativeCaches, b"actionPauseMtaQueue" => Permission::ActionPauseMtaQueue, b"actionResumeMtaQueue" => Permission::ActionResumeMtaQueue, b"sysActionGet" => Permission::SysActionGet, b"sysActionCreate" => Permission::SysActionCreate, b"sysActionUpdate" => Permission::SysActionUpdate, b"sysActionDestroy" => Permission::SysActionDestroy, b"sysActionQuery" => Permission::SysActionQuery, b"sysAddressBookGet" => Permission::SysAddressBookGet, b"sysAddressBookUpdate" => Permission::SysAddressBookUpdate, b"sysAiModelGet" => Permission::SysAiModelGet, b"sysAiModelCreate" => Permission::SysAiModelCreate, b"sysAiModelUpdate" => Permission::SysAiModelUpdate, b"sysAiModelDestroy" => Permission::SysAiModelDestroy, b"sysAiModelQuery" => Permission::SysAiModelQuery, b"sysAlertGet" => Permission::SysAlertGet, b"sysAlertCreate" => Permission::SysAlertCreate, b"sysAlertUpdate" => Permission::SysAlertUpdate, b"sysAlertDestroy" => Permission::SysAlertDestroy, b"sysAlertQuery" => Permission::SysAlertQuery, b"sysAllowedIpGet" => Permission::SysAllowedIpGet, b"sysAllowedIpCreate" => Permission::SysAllowedIpCreate, b"sysAllowedIpUpdate" => Permission::SysAllowedIpUpdate, b"sysAllowedIpDestroy" => Permission::SysAllowedIpDestroy, b"sysAllowedIpQuery" => Permission::SysAllowedIpQuery, b"sysApiKeyGet" => Permission::SysApiKeyGet, b"sysApiKeyCreate" => Permission::SysApiKeyCreate, b"sysApiKeyUpdate" => Permission::SysApiKeyUpdate, b"sysApiKeyDestroy" => Permission::SysApiKeyDestroy, b"sysApiKeyQuery" => Permission::SysApiKeyQuery, b"sysAppPasswordGet" => Permission::SysAppPasswordGet, b"sysAppPasswordCreate" => Permission::SysAppPasswordCreate, b"sysAppPasswordUpdate" => Permission::SysAppPasswordUpdate, b"sysAppPasswordDestroy" => Permission::SysAppPasswordDestroy, b"sysAppPasswordQuery" => Permission::SysAppPasswordQuery, b"sysApplicationGet" => Permission::SysApplicationGet, b"sysApplicationCreate" => Permission::SysApplicationCreate, b"sysApplicationUpdate" => Permission::SysApplicationUpdate, b"sysApplicationDestroy" => Permission::SysApplicationDestroy, b"sysApplicationQuery" => Permission::SysApplicationQuery, b"sysArchivedItemGet" => Permission::SysArchivedItemGet, b"sysArchivedItemCreate" => Permission::SysArchivedItemCreate, b"sysArchivedItemUpdate" => Permission::SysArchivedItemUpdate, b"sysArchivedItemDestroy" => Permission::SysArchivedItemDestroy, b"sysArchivedItemQuery" => Permission::SysArchivedItemQuery, b"sysArfExternalReportGet" => Permission::SysArfExternalReportGet, b"sysArfExternalReportCreate" => Permission::SysArfExternalReportCreate, b"sysArfExternalReportUpdate" => Permission::SysArfExternalReportUpdate, b"sysArfExternalReportDestroy" => Permission::SysArfExternalReportDestroy, b"sysArfExternalReportQuery" => Permission::SysArfExternalReportQuery, b"sysAsnGet" => Permission::SysAsnGet, b"sysAsnUpdate" => Permission::SysAsnUpdate, b"sysAuthenticationGet" => Permission::SysAuthenticationGet, b"sysAuthenticationUpdate" => Permission::SysAuthenticationUpdate, b"sysBlobStoreGet" => Permission::SysBlobStoreGet, b"sysBlobStoreUpdate" => Permission::SysBlobStoreUpdate, b"sysBlockedIpGet" => Permission::SysBlockedIpGet, b"sysBlockedIpCreate" => Permission::SysBlockedIpCreate, b"sysBlockedIpUpdate" => Permission::SysBlockedIpUpdate, b"sysBlockedIpDestroy" => Permission::SysBlockedIpDestroy, b"sysBlockedIpQuery" => Permission::SysBlockedIpQuery, b"sysBootstrapGet" => Permission::SysBootstrapGet, b"sysBootstrapUpdate" => Permission::SysBootstrapUpdate, b"sysCacheGet" => Permission::SysCacheGet, b"sysCacheUpdate" => Permission::SysCacheUpdate, b"sysCalendarGet" => Permission::SysCalendarGet, b"sysCalendarUpdate" => Permission::SysCalendarUpdate, b"sysCalendarAlarmGet" => Permission::SysCalendarAlarmGet, b"sysCalendarAlarmUpdate" => Permission::SysCalendarAlarmUpdate, b"sysCalendarSchedulingGet" => Permission::SysCalendarSchedulingGet, b"sysCalendarSchedulingUpdate" => Permission::SysCalendarSchedulingUpdate, b"sysCertificateGet" => Permission::SysCertificateGet, b"sysCertificateCreate" => Permission::SysCertificateCreate, b"sysCertificateUpdate" => Permission::SysCertificateUpdate, b"sysCertificateDestroy" => Permission::SysCertificateDestroy, b"sysCertificateQuery" => Permission::SysCertificateQuery, b"sysClusterNodeGet" => Permission::SysClusterNodeGet, b"sysClusterNodeCreate" => Permission::SysClusterNodeCreate, b"sysClusterNodeUpdate" => Permission::SysClusterNodeUpdate, b"sysClusterNodeDestroy" => Permission::SysClusterNodeDestroy, b"sysClusterNodeQuery" => Permission::SysClusterNodeQuery, b"sysClusterRoleGet" => Permission::SysClusterRoleGet, b"sysClusterRoleCreate" => Permission::SysClusterRoleCreate, b"sysClusterRoleUpdate" => Permission::SysClusterRoleUpdate, b"sysClusterRoleDestroy" => Permission::SysClusterRoleDestroy, b"sysClusterRoleQuery" => Permission::SysClusterRoleQuery, b"sysCoordinatorGet" => Permission::SysCoordinatorGet, b"sysCoordinatorUpdate" => Permission::SysCoordinatorUpdate, b"sysDataRetentionGet" => Permission::SysDataRetentionGet, b"sysDataRetentionUpdate" => Permission::SysDataRetentionUpdate, b"sysDataStoreGet" => Permission::SysDataStoreGet, b"sysDataStoreUpdate" => Permission::SysDataStoreUpdate, b"sysDirectoryGet" => Permission::SysDirectoryGet, b"sysDirectoryCreate" => Permission::SysDirectoryCreate, b"sysDirectoryUpdate" => Permission::SysDirectoryUpdate, b"sysDirectoryDestroy" => Permission::SysDirectoryDestroy, b"sysDirectoryQuery" => Permission::SysDirectoryQuery, b"sysDkimReportSettingsGet" => Permission::SysDkimReportSettingsGet, b"sysDkimReportSettingsUpdate" => Permission::SysDkimReportSettingsUpdate, b"sysDkimSignatureGet" => Permission::SysDkimSignatureGet, b"sysDkimSignatureCreate" => Permission::SysDkimSignatureCreate, b"sysDkimSignatureUpdate" => Permission::SysDkimSignatureUpdate, b"sysDkimSignatureDestroy" => Permission::SysDkimSignatureDestroy, b"sysDkimSignatureQuery" => Permission::SysDkimSignatureQuery, b"sysDmarcExternalReportGet" => Permission::SysDmarcExternalReportGet, b"sysDmarcExternalReportCreate" => Permission::SysDmarcExternalReportCreate, b"sysDmarcExternalReportUpdate" => Permission::SysDmarcExternalReportUpdate, b"sysDmarcExternalReportDestroy" => Permission::SysDmarcExternalReportDestroy, b"sysDmarcExternalReportQuery" => Permission::SysDmarcExternalReportQuery, b"sysDmarcInternalReportGet" => Permission::SysDmarcInternalReportGet, b"sysDmarcInternalReportCreate" => Permission::SysDmarcInternalReportCreate, b"sysDmarcInternalReportUpdate" => Permission::SysDmarcInternalReportUpdate, b"sysDmarcInternalReportDestroy" => Permission::SysDmarcInternalReportDestroy, b"sysDmarcInternalReportQuery" => Permission::SysDmarcInternalReportQuery, b"sysDmarcReportSettingsGet" => Permission::SysDmarcReportSettingsGet, b"sysDmarcReportSettingsUpdate" => Permission::SysDmarcReportSettingsUpdate, b"sysDnsResolverGet" => Permission::SysDnsResolverGet, b"sysDnsResolverUpdate" => Permission::SysDnsResolverUpdate, b"sysDnsServerGet" => Permission::SysDnsServerGet, b"sysDnsServerCreate" => Permission::SysDnsServerCreate, b"sysDnsServerUpdate" => Permission::SysDnsServerUpdate, b"sysDnsServerDestroy" => Permission::SysDnsServerDestroy, b"sysDnsServerQuery" => Permission::SysDnsServerQuery, b"sysDomainGet" => Permission::SysDomainGet, b"sysDomainCreate" => Permission::SysDomainCreate, b"sysDomainUpdate" => Permission::SysDomainUpdate, b"sysDomainDestroy" => Permission::SysDomainDestroy, b"sysDomainQuery" => Permission::SysDomainQuery, b"sysDsnReportSettingsGet" => Permission::SysDsnReportSettingsGet, b"sysDsnReportSettingsUpdate" => Permission::SysDsnReportSettingsUpdate, b"sysEmailGet" => Permission::SysEmailGet, b"sysEmailUpdate" => Permission::SysEmailUpdate, b"sysEnterpriseGet" => Permission::SysEnterpriseGet, b"sysEnterpriseUpdate" => Permission::SysEnterpriseUpdate, b"sysEventTracingLevelGet" => Permission::SysEventTracingLevelGet, b"sysEventTracingLevelCreate" => Permission::SysEventTracingLevelCreate, b"sysEventTracingLevelUpdate" => Permission::SysEventTracingLevelUpdate, b"sysEventTracingLevelDestroy" => Permission::SysEventTracingLevelDestroy, b"sysEventTracingLevelQuery" => Permission::SysEventTracingLevelQuery, b"sysFileStorageGet" => Permission::SysFileStorageGet, b"sysFileStorageUpdate" => Permission::SysFileStorageUpdate, b"sysHttpGet" => Permission::SysHttpGet, b"sysHttpUpdate" => Permission::SysHttpUpdate, b"sysHttpFormGet" => Permission::SysHttpFormGet, b"sysHttpFormUpdate" => Permission::SysHttpFormUpdate, b"sysHttpLookupGet" => Permission::SysHttpLookupGet, b"sysHttpLookupCreate" => Permission::SysHttpLookupCreate, b"sysHttpLookupUpdate" => Permission::SysHttpLookupUpdate, b"sysHttpLookupDestroy" => Permission::SysHttpLookupDestroy, b"sysHttpLookupQuery" => Permission::SysHttpLookupQuery, b"sysImapGet" => Permission::SysImapGet, b"sysImapUpdate" => Permission::SysImapUpdate, b"sysInMemoryStoreGet" => Permission::SysInMemoryStoreGet, b"sysInMemoryStoreUpdate" => Permission::SysInMemoryStoreUpdate, b"sysJmapGet" => Permission::SysJmapGet, b"sysJmapUpdate" => Permission::SysJmapUpdate, b"sysLogGet" => Permission::SysLogGet, b"sysLogCreate" => Permission::SysLogCreate, b"sysLogUpdate" => Permission::SysLogUpdate, b"sysLogDestroy" => Permission::SysLogDestroy, b"sysLogQuery" => Permission::SysLogQuery, b"sysMailingListGet" => Permission::SysMailingListGet, b"sysMailingListCreate" => Permission::SysMailingListCreate, b"sysMailingListUpdate" => Permission::SysMailingListUpdate, b"sysMailingListDestroy" => Permission::SysMailingListDestroy, b"sysMailingListQuery" => Permission::SysMailingListQuery, b"sysMaskedEmailGet" => Permission::SysMaskedEmailGet, b"sysMaskedEmailCreate" => Permission::SysMaskedEmailCreate, b"sysMaskedEmailUpdate" => Permission::SysMaskedEmailUpdate, b"sysMaskedEmailDestroy" => Permission::SysMaskedEmailDestroy, b"sysMaskedEmailQuery" => Permission::SysMaskedEmailQuery, b"sysMemoryLookupKeyGet" => Permission::SysMemoryLookupKeyGet, b"sysMemoryLookupKeyCreate" => Permission::SysMemoryLookupKeyCreate, b"sysMemoryLookupKeyUpdate" => Permission::SysMemoryLookupKeyUpdate, b"sysMemoryLookupKeyDestroy" => Permission::SysMemoryLookupKeyDestroy, b"sysMemoryLookupKeyQuery" => Permission::SysMemoryLookupKeyQuery, b"sysMemoryLookupKeyValueGet" => Permission::SysMemoryLookupKeyValueGet, b"sysMemoryLookupKeyValueCreate" => Permission::SysMemoryLookupKeyValueCreate, b"sysMemoryLookupKeyValueUpdate" => Permission::SysMemoryLookupKeyValueUpdate, b"sysMemoryLookupKeyValueDestroy" => Permission::SysMemoryLookupKeyValueDestroy, b"sysMemoryLookupKeyValueQuery" => Permission::SysMemoryLookupKeyValueQuery, b"sysMetricGet" => Permission::SysMetricGet, b"sysMetricCreate" => Permission::SysMetricCreate, b"sysMetricUpdate" => Permission::SysMetricUpdate, b"sysMetricDestroy" => Permission::SysMetricDestroy, b"sysMetricQuery" => Permission::SysMetricQuery, b"sysMetricsGet" => Permission::SysMetricsGet, b"sysMetricsUpdate" => Permission::SysMetricsUpdate, b"sysMetricsStoreGet" => Permission::SysMetricsStoreGet, b"sysMetricsStoreUpdate" => Permission::SysMetricsStoreUpdate, b"sysMtaConnectionStrategyGet" => Permission::SysMtaConnectionStrategyGet, b"sysMtaConnectionStrategyCreate" => Permission::SysMtaConnectionStrategyCreate, b"sysMtaConnectionStrategyUpdate" => Permission::SysMtaConnectionStrategyUpdate, b"sysMtaConnectionStrategyDestroy" => Permission::SysMtaConnectionStrategyDestroy, b"sysMtaConnectionStrategyQuery" => Permission::SysMtaConnectionStrategyQuery, b"sysMtaDeliveryScheduleGet" => Permission::SysMtaDeliveryScheduleGet, b"sysMtaDeliveryScheduleCreate" => Permission::SysMtaDeliveryScheduleCreate, b"sysMtaDeliveryScheduleUpdate" => Permission::SysMtaDeliveryScheduleUpdate, b"sysMtaDeliveryScheduleDestroy" => Permission::SysMtaDeliveryScheduleDestroy, b"sysMtaDeliveryScheduleQuery" => Permission::SysMtaDeliveryScheduleQuery, b"sysMtaExtensionsGet" => Permission::SysMtaExtensionsGet, b"sysMtaExtensionsUpdate" => Permission::SysMtaExtensionsUpdate, b"sysMtaHookGet" => Permission::SysMtaHookGet, b"sysMtaHookCreate" => Permission::SysMtaHookCreate, b"sysMtaHookUpdate" => Permission::SysMtaHookUpdate, b"sysMtaHookDestroy" => Permission::SysMtaHookDestroy, b"sysMtaHookQuery" => Permission::SysMtaHookQuery, b"sysMtaInboundSessionGet" => Permission::SysMtaInboundSessionGet, b"sysMtaInboundSessionUpdate" => Permission::SysMtaInboundSessionUpdate, b"sysMtaInboundThrottleGet" => Permission::SysMtaInboundThrottleGet, b"sysMtaInboundThrottleCreate" => Permission::SysMtaInboundThrottleCreate, b"sysMtaInboundThrottleUpdate" => Permission::SysMtaInboundThrottleUpdate, b"sysMtaInboundThrottleDestroy" => Permission::SysMtaInboundThrottleDestroy, b"sysMtaInboundThrottleQuery" => Permission::SysMtaInboundThrottleQuery, b"sysMtaMilterGet" => Permission::SysMtaMilterGet, b"sysMtaMilterCreate" => Permission::SysMtaMilterCreate, b"sysMtaMilterUpdate" => Permission::SysMtaMilterUpdate, b"sysMtaMilterDestroy" => Permission::SysMtaMilterDestroy, b"sysMtaMilterQuery" => Permission::SysMtaMilterQuery, b"sysMtaOutboundStrategyGet" => Permission::SysMtaOutboundStrategyGet, b"sysMtaOutboundStrategyUpdate" => Permission::SysMtaOutboundStrategyUpdate, b"sysMtaOutboundThrottleGet" => Permission::SysMtaOutboundThrottleGet, b"sysMtaOutboundThrottleCreate" => Permission::SysMtaOutboundThrottleCreate, b"sysMtaOutboundThrottleUpdate" => Permission::SysMtaOutboundThrottleUpdate, b"sysMtaOutboundThrottleDestroy" => Permission::SysMtaOutboundThrottleDestroy, b"sysMtaOutboundThrottleQuery" => Permission::SysMtaOutboundThrottleQuery, b"sysMtaQueueQuotaGet" => Permission::SysMtaQueueQuotaGet, b"sysMtaQueueQuotaCreate" => Permission::SysMtaQueueQuotaCreate, b"sysMtaQueueQuotaUpdate" => Permission::SysMtaQueueQuotaUpdate, b"sysMtaQueueQuotaDestroy" => Permission::SysMtaQueueQuotaDestroy, b"sysMtaQueueQuotaQuery" => Permission::SysMtaQueueQuotaQuery, b"sysMtaRouteGet" => Permission::SysMtaRouteGet, b"sysMtaRouteCreate" => Permission::SysMtaRouteCreate, b"sysMtaRouteUpdate" => Permission::SysMtaRouteUpdate, b"sysMtaRouteDestroy" => Permission::SysMtaRouteDestroy, b"sysMtaRouteQuery" => Permission::SysMtaRouteQuery, b"sysMtaStageAuthGet" => Permission::SysMtaStageAuthGet, b"sysMtaStageAuthUpdate" => Permission::SysMtaStageAuthUpdate, b"sysMtaStageConnectGet" => Permission::SysMtaStageConnectGet, b"sysMtaStageConnectUpdate" => Permission::SysMtaStageConnectUpdate, b"sysMtaStageDataGet" => Permission::SysMtaStageDataGet, b"sysMtaStageDataUpdate" => Permission::SysMtaStageDataUpdate, b"sysMtaStageEhloGet" => Permission::SysMtaStageEhloGet, b"sysMtaStageEhloUpdate" => Permission::SysMtaStageEhloUpdate, b"sysMtaStageMailGet" => Permission::SysMtaStageMailGet, b"sysMtaStageMailUpdate" => Permission::SysMtaStageMailUpdate, b"sysMtaStageRcptGet" => Permission::SysMtaStageRcptGet, b"sysMtaStageRcptUpdate" => Permission::SysMtaStageRcptUpdate, b"sysMtaStsGet" => Permission::SysMtaStsGet, b"sysMtaStsUpdate" => Permission::SysMtaStsUpdate, b"sysMtaTlsStrategyGet" => Permission::SysMtaTlsStrategyGet, b"sysMtaTlsStrategyCreate" => Permission::SysMtaTlsStrategyCreate, b"sysMtaTlsStrategyUpdate" => Permission::SysMtaTlsStrategyUpdate, b"sysMtaTlsStrategyDestroy" => Permission::SysMtaTlsStrategyDestroy, b"sysMtaTlsStrategyQuery" => Permission::SysMtaTlsStrategyQuery, b"sysMtaVirtualQueueGet" => Permission::SysMtaVirtualQueueGet, b"sysMtaVirtualQueueCreate" => Permission::SysMtaVirtualQueueCreate, b"sysMtaVirtualQueueUpdate" => Permission::SysMtaVirtualQueueUpdate, b"sysMtaVirtualQueueDestroy" => Permission::SysMtaVirtualQueueDestroy, b"sysMtaVirtualQueueQuery" => Permission::SysMtaVirtualQueueQuery, b"sysNetworkListenerGet" => Permission::SysNetworkListenerGet, b"sysNetworkListenerCreate" => Permission::SysNetworkListenerCreate, b"sysNetworkListenerUpdate" => Permission::SysNetworkListenerUpdate, b"sysNetworkListenerDestroy" => Permission::SysNetworkListenerDestroy, b"sysNetworkListenerQuery" => Permission::SysNetworkListenerQuery, b"sysOAuthClientGet" => Permission::SysOAuthClientGet, b"sysOAuthClientCreate" => Permission::SysOAuthClientCreate, b"sysOAuthClientUpdate" => Permission::SysOAuthClientUpdate, b"sysOAuthClientDestroy" => Permission::SysOAuthClientDestroy, b"sysOAuthClientQuery" => Permission::SysOAuthClientQuery, b"sysOidcProviderGet" => Permission::SysOidcProviderGet, b"sysOidcProviderUpdate" => Permission::SysOidcProviderUpdate, b"sysPublicKeyGet" => Permission::SysPublicKeyGet, b"sysPublicKeyCreate" => Permission::SysPublicKeyCreate, b"sysPublicKeyUpdate" => Permission::SysPublicKeyUpdate, b"sysPublicKeyDestroy" => Permission::SysPublicKeyDestroy, b"sysPublicKeyQuery" => Permission::SysPublicKeyQuery, b"sysQueuedMessageGet" => Permission::SysQueuedMessageGet, b"sysQueuedMessageCreate" => Permission::SysQueuedMessageCreate, b"sysQueuedMessageUpdate" => Permission::SysQueuedMessageUpdate, b"sysQueuedMessageDestroy" => Permission::SysQueuedMessageDestroy, b"sysQueuedMessageQuery" => Permission::SysQueuedMessageQuery, b"sysReportSettingsGet" => Permission::SysReportSettingsGet, b"sysReportSettingsUpdate" => Permission::SysReportSettingsUpdate, b"sysRoleGet" => Permission::SysRoleGet, b"sysRoleCreate" => Permission::SysRoleCreate, b"sysRoleUpdate" => Permission::SysRoleUpdate, b"sysRoleDestroy" => Permission::SysRoleDestroy, b"sysRoleQuery" => Permission::SysRoleQuery, b"sysSearchGet" => Permission::SysSearchGet, b"sysSearchUpdate" => Permission::SysSearchUpdate, b"sysSearchStoreGet" => Permission::SysSearchStoreGet, b"sysSearchStoreUpdate" => Permission::SysSearchStoreUpdate, b"sysSecurityGet" => Permission::SysSecurityGet, b"sysSecurityUpdate" => Permission::SysSecurityUpdate, b"sysSenderAuthGet" => Permission::SysSenderAuthGet, b"sysSenderAuthUpdate" => Permission::SysSenderAuthUpdate, b"sysSharingGet" => Permission::SysSharingGet, b"sysSharingUpdate" => Permission::SysSharingUpdate, b"sysSieveSystemInterpreterGet" => Permission::SysSieveSystemInterpreterGet, b"sysSieveSystemInterpreterUpdate" => Permission::SysSieveSystemInterpreterUpdate, b"sysSieveSystemScriptGet" => Permission::SysSieveSystemScriptGet, b"sysSieveSystemScriptCreate" => Permission::SysSieveSystemScriptCreate, b"sysSieveSystemScriptUpdate" => Permission::SysSieveSystemScriptUpdate, b"sysSieveSystemScriptDestroy" => Permission::SysSieveSystemScriptDestroy, b"sysSieveSystemScriptQuery" => Permission::SysSieveSystemScriptQuery, b"sysSieveUserInterpreterGet" => Permission::SysSieveUserInterpreterGet, b"sysSieveUserInterpreterUpdate" => Permission::SysSieveUserInterpreterUpdate, b"sysSieveUserScriptGet" => Permission::SysSieveUserScriptGet, b"sysSieveUserScriptCreate" => Permission::SysSieveUserScriptCreate, b"sysSieveUserScriptUpdate" => Permission::SysSieveUserScriptUpdate, b"sysSieveUserScriptDestroy" => Permission::SysSieveUserScriptDestroy, b"sysSieveUserScriptQuery" => Permission::SysSieveUserScriptQuery, b"sysSpamClassifierGet" => Permission::SysSpamClassifierGet, b"sysSpamClassifierUpdate" => Permission::SysSpamClassifierUpdate, b"sysSpamDnsblServerGet" => Permission::SysSpamDnsblServerGet, b"sysSpamDnsblServerCreate" => Permission::SysSpamDnsblServerCreate, b"sysSpamDnsblServerUpdate" => Permission::SysSpamDnsblServerUpdate, b"sysSpamDnsblServerDestroy" => Permission::SysSpamDnsblServerDestroy, b"sysSpamDnsblServerQuery" => Permission::SysSpamDnsblServerQuery, b"sysSpamDnsblSettingsGet" => Permission::SysSpamDnsblSettingsGet, b"sysSpamDnsblSettingsUpdate" => Permission::SysSpamDnsblSettingsUpdate, b"sysSpamFileExtensionGet" => Permission::SysSpamFileExtensionGet, b"sysSpamFileExtensionCreate" => Permission::SysSpamFileExtensionCreate, b"sysSpamFileExtensionUpdate" => Permission::SysSpamFileExtensionUpdate, b"sysSpamFileExtensionDestroy" => Permission::SysSpamFileExtensionDestroy, b"sysSpamFileExtensionQuery" => Permission::SysSpamFileExtensionQuery, b"sysSpamLlmGet" => Permission::SysSpamLlmGet, b"sysSpamLlmUpdate" => Permission::SysSpamLlmUpdate, b"sysSpamPyzorGet" => Permission::SysSpamPyzorGet, b"sysSpamPyzorUpdate" => Permission::SysSpamPyzorUpdate, b"sysSpamRuleGet" => Permission::SysSpamRuleGet, b"sysSpamRuleCreate" => Permission::SysSpamRuleCreate, b"sysSpamRuleUpdate" => Permission::SysSpamRuleUpdate, b"sysSpamRuleDestroy" => Permission::SysSpamRuleDestroy, b"sysSpamRuleQuery" => Permission::SysSpamRuleQuery, b"sysSpamSettingsGet" => Permission::SysSpamSettingsGet, b"sysSpamSettingsUpdate" => Permission::SysSpamSettingsUpdate, b"sysSpamTagGet" => Permission::SysSpamTagGet, b"sysSpamTagCreate" => Permission::SysSpamTagCreate, b"sysSpamTagUpdate" => Permission::SysSpamTagUpdate, b"sysSpamTagDestroy" => Permission::SysSpamTagDestroy, b"sysSpamTagQuery" => Permission::SysSpamTagQuery, b"sysSpamTrainingSampleGet" => Permission::SysSpamTrainingSampleGet, b"sysSpamTrainingSampleCreate" => Permission::SysSpamTrainingSampleCreate, b"sysSpamTrainingSampleUpdate" => Permission::SysSpamTrainingSampleUpdate, b"sysSpamTrainingSampleDestroy" => Permission::SysSpamTrainingSampleDestroy, b"sysSpamTrainingSampleQuery" => Permission::SysSpamTrainingSampleQuery, b"sysSpfReportSettingsGet" => Permission::SysSpfReportSettingsGet, b"sysSpfReportSettingsUpdate" => Permission::SysSpfReportSettingsUpdate, b"sysStoreLookupGet" => Permission::SysStoreLookupGet, b"sysStoreLookupCreate" => Permission::SysStoreLookupCreate, b"sysStoreLookupUpdate" => Permission::SysStoreLookupUpdate, b"sysStoreLookupDestroy" => Permission::SysStoreLookupDestroy, b"sysStoreLookupQuery" => Permission::SysStoreLookupQuery, b"sysSystemSettingsGet" => Permission::SysSystemSettingsGet, b"sysSystemSettingsUpdate" => Permission::SysSystemSettingsUpdate, b"taskIndexDocument" => Permission::TaskIndexDocument, b"taskUnindexDocument" => Permission::TaskUnindexDocument, b"taskIndexTrace" => Permission::TaskIndexTrace, b"taskCalendarAlarmEmail" => Permission::TaskCalendarAlarmEmail, b"taskCalendarAlarmNotification" => Permission::TaskCalendarAlarmNotification, b"taskCalendarItipMessage" => Permission::TaskCalendarItipMessage, b"taskMergeThreads" => Permission::TaskMergeThreads, b"taskDmarcReport" => Permission::TaskDmarcReport, b"taskTlsReport" => Permission::TaskTlsReport, b"taskRestoreArchivedItem" => Permission::TaskRestoreArchivedItem, b"taskDestroyAccount" => Permission::TaskDestroyAccount, b"taskAccountMaintenance" => Permission::TaskAccountMaintenance, b"taskTenantMaintenance" => Permission::TaskTenantMaintenance, b"taskStoreMaintenance" => Permission::TaskStoreMaintenance, b"taskSpamFilterMaintenance" => Permission::TaskSpamFilterMaintenance, b"taskAcmeRenewal" => Permission::TaskAcmeRenewal, b"taskDkimManagement" => Permission::TaskDkimManagement, b"taskDnsManagement" => Permission::TaskDnsManagement, b"sysTaskGet" => Permission::SysTaskGet, b"sysTaskCreate" => Permission::SysTaskCreate, b"sysTaskUpdate" => Permission::SysTaskUpdate, b"sysTaskDestroy" => Permission::SysTaskDestroy, b"sysTaskQuery" => Permission::SysTaskQuery, b"sysTaskManagerGet" => Permission::SysTaskManagerGet, b"sysTaskManagerUpdate" => Permission::SysTaskManagerUpdate, b"sysTenantGet" => Permission::SysTenantGet, b"sysTenantCreate" => Permission::SysTenantCreate, b"sysTenantUpdate" => Permission::SysTenantUpdate, b"sysTenantDestroy" => Permission::SysTenantDestroy, b"sysTenantQuery" => Permission::SysTenantQuery, b"sysTlsExternalReportGet" => Permission::SysTlsExternalReportGet, b"sysTlsExternalReportCreate" => Permission::SysTlsExternalReportCreate, b"sysTlsExternalReportUpdate" => Permission::SysTlsExternalReportUpdate, b"sysTlsExternalReportDestroy" => Permission::SysTlsExternalReportDestroy, b"sysTlsExternalReportQuery" => Permission::SysTlsExternalReportQuery, b"sysTlsInternalReportGet" => Permission::SysTlsInternalReportGet, b"sysTlsInternalReportCreate" => Permission::SysTlsInternalReportCreate, b"sysTlsInternalReportUpdate" => Permission::SysTlsInternalReportUpdate, b"sysTlsInternalReportDestroy" => Permission::SysTlsInternalReportDestroy, b"sysTlsInternalReportQuery" => Permission::SysTlsInternalReportQuery, b"sysTlsReportSettingsGet" => Permission::SysTlsReportSettingsGet, b"sysTlsReportSettingsUpdate" => Permission::SysTlsReportSettingsUpdate, b"sysTraceGet" => Permission::SysTraceGet, b"sysTraceCreate" => Permission::SysTraceCreate, b"sysTraceUpdate" => Permission::SysTraceUpdate, b"sysTraceDestroy" => Permission::SysTraceDestroy, b"sysTraceQuery" => Permission::SysTraceQuery, b"sysTracerGet" => Permission::SysTracerGet, b"sysTracerCreate" => Permission::SysTracerCreate, b"sysTracerUpdate" => Permission::SysTracerUpdate, b"sysTracerDestroy" => Permission::SysTracerDestroy, b"sysTracerQuery" => Permission::SysTracerQuery, b"sysTracingStoreGet" => Permission::SysTracingStoreGet, b"sysTracingStoreUpdate" => Permission::SysTracingStoreUpdate, b"sysWebDavGet" => Permission::SysWebDavGet, b"sysWebDavUpdate" => Permission::SysWebDavUpdate, b"sysWebHookGet" => Permission::SysWebHookGet, b"sysWebHookCreate" => Permission::SysWebHookCreate, b"sysWebHookUpdate" => Permission::SysWebHookUpdate, b"sysWebHookDestroy" => Permission::SysWebHookDestroy, b"sysWebHookQuery" => Permission::SysWebHookQuery, } .copied() } fn as_str(&self) -> &'static str { match self { Permission::Authenticate => "authenticate", Permission::AuthenticateWithAlias => "authenticateWithAlias", Permission::InteractAi => "interactAi", Permission::Impersonate => "impersonate", Permission::UnlimitedRequests => "unlimitedRequests", Permission::UnlimitedUploads => "unlimitedUploads", Permission::FetchAnyBlob => "fetchAnyBlob", Permission::EmailSend => "emailSend", Permission::EmailReceive => "emailReceive", Permission::CalendarAlarmsSend => "calendarAlarmsSend", Permission::CalendarSchedulingSend => "calendarSchedulingSend", Permission::CalendarSchedulingReceive => "calendarSchedulingReceive", Permission::JmapPushSubscriptionGet => "jmapPushSubscriptionGet", Permission::JmapPushSubscriptionCreate => "jmapPushSubscriptionCreate", Permission::JmapPushSubscriptionUpdate => "jmapPushSubscriptionUpdate", Permission::JmapPushSubscriptionDestroy => "jmapPushSubscriptionDestroy", Permission::JmapMailboxGet => "jmapMailboxGet", Permission::JmapMailboxChanges => "jmapMailboxChanges", Permission::JmapMailboxQuery => "jmapMailboxQuery", Permission::JmapMailboxQueryChanges => "jmapMailboxQueryChanges", Permission::JmapMailboxCreate => "jmapMailboxCreate", Permission::JmapMailboxUpdate => "jmapMailboxUpdate", Permission::JmapMailboxDestroy => "jmapMailboxDestroy", Permission::JmapThreadGet => "jmapThreadGet", Permission::JmapThreadChanges => "jmapThreadChanges", Permission::JmapEmailGet => "jmapEmailGet", Permission::JmapEmailChanges => "jmapEmailChanges", Permission::JmapEmailQuery => "jmapEmailQuery", Permission::JmapEmailQueryChanges => "jmapEmailQueryChanges", Permission::JmapEmailCreate => "jmapEmailCreate", Permission::JmapEmailUpdate => "jmapEmailUpdate", Permission::JmapEmailDestroy => "jmapEmailDestroy", Permission::JmapEmailCopy => "jmapEmailCopy", Permission::JmapEmailImport => "jmapEmailImport", Permission::JmapEmailParse => "jmapEmailParse", Permission::JmapSearchSnippetGet => "jmapSearchSnippetGet", Permission::JmapIdentityGet => "jmapIdentityGet", Permission::JmapIdentityChanges => "jmapIdentityChanges", Permission::JmapIdentityCreate => "jmapIdentityCreate", Permission::JmapIdentityUpdate => "jmapIdentityUpdate", Permission::JmapIdentityDestroy => "jmapIdentityDestroy", Permission::JmapEmailSubmissionGet => "jmapEmailSubmissionGet", Permission::JmapEmailSubmissionChanges => "jmapEmailSubmissionChanges", Permission::JmapEmailSubmissionQuery => "jmapEmailSubmissionQuery", Permission::JmapEmailSubmissionQueryChanges => "jmapEmailSubmissionQueryChanges", Permission::JmapEmailSubmissionCreate => "jmapEmailSubmissionCreate", Permission::JmapEmailSubmissionUpdate => "jmapEmailSubmissionUpdate", Permission::JmapEmailSubmissionDestroy => "jmapEmailSubmissionDestroy", Permission::JmapVacationResponseGet => "jmapVacationResponseGet", Permission::JmapVacationResponseCreate => "jmapVacationResponseCreate", Permission::JmapVacationResponseUpdate => "jmapVacationResponseUpdate", Permission::JmapVacationResponseDestroy => "jmapVacationResponseDestroy", Permission::JmapSieveScriptGet => "jmapSieveScriptGet", Permission::JmapSieveScriptQuery => "jmapSieveScriptQuery", Permission::JmapSieveScriptValidate => "jmapSieveScriptValidate", Permission::JmapSieveScriptCreate => "jmapSieveScriptCreate", Permission::JmapSieveScriptUpdate => "jmapSieveScriptUpdate", Permission::JmapSieveScriptDestroy => "jmapSieveScriptDestroy", Permission::JmapPrincipalGet => "jmapPrincipalGet", Permission::JmapPrincipalQuery => "jmapPrincipalQuery", Permission::JmapPrincipalChanges => "jmapPrincipalChanges", Permission::JmapPrincipalQueryChanges => "jmapPrincipalQueryChanges", Permission::JmapPrincipalGetAvailability => "jmapPrincipalGetAvailability", Permission::JmapPrincipalCreate => "jmapPrincipalCreate", Permission::JmapPrincipalUpdate => "jmapPrincipalUpdate", Permission::JmapPrincipalDestroy => "jmapPrincipalDestroy", Permission::JmapQuotaGet => "jmapQuotaGet", Permission::JmapQuotaChanges => "jmapQuotaChanges", Permission::JmapQuotaQuery => "jmapQuotaQuery", Permission::JmapQuotaQueryChanges => "jmapQuotaQueryChanges", Permission::JmapBlobGet => "jmapBlobGet", Permission::JmapBlobCopy => "jmapBlobCopy", Permission::JmapBlobLookup => "jmapBlobLookup", Permission::JmapBlobUpload => "jmapBlobUpload", Permission::JmapAddressBookGet => "jmapAddressBookGet", Permission::JmapAddressBookChanges => "jmapAddressBookChanges", Permission::JmapAddressBookCreate => "jmapAddressBookCreate", Permission::JmapAddressBookUpdate => "jmapAddressBookUpdate", Permission::JmapAddressBookDestroy => "jmapAddressBookDestroy", Permission::JmapContactCardGet => "jmapContactCardGet", Permission::JmapContactCardChanges => "jmapContactCardChanges", Permission::JmapContactCardQuery => "jmapContactCardQuery", Permission::JmapContactCardQueryChanges => "jmapContactCardQueryChanges", Permission::JmapContactCardCreate => "jmapContactCardCreate", Permission::JmapContactCardUpdate => "jmapContactCardUpdate", Permission::JmapContactCardDestroy => "jmapContactCardDestroy", Permission::JmapContactCardCopy => "jmapContactCardCopy", Permission::JmapContactCardParse => "jmapContactCardParse", Permission::JmapFileNodeGet => "jmapFileNodeGet", Permission::JmapFileNodeChanges => "jmapFileNodeChanges", Permission::JmapFileNodeQuery => "jmapFileNodeQuery", Permission::JmapFileNodeQueryChanges => "jmapFileNodeQueryChanges", Permission::JmapFileNodeCreate => "jmapFileNodeCreate", Permission::JmapFileNodeUpdate => "jmapFileNodeUpdate", Permission::JmapFileNodeDestroy => "jmapFileNodeDestroy", Permission::JmapFileNodeCopy => "jmapFileNodeCopy", Permission::JmapShareNotificationGet => "jmapShareNotificationGet", Permission::JmapShareNotificationChanges => "jmapShareNotificationChanges", Permission::JmapShareNotificationQuery => "jmapShareNotificationQuery", Permission::JmapShareNotificationQueryChanges => "jmapShareNotificationQueryChanges", Permission::JmapShareNotificationCreate => "jmapShareNotificationCreate", Permission::JmapShareNotificationUpdate => "jmapShareNotificationUpdate", Permission::JmapShareNotificationDestroy => "jmapShareNotificationDestroy", Permission::JmapCalendarGet => "jmapCalendarGet", Permission::JmapCalendarChanges => "jmapCalendarChanges", Permission::JmapCalendarCreate => "jmapCalendarCreate", Permission::JmapCalendarUpdate => "jmapCalendarUpdate", Permission::JmapCalendarDestroy => "jmapCalendarDestroy", Permission::JmapCalendarEventGet => "jmapCalendarEventGet", Permission::JmapCalendarEventChanges => "jmapCalendarEventChanges", Permission::JmapCalendarEventQuery => "jmapCalendarEventQuery", Permission::JmapCalendarEventQueryChanges => "jmapCalendarEventQueryChanges", Permission::JmapCalendarEventCreate => "jmapCalendarEventCreate", Permission::JmapCalendarEventUpdate => "jmapCalendarEventUpdate", Permission::JmapCalendarEventDestroy => "jmapCalendarEventDestroy", Permission::JmapCalendarEventCopy => "jmapCalendarEventCopy", Permission::JmapCalendarEventParse => "jmapCalendarEventParse", Permission::JmapCalendarEventNotificationGet => "jmapCalendarEventNotificationGet", Permission::JmapCalendarEventNotificationChanges => { "jmapCalendarEventNotificationChanges" } Permission::JmapCalendarEventNotificationQuery => "jmapCalendarEventNotificationQuery", Permission::JmapCalendarEventNotificationQueryChanges => { "jmapCalendarEventNotificationQueryChanges" } Permission::JmapCalendarEventNotificationCreate => { "jmapCalendarEventNotificationCreate" } Permission::JmapCalendarEventNotificationUpdate => { "jmapCalendarEventNotificationUpdate" } Permission::JmapCalendarEventNotificationDestroy => { "jmapCalendarEventNotificationDestroy" } Permission::JmapParticipantIdentityGet => "jmapParticipantIdentityGet", Permission::JmapParticipantIdentityChanges => "jmapParticipantIdentityChanges", Permission::JmapParticipantIdentityCreate => "jmapParticipantIdentityCreate", Permission::JmapParticipantIdentityUpdate => "jmapParticipantIdentityUpdate", Permission::JmapParticipantIdentityDestroy => "jmapParticipantIdentityDestroy", Permission::JmapCoreEcho => "jmapCoreEcho", Permission::ImapAuthenticate => "imapAuthenticate", Permission::ImapAclGet => "imapAclGet", Permission::ImapAclSet => "imapAclSet", Permission::ImapMyRights => "imapMyRights", Permission::ImapListRights => "imapListRights", Permission::ImapAppend => "imapAppend", Permission::ImapCapability => "imapCapability", Permission::ImapId => "imapId", Permission::ImapCopy => "imapCopy", Permission::ImapMove => "imapMove", Permission::ImapCreate => "imapCreate", Permission::ImapDelete => "imapDelete", Permission::ImapEnable => "imapEnable", Permission::ImapExpunge => "imapExpunge", Permission::ImapFetch => "imapFetch", Permission::ImapIdle => "imapIdle", Permission::ImapList => "imapList", Permission::ImapLsub => "imapLsub", Permission::ImapNamespace => "imapNamespace", Permission::ImapRename => "imapRename", Permission::ImapSearch => "imapSearch", Permission::ImapSort => "imapSort", Permission::ImapSelect => "imapSelect", Permission::ImapExamine => "imapExamine", Permission::ImapStatus => "imapStatus", Permission::ImapStore => "imapStore", Permission::ImapSubscribe => "imapSubscribe", Permission::ImapThread => "imapThread", Permission::Pop3Authenticate => "pop3Authenticate", Permission::Pop3List => "pop3List", Permission::Pop3Uidl => "pop3Uidl", Permission::Pop3Stat => "pop3Stat", Permission::Pop3Retr => "pop3Retr", Permission::Pop3Dele => "pop3Dele", Permission::SieveAuthenticate => "sieveAuthenticate", Permission::SieveListScripts => "sieveListScripts", Permission::SieveSetActive => "sieveSetActive", Permission::SieveGetScript => "sieveGetScript", Permission::SievePutScript => "sievePutScript", Permission::SieveDeleteScript => "sieveDeleteScript", Permission::SieveRenameScript => "sieveRenameScript", Permission::SieveCheckScript => "sieveCheckScript", Permission::SieveHaveSpace => "sieveHaveSpace", Permission::DavSyncCollection => "davSyncCollection", Permission::DavExpandProperty => "davExpandProperty", Permission::DavPrincipalAcl => "davPrincipalAcl", Permission::DavPrincipalList => "davPrincipalList", Permission::DavPrincipalMatch => "davPrincipalMatch", Permission::DavPrincipalSearch => "davPrincipalSearch", Permission::DavPrincipalSearchPropSet => "davPrincipalSearchPropSet", Permission::DavFilePropFind => "davFilePropFind", Permission::DavFilePropPatch => "davFilePropPatch", Permission::DavFileGet => "davFileGet", Permission::DavFileMkCol => "davFileMkCol", Permission::DavFileDelete => "davFileDelete", Permission::DavFilePut => "davFilePut", Permission::DavFileCopy => "davFileCopy", Permission::DavFileMove => "davFileMove", Permission::DavFileLock => "davFileLock", Permission::DavFileAcl => "davFileAcl", Permission::DavCardPropFind => "davCardPropFind", Permission::DavCardPropPatch => "davCardPropPatch", Permission::DavCardGet => "davCardGet", Permission::DavCardMkCol => "davCardMkCol", Permission::DavCardDelete => "davCardDelete", Permission::DavCardPut => "davCardPut", Permission::DavCardCopy => "davCardCopy", Permission::DavCardMove => "davCardMove", Permission::DavCardLock => "davCardLock", Permission::DavCardAcl => "davCardAcl", Permission::DavCardQuery => "davCardQuery", Permission::DavCardMultiGet => "davCardMultiGet", Permission::DavCalPropFind => "davCalPropFind", Permission::DavCalPropPatch => "davCalPropPatch", Permission::DavCalGet => "davCalGet", Permission::DavCalMkCol => "davCalMkCol", Permission::DavCalDelete => "davCalDelete", Permission::DavCalPut => "davCalPut", Permission::DavCalCopy => "davCalCopy", Permission::DavCalMove => "davCalMove", Permission::DavCalLock => "davCalLock", Permission::DavCalAcl => "davCalAcl", Permission::DavCalQuery => "davCalQuery", Permission::DavCalMultiGet => "davCalMultiGet", Permission::DavCalFreeBusyQuery => "davCalFreeBusyQuery", Permission::OAuthClientRegistration => "oAuthClientRegistration", Permission::OAuthClientOverride => "oAuthClientOverride", Permission::LiveTracing => "liveTracing", Permission::LiveMetrics => "liveMetrics", Permission::LiveDeliveryTest => "liveDeliveryTest", Permission::ScimAccess => "scimAccess", Permission::SysAccountGet => "sysAccountGet", Permission::SysAccountCreate => "sysAccountCreate", Permission::SysAccountUpdate => "sysAccountUpdate", Permission::SysAccountDestroy => "sysAccountDestroy", Permission::SysAccountQuery => "sysAccountQuery", Permission::SysAccountPasswordGet => "sysAccountPasswordGet", Permission::SysAccountPasswordUpdate => "sysAccountPasswordUpdate", Permission::SysAccountSettingsGet => "sysAccountSettingsGet", Permission::SysAccountSettingsUpdate => "sysAccountSettingsUpdate", Permission::SysAcmeProviderGet => "sysAcmeProviderGet", Permission::SysAcmeProviderCreate => "sysAcmeProviderCreate", Permission::SysAcmeProviderUpdate => "sysAcmeProviderUpdate", Permission::SysAcmeProviderDestroy => "sysAcmeProviderDestroy", Permission::SysAcmeProviderQuery => "sysAcmeProviderQuery", Permission::ActionReloadSettings => "actionReloadSettings", Permission::ActionReloadTlsCertificates => "actionReloadTlsCertificates", Permission::ActionReloadLookupStores => "actionReloadLookupStores", Permission::ActionReloadBlockedIps => "actionReloadBlockedIps", Permission::ActionUpdateApps => "actionUpdateApps", Permission::ActionTroubleshootDmarc => "actionTroubleshootDmarc", Permission::ActionClassifySpam => "actionClassifySpam", Permission::ActionInvalidateCaches => "actionInvalidateCaches", Permission::ActionInvalidateNegativeCaches => "actionInvalidateNegativeCaches", Permission::ActionPauseMtaQueue => "actionPauseMtaQueue", Permission::ActionResumeMtaQueue => "actionResumeMtaQueue", Permission::SysActionGet => "sysActionGet", Permission::SysActionCreate => "sysActionCreate", Permission::SysActionUpdate => "sysActionUpdate", Permission::SysActionDestroy => "sysActionDestroy", Permission::SysActionQuery => "sysActionQuery", Permission::SysAddressBookGet => "sysAddressBookGet", Permission::SysAddressBookUpdate => "sysAddressBookUpdate", Permission::SysAiModelGet => "sysAiModelGet", Permission::SysAiModelCreate => "sysAiModelCreate", Permission::SysAiModelUpdate => "sysAiModelUpdate", Permission::SysAiModelDestroy => "sysAiModelDestroy", Permission::SysAiModelQuery => "sysAiModelQuery", Permission::SysAlertGet => "sysAlertGet", Permission::SysAlertCreate => "sysAlertCreate", Permission::SysAlertUpdate => "sysAlertUpdate", Permission::SysAlertDestroy => "sysAlertDestroy", Permission::SysAlertQuery => "sysAlertQuery", Permission::SysAllowedIpGet => "sysAllowedIpGet", Permission::SysAllowedIpCreate => "sysAllowedIpCreate", Permission::SysAllowedIpUpdate => "sysAllowedIpUpdate", Permission::SysAllowedIpDestroy => "sysAllowedIpDestroy", Permission::SysAllowedIpQuery => "sysAllowedIpQuery", Permission::SysApiKeyGet => "sysApiKeyGet", Permission::SysApiKeyCreate => "sysApiKeyCreate", Permission::SysApiKeyUpdate => "sysApiKeyUpdate", Permission::SysApiKeyDestroy => "sysApiKeyDestroy", Permission::SysApiKeyQuery => "sysApiKeyQuery", Permission::SysAppPasswordGet => "sysAppPasswordGet", Permission::SysAppPasswordCreate => "sysAppPasswordCreate", Permission::SysAppPasswordUpdate => "sysAppPasswordUpdate", Permission::SysAppPasswordDestroy => "sysAppPasswordDestroy", Permission::SysAppPasswordQuery => "sysAppPasswordQuery", Permission::SysApplicationGet => "sysApplicationGet", Permission::SysApplicationCreate => "sysApplicationCreate", Permission::SysApplicationUpdate => "sysApplicationUpdate", Permission::SysApplicationDestroy => "sysApplicationDestroy", Permission::SysApplicationQuery => "sysApplicationQuery", Permission::SysArchivedItemGet => "sysArchivedItemGet", Permission::SysArchivedItemCreate => "sysArchivedItemCreate", Permission::SysArchivedItemUpdate => "sysArchivedItemUpdate", Permission::SysArchivedItemDestroy => "sysArchivedItemDestroy", Permission::SysArchivedItemQuery => "sysArchivedItemQuery", Permission::SysArfExternalReportGet => "sysArfExternalReportGet", Permission::SysArfExternalReportCreate => "sysArfExternalReportCreate", Permission::SysArfExternalReportUpdate => "sysArfExternalReportUpdate", Permission::SysArfExternalReportDestroy => "sysArfExternalReportDestroy", Permission::SysArfExternalReportQuery => "sysArfExternalReportQuery", Permission::SysAsnGet => "sysAsnGet", Permission::SysAsnUpdate => "sysAsnUpdate", Permission::SysAuthenticationGet => "sysAuthenticationGet", Permission::SysAuthenticationUpdate => "sysAuthenticationUpdate", Permission::SysBlobStoreGet => "sysBlobStoreGet", Permission::SysBlobStoreUpdate => "sysBlobStoreUpdate", Permission::SysBlockedIpGet => "sysBlockedIpGet", Permission::SysBlockedIpCreate => "sysBlockedIpCreate", Permission::SysBlockedIpUpdate => "sysBlockedIpUpdate", Permission::SysBlockedIpDestroy => "sysBlockedIpDestroy", Permission::SysBlockedIpQuery => "sysBlockedIpQuery", Permission::SysBootstrapGet => "sysBootstrapGet", Permission::SysBootstrapUpdate => "sysBootstrapUpdate", Permission::SysCacheGet => "sysCacheGet", Permission::SysCacheUpdate => "sysCacheUpdate", Permission::SysCalendarGet => "sysCalendarGet", Permission::SysCalendarUpdate => "sysCalendarUpdate", Permission::SysCalendarAlarmGet => "sysCalendarAlarmGet", Permission::SysCalendarAlarmUpdate => "sysCalendarAlarmUpdate", Permission::SysCalendarSchedulingGet => "sysCalendarSchedulingGet", Permission::SysCalendarSchedulingUpdate => "sysCalendarSchedulingUpdate", Permission::SysCertificateGet => "sysCertificateGet", Permission::SysCertificateCreate => "sysCertificateCreate", Permission::SysCertificateUpdate => "sysCertificateUpdate", Permission::SysCertificateDestroy => "sysCertificateDestroy", Permission::SysCertificateQuery => "sysCertificateQuery", Permission::SysClusterNodeGet => "sysClusterNodeGet", Permission::SysClusterNodeCreate => "sysClusterNodeCreate", Permission::SysClusterNodeUpdate => "sysClusterNodeUpdate", Permission::SysClusterNodeDestroy => "sysClusterNodeDestroy", Permission::SysClusterNodeQuery => "sysClusterNodeQuery", Permission::SysClusterRoleGet => "sysClusterRoleGet", Permission::SysClusterRoleCreate => "sysClusterRoleCreate", Permission::SysClusterRoleUpdate => "sysClusterRoleUpdate", Permission::SysClusterRoleDestroy => "sysClusterRoleDestroy", Permission::SysClusterRoleQuery => "sysClusterRoleQuery", Permission::SysCoordinatorGet => "sysCoordinatorGet", Permission::SysCoordinatorUpdate => "sysCoordinatorUpdate", Permission::SysDataRetentionGet => "sysDataRetentionGet", Permission::SysDataRetentionUpdate => "sysDataRetentionUpdate", Permission::SysDataStoreGet => "sysDataStoreGet", Permission::SysDataStoreUpdate => "sysDataStoreUpdate", Permission::SysDirectoryGet => "sysDirectoryGet", Permission::SysDirectoryCreate => "sysDirectoryCreate", Permission::SysDirectoryUpdate => "sysDirectoryUpdate", Permission::SysDirectoryDestroy => "sysDirectoryDestroy", Permission::SysDirectoryQuery => "sysDirectoryQuery", Permission::SysDkimReportSettingsGet => "sysDkimReportSettingsGet", Permission::SysDkimReportSettingsUpdate => "sysDkimReportSettingsUpdate", Permission::SysDkimSignatureGet => "sysDkimSignatureGet", Permission::SysDkimSignatureCreate => "sysDkimSignatureCreate", Permission::SysDkimSignatureUpdate => "sysDkimSignatureUpdate", Permission::SysDkimSignatureDestroy => "sysDkimSignatureDestroy", Permission::SysDkimSignatureQuery => "sysDkimSignatureQuery", Permission::SysDmarcExternalReportGet => "sysDmarcExternalReportGet", Permission::SysDmarcExternalReportCreate => "sysDmarcExternalReportCreate", Permission::SysDmarcExternalReportUpdate => "sysDmarcExternalReportUpdate", Permission::SysDmarcExternalReportDestroy => "sysDmarcExternalReportDestroy", Permission::SysDmarcExternalReportQuery => "sysDmarcExternalReportQuery", Permission::SysDmarcInternalReportGet => "sysDmarcInternalReportGet", Permission::SysDmarcInternalReportCreate => "sysDmarcInternalReportCreate", Permission::SysDmarcInternalReportUpdate => "sysDmarcInternalReportUpdate", Permission::SysDmarcInternalReportDestroy => "sysDmarcInternalReportDestroy", Permission::SysDmarcInternalReportQuery => "sysDmarcInternalReportQuery", Permission::SysDmarcReportSettingsGet => "sysDmarcReportSettingsGet", Permission::SysDmarcReportSettingsUpdate => "sysDmarcReportSettingsUpdate", Permission::SysDnsResolverGet => "sysDnsResolverGet", Permission::SysDnsResolverUpdate => "sysDnsResolverUpdate", Permission::SysDnsServerGet => "sysDnsServerGet", Permission::SysDnsServerCreate => "sysDnsServerCreate", Permission::SysDnsServerUpdate => "sysDnsServerUpdate", Permission::SysDnsServerDestroy => "sysDnsServerDestroy", Permission::SysDnsServerQuery => "sysDnsServerQuery", Permission::SysDomainGet => "sysDomainGet", Permission::SysDomainCreate => "sysDomainCreate", Permission::SysDomainUpdate => "sysDomainUpdate", Permission::SysDomainDestroy => "sysDomainDestroy", Permission::SysDomainQuery => "sysDomainQuery", Permission::SysDsnReportSettingsGet => "sysDsnReportSettingsGet", Permission::SysDsnReportSettingsUpdate => "sysDsnReportSettingsUpdate", Permission::SysEmailGet => "sysEmailGet", Permission::SysEmailUpdate => "sysEmailUpdate", Permission::SysEnterpriseGet => "sysEnterpriseGet", Permission::SysEnterpriseUpdate => "sysEnterpriseUpdate", Permission::SysEventTracingLevelGet => "sysEventTracingLevelGet", Permission::SysEventTracingLevelCreate => "sysEventTracingLevelCreate", Permission::SysEventTracingLevelUpdate => "sysEventTracingLevelUpdate", Permission::SysEventTracingLevelDestroy => "sysEventTracingLevelDestroy", Permission::SysEventTracingLevelQuery => "sysEventTracingLevelQuery", Permission::SysFileStorageGet => "sysFileStorageGet", Permission::SysFileStorageUpdate => "sysFileStorageUpdate", Permission::SysHttpGet => "sysHttpGet", Permission::SysHttpUpdate => "sysHttpUpdate", Permission::SysHttpFormGet => "sysHttpFormGet", Permission::SysHttpFormUpdate => "sysHttpFormUpdate", Permission::SysHttpLookupGet => "sysHttpLookupGet", Permission::SysHttpLookupCreate => "sysHttpLookupCreate", Permission::SysHttpLookupUpdate => "sysHttpLookupUpdate", Permission::SysHttpLookupDestroy => "sysHttpLookupDestroy", Permission::SysHttpLookupQuery => "sysHttpLookupQuery", Permission::SysImapGet => "sysImapGet", Permission::SysImapUpdate => "sysImapUpdate", Permission::SysInMemoryStoreGet => "sysInMemoryStoreGet", Permission::SysInMemoryStoreUpdate => "sysInMemoryStoreUpdate", Permission::SysJmapGet => "sysJmapGet", Permission::SysJmapUpdate => "sysJmapUpdate", Permission::SysLogGet => "sysLogGet", Permission::SysLogCreate => "sysLogCreate", Permission::SysLogUpdate => "sysLogUpdate", Permission::SysLogDestroy => "sysLogDestroy", Permission::SysLogQuery => "sysLogQuery", Permission::SysMailingListGet => "sysMailingListGet", Permission::SysMailingListCreate => "sysMailingListCreate", Permission::SysMailingListUpdate => "sysMailingListUpdate", Permission::SysMailingListDestroy => "sysMailingListDestroy", Permission::SysMailingListQuery => "sysMailingListQuery", Permission::SysMaskedEmailGet => "sysMaskedEmailGet", Permission::SysMaskedEmailCreate => "sysMaskedEmailCreate", Permission::SysMaskedEmailUpdate => "sysMaskedEmailUpdate", Permission::SysMaskedEmailDestroy => "sysMaskedEmailDestroy", Permission::SysMaskedEmailQuery => "sysMaskedEmailQuery", Permission::SysMemoryLookupKeyGet => "sysMemoryLookupKeyGet", Permission::SysMemoryLookupKeyCreate => "sysMemoryLookupKeyCreate", Permission::SysMemoryLookupKeyUpdate => "sysMemoryLookupKeyUpdate", Permission::SysMemoryLookupKeyDestroy => "sysMemoryLookupKeyDestroy", Permission::SysMemoryLookupKeyQuery => "sysMemoryLookupKeyQuery", Permission::SysMemoryLookupKeyValueGet => "sysMemoryLookupKeyValueGet", Permission::SysMemoryLookupKeyValueCreate => "sysMemoryLookupKeyValueCreate", Permission::SysMemoryLookupKeyValueUpdate => "sysMemoryLookupKeyValueUpdate", Permission::SysMemoryLookupKeyValueDestroy => "sysMemoryLookupKeyValueDestroy", Permission::SysMemoryLookupKeyValueQuery => "sysMemoryLookupKeyValueQuery", Permission::SysMetricGet => "sysMetricGet", Permission::SysMetricCreate => "sysMetricCreate", Permission::SysMetricUpdate => "sysMetricUpdate", Permission::SysMetricDestroy => "sysMetricDestroy", Permission::SysMetricQuery => "sysMetricQuery", Permission::SysMetricsGet => "sysMetricsGet", Permission::SysMetricsUpdate => "sysMetricsUpdate", Permission::SysMetricsStoreGet => "sysMetricsStoreGet", Permission::SysMetricsStoreUpdate => "sysMetricsStoreUpdate", Permission::SysMtaConnectionStrategyGet => "sysMtaConnectionStrategyGet", Permission::SysMtaConnectionStrategyCreate => "sysMtaConnectionStrategyCreate", Permission::SysMtaConnectionStrategyUpdate => "sysMtaConnectionStrategyUpdate", Permission::SysMtaConnectionStrategyDestroy => "sysMtaConnectionStrategyDestroy", Permission::SysMtaConnectionStrategyQuery => "sysMtaConnectionStrategyQuery", Permission::SysMtaDeliveryScheduleGet => "sysMtaDeliveryScheduleGet", Permission::SysMtaDeliveryScheduleCreate => "sysMtaDeliveryScheduleCreate", Permission::SysMtaDeliveryScheduleUpdate => "sysMtaDeliveryScheduleUpdate", Permission::SysMtaDeliveryScheduleDestroy => "sysMtaDeliveryScheduleDestroy", Permission::SysMtaDeliveryScheduleQuery => "sysMtaDeliveryScheduleQuery", Permission::SysMtaExtensionsGet => "sysMtaExtensionsGet", Permission::SysMtaExtensionsUpdate => "sysMtaExtensionsUpdate", Permission::SysMtaHookGet => "sysMtaHookGet", Permission::SysMtaHookCreate => "sysMtaHookCreate", Permission::SysMtaHookUpdate => "sysMtaHookUpdate", Permission::SysMtaHookDestroy => "sysMtaHookDestroy", Permission::SysMtaHookQuery => "sysMtaHookQuery", Permission::SysMtaInboundSessionGet => "sysMtaInboundSessionGet", Permission::SysMtaInboundSessionUpdate => "sysMtaInboundSessionUpdate", Permission::SysMtaInboundThrottleGet => "sysMtaInboundThrottleGet", Permission::SysMtaInboundThrottleCreate => "sysMtaInboundThrottleCreate", Permission::SysMtaInboundThrottleUpdate => "sysMtaInboundThrottleUpdate", Permission::SysMtaInboundThrottleDestroy => "sysMtaInboundThrottleDestroy", Permission::SysMtaInboundThrottleQuery => "sysMtaInboundThrottleQuery", Permission::SysMtaMilterGet => "sysMtaMilterGet", Permission::SysMtaMilterCreate => "sysMtaMilterCreate", Permission::SysMtaMilterUpdate => "sysMtaMilterUpdate", Permission::SysMtaMilterDestroy => "sysMtaMilterDestroy", Permission::SysMtaMilterQuery => "sysMtaMilterQuery", Permission::SysMtaOutboundStrategyGet => "sysMtaOutboundStrategyGet", Permission::SysMtaOutboundStrategyUpdate => "sysMtaOutboundStrategyUpdate", Permission::SysMtaOutboundThrottleGet => "sysMtaOutboundThrottleGet", Permission::SysMtaOutboundThrottleCreate => "sysMtaOutboundThrottleCreate", Permission::SysMtaOutboundThrottleUpdate => "sysMtaOutboundThrottleUpdate", Permission::SysMtaOutboundThrottleDestroy => "sysMtaOutboundThrottleDestroy", Permission::SysMtaOutboundThrottleQuery => "sysMtaOutboundThrottleQuery", Permission::SysMtaQueueQuotaGet => "sysMtaQueueQuotaGet", Permission::SysMtaQueueQuotaCreate => "sysMtaQueueQuotaCreate", Permission::SysMtaQueueQuotaUpdate => "sysMtaQueueQuotaUpdate", Permission::SysMtaQueueQuotaDestroy => "sysMtaQueueQuotaDestroy", Permission::SysMtaQueueQuotaQuery => "sysMtaQueueQuotaQuery", Permission::SysMtaRouteGet => "sysMtaRouteGet", Permission::SysMtaRouteCreate => "sysMtaRouteCreate", Permission::SysMtaRouteUpdate => "sysMtaRouteUpdate", Permission::SysMtaRouteDestroy => "sysMtaRouteDestroy", Permission::SysMtaRouteQuery => "sysMtaRouteQuery", Permission::SysMtaStageAuthGet => "sysMtaStageAuthGet", Permission::SysMtaStageAuthUpdate => "sysMtaStageAuthUpdate", Permission::SysMtaStageConnectGet => "sysMtaStageConnectGet", Permission::SysMtaStageConnectUpdate => "sysMtaStageConnectUpdate", Permission::SysMtaStageDataGet => "sysMtaStageDataGet", Permission::SysMtaStageDataUpdate => "sysMtaStageDataUpdate", Permission::SysMtaStageEhloGet => "sysMtaStageEhloGet", Permission::SysMtaStageEhloUpdate => "sysMtaStageEhloUpdate", Permission::SysMtaStageMailGet => "sysMtaStageMailGet", Permission::SysMtaStageMailUpdate => "sysMtaStageMailUpdate", Permission::SysMtaStageRcptGet => "sysMtaStageRcptGet", Permission::SysMtaStageRcptUpdate => "sysMtaStageRcptUpdate", Permission::SysMtaStsGet => "sysMtaStsGet", Permission::SysMtaStsUpdate => "sysMtaStsUpdate", Permission::SysMtaTlsStrategyGet => "sysMtaTlsStrategyGet", Permission::SysMtaTlsStrategyCreate => "sysMtaTlsStrategyCreate", Permission::SysMtaTlsStrategyUpdate => "sysMtaTlsStrategyUpdate", Permission::SysMtaTlsStrategyDestroy => "sysMtaTlsStrategyDestroy", Permission::SysMtaTlsStrategyQuery => "sysMtaTlsStrategyQuery", Permission::SysMtaVirtualQueueGet => "sysMtaVirtualQueueGet", Permission::SysMtaVirtualQueueCreate => "sysMtaVirtualQueueCreate", Permission::SysMtaVirtualQueueUpdate => "sysMtaVirtualQueueUpdate", Permission::SysMtaVirtualQueueDestroy => "sysMtaVirtualQueueDestroy", Permission::SysMtaVirtualQueueQuery => "sysMtaVirtualQueueQuery", Permission::SysNetworkListenerGet => "sysNetworkListenerGet", Permission::SysNetworkListenerCreate => "sysNetworkListenerCreate", Permission::SysNetworkListenerUpdate => "sysNetworkListenerUpdate", Permission::SysNetworkListenerDestroy => "sysNetworkListenerDestroy", Permission::SysNetworkListenerQuery => "sysNetworkListenerQuery", Permission::SysOAuthClientGet => "sysOAuthClientGet", Permission::SysOAuthClientCreate => "sysOAuthClientCreate", Permission::SysOAuthClientUpdate => "sysOAuthClientUpdate", Permission::SysOAuthClientDestroy => "sysOAuthClientDestroy", Permission::SysOAuthClientQuery => "sysOAuthClientQuery", Permission::SysOidcProviderGet => "sysOidcProviderGet", Permission::SysOidcProviderUpdate => "sysOidcProviderUpdate", Permission::SysPublicKeyGet => "sysPublicKeyGet", Permission::SysPublicKeyCreate => "sysPublicKeyCreate", Permission::SysPublicKeyUpdate => "sysPublicKeyUpdate", Permission::SysPublicKeyDestroy => "sysPublicKeyDestroy", Permission::SysPublicKeyQuery => "sysPublicKeyQuery", Permission::SysQueuedMessageGet => "sysQueuedMessageGet", Permission::SysQueuedMessageCreate => "sysQueuedMessageCreate", Permission::SysQueuedMessageUpdate => "sysQueuedMessageUpdate", Permission::SysQueuedMessageDestroy => "sysQueuedMessageDestroy", Permission::SysQueuedMessageQuery => "sysQueuedMessageQuery", Permission::SysReportSettingsGet => "sysReportSettingsGet", Permission::SysReportSettingsUpdate => "sysReportSettingsUpdate", Permission::SysRoleGet => "sysRoleGet", Permission::SysRoleCreate => "sysRoleCreate", Permission::SysRoleUpdate => "sysRoleUpdate", Permission::SysRoleDestroy => "sysRoleDestroy", Permission::SysRoleQuery => "sysRoleQuery", Permission::SysSearchGet => "sysSearchGet", Permission::SysSearchUpdate => "sysSearchUpdate", Permission::SysSearchStoreGet => "sysSearchStoreGet", Permission::SysSearchStoreUpdate => "sysSearchStoreUpdate", Permission::SysSecurityGet => "sysSecurityGet", Permission::SysSecurityUpdate => "sysSecurityUpdate", Permission::SysSenderAuthGet => "sysSenderAuthGet", Permission::SysSenderAuthUpdate => "sysSenderAuthUpdate", Permission::SysSharingGet => "sysSharingGet", Permission::SysSharingUpdate => "sysSharingUpdate", Permission::SysSieveSystemInterpreterGet => "sysSieveSystemInterpreterGet", Permission::SysSieveSystemInterpreterUpdate => "sysSieveSystemInterpreterUpdate", Permission::SysSieveSystemScriptGet => "sysSieveSystemScriptGet", Permission::SysSieveSystemScriptCreate => "sysSieveSystemScriptCreate", Permission::SysSieveSystemScriptUpdate => "sysSieveSystemScriptUpdate", Permission::SysSieveSystemScriptDestroy => "sysSieveSystemScriptDestroy", Permission::SysSieveSystemScriptQuery => "sysSieveSystemScriptQuery", Permission::SysSieveUserInterpreterGet => "sysSieveUserInterpreterGet", Permission::SysSieveUserInterpreterUpdate => "sysSieveUserInterpreterUpdate", Permission::SysSieveUserScriptGet => "sysSieveUserScriptGet", Permission::SysSieveUserScriptCreate => "sysSieveUserScriptCreate", Permission::SysSieveUserScriptUpdate => "sysSieveUserScriptUpdate", Permission::SysSieveUserScriptDestroy => "sysSieveUserScriptDestroy", Permission::SysSieveUserScriptQuery => "sysSieveUserScriptQuery", Permission::SysSpamClassifierGet => "sysSpamClassifierGet", Permission::SysSpamClassifierUpdate => "sysSpamClassifierUpdate", Permission::SysSpamDnsblServerGet => "sysSpamDnsblServerGet", Permission::SysSpamDnsblServerCreate => "sysSpamDnsblServerCreate", Permission::SysSpamDnsblServerUpdate => "sysSpamDnsblServerUpdate", Permission::SysSpamDnsblServerDestroy => "sysSpamDnsblServerDestroy", Permission::SysSpamDnsblServerQuery => "sysSpamDnsblServerQuery", Permission::SysSpamDnsblSettingsGet => "sysSpamDnsblSettingsGet", Permission::SysSpamDnsblSettingsUpdate => "sysSpamDnsblSettingsUpdate", Permission::SysSpamFileExtensionGet => "sysSpamFileExtensionGet", Permission::SysSpamFileExtensionCreate => "sysSpamFileExtensionCreate", Permission::SysSpamFileExtensionUpdate => "sysSpamFileExtensionUpdate", Permission::SysSpamFileExtensionDestroy => "sysSpamFileExtensionDestroy", Permission::SysSpamFileExtensionQuery => "sysSpamFileExtensionQuery", Permission::SysSpamLlmGet => "sysSpamLlmGet", Permission::SysSpamLlmUpdate => "sysSpamLlmUpdate", Permission::SysSpamPyzorGet => "sysSpamPyzorGet", Permission::SysSpamPyzorUpdate => "sysSpamPyzorUpdate", Permission::SysSpamRuleGet => "sysSpamRuleGet", Permission::SysSpamRuleCreate => "sysSpamRuleCreate", Permission::SysSpamRuleUpdate => "sysSpamRuleUpdate", Permission::SysSpamRuleDestroy => "sysSpamRuleDestroy", Permission::SysSpamRuleQuery => "sysSpamRuleQuery", Permission::SysSpamSettingsGet => "sysSpamSettingsGet", Permission::SysSpamSettingsUpdate => "sysSpamSettingsUpdate", Permission::SysSpamTagGet => "sysSpamTagGet", Permission::SysSpamTagCreate => "sysSpamTagCreate", Permission::SysSpamTagUpdate => "sysSpamTagUpdate", Permission::SysSpamTagDestroy => "sysSpamTagDestroy", Permission::SysSpamTagQuery => "sysSpamTagQuery", Permission::SysSpamTrainingSampleGet => "sysSpamTrainingSampleGet", Permission::SysSpamTrainingSampleCreate => "sysSpamTrainingSampleCreate", Permission::SysSpamTrainingSampleUpdate => "sysSpamTrainingSampleUpdate", Permission::SysSpamTrainingSampleDestroy => "sysSpamTrainingSampleDestroy", Permission::SysSpamTrainingSampleQuery => "sysSpamTrainingSampleQuery", Permission::SysSpfReportSettingsGet => "sysSpfReportSettingsGet", Permission::SysSpfReportSettingsUpdate => "sysSpfReportSettingsUpdate", Permission::SysStoreLookupGet => "sysStoreLookupGet", Permission::SysStoreLookupCreate => "sysStoreLookupCreate", Permission::SysStoreLookupUpdate => "sysStoreLookupUpdate", Permission::SysStoreLookupDestroy => "sysStoreLookupDestroy", Permission::SysStoreLookupQuery => "sysStoreLookupQuery", Permission::SysSystemSettingsGet => "sysSystemSettingsGet", Permission::SysSystemSettingsUpdate => "sysSystemSettingsUpdate", Permission::TaskIndexDocument => "taskIndexDocument", Permission::TaskUnindexDocument => "taskUnindexDocument", Permission::TaskIndexTrace => "taskIndexTrace", Permission::TaskCalendarAlarmEmail => "taskCalendarAlarmEmail", Permission::TaskCalendarAlarmNotification => "taskCalendarAlarmNotification", Permission::TaskCalendarItipMessage => "taskCalendarItipMessage", Permission::TaskMergeThreads => "taskMergeThreads", Permission::TaskDmarcReport => "taskDmarcReport", Permission::TaskTlsReport => "taskTlsReport", Permission::TaskRestoreArchivedItem => "taskRestoreArchivedItem", Permission::TaskDestroyAccount => "taskDestroyAccount", Permission::TaskAccountMaintenance => "taskAccountMaintenance", Permission::TaskTenantMaintenance => "taskTenantMaintenance", Permission::TaskStoreMaintenance => "taskStoreMaintenance", Permission::TaskSpamFilterMaintenance => "taskSpamFilterMaintenance", Permission::TaskAcmeRenewal => "taskAcmeRenewal", Permission::TaskDkimManagement => "taskDkimManagement", Permission::TaskDnsManagement => "taskDnsManagement", Permission::SysTaskGet => "sysTaskGet", Permission::SysTaskCreate => "sysTaskCreate", Permission::SysTaskUpdate => "sysTaskUpdate", Permission::SysTaskDestroy => "sysTaskDestroy", Permission::SysTaskQuery => "sysTaskQuery", Permission::SysTaskManagerGet => "sysTaskManagerGet", Permission::SysTaskManagerUpdate => "sysTaskManagerUpdate", Permission::SysTenantGet => "sysTenantGet", Permission::SysTenantCreate => "sysTenantCreate", Permission::SysTenantUpdate => "sysTenantUpdate", Permission::SysTenantDestroy => "sysTenantDestroy", Permission::SysTenantQuery => "sysTenantQuery", Permission::SysTlsExternalReportGet => "sysTlsExternalReportGet", Permission::SysTlsExternalReportCreate => "sysTlsExternalReportCreate", Permission::SysTlsExternalReportUpdate => "sysTlsExternalReportUpdate", Permission::SysTlsExternalReportDestroy => "sysTlsExternalReportDestroy", Permission::SysTlsExternalReportQuery => "sysTlsExternalReportQuery", Permission::SysTlsInternalReportGet => "sysTlsInternalReportGet", Permission::SysTlsInternalReportCreate => "sysTlsInternalReportCreate", Permission::SysTlsInternalReportUpdate => "sysTlsInternalReportUpdate", Permission::SysTlsInternalReportDestroy => "sysTlsInternalReportDestroy", Permission::SysTlsInternalReportQuery => "sysTlsInternalReportQuery", Permission::SysTlsReportSettingsGet => "sysTlsReportSettingsGet", Permission::SysTlsReportSettingsUpdate => "sysTlsReportSettingsUpdate", Permission::SysTraceGet => "sysTraceGet", Permission::SysTraceCreate => "sysTraceCreate", Permission::SysTraceUpdate => "sysTraceUpdate", Permission::SysTraceDestroy => "sysTraceDestroy", Permission::SysTraceQuery => "sysTraceQuery", Permission::SysTracerGet => "sysTracerGet", Permission::SysTracerCreate => "sysTracerCreate", Permission::SysTracerUpdate => "sysTracerUpdate", Permission::SysTracerDestroy => "sysTracerDestroy", Permission::SysTracerQuery => "sysTracerQuery", Permission::SysTracingStoreGet => "sysTracingStoreGet", Permission::SysTracingStoreUpdate => "sysTracingStoreUpdate", Permission::SysWebDavGet => "sysWebDavGet", Permission::SysWebDavUpdate => "sysWebDavUpdate", Permission::SysWebHookGet => "sysWebHookGet", Permission::SysWebHookCreate => "sysWebHookCreate", Permission::SysWebHookUpdate => "sysWebHookUpdate", Permission::SysWebHookDestroy => "sysWebHookDestroy", Permission::SysWebHookQuery => "sysWebHookQuery", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(Permission::Authenticate), 1 => Some(Permission::AuthenticateWithAlias), 2 => Some(Permission::InteractAi), 3 => Some(Permission::Impersonate), 4 => Some(Permission::UnlimitedRequests), 5 => Some(Permission::UnlimitedUploads), 6 => Some(Permission::FetchAnyBlob), 7 => Some(Permission::EmailSend), 8 => Some(Permission::EmailReceive), 9 => Some(Permission::CalendarAlarmsSend), 10 => Some(Permission::CalendarSchedulingSend), 11 => Some(Permission::CalendarSchedulingReceive), 12 => Some(Permission::JmapPushSubscriptionGet), 13 => Some(Permission::JmapPushSubscriptionCreate), 14 => Some(Permission::JmapPushSubscriptionUpdate), 15 => Some(Permission::JmapPushSubscriptionDestroy), 16 => Some(Permission::JmapMailboxGet), 17 => Some(Permission::JmapMailboxChanges), 18 => Some(Permission::JmapMailboxQuery), 19 => Some(Permission::JmapMailboxQueryChanges), 20 => Some(Permission::JmapMailboxCreate), 21 => Some(Permission::JmapMailboxUpdate), 22 => Some(Permission::JmapMailboxDestroy), 23 => Some(Permission::JmapThreadGet), 24 => Some(Permission::JmapThreadChanges), 25 => Some(Permission::JmapEmailGet), 26 => Some(Permission::JmapEmailChanges), 27 => Some(Permission::JmapEmailQuery), 28 => Some(Permission::JmapEmailQueryChanges), 29 => Some(Permission::JmapEmailCreate), 30 => Some(Permission::JmapEmailUpdate), 31 => Some(Permission::JmapEmailDestroy), 32 => Some(Permission::JmapEmailCopy), 33 => Some(Permission::JmapEmailImport), 34 => Some(Permission::JmapEmailParse), 35 => Some(Permission::JmapSearchSnippetGet), 36 => Some(Permission::JmapIdentityGet), 37 => Some(Permission::JmapIdentityChanges), 38 => Some(Permission::JmapIdentityCreate), 39 => Some(Permission::JmapIdentityUpdate), 40 => Some(Permission::JmapIdentityDestroy), 41 => Some(Permission::JmapEmailSubmissionGet), 42 => Some(Permission::JmapEmailSubmissionChanges), 43 => Some(Permission::JmapEmailSubmissionQuery), 44 => Some(Permission::JmapEmailSubmissionQueryChanges), 45 => Some(Permission::JmapEmailSubmissionCreate), 46 => Some(Permission::JmapEmailSubmissionUpdate), 47 => Some(Permission::JmapEmailSubmissionDestroy), 48 => Some(Permission::JmapVacationResponseGet), 49 => Some(Permission::JmapVacationResponseCreate), 50 => Some(Permission::JmapVacationResponseUpdate), 51 => Some(Permission::JmapVacationResponseDestroy), 52 => Some(Permission::JmapSieveScriptGet), 53 => Some(Permission::JmapSieveScriptQuery), 54 => Some(Permission::JmapSieveScriptValidate), 55 => Some(Permission::JmapSieveScriptCreate), 56 => Some(Permission::JmapSieveScriptUpdate), 57 => Some(Permission::JmapSieveScriptDestroy), 58 => Some(Permission::JmapPrincipalGet), 59 => Some(Permission::JmapPrincipalQuery), 60 => Some(Permission::JmapPrincipalChanges), 61 => Some(Permission::JmapPrincipalQueryChanges), 62 => Some(Permission::JmapPrincipalGetAvailability), 63 => Some(Permission::JmapPrincipalCreate), 64 => Some(Permission::JmapPrincipalUpdate), 65 => Some(Permission::JmapPrincipalDestroy), 66 => Some(Permission::JmapQuotaGet), 67 => Some(Permission::JmapQuotaChanges), 68 => Some(Permission::JmapQuotaQuery), 69 => Some(Permission::JmapQuotaQueryChanges), 70 => Some(Permission::JmapBlobGet), 71 => Some(Permission::JmapBlobCopy), 72 => Some(Permission::JmapBlobLookup), 73 => Some(Permission::JmapBlobUpload), 74 => Some(Permission::JmapAddressBookGet), 75 => Some(Permission::JmapAddressBookChanges), 76 => Some(Permission::JmapAddressBookCreate), 77 => Some(Permission::JmapAddressBookUpdate), 78 => Some(Permission::JmapAddressBookDestroy), 79 => Some(Permission::JmapContactCardGet), 80 => Some(Permission::JmapContactCardChanges), 81 => Some(Permission::JmapContactCardQuery), 82 => Some(Permission::JmapContactCardQueryChanges), 83 => Some(Permission::JmapContactCardCreate), 84 => Some(Permission::JmapContactCardUpdate), 85 => Some(Permission::JmapContactCardDestroy), 86 => Some(Permission::JmapContactCardCopy), 87 => Some(Permission::JmapContactCardParse), 88 => Some(Permission::JmapFileNodeGet), 89 => Some(Permission::JmapFileNodeChanges), 90 => Some(Permission::JmapFileNodeQuery), 91 => Some(Permission::JmapFileNodeQueryChanges), 92 => Some(Permission::JmapFileNodeCreate), 93 => Some(Permission::JmapFileNodeUpdate), 94 => Some(Permission::JmapFileNodeDestroy), 659 => Some(Permission::JmapFileNodeCopy), 95 => Some(Permission::JmapShareNotificationGet), 96 => Some(Permission::JmapShareNotificationChanges), 97 => Some(Permission::JmapShareNotificationQuery), 98 => Some(Permission::JmapShareNotificationQueryChanges), 99 => Some(Permission::JmapShareNotificationCreate), 100 => Some(Permission::JmapShareNotificationUpdate), 101 => Some(Permission::JmapShareNotificationDestroy), 102 => Some(Permission::JmapCalendarGet), 103 => Some(Permission::JmapCalendarChanges), 104 => Some(Permission::JmapCalendarCreate), 105 => Some(Permission::JmapCalendarUpdate), 106 => Some(Permission::JmapCalendarDestroy), 107 => Some(Permission::JmapCalendarEventGet), 108 => Some(Permission::JmapCalendarEventChanges), 109 => Some(Permission::JmapCalendarEventQuery), 110 => Some(Permission::JmapCalendarEventQueryChanges), 111 => Some(Permission::JmapCalendarEventCreate), 112 => Some(Permission::JmapCalendarEventUpdate), 113 => Some(Permission::JmapCalendarEventDestroy), 114 => Some(Permission::JmapCalendarEventCopy), 115 => Some(Permission::JmapCalendarEventParse), 116 => Some(Permission::JmapCalendarEventNotificationGet), 117 => Some(Permission::JmapCalendarEventNotificationChanges), 118 => Some(Permission::JmapCalendarEventNotificationQuery), 119 => Some(Permission::JmapCalendarEventNotificationQueryChanges), 120 => Some(Permission::JmapCalendarEventNotificationCreate), 121 => Some(Permission::JmapCalendarEventNotificationUpdate), 122 => Some(Permission::JmapCalendarEventNotificationDestroy), 123 => Some(Permission::JmapParticipantIdentityGet), 124 => Some(Permission::JmapParticipantIdentityChanges), 125 => Some(Permission::JmapParticipantIdentityCreate), 126 => Some(Permission::JmapParticipantIdentityUpdate), 127 => Some(Permission::JmapParticipantIdentityDestroy), 128 => Some(Permission::JmapCoreEcho), 129 => Some(Permission::ImapAuthenticate), 130 => Some(Permission::ImapAclGet), 131 => Some(Permission::ImapAclSet), 132 => Some(Permission::ImapMyRights), 133 => Some(Permission::ImapListRights), 134 => Some(Permission::ImapAppend), 135 => Some(Permission::ImapCapability), 136 => Some(Permission::ImapId), 137 => Some(Permission::ImapCopy), 138 => Some(Permission::ImapMove), 139 => Some(Permission::ImapCreate), 140 => Some(Permission::ImapDelete), 141 => Some(Permission::ImapEnable), 142 => Some(Permission::ImapExpunge), 143 => Some(Permission::ImapFetch), 144 => Some(Permission::ImapIdle), 145 => Some(Permission::ImapList), 146 => Some(Permission::ImapLsub), 147 => Some(Permission::ImapNamespace), 148 => Some(Permission::ImapRename), 149 => Some(Permission::ImapSearch), 150 => Some(Permission::ImapSort), 151 => Some(Permission::ImapSelect), 152 => Some(Permission::ImapExamine), 153 => Some(Permission::ImapStatus), 154 => Some(Permission::ImapStore), 155 => Some(Permission::ImapSubscribe), 156 => Some(Permission::ImapThread), 157 => Some(Permission::Pop3Authenticate), 158 => Some(Permission::Pop3List), 159 => Some(Permission::Pop3Uidl), 160 => Some(Permission::Pop3Stat), 161 => Some(Permission::Pop3Retr), 162 => Some(Permission::Pop3Dele), 163 => Some(Permission::SieveAuthenticate), 164 => Some(Permission::SieveListScripts), 165 => Some(Permission::SieveSetActive), 166 => Some(Permission::SieveGetScript), 167 => Some(Permission::SievePutScript), 168 => Some(Permission::SieveDeleteScript), 169 => Some(Permission::SieveRenameScript), 170 => Some(Permission::SieveCheckScript), 171 => Some(Permission::SieveHaveSpace), 172 => Some(Permission::DavSyncCollection), 173 => Some(Permission::DavExpandProperty), 174 => Some(Permission::DavPrincipalAcl), 175 => Some(Permission::DavPrincipalList), 176 => Some(Permission::DavPrincipalMatch), 177 => Some(Permission::DavPrincipalSearch), 178 => Some(Permission::DavPrincipalSearchPropSet), 179 => Some(Permission::DavFilePropFind), 180 => Some(Permission::DavFilePropPatch), 181 => Some(Permission::DavFileGet), 182 => Some(Permission::DavFileMkCol), 183 => Some(Permission::DavFileDelete), 184 => Some(Permission::DavFilePut), 185 => Some(Permission::DavFileCopy), 186 => Some(Permission::DavFileMove), 187 => Some(Permission::DavFileLock), 188 => Some(Permission::DavFileAcl), 189 => Some(Permission::DavCardPropFind), 190 => Some(Permission::DavCardPropPatch), 191 => Some(Permission::DavCardGet), 192 => Some(Permission::DavCardMkCol), 193 => Some(Permission::DavCardDelete), 194 => Some(Permission::DavCardPut), 195 => Some(Permission::DavCardCopy), 196 => Some(Permission::DavCardMove), 197 => Some(Permission::DavCardLock), 198 => Some(Permission::DavCardAcl), 199 => Some(Permission::DavCardQuery), 200 => Some(Permission::DavCardMultiGet), 201 => Some(Permission::DavCalPropFind), 202 => Some(Permission::DavCalPropPatch), 203 => Some(Permission::DavCalGet), 204 => Some(Permission::DavCalMkCol), 205 => Some(Permission::DavCalDelete), 206 => Some(Permission::DavCalPut), 207 => Some(Permission::DavCalCopy), 208 => Some(Permission::DavCalMove), 209 => Some(Permission::DavCalLock), 210 => Some(Permission::DavCalAcl), 211 => Some(Permission::DavCalQuery), 212 => Some(Permission::DavCalMultiGet), 213 => Some(Permission::DavCalFreeBusyQuery), 214 => Some(Permission::OAuthClientRegistration), 215 => Some(Permission::OAuthClientOverride), 216 => Some(Permission::LiveTracing), 217 => Some(Permission::LiveMetrics), 218 => Some(Permission::LiveDeliveryTest), 660 => Some(Permission::ScimAccess), 219 => Some(Permission::SysAccountGet), 220 => Some(Permission::SysAccountCreate), 221 => Some(Permission::SysAccountUpdate), 222 => Some(Permission::SysAccountDestroy), 223 => Some(Permission::SysAccountQuery), 224 => Some(Permission::SysAccountPasswordGet), 225 => Some(Permission::SysAccountPasswordUpdate), 226 => Some(Permission::SysAccountSettingsGet), 227 => Some(Permission::SysAccountSettingsUpdate), 228 => Some(Permission::SysAcmeProviderGet), 229 => Some(Permission::SysAcmeProviderCreate), 230 => Some(Permission::SysAcmeProviderUpdate), 231 => Some(Permission::SysAcmeProviderDestroy), 232 => Some(Permission::SysAcmeProviderQuery), 233 => Some(Permission::ActionReloadSettings), 234 => Some(Permission::ActionReloadTlsCertificates), 235 => Some(Permission::ActionReloadLookupStores), 236 => Some(Permission::ActionReloadBlockedIps), 237 => Some(Permission::ActionUpdateApps), 238 => Some(Permission::ActionTroubleshootDmarc), 239 => Some(Permission::ActionClassifySpam), 240 => Some(Permission::ActionInvalidateCaches), 241 => Some(Permission::ActionInvalidateNegativeCaches), 242 => Some(Permission::ActionPauseMtaQueue), 243 => Some(Permission::ActionResumeMtaQueue), 244 => Some(Permission::SysActionGet), 245 => Some(Permission::SysActionCreate), 246 => Some(Permission::SysActionUpdate), 247 => Some(Permission::SysActionDestroy), 248 => Some(Permission::SysActionQuery), 249 => Some(Permission::SysAddressBookGet), 250 => Some(Permission::SysAddressBookUpdate), 251 => Some(Permission::SysAiModelGet), 252 => Some(Permission::SysAiModelCreate), 253 => Some(Permission::SysAiModelUpdate), 254 => Some(Permission::SysAiModelDestroy), 255 => Some(Permission::SysAiModelQuery), 256 => Some(Permission::SysAlertGet), 257 => Some(Permission::SysAlertCreate), 258 => Some(Permission::SysAlertUpdate), 259 => Some(Permission::SysAlertDestroy), 260 => Some(Permission::SysAlertQuery), 261 => Some(Permission::SysAllowedIpGet), 262 => Some(Permission::SysAllowedIpCreate), 263 => Some(Permission::SysAllowedIpUpdate), 264 => Some(Permission::SysAllowedIpDestroy), 265 => Some(Permission::SysAllowedIpQuery), 266 => Some(Permission::SysApiKeyGet), 267 => Some(Permission::SysApiKeyCreate), 268 => Some(Permission::SysApiKeyUpdate), 269 => Some(Permission::SysApiKeyDestroy), 270 => Some(Permission::SysApiKeyQuery), 271 => Some(Permission::SysAppPasswordGet), 272 => Some(Permission::SysAppPasswordCreate), 273 => Some(Permission::SysAppPasswordUpdate), 274 => Some(Permission::SysAppPasswordDestroy), 275 => Some(Permission::SysAppPasswordQuery), 276 => Some(Permission::SysApplicationGet), 277 => Some(Permission::SysApplicationCreate), 278 => Some(Permission::SysApplicationUpdate), 279 => Some(Permission::SysApplicationDestroy), 280 => Some(Permission::SysApplicationQuery), 281 => Some(Permission::SysArchivedItemGet), 282 => Some(Permission::SysArchivedItemCreate), 283 => Some(Permission::SysArchivedItemUpdate), 284 => Some(Permission::SysArchivedItemDestroy), 285 => Some(Permission::SysArchivedItemQuery), 286 => Some(Permission::SysArfExternalReportGet), 287 => Some(Permission::SysArfExternalReportCreate), 288 => Some(Permission::SysArfExternalReportUpdate), 289 => Some(Permission::SysArfExternalReportDestroy), 290 => Some(Permission::SysArfExternalReportQuery), 291 => Some(Permission::SysAsnGet), 292 => Some(Permission::SysAsnUpdate), 293 => Some(Permission::SysAuthenticationGet), 294 => Some(Permission::SysAuthenticationUpdate), 295 => Some(Permission::SysBlobStoreGet), 296 => Some(Permission::SysBlobStoreUpdate), 297 => Some(Permission::SysBlockedIpGet), 298 => Some(Permission::SysBlockedIpCreate), 299 => Some(Permission::SysBlockedIpUpdate), 300 => Some(Permission::SysBlockedIpDestroy), 301 => Some(Permission::SysBlockedIpQuery), 302 => Some(Permission::SysBootstrapGet), 303 => Some(Permission::SysBootstrapUpdate), 304 => Some(Permission::SysCacheGet), 305 => Some(Permission::SysCacheUpdate), 306 => Some(Permission::SysCalendarGet), 307 => Some(Permission::SysCalendarUpdate), 308 => Some(Permission::SysCalendarAlarmGet), 309 => Some(Permission::SysCalendarAlarmUpdate), 310 => Some(Permission::SysCalendarSchedulingGet), 311 => Some(Permission::SysCalendarSchedulingUpdate), 312 => Some(Permission::SysCertificateGet), 313 => Some(Permission::SysCertificateCreate), 314 => Some(Permission::SysCertificateUpdate), 315 => Some(Permission::SysCertificateDestroy), 316 => Some(Permission::SysCertificateQuery), 317 => Some(Permission::SysClusterNodeGet), 318 => Some(Permission::SysClusterNodeCreate), 319 => Some(Permission::SysClusterNodeUpdate), 320 => Some(Permission::SysClusterNodeDestroy), 321 => Some(Permission::SysClusterNodeQuery), 322 => Some(Permission::SysClusterRoleGet), 323 => Some(Permission::SysClusterRoleCreate), 324 => Some(Permission::SysClusterRoleUpdate), 325 => Some(Permission::SysClusterRoleDestroy), 326 => Some(Permission::SysClusterRoleQuery), 327 => Some(Permission::SysCoordinatorGet), 328 => Some(Permission::SysCoordinatorUpdate), 329 => Some(Permission::SysDataRetentionGet), 330 => Some(Permission::SysDataRetentionUpdate), 331 => Some(Permission::SysDataStoreGet), 332 => Some(Permission::SysDataStoreUpdate), 333 => Some(Permission::SysDirectoryGet), 334 => Some(Permission::SysDirectoryCreate), 335 => Some(Permission::SysDirectoryUpdate), 336 => Some(Permission::SysDirectoryDestroy), 337 => Some(Permission::SysDirectoryQuery), 338 => Some(Permission::SysDkimReportSettingsGet), 339 => Some(Permission::SysDkimReportSettingsUpdate), 340 => Some(Permission::SysDkimSignatureGet), 341 => Some(Permission::SysDkimSignatureCreate), 342 => Some(Permission::SysDkimSignatureUpdate), 343 => Some(Permission::SysDkimSignatureDestroy), 344 => Some(Permission::SysDkimSignatureQuery), 345 => Some(Permission::SysDmarcExternalReportGet), 346 => Some(Permission::SysDmarcExternalReportCreate), 347 => Some(Permission::SysDmarcExternalReportUpdate), 348 => Some(Permission::SysDmarcExternalReportDestroy), 349 => Some(Permission::SysDmarcExternalReportQuery), 350 => Some(Permission::SysDmarcInternalReportGet), 351 => Some(Permission::SysDmarcInternalReportCreate), 352 => Some(Permission::SysDmarcInternalReportUpdate), 353 => Some(Permission::SysDmarcInternalReportDestroy), 354 => Some(Permission::SysDmarcInternalReportQuery), 355 => Some(Permission::SysDmarcReportSettingsGet), 356 => Some(Permission::SysDmarcReportSettingsUpdate), 357 => Some(Permission::SysDnsResolverGet), 358 => Some(Permission::SysDnsResolverUpdate), 359 => Some(Permission::SysDnsServerGet), 360 => Some(Permission::SysDnsServerCreate), 361 => Some(Permission::SysDnsServerUpdate), 362 => Some(Permission::SysDnsServerDestroy), 363 => Some(Permission::SysDnsServerQuery), 364 => Some(Permission::SysDomainGet), 365 => Some(Permission::SysDomainCreate), 366 => Some(Permission::SysDomainUpdate), 367 => Some(Permission::SysDomainDestroy), 368 => Some(Permission::SysDomainQuery), 369 => Some(Permission::SysDsnReportSettingsGet), 370 => Some(Permission::SysDsnReportSettingsUpdate), 371 => Some(Permission::SysEmailGet), 372 => Some(Permission::SysEmailUpdate), 373 => Some(Permission::SysEnterpriseGet), 374 => Some(Permission::SysEnterpriseUpdate), 375 => Some(Permission::SysEventTracingLevelGet), 376 => Some(Permission::SysEventTracingLevelCreate), 377 => Some(Permission::SysEventTracingLevelUpdate), 378 => Some(Permission::SysEventTracingLevelDestroy), 379 => Some(Permission::SysEventTracingLevelQuery), 380 => Some(Permission::SysFileStorageGet), 381 => Some(Permission::SysFileStorageUpdate), 382 => Some(Permission::SysHttpGet), 383 => Some(Permission::SysHttpUpdate), 384 => Some(Permission::SysHttpFormGet), 385 => Some(Permission::SysHttpFormUpdate), 386 => Some(Permission::SysHttpLookupGet), 387 => Some(Permission::SysHttpLookupCreate), 388 => Some(Permission::SysHttpLookupUpdate), 389 => Some(Permission::SysHttpLookupDestroy), 390 => Some(Permission::SysHttpLookupQuery), 391 => Some(Permission::SysImapGet), 392 => Some(Permission::SysImapUpdate), 393 => Some(Permission::SysInMemoryStoreGet), 394 => Some(Permission::SysInMemoryStoreUpdate), 395 => Some(Permission::SysJmapGet), 396 => Some(Permission::SysJmapUpdate), 397 => Some(Permission::SysLogGet), 398 => Some(Permission::SysLogCreate), 399 => Some(Permission::SysLogUpdate), 400 => Some(Permission::SysLogDestroy), 401 => Some(Permission::SysLogQuery), 402 => Some(Permission::SysMailingListGet), 403 => Some(Permission::SysMailingListCreate), 404 => Some(Permission::SysMailingListUpdate), 405 => Some(Permission::SysMailingListDestroy), 406 => Some(Permission::SysMailingListQuery), 407 => Some(Permission::SysMaskedEmailGet), 408 => Some(Permission::SysMaskedEmailCreate), 409 => Some(Permission::SysMaskedEmailUpdate), 410 => Some(Permission::SysMaskedEmailDestroy), 411 => Some(Permission::SysMaskedEmailQuery), 412 => Some(Permission::SysMemoryLookupKeyGet), 413 => Some(Permission::SysMemoryLookupKeyCreate), 414 => Some(Permission::SysMemoryLookupKeyUpdate), 415 => Some(Permission::SysMemoryLookupKeyDestroy), 416 => Some(Permission::SysMemoryLookupKeyQuery), 417 => Some(Permission::SysMemoryLookupKeyValueGet), 418 => Some(Permission::SysMemoryLookupKeyValueCreate), 419 => Some(Permission::SysMemoryLookupKeyValueUpdate), 420 => Some(Permission::SysMemoryLookupKeyValueDestroy), 421 => Some(Permission::SysMemoryLookupKeyValueQuery), 422 => Some(Permission::SysMetricGet), 423 => Some(Permission::SysMetricCreate), 424 => Some(Permission::SysMetricUpdate), 425 => Some(Permission::SysMetricDestroy), 426 => Some(Permission::SysMetricQuery), 427 => Some(Permission::SysMetricsGet), 428 => Some(Permission::SysMetricsUpdate), 429 => Some(Permission::SysMetricsStoreGet), 430 => Some(Permission::SysMetricsStoreUpdate), 431 => Some(Permission::SysMtaConnectionStrategyGet), 432 => Some(Permission::SysMtaConnectionStrategyCreate), 433 => Some(Permission::SysMtaConnectionStrategyUpdate), 434 => Some(Permission::SysMtaConnectionStrategyDestroy), 435 => Some(Permission::SysMtaConnectionStrategyQuery), 436 => Some(Permission::SysMtaDeliveryScheduleGet), 437 => Some(Permission::SysMtaDeliveryScheduleCreate), 438 => Some(Permission::SysMtaDeliveryScheduleUpdate), 439 => Some(Permission::SysMtaDeliveryScheduleDestroy), 440 => Some(Permission::SysMtaDeliveryScheduleQuery), 441 => Some(Permission::SysMtaExtensionsGet), 442 => Some(Permission::SysMtaExtensionsUpdate), 443 => Some(Permission::SysMtaHookGet), 444 => Some(Permission::SysMtaHookCreate), 445 => Some(Permission::SysMtaHookUpdate), 446 => Some(Permission::SysMtaHookDestroy), 447 => Some(Permission::SysMtaHookQuery), 448 => Some(Permission::SysMtaInboundSessionGet), 449 => Some(Permission::SysMtaInboundSessionUpdate), 450 => Some(Permission::SysMtaInboundThrottleGet), 451 => Some(Permission::SysMtaInboundThrottleCreate), 452 => Some(Permission::SysMtaInboundThrottleUpdate), 453 => Some(Permission::SysMtaInboundThrottleDestroy), 454 => Some(Permission::SysMtaInboundThrottleQuery), 455 => Some(Permission::SysMtaMilterGet), 456 => Some(Permission::SysMtaMilterCreate), 457 => Some(Permission::SysMtaMilterUpdate), 458 => Some(Permission::SysMtaMilterDestroy), 459 => Some(Permission::SysMtaMilterQuery), 460 => Some(Permission::SysMtaOutboundStrategyGet), 461 => Some(Permission::SysMtaOutboundStrategyUpdate), 462 => Some(Permission::SysMtaOutboundThrottleGet), 463 => Some(Permission::SysMtaOutboundThrottleCreate), 464 => Some(Permission::SysMtaOutboundThrottleUpdate), 465 => Some(Permission::SysMtaOutboundThrottleDestroy), 466 => Some(Permission::SysMtaOutboundThrottleQuery), 467 => Some(Permission::SysMtaQueueQuotaGet), 468 => Some(Permission::SysMtaQueueQuotaCreate), 469 => Some(Permission::SysMtaQueueQuotaUpdate), 470 => Some(Permission::SysMtaQueueQuotaDestroy), 471 => Some(Permission::SysMtaQueueQuotaQuery), 472 => Some(Permission::SysMtaRouteGet), 473 => Some(Permission::SysMtaRouteCreate), 474 => Some(Permission::SysMtaRouteUpdate), 475 => Some(Permission::SysMtaRouteDestroy), 476 => Some(Permission::SysMtaRouteQuery), 477 => Some(Permission::SysMtaStageAuthGet), 478 => Some(Permission::SysMtaStageAuthUpdate), 479 => Some(Permission::SysMtaStageConnectGet), 480 => Some(Permission::SysMtaStageConnectUpdate), 481 => Some(Permission::SysMtaStageDataGet), 482 => Some(Permission::SysMtaStageDataUpdate), 483 => Some(Permission::SysMtaStageEhloGet), 484 => Some(Permission::SysMtaStageEhloUpdate), 485 => Some(Permission::SysMtaStageMailGet), 486 => Some(Permission::SysMtaStageMailUpdate), 487 => Some(Permission::SysMtaStageRcptGet), 488 => Some(Permission::SysMtaStageRcptUpdate), 489 => Some(Permission::SysMtaStsGet), 490 => Some(Permission::SysMtaStsUpdate), 491 => Some(Permission::SysMtaTlsStrategyGet), 492 => Some(Permission::SysMtaTlsStrategyCreate), 493 => Some(Permission::SysMtaTlsStrategyUpdate), 494 => Some(Permission::SysMtaTlsStrategyDestroy), 495 => Some(Permission::SysMtaTlsStrategyQuery), 496 => Some(Permission::SysMtaVirtualQueueGet), 497 => Some(Permission::SysMtaVirtualQueueCreate), 498 => Some(Permission::SysMtaVirtualQueueUpdate), 499 => Some(Permission::SysMtaVirtualQueueDestroy), 500 => Some(Permission::SysMtaVirtualQueueQuery), 501 => Some(Permission::SysNetworkListenerGet), 502 => Some(Permission::SysNetworkListenerCreate), 503 => Some(Permission::SysNetworkListenerUpdate), 504 => Some(Permission::SysNetworkListenerDestroy), 505 => Some(Permission::SysNetworkListenerQuery), 506 => Some(Permission::SysOAuthClientGet), 507 => Some(Permission::SysOAuthClientCreate), 508 => Some(Permission::SysOAuthClientUpdate), 509 => Some(Permission::SysOAuthClientDestroy), 510 => Some(Permission::SysOAuthClientQuery), 511 => Some(Permission::SysOidcProviderGet), 512 => Some(Permission::SysOidcProviderUpdate), 513 => Some(Permission::SysPublicKeyGet), 514 => Some(Permission::SysPublicKeyCreate), 515 => Some(Permission::SysPublicKeyUpdate), 516 => Some(Permission::SysPublicKeyDestroy), 517 => Some(Permission::SysPublicKeyQuery), 518 => Some(Permission::SysQueuedMessageGet), 519 => Some(Permission::SysQueuedMessageCreate), 520 => Some(Permission::SysQueuedMessageUpdate), 521 => Some(Permission::SysQueuedMessageDestroy), 522 => Some(Permission::SysQueuedMessageQuery), 523 => Some(Permission::SysReportSettingsGet), 524 => Some(Permission::SysReportSettingsUpdate), 525 => Some(Permission::SysRoleGet), 526 => Some(Permission::SysRoleCreate), 527 => Some(Permission::SysRoleUpdate), 528 => Some(Permission::SysRoleDestroy), 529 => Some(Permission::SysRoleQuery), 530 => Some(Permission::SysSearchGet), 531 => Some(Permission::SysSearchUpdate), 532 => Some(Permission::SysSearchStoreGet), 533 => Some(Permission::SysSearchStoreUpdate), 534 => Some(Permission::SysSecurityGet), 535 => Some(Permission::SysSecurityUpdate), 536 => Some(Permission::SysSenderAuthGet), 537 => Some(Permission::SysSenderAuthUpdate), 538 => Some(Permission::SysSharingGet), 539 => Some(Permission::SysSharingUpdate), 540 => Some(Permission::SysSieveSystemInterpreterGet), 541 => Some(Permission::SysSieveSystemInterpreterUpdate), 542 => Some(Permission::SysSieveSystemScriptGet), 543 => Some(Permission::SysSieveSystemScriptCreate), 544 => Some(Permission::SysSieveSystemScriptUpdate), 545 => Some(Permission::SysSieveSystemScriptDestroy), 546 => Some(Permission::SysSieveSystemScriptQuery), 547 => Some(Permission::SysSieveUserInterpreterGet), 548 => Some(Permission::SysSieveUserInterpreterUpdate), 549 => Some(Permission::SysSieveUserScriptGet), 550 => Some(Permission::SysSieveUserScriptCreate), 551 => Some(Permission::SysSieveUserScriptUpdate), 552 => Some(Permission::SysSieveUserScriptDestroy), 553 => Some(Permission::SysSieveUserScriptQuery), 554 => Some(Permission::SysSpamClassifierGet), 555 => Some(Permission::SysSpamClassifierUpdate), 556 => Some(Permission::SysSpamDnsblServerGet), 557 => Some(Permission::SysSpamDnsblServerCreate), 558 => Some(Permission::SysSpamDnsblServerUpdate), 559 => Some(Permission::SysSpamDnsblServerDestroy), 560 => Some(Permission::SysSpamDnsblServerQuery), 561 => Some(Permission::SysSpamDnsblSettingsGet), 562 => Some(Permission::SysSpamDnsblSettingsUpdate), 563 => Some(Permission::SysSpamFileExtensionGet), 564 => Some(Permission::SysSpamFileExtensionCreate), 565 => Some(Permission::SysSpamFileExtensionUpdate), 566 => Some(Permission::SysSpamFileExtensionDestroy), 567 => Some(Permission::SysSpamFileExtensionQuery), 568 => Some(Permission::SysSpamLlmGet), 569 => Some(Permission::SysSpamLlmUpdate), 570 => Some(Permission::SysSpamPyzorGet), 571 => Some(Permission::SysSpamPyzorUpdate), 572 => Some(Permission::SysSpamRuleGet), 573 => Some(Permission::SysSpamRuleCreate), 574 => Some(Permission::SysSpamRuleUpdate), 575 => Some(Permission::SysSpamRuleDestroy), 576 => Some(Permission::SysSpamRuleQuery), 577 => Some(Permission::SysSpamSettingsGet), 578 => Some(Permission::SysSpamSettingsUpdate), 579 => Some(Permission::SysSpamTagGet), 580 => Some(Permission::SysSpamTagCreate), 581 => Some(Permission::SysSpamTagUpdate), 582 => Some(Permission::SysSpamTagDestroy), 583 => Some(Permission::SysSpamTagQuery), 584 => Some(Permission::SysSpamTrainingSampleGet), 585 => Some(Permission::SysSpamTrainingSampleCreate), 586 => Some(Permission::SysSpamTrainingSampleUpdate), 587 => Some(Permission::SysSpamTrainingSampleDestroy), 588 => Some(Permission::SysSpamTrainingSampleQuery), 589 => Some(Permission::SysSpfReportSettingsGet), 590 => Some(Permission::SysSpfReportSettingsUpdate), 591 => Some(Permission::SysStoreLookupGet), 592 => Some(Permission::SysStoreLookupCreate), 593 => Some(Permission::SysStoreLookupUpdate), 594 => Some(Permission::SysStoreLookupDestroy), 595 => Some(Permission::SysStoreLookupQuery), 596 => Some(Permission::SysSystemSettingsGet), 597 => Some(Permission::SysSystemSettingsUpdate), 598 => Some(Permission::TaskIndexDocument), 599 => Some(Permission::TaskUnindexDocument), 600 => Some(Permission::TaskIndexTrace), 601 => Some(Permission::TaskCalendarAlarmEmail), 602 => Some(Permission::TaskCalendarAlarmNotification), 603 => Some(Permission::TaskCalendarItipMessage), 604 => Some(Permission::TaskMergeThreads), 605 => Some(Permission::TaskDmarcReport), 606 => Some(Permission::TaskTlsReport), 607 => Some(Permission::TaskRestoreArchivedItem), 608 => Some(Permission::TaskDestroyAccount), 609 => Some(Permission::TaskAccountMaintenance), 610 => Some(Permission::TaskTenantMaintenance), 611 => Some(Permission::TaskStoreMaintenance), 612 => Some(Permission::TaskSpamFilterMaintenance), 613 => Some(Permission::TaskAcmeRenewal), 614 => Some(Permission::TaskDkimManagement), 615 => Some(Permission::TaskDnsManagement), 616 => Some(Permission::SysTaskGet), 617 => Some(Permission::SysTaskCreate), 618 => Some(Permission::SysTaskUpdate), 619 => Some(Permission::SysTaskDestroy), 620 => Some(Permission::SysTaskQuery), 621 => Some(Permission::SysTaskManagerGet), 622 => Some(Permission::SysTaskManagerUpdate), 623 => Some(Permission::SysTenantGet), 624 => Some(Permission::SysTenantCreate), 625 => Some(Permission::SysTenantUpdate), 626 => Some(Permission::SysTenantDestroy), 627 => Some(Permission::SysTenantQuery), 628 => Some(Permission::SysTlsExternalReportGet), 629 => Some(Permission::SysTlsExternalReportCreate), 630 => Some(Permission::SysTlsExternalReportUpdate), 631 => Some(Permission::SysTlsExternalReportDestroy), 632 => Some(Permission::SysTlsExternalReportQuery), 633 => Some(Permission::SysTlsInternalReportGet), 634 => Some(Permission::SysTlsInternalReportCreate), 635 => Some(Permission::SysTlsInternalReportUpdate), 636 => Some(Permission::SysTlsInternalReportDestroy), 637 => Some(Permission::SysTlsInternalReportQuery), 638 => Some(Permission::SysTlsReportSettingsGet), 639 => Some(Permission::SysTlsReportSettingsUpdate), 640 => Some(Permission::SysTraceGet), 641 => Some(Permission::SysTraceCreate), 642 => Some(Permission::SysTraceUpdate), 643 => Some(Permission::SysTraceDestroy), 644 => Some(Permission::SysTraceQuery), 645 => Some(Permission::SysTracerGet), 646 => Some(Permission::SysTracerCreate), 647 => Some(Permission::SysTracerUpdate), 648 => Some(Permission::SysTracerDestroy), 649 => Some(Permission::SysTracerQuery), 650 => Some(Permission::SysTracingStoreGet), 651 => Some(Permission::SysTracingStoreUpdate), 652 => Some(Permission::SysWebDavGet), 653 => Some(Permission::SysWebDavUpdate), 654 => Some(Permission::SysWebHookGet), 655 => Some(Permission::SysWebHookCreate), 656 => Some(Permission::SysWebHookUpdate), 657 => Some(Permission::SysWebHookDestroy), 658 => Some(Permission::SysWebHookQuery), _ => None, } } const COUNT: usize = 661; } impl serde::Serialize for Permission { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for Permission { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for PermissionsType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Inherit" => PermissionsType::Inherit, b"Merge" => PermissionsType::Merge, b"Replace" => PermissionsType::Replace, } } fn as_str(&self) -> &'static str { match self { PermissionsType::Inherit => "Inherit", PermissionsType::Merge => "Merge", PermissionsType::Replace => "Replace", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(PermissionsType::Inherit), 1 => Some(PermissionsType::Merge), 2 => Some(PermissionsType::Replace), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for PermissionsType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for PermissionsType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for PolicyEnforcement { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"enforce" => PolicyEnforcement::Enforce, b"testing" => PolicyEnforcement::Testing, b"disable" => PolicyEnforcement::Disable, } } fn as_str(&self) -> &'static str { match self { PolicyEnforcement::Enforce => "enforce", PolicyEnforcement::Testing => "testing", PolicyEnforcement::Disable => "disable", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(PolicyEnforcement::Enforce), 1 => Some(PolicyEnforcement::Testing), 2 => Some(PolicyEnforcement::Disable), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for PolicyEnforcement { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for PolicyEnforcement { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for PostgreSqlRecyclingMethod { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"fast" => PostgreSqlRecyclingMethod::Fast, b"verified" => PostgreSqlRecyclingMethod::Verified, b"clean" => PostgreSqlRecyclingMethod::Clean, } } fn as_str(&self) -> &'static str { match self { PostgreSqlRecyclingMethod::Fast => "fast", PostgreSqlRecyclingMethod::Verified => "verified", PostgreSqlRecyclingMethod::Clean => "clean", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(PostgreSqlRecyclingMethod::Fast), 1 => Some(PostgreSqlRecyclingMethod::Verified), 2 => Some(PostgreSqlRecyclingMethod::Clean), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for PostgreSqlRecyclingMethod { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for PostgreSqlRecyclingMethod { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ProviderInfo { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"providerName" => ProviderInfo::ProviderName, b"providerShortName" => ProviderInfo::ProviderShortName, b"userDocumentation" => ProviderInfo::UserDocumentation, b"developerDocumentation" => ProviderInfo::DeveloperDocumentation, b"contactUri" => ProviderInfo::ContactUri, b"logoUrl" => ProviderInfo::LogoUrl, b"logoWidth" => ProviderInfo::LogoWidth, b"logoHeight" => ProviderInfo::LogoHeight, } } fn as_str(&self) -> &'static str { match self { ProviderInfo::ProviderName => "providerName", ProviderInfo::ProviderShortName => "providerShortName", ProviderInfo::UserDocumentation => "userDocumentation", ProviderInfo::DeveloperDocumentation => "developerDocumentation", ProviderInfo::ContactUri => "contactUri", ProviderInfo::LogoUrl => "logoUrl", ProviderInfo::LogoWidth => "logoWidth", ProviderInfo::LogoHeight => "logoHeight", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ProviderInfo::ProviderName), 1 => Some(ProviderInfo::ProviderShortName), 2 => Some(ProviderInfo::UserDocumentation), 3 => Some(ProviderInfo::DeveloperDocumentation), 4 => Some(ProviderInfo::ContactUri), 5 => Some(ProviderInfo::LogoUrl), 6 => Some(ProviderInfo::LogoWidth), 7 => Some(ProviderInfo::LogoHeight), _ => None, } } const COUNT: usize = 8; } impl serde::Serialize for ProviderInfo { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ProviderInfo { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for PublicStringOptionalType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"None" => PublicStringOptionalType::None, b"Value" => PublicStringOptionalType::Value, b"EnvironmentVariable" => PublicStringOptionalType::EnvironmentVariable, b"File" => PublicStringOptionalType::File, } } fn as_str(&self) -> &'static str { match self { PublicStringOptionalType::None => "None", PublicStringOptionalType::Value => "Value", PublicStringOptionalType::EnvironmentVariable => "EnvironmentVariable", PublicStringOptionalType::File => "File", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(PublicStringOptionalType::None), 1 => Some(PublicStringOptionalType::Value), 2 => Some(PublicStringOptionalType::EnvironmentVariable), 3 => Some(PublicStringOptionalType::File), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for PublicStringOptionalType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for PublicStringOptionalType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for PublicTextType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Text" => PublicTextType::Text, b"EnvironmentVariable" => PublicTextType::EnvironmentVariable, b"File" => PublicTextType::File, } } fn as_str(&self) -> &'static str { match self { PublicTextType::Text => "Text", PublicTextType::EnvironmentVariable => "EnvironmentVariable", PublicTextType::File => "File", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(PublicTextType::Text), 1 => Some(PublicTextType::EnvironmentVariable), 2 => Some(PublicTextType::File), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for PublicTextType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for PublicTextType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for QueueExpiryType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Ttl" => QueueExpiryType::Ttl, b"Attempts" => QueueExpiryType::Attempts, } } fn as_str(&self) -> &'static str { match self { QueueExpiryType::Ttl => "Ttl", QueueExpiryType::Attempts => "Attempts", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(QueueExpiryType::Ttl), 1 => Some(QueueExpiryType::Attempts), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for QueueExpiryType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for QueueExpiryType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for RecipientFlag { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"dsnSent" => RecipientFlag::DsnSent, b"spamPayload" => RecipientFlag::SpamPayload, } } fn as_str(&self) -> &'static str { match self { RecipientFlag::DsnSent => "dsnSent", RecipientFlag::SpamPayload => "spamPayload", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(RecipientFlag::DsnSent), 1 => Some(RecipientFlag::SpamPayload), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for RecipientFlag { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for RecipientFlag { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for RecipientStatusType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Scheduled" => RecipientStatusType::Scheduled, b"Completed" => RecipientStatusType::Completed, b"TemporaryFailure" => RecipientStatusType::TemporaryFailure, b"PermanentFailure" => RecipientStatusType::PermanentFailure, } } fn as_str(&self) -> &'static str { match self { RecipientStatusType::Scheduled => "Scheduled", RecipientStatusType::Completed => "Completed", RecipientStatusType::TemporaryFailure => "TemporaryFailure", RecipientStatusType::PermanentFailure => "PermanentFailure", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(RecipientStatusType::Scheduled), 1 => Some(RecipientStatusType::Completed), 2 => Some(RecipientStatusType::TemporaryFailure), 3 => Some(RecipientStatusType::PermanentFailure), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for RecipientStatusType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for RecipientStatusType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for RedisProtocol { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"resp2" => RedisProtocol::Resp2, b"resp3" => RedisProtocol::Resp3, } } fn as_str(&self) -> &'static str { match self { RedisProtocol::Resp2 => "resp2", RedisProtocol::Resp3 => "resp3", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(RedisProtocol::Resp2), 1 => Some(RedisProtocol::Resp3), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for RedisProtocol { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for RedisProtocol { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for RolesType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Default" => RolesType::Default, b"Custom" => RolesType::Custom, } } fn as_str(&self) -> &'static str { match self { RolesType::Default => "Default", RolesType::Custom => "Custom", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(RolesType::Default), 1 => Some(RolesType::Custom), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for RolesType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for RolesType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for S3StoreRegionType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"UsEast1" => S3StoreRegionType::UsEast1, b"UsEast2" => S3StoreRegionType::UsEast2, b"UsWest1" => S3StoreRegionType::UsWest1, b"UsWest2" => S3StoreRegionType::UsWest2, b"CaCentral1" => S3StoreRegionType::CaCentral1, b"AfSouth1" => S3StoreRegionType::AfSouth1, b"ApEast1" => S3StoreRegionType::ApEast1, b"ApSouth1" => S3StoreRegionType::ApSouth1, b"ApNortheast1" => S3StoreRegionType::ApNortheast1, b"ApNortheast2" => S3StoreRegionType::ApNortheast2, b"ApNortheast3" => S3StoreRegionType::ApNortheast3, b"ApSoutheast1" => S3StoreRegionType::ApSoutheast1, b"ApSoutheast2" => S3StoreRegionType::ApSoutheast2, b"CnNorth1" => S3StoreRegionType::CnNorth1, b"CnNorthwest1" => S3StoreRegionType::CnNorthwest1, b"EuNorth1" => S3StoreRegionType::EuNorth1, b"EuCentral1" => S3StoreRegionType::EuCentral1, b"EuCentral2" => S3StoreRegionType::EuCentral2, b"EuWest1" => S3StoreRegionType::EuWest1, b"EuWest2" => S3StoreRegionType::EuWest2, b"EuWest3" => S3StoreRegionType::EuWest3, b"IlCentral1" => S3StoreRegionType::IlCentral1, b"MeSouth1" => S3StoreRegionType::MeSouth1, b"SaEast1" => S3StoreRegionType::SaEast1, b"DoNyc3" => S3StoreRegionType::DoNyc3, b"DoAms3" => S3StoreRegionType::DoAms3, b"DoSgp1" => S3StoreRegionType::DoSgp1, b"DoFra1" => S3StoreRegionType::DoFra1, b"Yandex" => S3StoreRegionType::Yandex, b"WaUsEast1" => S3StoreRegionType::WaUsEast1, b"WaUsEast2" => S3StoreRegionType::WaUsEast2, b"WaUsCentral1" => S3StoreRegionType::WaUsCentral1, b"WaUsWest1" => S3StoreRegionType::WaUsWest1, b"WaCaCentral1" => S3StoreRegionType::WaCaCentral1, b"WaEuCentral1" => S3StoreRegionType::WaEuCentral1, b"WaEuCentral2" => S3StoreRegionType::WaEuCentral2, b"WaEuWest1" => S3StoreRegionType::WaEuWest1, b"WaEuWest2" => S3StoreRegionType::WaEuWest2, b"WaApNortheast1" => S3StoreRegionType::WaApNortheast1, b"WaApNortheast2" => S3StoreRegionType::WaApNortheast2, b"WaApSoutheast1" => S3StoreRegionType::WaApSoutheast1, b"WaApSoutheast2" => S3StoreRegionType::WaApSoutheast2, b"Custom" => S3StoreRegionType::Custom, } } fn as_str(&self) -> &'static str { match self { S3StoreRegionType::UsEast1 => "UsEast1", S3StoreRegionType::UsEast2 => "UsEast2", S3StoreRegionType::UsWest1 => "UsWest1", S3StoreRegionType::UsWest2 => "UsWest2", S3StoreRegionType::CaCentral1 => "CaCentral1", S3StoreRegionType::AfSouth1 => "AfSouth1", S3StoreRegionType::ApEast1 => "ApEast1", S3StoreRegionType::ApSouth1 => "ApSouth1", S3StoreRegionType::ApNortheast1 => "ApNortheast1", S3StoreRegionType::ApNortheast2 => "ApNortheast2", S3StoreRegionType::ApNortheast3 => "ApNortheast3", S3StoreRegionType::ApSoutheast1 => "ApSoutheast1", S3StoreRegionType::ApSoutheast2 => "ApSoutheast2", S3StoreRegionType::CnNorth1 => "CnNorth1", S3StoreRegionType::CnNorthwest1 => "CnNorthwest1", S3StoreRegionType::EuNorth1 => "EuNorth1", S3StoreRegionType::EuCentral1 => "EuCentral1", S3StoreRegionType::EuCentral2 => "EuCentral2", S3StoreRegionType::EuWest1 => "EuWest1", S3StoreRegionType::EuWest2 => "EuWest2", S3StoreRegionType::EuWest3 => "EuWest3", S3StoreRegionType::IlCentral1 => "IlCentral1", S3StoreRegionType::MeSouth1 => "MeSouth1", S3StoreRegionType::SaEast1 => "SaEast1", S3StoreRegionType::DoNyc3 => "DoNyc3", S3StoreRegionType::DoAms3 => "DoAms3", S3StoreRegionType::DoSgp1 => "DoSgp1", S3StoreRegionType::DoFra1 => "DoFra1", S3StoreRegionType::Yandex => "Yandex", S3StoreRegionType::WaUsEast1 => "WaUsEast1", S3StoreRegionType::WaUsEast2 => "WaUsEast2", S3StoreRegionType::WaUsCentral1 => "WaUsCentral1", S3StoreRegionType::WaUsWest1 => "WaUsWest1", S3StoreRegionType::WaCaCentral1 => "WaCaCentral1", S3StoreRegionType::WaEuCentral1 => "WaEuCentral1", S3StoreRegionType::WaEuCentral2 => "WaEuCentral2", S3StoreRegionType::WaEuWest1 => "WaEuWest1", S3StoreRegionType::WaEuWest2 => "WaEuWest2", S3StoreRegionType::WaApNortheast1 => "WaApNortheast1", S3StoreRegionType::WaApNortheast2 => "WaApNortheast2", S3StoreRegionType::WaApSoutheast1 => "WaApSoutheast1", S3StoreRegionType::WaApSoutheast2 => "WaApSoutheast2", S3StoreRegionType::Custom => "Custom", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(S3StoreRegionType::UsEast1), 1 => Some(S3StoreRegionType::UsEast2), 2 => Some(S3StoreRegionType::UsWest1), 3 => Some(S3StoreRegionType::UsWest2), 4 => Some(S3StoreRegionType::CaCentral1), 5 => Some(S3StoreRegionType::AfSouth1), 6 => Some(S3StoreRegionType::ApEast1), 7 => Some(S3StoreRegionType::ApSouth1), 8 => Some(S3StoreRegionType::ApNortheast1), 9 => Some(S3StoreRegionType::ApNortheast2), 10 => Some(S3StoreRegionType::ApNortheast3), 11 => Some(S3StoreRegionType::ApSoutheast1), 12 => Some(S3StoreRegionType::ApSoutheast2), 13 => Some(S3StoreRegionType::CnNorth1), 14 => Some(S3StoreRegionType::CnNorthwest1), 15 => Some(S3StoreRegionType::EuNorth1), 16 => Some(S3StoreRegionType::EuCentral1), 17 => Some(S3StoreRegionType::EuCentral2), 18 => Some(S3StoreRegionType::EuWest1), 19 => Some(S3StoreRegionType::EuWest2), 20 => Some(S3StoreRegionType::EuWest3), 21 => Some(S3StoreRegionType::IlCentral1), 22 => Some(S3StoreRegionType::MeSouth1), 23 => Some(S3StoreRegionType::SaEast1), 24 => Some(S3StoreRegionType::DoNyc3), 25 => Some(S3StoreRegionType::DoAms3), 26 => Some(S3StoreRegionType::DoSgp1), 27 => Some(S3StoreRegionType::DoFra1), 28 => Some(S3StoreRegionType::Yandex), 29 => Some(S3StoreRegionType::WaUsEast1), 30 => Some(S3StoreRegionType::WaUsEast2), 31 => Some(S3StoreRegionType::WaUsCentral1), 32 => Some(S3StoreRegionType::WaUsWest1), 33 => Some(S3StoreRegionType::WaCaCentral1), 34 => Some(S3StoreRegionType::WaEuCentral1), 35 => Some(S3StoreRegionType::WaEuCentral2), 36 => Some(S3StoreRegionType::WaEuWest1), 37 => Some(S3StoreRegionType::WaEuWest2), 38 => Some(S3StoreRegionType::WaApNortheast1), 39 => Some(S3StoreRegionType::WaApNortheast2), 40 => Some(S3StoreRegionType::WaApSoutheast1), 41 => Some(S3StoreRegionType::WaApSoutheast2), 42 => Some(S3StoreRegionType::Custom), _ => None, } } const COUNT: usize = 43; } impl serde::Serialize for S3StoreRegionType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for S3StoreRegionType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SearchCalendarField { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"title" => SearchCalendarField::Title, b"description" => SearchCalendarField::Description, b"location" => SearchCalendarField::Location, b"owner" => SearchCalendarField::Owner, b"attendee" => SearchCalendarField::Attendee, b"start" => SearchCalendarField::Start, b"uid" => SearchCalendarField::Uid, } } fn as_str(&self) -> &'static str { match self { SearchCalendarField::Title => "title", SearchCalendarField::Description => "description", SearchCalendarField::Location => "location", SearchCalendarField::Owner => "owner", SearchCalendarField::Attendee => "attendee", SearchCalendarField::Start => "start", SearchCalendarField::Uid => "uid", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SearchCalendarField::Title), 1 => Some(SearchCalendarField::Description), 2 => Some(SearchCalendarField::Location), 3 => Some(SearchCalendarField::Owner), 4 => Some(SearchCalendarField::Attendee), 5 => Some(SearchCalendarField::Start), 6 => Some(SearchCalendarField::Uid), _ => None, } } const COUNT: usize = 7; } impl serde::Serialize for SearchCalendarField { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SearchCalendarField { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SearchContactField { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"member" => SearchContactField::Member, b"kind" => SearchContactField::Kind, b"name" => SearchContactField::Name, b"nickname" => SearchContactField::Nickname, b"organization" => SearchContactField::Organization, b"email" => SearchContactField::Email, b"phone" => SearchContactField::Phone, b"onlineService" => SearchContactField::OnlineService, b"address" => SearchContactField::Address, b"note" => SearchContactField::Note, b"uid" => SearchContactField::Uid, } } fn as_str(&self) -> &'static str { match self { SearchContactField::Member => "member", SearchContactField::Kind => "kind", SearchContactField::Name => "name", SearchContactField::Nickname => "nickname", SearchContactField::Organization => "organization", SearchContactField::Email => "email", SearchContactField::Phone => "phone", SearchContactField::OnlineService => "onlineService", SearchContactField::Address => "address", SearchContactField::Note => "note", SearchContactField::Uid => "uid", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SearchContactField::Member), 1 => Some(SearchContactField::Kind), 2 => Some(SearchContactField::Name), 3 => Some(SearchContactField::Nickname), 4 => Some(SearchContactField::Organization), 5 => Some(SearchContactField::Email), 6 => Some(SearchContactField::Phone), 7 => Some(SearchContactField::OnlineService), 8 => Some(SearchContactField::Address), 9 => Some(SearchContactField::Note), 10 => Some(SearchContactField::Uid), _ => None, } } const COUNT: usize = 11; } impl serde::Serialize for SearchContactField { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SearchContactField { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SearchEmailField { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"from" => SearchEmailField::From, b"to" => SearchEmailField::To, b"cc" => SearchEmailField::Cc, b"bcc" => SearchEmailField::Bcc, b"subject" => SearchEmailField::Subject, b"body" => SearchEmailField::Body, b"attachment" => SearchEmailField::Attachment, b"receivedAt" => SearchEmailField::ReceivedAt, b"sentAt" => SearchEmailField::SentAt, b"size" => SearchEmailField::Size, b"hasAttachment" => SearchEmailField::HasAttachment, b"headers" => SearchEmailField::Headers, } } fn as_str(&self) -> &'static str { match self { SearchEmailField::From => "from", SearchEmailField::To => "to", SearchEmailField::Cc => "cc", SearchEmailField::Bcc => "bcc", SearchEmailField::Subject => "subject", SearchEmailField::Body => "body", SearchEmailField::Attachment => "attachment", SearchEmailField::ReceivedAt => "receivedAt", SearchEmailField::SentAt => "sentAt", SearchEmailField::Size => "size", SearchEmailField::HasAttachment => "hasAttachment", SearchEmailField::Headers => "headers", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SearchEmailField::From), 1 => Some(SearchEmailField::To), 2 => Some(SearchEmailField::Cc), 3 => Some(SearchEmailField::Bcc), 4 => Some(SearchEmailField::Subject), 5 => Some(SearchEmailField::Body), 6 => Some(SearchEmailField::Attachment), 7 => Some(SearchEmailField::ReceivedAt), 8 => Some(SearchEmailField::SentAt), 9 => Some(SearchEmailField::Size), 10 => Some(SearchEmailField::HasAttachment), 11 => Some(SearchEmailField::Headers), _ => None, } } const COUNT: usize = 12; } impl serde::Serialize for SearchEmailField { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SearchEmailField { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SearchFileField { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"name" => SearchFileField::Name, b"content" => SearchFileField::Content, } } fn as_str(&self) -> &'static str { match self { SearchFileField::Name => "name", SearchFileField::Content => "content", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SearchFileField::Name), 1 => Some(SearchFileField::Content), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for SearchFileField { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SearchFileField { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SearchStoreType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Default" => SearchStoreType::Default, b"ElasticSearch" => SearchStoreType::ElasticSearch, b"Meilisearch" => SearchStoreType::Meilisearch, b"FoundationDb" => SearchStoreType::FoundationDb, b"PostgreSql" => SearchStoreType::PostgreSql, b"MySql" => SearchStoreType::MySql, } } fn as_str(&self) -> &'static str { match self { SearchStoreType::Default => "Default", SearchStoreType::ElasticSearch => "ElasticSearch", SearchStoreType::Meilisearch => "Meilisearch", SearchStoreType::FoundationDb => "FoundationDb", SearchStoreType::PostgreSql => "PostgreSql", SearchStoreType::MySql => "MySql", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SearchStoreType::Default), 1 => Some(SearchStoreType::ElasticSearch), 2 => Some(SearchStoreType::Meilisearch), 3 => Some(SearchStoreType::FoundationDb), 4 => Some(SearchStoreType::PostgreSql), 5 => Some(SearchStoreType::MySql), _ => None, } } const COUNT: usize = 6; } impl serde::Serialize for SearchStoreType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SearchStoreType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SearchTracingField { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"eventType" => SearchTracingField::EventType, b"queueId" => SearchTracingField::QueueId, b"keywords" => SearchTracingField::Keywords, } } fn as_str(&self) -> &'static str { match self { SearchTracingField::EventType => "eventType", SearchTracingField::QueueId => "queueId", SearchTracingField::Keywords => "keywords", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SearchTracingField::EventType), 1 => Some(SearchTracingField::QueueId), 2 => Some(SearchTracingField::Keywords), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for SearchTracingField { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SearchTracingField { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SecretKeyOptionalType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"None" => SecretKeyOptionalType::None, b"Value" => SecretKeyOptionalType::Value, b"EnvironmentVariable" => SecretKeyOptionalType::EnvironmentVariable, b"File" => SecretKeyOptionalType::File, } } fn as_str(&self) -> &'static str { match self { SecretKeyOptionalType::None => "None", SecretKeyOptionalType::Value => "Value", SecretKeyOptionalType::EnvironmentVariable => "EnvironmentVariable", SecretKeyOptionalType::File => "File", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SecretKeyOptionalType::None), 1 => Some(SecretKeyOptionalType::Value), 2 => Some(SecretKeyOptionalType::EnvironmentVariable), 3 => Some(SecretKeyOptionalType::File), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for SecretKeyOptionalType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SecretKeyOptionalType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SecretKeyType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Value" => SecretKeyType::Value, b"EnvironmentVariable" => SecretKeyType::EnvironmentVariable, b"File" => SecretKeyType::File, } } fn as_str(&self) -> &'static str { match self { SecretKeyType::Value => "Value", SecretKeyType::EnvironmentVariable => "EnvironmentVariable", SecretKeyType::File => "File", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SecretKeyType::Value), 1 => Some(SecretKeyType::EnvironmentVariable), 2 => Some(SecretKeyType::File), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for SecretKeyType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SecretKeyType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SecretTextOptionalType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"None" => SecretTextOptionalType::None, b"Text" => SecretTextOptionalType::Text, b"EnvironmentVariable" => SecretTextOptionalType::EnvironmentVariable, b"File" => SecretTextOptionalType::File, } } fn as_str(&self) -> &'static str { match self { SecretTextOptionalType::None => "None", SecretTextOptionalType::Text => "Text", SecretTextOptionalType::EnvironmentVariable => "EnvironmentVariable", SecretTextOptionalType::File => "File", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SecretTextOptionalType::None), 1 => Some(SecretTextOptionalType::Text), 2 => Some(SecretTextOptionalType::EnvironmentVariable), 3 => Some(SecretTextOptionalType::File), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for SecretTextOptionalType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SecretTextOptionalType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SecretTextType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Text" => SecretTextType::Text, b"EnvironmentVariable" => SecretTextType::EnvironmentVariable, b"File" => SecretTextType::File, } } fn as_str(&self) -> &'static str { match self { SecretTextType::Text => "Text", SecretTextType::EnvironmentVariable => "EnvironmentVariable", SecretTextType::File => "File", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SecretTextType::Text), 1 => Some(SecretTextType::EnvironmentVariable), 2 => Some(SecretTextType::File), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for SecretTextType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SecretTextType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for ServiceProtocol { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"jmap" => ServiceProtocol::Jmap, b"imap" => ServiceProtocol::Imap, b"pop3" => ServiceProtocol::Pop3, b"smtp" => ServiceProtocol::Smtp, b"caldav" => ServiceProtocol::Caldav, b"carddav" => ServiceProtocol::Carddav, b"webdav" => ServiceProtocol::Webdav, b"managesieve" => ServiceProtocol::Managesieve, } } fn as_str(&self) -> &'static str { match self { ServiceProtocol::Jmap => "jmap", ServiceProtocol::Imap => "imap", ServiceProtocol::Pop3 => "pop3", ServiceProtocol::Smtp => "smtp", ServiceProtocol::Caldav => "caldav", ServiceProtocol::Carddav => "carddav", ServiceProtocol::Webdav => "webdav", ServiceProtocol::Managesieve => "managesieve", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(ServiceProtocol::Jmap), 1 => Some(ServiceProtocol::Imap), 2 => Some(ServiceProtocol::Pop3), 3 => Some(ServiceProtocol::Smtp), 4 => Some(ServiceProtocol::Caldav), 5 => Some(ServiceProtocol::Carddav), 6 => Some(ServiceProtocol::Webdav), 7 => Some(ServiceProtocol::Managesieve), _ => None, } } const COUNT: usize = 8; } impl serde::Serialize for ServiceProtocol { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for ServiceProtocol { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SieveCapability { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"envelope" => SieveCapability::Envelope, b"envelope-dsn" => SieveCapability::EnvelopeDsn, b"envelope-deliverby" => SieveCapability::EnvelopeDeliverby, b"fileinto" => SieveCapability::Fileinto, b"encoded-character" => SieveCapability::EncodedCharacter, b"comparator-elbonia" => SieveCapability::ComparatorElbonia, b"comparator-i;octet" => SieveCapability::ComparatorIOctet, b"comparator-i;ascii-casemap" => SieveCapability::ComparatorIAsciiCasemap, b"comparator-i;ascii-numeric" => SieveCapability::ComparatorIAsciiNumeric, b"body" => SieveCapability::Body, b"convert" => SieveCapability::Convert, b"copy" => SieveCapability::Copy, b"relational" => SieveCapability::Relational, b"date" => SieveCapability::Date, b"index" => SieveCapability::Index, b"duplicate" => SieveCapability::Duplicate, b"variables" => SieveCapability::Variables, b"editheader" => SieveCapability::Editheader, b"foreverypart" => SieveCapability::Foreverypart, b"mime" => SieveCapability::Mime, b"replace" => SieveCapability::Replace, b"enclose" => SieveCapability::Enclose, b"extracttext" => SieveCapability::Extracttext, b"enotify" => SieveCapability::Enotify, b"redirect-dsn" => SieveCapability::RedirectDsn, b"redirect-deliverby" => SieveCapability::RedirectDeliverby, b"environment" => SieveCapability::Environment, b"reject" => SieveCapability::Reject, b"ereject" => SieveCapability::Ereject, b"extlists" => SieveCapability::Extlists, b"subaddress" => SieveCapability::Subaddress, b"vacation" => SieveCapability::Vacation, b"vacation-seconds" => SieveCapability::VacationSeconds, b"fcc" => SieveCapability::Fcc, b"mailbox" => SieveCapability::Mailbox, b"mailboxid" => SieveCapability::Mailboxid, b"mboxmetadata" => SieveCapability::Mboxmetadata, b"servermetadata" => SieveCapability::Servermetadata, b"special-use" => SieveCapability::SpecialUse, b"imap4flags" => SieveCapability::Imap4flags, b"ihave" => SieveCapability::Ihave, b"imapsieve" => SieveCapability::Imapsieve, b"include" => SieveCapability::Include, b"regex" => SieveCapability::Regex, b"spamtest" => SieveCapability::Spamtest, b"spamtestplus" => SieveCapability::Spamtestplus, b"virustest" => SieveCapability::Virustest, b"vnd.inbuxa.while" => SieveCapability::VndStalwartWhile, b"vnd.inbuxa.expressions" => SieveCapability::VndStalwartExpressions, } } fn as_str(&self) -> &'static str { match self { SieveCapability::Envelope => "envelope", SieveCapability::EnvelopeDsn => "envelope-dsn", SieveCapability::EnvelopeDeliverby => "envelope-deliverby", SieveCapability::Fileinto => "fileinto", SieveCapability::EncodedCharacter => "encoded-character", SieveCapability::ComparatorElbonia => "comparator-elbonia", SieveCapability::ComparatorIOctet => "comparator-i;octet", SieveCapability::ComparatorIAsciiCasemap => "comparator-i;ascii-casemap", SieveCapability::ComparatorIAsciiNumeric => "comparator-i;ascii-numeric", SieveCapability::Body => "body", SieveCapability::Convert => "convert", SieveCapability::Copy => "copy", SieveCapability::Relational => "relational", SieveCapability::Date => "date", SieveCapability::Index => "index", SieveCapability::Duplicate => "duplicate", SieveCapability::Variables => "variables", SieveCapability::Editheader => "editheader", SieveCapability::Foreverypart => "foreverypart", SieveCapability::Mime => "mime", SieveCapability::Replace => "replace", SieveCapability::Enclose => "enclose", SieveCapability::Extracttext => "extracttext", SieveCapability::Enotify => "enotify", SieveCapability::RedirectDsn => "redirect-dsn", SieveCapability::RedirectDeliverby => "redirect-deliverby", SieveCapability::Environment => "environment", SieveCapability::Reject => "reject", SieveCapability::Ereject => "ereject", SieveCapability::Extlists => "extlists", SieveCapability::Subaddress => "subaddress", SieveCapability::Vacation => "vacation", SieveCapability::VacationSeconds => "vacation-seconds", SieveCapability::Fcc => "fcc", SieveCapability::Mailbox => "mailbox", SieveCapability::Mailboxid => "mailboxid", SieveCapability::Mboxmetadata => "mboxmetadata", SieveCapability::Servermetadata => "servermetadata", SieveCapability::SpecialUse => "special-use", SieveCapability::Imap4flags => "imap4flags", SieveCapability::Ihave => "ihave", SieveCapability::Imapsieve => "imapsieve", SieveCapability::Include => "include", SieveCapability::Regex => "regex", SieveCapability::Spamtest => "spamtest", SieveCapability::Spamtestplus => "spamtestplus", SieveCapability::Virustest => "virustest", SieveCapability::VndStalwartWhile => "vnd.inbuxa.while", SieveCapability::VndStalwartExpressions => "vnd.inbuxa.expressions", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SieveCapability::Envelope), 1 => Some(SieveCapability::EnvelopeDsn), 2 => Some(SieveCapability::EnvelopeDeliverby), 3 => Some(SieveCapability::Fileinto), 4 => Some(SieveCapability::EncodedCharacter), 5 => Some(SieveCapability::ComparatorElbonia), 6 => Some(SieveCapability::ComparatorIOctet), 7 => Some(SieveCapability::ComparatorIAsciiCasemap), 8 => Some(SieveCapability::ComparatorIAsciiNumeric), 9 => Some(SieveCapability::Body), 10 => Some(SieveCapability::Convert), 11 => Some(SieveCapability::Copy), 12 => Some(SieveCapability::Relational), 13 => Some(SieveCapability::Date), 14 => Some(SieveCapability::Index), 15 => Some(SieveCapability::Duplicate), 16 => Some(SieveCapability::Variables), 17 => Some(SieveCapability::Editheader), 18 => Some(SieveCapability::Foreverypart), 19 => Some(SieveCapability::Mime), 20 => Some(SieveCapability::Replace), 21 => Some(SieveCapability::Enclose), 22 => Some(SieveCapability::Extracttext), 23 => Some(SieveCapability::Enotify), 24 => Some(SieveCapability::RedirectDsn), 25 => Some(SieveCapability::RedirectDeliverby), 26 => Some(SieveCapability::Environment), 27 => Some(SieveCapability::Reject), 28 => Some(SieveCapability::Ereject), 29 => Some(SieveCapability::Extlists), 30 => Some(SieveCapability::Subaddress), 31 => Some(SieveCapability::Vacation), 32 => Some(SieveCapability::VacationSeconds), 33 => Some(SieveCapability::Fcc), 34 => Some(SieveCapability::Mailbox), 35 => Some(SieveCapability::Mailboxid), 36 => Some(SieveCapability::Mboxmetadata), 37 => Some(SieveCapability::Servermetadata), 38 => Some(SieveCapability::SpecialUse), 39 => Some(SieveCapability::Imap4flags), 40 => Some(SieveCapability::Ihave), 41 => Some(SieveCapability::Imapsieve), 42 => Some(SieveCapability::Include), 43 => Some(SieveCapability::Regex), 44 => Some(SieveCapability::Spamtest), 45 => Some(SieveCapability::Spamtestplus), 46 => Some(SieveCapability::Virustest), 47 => Some(SieveCapability::VndStalwartWhile), 48 => Some(SieveCapability::VndStalwartExpressions), _ => None, } } const COUNT: usize = 49; } impl serde::Serialize for SieveCapability { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SieveCapability { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for Sig0Algorithm { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"ecdsa-p256-sha256" => Sig0Algorithm::EcdsaP256Sha256, b"ecdsa-p384-sha384" => Sig0Algorithm::EcdsaP384Sha384, b"ed25519" => Sig0Algorithm::Ed25519, } } fn as_str(&self) -> &'static str { match self { Sig0Algorithm::EcdsaP256Sha256 => "ecdsa-p256-sha256", Sig0Algorithm::EcdsaP384Sha384 => "ecdsa-p384-sha384", Sig0Algorithm::Ed25519 => "ed25519", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(Sig0Algorithm::EcdsaP256Sha256), 1 => Some(Sig0Algorithm::EcdsaP384Sha384), 2 => Some(Sig0Algorithm::Ed25519), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for Sig0Algorithm { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for Sig0Algorithm { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SpamClassifierModelType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"FtrlFh" => SpamClassifierModelType::FtrlFh, b"FtrlCcfh" => SpamClassifierModelType::FtrlCcfh, b"Disabled" => SpamClassifierModelType::Disabled, } } fn as_str(&self) -> &'static str { match self { SpamClassifierModelType::FtrlFh => "FtrlFh", SpamClassifierModelType::FtrlCcfh => "FtrlCcfh", SpamClassifierModelType::Disabled => "Disabled", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SpamClassifierModelType::FtrlFh), 1 => Some(SpamClassifierModelType::FtrlCcfh), 2 => Some(SpamClassifierModelType::Disabled), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for SpamClassifierModelType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SpamClassifierModelType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SpamClassifyParameters { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"bit7" => SpamClassifyParameters::Bit7, b"bit8Mime - 8-bit MIME message content" => SpamClassifyParameters::Bit8Mime8BitMIMEMessageContent, b"binaryMime" => SpamClassifyParameters::BinaryMime, b"smtpUtf8" => SpamClassifyParameters::SmtpUtf8, } } fn as_str(&self) -> &'static str { match self { SpamClassifyParameters::Bit7 => "bit7", SpamClassifyParameters::Bit8Mime8BitMIMEMessageContent => { "bit8Mime - 8-bit MIME message content" } SpamClassifyParameters::BinaryMime => "binaryMime", SpamClassifyParameters::SmtpUtf8 => "smtpUtf8", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SpamClassifyParameters::Bit7), 1 => Some(SpamClassifyParameters::Bit8Mime8BitMIMEMessageContent), 2 => Some(SpamClassifyParameters::BinaryMime), 3 => Some(SpamClassifyParameters::SmtpUtf8), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for SpamClassifyParameters { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SpamClassifyParameters { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SpamClassifyResult { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"spam" => SpamClassifyResult::Spam, b"ham" => SpamClassifyResult::Ham, b"reject" => SpamClassifyResult::Reject, b"discard" => SpamClassifyResult::Discard, } } fn as_str(&self) -> &'static str { match self { SpamClassifyResult::Spam => "spam", SpamClassifyResult::Ham => "ham", SpamClassifyResult::Reject => "reject", SpamClassifyResult::Discard => "discard", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SpamClassifyResult::Spam), 1 => Some(SpamClassifyResult::Ham), 2 => Some(SpamClassifyResult::Reject), 3 => Some(SpamClassifyResult::Discard), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for SpamClassifyResult { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SpamClassifyResult { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SpamClassifyTagDisposition { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"score" => SpamClassifyTagDisposition::Score, b"reject" => SpamClassifyTagDisposition::Reject, b"discard" => SpamClassifyTagDisposition::Discard, } } fn as_str(&self) -> &'static str { match self { SpamClassifyTagDisposition::Score => "score", SpamClassifyTagDisposition::Reject => "reject", SpamClassifyTagDisposition::Discard => "discard", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SpamClassifyTagDisposition::Score), 1 => Some(SpamClassifyTagDisposition::Reject), 2 => Some(SpamClassifyTagDisposition::Discard), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for SpamClassifyTagDisposition { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SpamClassifyTagDisposition { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SpamDnsblServerType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Any" => SpamDnsblServerType::Any, b"Url" => SpamDnsblServerType::Url, b"Domain" => SpamDnsblServerType::Domain, b"Email" => SpamDnsblServerType::Email, b"Ip" => SpamDnsblServerType::Ip, b"Header" => SpamDnsblServerType::Header, b"Body" => SpamDnsblServerType::Body, } } fn as_str(&self) -> &'static str { match self { SpamDnsblServerType::Any => "Any", SpamDnsblServerType::Url => "Url", SpamDnsblServerType::Domain => "Domain", SpamDnsblServerType::Email => "Email", SpamDnsblServerType::Ip => "Ip", SpamDnsblServerType::Header => "Header", SpamDnsblServerType::Body => "Body", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SpamDnsblServerType::Any), 1 => Some(SpamDnsblServerType::Url), 2 => Some(SpamDnsblServerType::Domain), 3 => Some(SpamDnsblServerType::Email), 4 => Some(SpamDnsblServerType::Ip), 5 => Some(SpamDnsblServerType::Header), 6 => Some(SpamDnsblServerType::Body), _ => None, } } const COUNT: usize = 7; } impl serde::Serialize for SpamDnsblServerType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SpamDnsblServerType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SpamLlmType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Disable" => SpamLlmType::Disable, b"Enable" => SpamLlmType::Enable, } } fn as_str(&self) -> &'static str { match self { SpamLlmType::Disable => "Disable", SpamLlmType::Enable => "Enable", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SpamLlmType::Disable), 1 => Some(SpamLlmType::Enable), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for SpamLlmType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SpamLlmType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SpamRuleType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Any" => SpamRuleType::Any, b"Url" => SpamRuleType::Url, b"Domain" => SpamRuleType::Domain, b"Email" => SpamRuleType::Email, b"Ip" => SpamRuleType::Ip, b"Header" => SpamRuleType::Header, b"Body" => SpamRuleType::Body, } } fn as_str(&self) -> &'static str { match self { SpamRuleType::Any => "Any", SpamRuleType::Url => "Url", SpamRuleType::Domain => "Domain", SpamRuleType::Email => "Email", SpamRuleType::Ip => "Ip", SpamRuleType::Header => "Header", SpamRuleType::Body => "Body", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SpamRuleType::Any), 1 => Some(SpamRuleType::Url), 2 => Some(SpamRuleType::Domain), 3 => Some(SpamRuleType::Email), 4 => Some(SpamRuleType::Ip), 5 => Some(SpamRuleType::Header), 6 => Some(SpamRuleType::Body), _ => None, } } const COUNT: usize = 7; } impl serde::Serialize for SpamRuleType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SpamRuleType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SpamTagType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Score" => SpamTagType::Score, b"Discard" => SpamTagType::Discard, b"Reject" => SpamTagType::Reject, } } fn as_str(&self) -> &'static str { match self { SpamTagType::Score => "Score", SpamTagType::Discard => "Discard", SpamTagType::Reject => "Reject", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SpamTagType::Score), 1 => Some(SpamTagType::Discard), 2 => Some(SpamTagType::Reject), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for SpamTagType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SpamTagType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SpecialUse { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"inbox" => SpecialUse::Inbox, b"trash" => SpecialUse::Trash, b"junk" => SpecialUse::Junk, b"drafts" => SpecialUse::Drafts, b"archive" => SpecialUse::Archive, b"sent" => SpecialUse::Sent, b"shared" => SpecialUse::Shared, b"important" => SpecialUse::Important, b"memos" => SpecialUse::Memos, b"scheduled" => SpecialUse::Scheduled, b"snoozed" => SpecialUse::Snoozed, } } fn as_str(&self) -> &'static str { match self { SpecialUse::Inbox => "inbox", SpecialUse::Trash => "trash", SpecialUse::Junk => "junk", SpecialUse::Drafts => "drafts", SpecialUse::Archive => "archive", SpecialUse::Sent => "sent", SpecialUse::Shared => "shared", SpecialUse::Important => "important", SpecialUse::Memos => "memos", SpecialUse::Scheduled => "scheduled", SpecialUse::Snoozed => "snoozed", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SpecialUse::Inbox), 1 => Some(SpecialUse::Trash), 2 => Some(SpecialUse::Junk), 3 => Some(SpecialUse::Drafts), 4 => Some(SpecialUse::Archive), 5 => Some(SpecialUse::Sent), 6 => Some(SpecialUse::Shared), 7 => Some(SpecialUse::Important), 8 => Some(SpecialUse::Memos), 9 => Some(SpecialUse::Scheduled), 10 => Some(SpecialUse::Snoozed), _ => None, } } const COUNT: usize = 11; } impl serde::Serialize for SpecialUse { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SpecialUse { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SpfAuthResult { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"none" => SpfAuthResult::None, b"neutral" => SpfAuthResult::Neutral, b"pass" => SpfAuthResult::Pass, b"fail" => SpfAuthResult::Fail, b"softFail" => SpfAuthResult::SoftFail, b"tempError" => SpfAuthResult::TempError, b"permError" => SpfAuthResult::PermError, } } fn as_str(&self) -> &'static str { match self { SpfAuthResult::None => "none", SpfAuthResult::Neutral => "neutral", SpfAuthResult::Pass => "pass", SpfAuthResult::Fail => "fail", SpfAuthResult::SoftFail => "softFail", SpfAuthResult::TempError => "tempError", SpfAuthResult::PermError => "permError", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SpfAuthResult::None), 1 => Some(SpfAuthResult::Neutral), 2 => Some(SpfAuthResult::Pass), 3 => Some(SpfAuthResult::Fail), 4 => Some(SpfAuthResult::SoftFail), 5 => Some(SpfAuthResult::TempError), 6 => Some(SpfAuthResult::PermError), _ => None, } } const COUNT: usize = 7; } impl serde::Serialize for SpfAuthResult { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SpfAuthResult { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SpfDomainScope { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"helo" => SpfDomainScope::Helo, b"mailFrom" => SpfDomainScope::MailFrom, b"unspecified" => SpfDomainScope::Unspecified, } } fn as_str(&self) -> &'static str { match self { SpfDomainScope::Helo => "helo", SpfDomainScope::MailFrom => "mailFrom", SpfDomainScope::Unspecified => "unspecified", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SpfDomainScope::Helo), 1 => Some(SpfDomainScope::MailFrom), 2 => Some(SpfDomainScope::Unspecified), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for SpfDomainScope { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SpfDomainScope { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SqlAuthStoreType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Default" => SqlAuthStoreType::Default, b"PostgreSql" => SqlAuthStoreType::PostgreSql, b"MySql" => SqlAuthStoreType::MySql, b"Sqlite" => SqlAuthStoreType::Sqlite, } } fn as_str(&self) -> &'static str { match self { SqlAuthStoreType::Default => "Default", SqlAuthStoreType::PostgreSql => "PostgreSql", SqlAuthStoreType::MySql => "MySql", SqlAuthStoreType::Sqlite => "Sqlite", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SqlAuthStoreType::Default), 1 => Some(SqlAuthStoreType::PostgreSql), 2 => Some(SqlAuthStoreType::MySql), 3 => Some(SqlAuthStoreType::Sqlite), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for SqlAuthStoreType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SqlAuthStoreType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for StorageQuota { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"maxEmails" => StorageQuota::MaxEmails, b"maxMailboxes" => StorageQuota::MaxMailboxes, b"maxEmailSubmissions" => StorageQuota::MaxEmailSubmissions, b"maxEmailIdentities" => StorageQuota::MaxEmailIdentities, b"maxParticipantIdentities" => StorageQuota::MaxParticipantIdentities, b"maxSieveScripts" => StorageQuota::MaxSieveScripts, b"maxPushSubscriptions" => StorageQuota::MaxPushSubscriptions, b"maxCalendars" => StorageQuota::MaxCalendars, b"maxCalendarEvents" => StorageQuota::MaxCalendarEvents, b"maxCalendarEventNotifications" => StorageQuota::MaxCalendarEventNotifications, b"maxAddressBooks" => StorageQuota::MaxAddressBooks, b"maxContactCards" => StorageQuota::MaxContactCards, b"maxFiles" => StorageQuota::MaxFiles, b"maxFolders" => StorageQuota::MaxFolders, b"maxMaskedAddresses" => StorageQuota::MaxMaskedAddresses, b"maxAppPasswords" => StorageQuota::MaxAppPasswords, b"maxApiKeys" => StorageQuota::MaxApiKeys, b"maxPublicKeys" => StorageQuota::MaxPublicKeys, b"maxDiskQuota" => StorageQuota::MaxDiskQuota, } } fn as_str(&self) -> &'static str { match self { StorageQuota::MaxEmails => "maxEmails", StorageQuota::MaxMailboxes => "maxMailboxes", StorageQuota::MaxEmailSubmissions => "maxEmailSubmissions", StorageQuota::MaxEmailIdentities => "maxEmailIdentities", StorageQuota::MaxParticipantIdentities => "maxParticipantIdentities", StorageQuota::MaxSieveScripts => "maxSieveScripts", StorageQuota::MaxPushSubscriptions => "maxPushSubscriptions", StorageQuota::MaxCalendars => "maxCalendars", StorageQuota::MaxCalendarEvents => "maxCalendarEvents", StorageQuota::MaxCalendarEventNotifications => "maxCalendarEventNotifications", StorageQuota::MaxAddressBooks => "maxAddressBooks", StorageQuota::MaxContactCards => "maxContactCards", StorageQuota::MaxFiles => "maxFiles", StorageQuota::MaxFolders => "maxFolders", StorageQuota::MaxMaskedAddresses => "maxMaskedAddresses", StorageQuota::MaxAppPasswords => "maxAppPasswords", StorageQuota::MaxApiKeys => "maxApiKeys", StorageQuota::MaxPublicKeys => "maxPublicKeys", StorageQuota::MaxDiskQuota => "maxDiskQuota", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(StorageQuota::MaxEmails), 1 => Some(StorageQuota::MaxMailboxes), 2 => Some(StorageQuota::MaxEmailSubmissions), 3 => Some(StorageQuota::MaxEmailIdentities), 4 => Some(StorageQuota::MaxParticipantIdentities), 5 => Some(StorageQuota::MaxSieveScripts), 6 => Some(StorageQuota::MaxPushSubscriptions), 7 => Some(StorageQuota::MaxCalendars), 8 => Some(StorageQuota::MaxCalendarEvents), 9 => Some(StorageQuota::MaxCalendarEventNotifications), 10 => Some(StorageQuota::MaxAddressBooks), 11 => Some(StorageQuota::MaxContactCards), 12 => Some(StorageQuota::MaxFiles), 13 => Some(StorageQuota::MaxFolders), 14 => Some(StorageQuota::MaxMaskedAddresses), 15 => Some(StorageQuota::MaxAppPasswords), 16 => Some(StorageQuota::MaxApiKeys), 17 => Some(StorageQuota::MaxPublicKeys), 18 => Some(StorageQuota::MaxDiskQuota), _ => None, } } const COUNT: usize = 19; } impl serde::Serialize for StorageQuota { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for StorageQuota { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for SubAddressingType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Enabled" => SubAddressingType::Enabled, b"Custom" => SubAddressingType::Custom, b"Disabled" => SubAddressingType::Disabled, } } fn as_str(&self) -> &'static str { match self { SubAddressingType::Enabled => "Enabled", SubAddressingType::Custom => "Custom", SubAddressingType::Disabled => "Disabled", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(SubAddressingType::Enabled), 1 => Some(SubAddressingType::Custom), 2 => Some(SubAddressingType::Disabled), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for SubAddressingType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for SubAddressingType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TaskAccountMaintenanceType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"purge" => TaskAccountMaintenanceType::Purge, b"reindex" => TaskAccountMaintenanceType::Reindex, b"recalculateImapUid" => TaskAccountMaintenanceType::RecalculateImapUid, b"recalculateQuota" => TaskAccountMaintenanceType::RecalculateQuota, } } fn as_str(&self) -> &'static str { match self { TaskAccountMaintenanceType::Purge => "purge", TaskAccountMaintenanceType::Reindex => "reindex", TaskAccountMaintenanceType::RecalculateImapUid => "recalculateImapUid", TaskAccountMaintenanceType::RecalculateQuota => "recalculateQuota", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TaskAccountMaintenanceType::Purge), 1 => Some(TaskAccountMaintenanceType::Reindex), 2 => Some(TaskAccountMaintenanceType::RecalculateImapUid), 3 => Some(TaskAccountMaintenanceType::RecalculateQuota), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for TaskAccountMaintenanceType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TaskAccountMaintenanceType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TaskRetryStrategyType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"ExponentialBackoff" => TaskRetryStrategyType::ExponentialBackoff, b"FixedDelay" => TaskRetryStrategyType::FixedDelay, } } fn as_str(&self) -> &'static str { match self { TaskRetryStrategyType::ExponentialBackoff => "ExponentialBackoff", TaskRetryStrategyType::FixedDelay => "FixedDelay", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TaskRetryStrategyType::ExponentialBackoff), 1 => Some(TaskRetryStrategyType::FixedDelay), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for TaskRetryStrategyType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TaskRetryStrategyType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TaskSpamFilterMaintenanceType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"train" => TaskSpamFilterMaintenanceType::Train, b"retrain" => TaskSpamFilterMaintenanceType::Retrain, b"abort" => TaskSpamFilterMaintenanceType::Abort, b"reset" => TaskSpamFilterMaintenanceType::Reset, b"updateRules" => TaskSpamFilterMaintenanceType::UpdateRules, } } fn as_str(&self) -> &'static str { match self { TaskSpamFilterMaintenanceType::Train => "train", TaskSpamFilterMaintenanceType::Retrain => "retrain", TaskSpamFilterMaintenanceType::Abort => "abort", TaskSpamFilterMaintenanceType::Reset => "reset", TaskSpamFilterMaintenanceType::UpdateRules => "updateRules", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TaskSpamFilterMaintenanceType::Train), 1 => Some(TaskSpamFilterMaintenanceType::Retrain), 2 => Some(TaskSpamFilterMaintenanceType::Abort), 3 => Some(TaskSpamFilterMaintenanceType::Reset), 4 => Some(TaskSpamFilterMaintenanceType::UpdateRules), _ => None, } } const COUNT: usize = 5; } impl serde::Serialize for TaskSpamFilterMaintenanceType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TaskSpamFilterMaintenanceType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TaskStatusType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Pending" => TaskStatusType::Pending, b"Retry" => TaskStatusType::Retry, b"Failed" => TaskStatusType::Failed, } } fn as_str(&self) -> &'static str { match self { TaskStatusType::Pending => "Pending", TaskStatusType::Retry => "Retry", TaskStatusType::Failed => "Failed", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TaskStatusType::Pending), 1 => Some(TaskStatusType::Retry), 2 => Some(TaskStatusType::Failed), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for TaskStatusType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TaskStatusType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TaskStoreMaintenanceType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"reindexAccounts" => TaskStoreMaintenanceType::ReindexAccounts, b"reindexTelemetry" => TaskStoreMaintenanceType::ReindexTelemetry, b"purgeAccounts" => TaskStoreMaintenanceType::PurgeAccounts, b"purgeData" => TaskStoreMaintenanceType::PurgeData, b"purgeBlob" => TaskStoreMaintenanceType::PurgeBlob, b"resetRateLimiters" => TaskStoreMaintenanceType::ResetRateLimiters, b"resetUserQuotas" => TaskStoreMaintenanceType::ResetUserQuotas, b"resetTenantQuotas" => TaskStoreMaintenanceType::ResetTenantQuotas, b"resetBlobQuotas" => TaskStoreMaintenanceType::ResetBlobQuotas, b"removeAuthTokens" => TaskStoreMaintenanceType::RemoveAuthTokens, b"removeLockQueueMessage" => TaskStoreMaintenanceType::RemoveLockQueueMessage, b"removeLockTask" => TaskStoreMaintenanceType::RemoveLockTask, b"removeLockDav" => TaskStoreMaintenanceType::RemoveLockDav, b"removeSieveId" => TaskStoreMaintenanceType::RemoveSieveId, b"removeGreylist" => TaskStoreMaintenanceType::RemoveGreylist, } } fn as_str(&self) -> &'static str { match self { TaskStoreMaintenanceType::ReindexAccounts => "reindexAccounts", TaskStoreMaintenanceType::ReindexTelemetry => "reindexTelemetry", TaskStoreMaintenanceType::PurgeAccounts => "purgeAccounts", TaskStoreMaintenanceType::PurgeData => "purgeData", TaskStoreMaintenanceType::PurgeBlob => "purgeBlob", TaskStoreMaintenanceType::ResetRateLimiters => "resetRateLimiters", TaskStoreMaintenanceType::ResetUserQuotas => "resetUserQuotas", TaskStoreMaintenanceType::ResetTenantQuotas => "resetTenantQuotas", TaskStoreMaintenanceType::ResetBlobQuotas => "resetBlobQuotas", TaskStoreMaintenanceType::RemoveAuthTokens => "removeAuthTokens", TaskStoreMaintenanceType::RemoveLockQueueMessage => "removeLockQueueMessage", TaskStoreMaintenanceType::RemoveLockTask => "removeLockTask", TaskStoreMaintenanceType::RemoveLockDav => "removeLockDav", TaskStoreMaintenanceType::RemoveSieveId => "removeSieveId", TaskStoreMaintenanceType::RemoveGreylist => "removeGreylist", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TaskStoreMaintenanceType::ReindexAccounts), 1 => Some(TaskStoreMaintenanceType::ReindexTelemetry), 2 => Some(TaskStoreMaintenanceType::PurgeAccounts), 3 => Some(TaskStoreMaintenanceType::PurgeData), 4 => Some(TaskStoreMaintenanceType::PurgeBlob), 5 => Some(TaskStoreMaintenanceType::ResetRateLimiters), 6 => Some(TaskStoreMaintenanceType::ResetUserQuotas), 7 => Some(TaskStoreMaintenanceType::ResetTenantQuotas), 8 => Some(TaskStoreMaintenanceType::ResetBlobQuotas), 9 => Some(TaskStoreMaintenanceType::RemoveAuthTokens), 10 => Some(TaskStoreMaintenanceType::RemoveLockQueueMessage), 11 => Some(TaskStoreMaintenanceType::RemoveLockTask), 12 => Some(TaskStoreMaintenanceType::RemoveLockDav), 13 => Some(TaskStoreMaintenanceType::RemoveSieveId), 14 => Some(TaskStoreMaintenanceType::RemoveGreylist), _ => None, } } const COUNT: usize = 15; } impl serde::Serialize for TaskStoreMaintenanceType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TaskStoreMaintenanceType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TaskTenantMaintenanceType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"recalculateQuota" => TaskTenantMaintenanceType::RecalculateQuota, } } fn as_str(&self) -> &'static str { match self { TaskTenantMaintenanceType::RecalculateQuota => "recalculateQuota", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TaskTenantMaintenanceType::RecalculateQuota), _ => None, } } const COUNT: usize = 1; } impl serde::Serialize for TaskTenantMaintenanceType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TaskTenantMaintenanceType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TaskType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"IndexDocument" => TaskType::IndexDocument, b"UnindexDocument" => TaskType::UnindexDocument, b"IndexTrace" => TaskType::IndexTrace, b"CalendarAlarmEmail" => TaskType::CalendarAlarmEmail, b"CalendarAlarmNotification" => TaskType::CalendarAlarmNotification, b"CalendarItipMessage" => TaskType::CalendarItipMessage, b"MergeThreads" => TaskType::MergeThreads, b"DmarcReport" => TaskType::DmarcReport, b"TlsReport" => TaskType::TlsReport, b"RestoreArchivedItem" => TaskType::RestoreArchivedItem, b"DestroyAccount" => TaskType::DestroyAccount, b"AccountMaintenance" => TaskType::AccountMaintenance, b"TenantMaintenance" => TaskType::TenantMaintenance, b"StoreMaintenance" => TaskType::StoreMaintenance, b"SpamFilterMaintenance" => TaskType::SpamFilterMaintenance, b"AcmeRenewal" => TaskType::AcmeRenewal, b"DkimManagement" => TaskType::DkimManagement, b"DnsManagement" => TaskType::DnsManagement, } } fn as_str(&self) -> &'static str { match self { TaskType::IndexDocument => "IndexDocument", TaskType::UnindexDocument => "UnindexDocument", TaskType::IndexTrace => "IndexTrace", TaskType::CalendarAlarmEmail => "CalendarAlarmEmail", TaskType::CalendarAlarmNotification => "CalendarAlarmNotification", TaskType::CalendarItipMessage => "CalendarItipMessage", TaskType::MergeThreads => "MergeThreads", TaskType::DmarcReport => "DmarcReport", TaskType::TlsReport => "TlsReport", TaskType::RestoreArchivedItem => "RestoreArchivedItem", TaskType::DestroyAccount => "DestroyAccount", TaskType::AccountMaintenance => "AccountMaintenance", TaskType::TenantMaintenance => "TenantMaintenance", TaskType::StoreMaintenance => "StoreMaintenance", TaskType::SpamFilterMaintenance => "SpamFilterMaintenance", TaskType::AcmeRenewal => "AcmeRenewal", TaskType::DkimManagement => "DkimManagement", TaskType::DnsManagement => "DnsManagement", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TaskType::IndexDocument), 1 => Some(TaskType::UnindexDocument), 2 => Some(TaskType::IndexTrace), 3 => Some(TaskType::CalendarAlarmEmail), 4 => Some(TaskType::CalendarAlarmNotification), 5 => Some(TaskType::CalendarItipMessage), 6 => Some(TaskType::MergeThreads), 7 => Some(TaskType::DmarcReport), 8 => Some(TaskType::TlsReport), 9 => Some(TaskType::RestoreArchivedItem), 10 => Some(TaskType::DestroyAccount), 11 => Some(TaskType::AccountMaintenance), 12 => Some(TaskType::TenantMaintenance), 13 => Some(TaskType::StoreMaintenance), 14 => Some(TaskType::SpamFilterMaintenance), 15 => Some(TaskType::AcmeRenewal), 16 => Some(TaskType::DkimManagement), 17 => Some(TaskType::DnsManagement), _ => None, } } const COUNT: usize = 18; } impl serde::Serialize for TaskType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TaskType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TenantStorageQuota { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"maxAccounts" => TenantStorageQuota::MaxAccounts, b"maxGroups" => TenantStorageQuota::MaxGroups, b"maxDomains" => TenantStorageQuota::MaxDomains, b"maxMailingLists" => TenantStorageQuota::MaxMailingLists, b"maxRoles" => TenantStorageQuota::MaxRoles, b"maxOauthClients" => TenantStorageQuota::MaxOauthClients, b"maxDkimKeys" => TenantStorageQuota::MaxDkimKeys, b"maxDnsServers" => TenantStorageQuota::MaxDnsServers, b"maxDirectories" => TenantStorageQuota::MaxDirectories, b"maxAcmeProviders" => TenantStorageQuota::MaxAcmeProviders, b"maxDiskQuota" => TenantStorageQuota::MaxDiskQuota, } } fn as_str(&self) -> &'static str { match self { TenantStorageQuota::MaxAccounts => "maxAccounts", TenantStorageQuota::MaxGroups => "maxGroups", TenantStorageQuota::MaxDomains => "maxDomains", TenantStorageQuota::MaxMailingLists => "maxMailingLists", TenantStorageQuota::MaxRoles => "maxRoles", TenantStorageQuota::MaxOauthClients => "maxOauthClients", TenantStorageQuota::MaxDkimKeys => "maxDkimKeys", TenantStorageQuota::MaxDnsServers => "maxDnsServers", TenantStorageQuota::MaxDirectories => "maxDirectories", TenantStorageQuota::MaxAcmeProviders => "maxAcmeProviders", TenantStorageQuota::MaxDiskQuota => "maxDiskQuota", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TenantStorageQuota::MaxAccounts), 1 => Some(TenantStorageQuota::MaxGroups), 2 => Some(TenantStorageQuota::MaxDomains), 3 => Some(TenantStorageQuota::MaxMailingLists), 4 => Some(TenantStorageQuota::MaxRoles), 5 => Some(TenantStorageQuota::MaxOauthClients), 6 => Some(TenantStorageQuota::MaxDkimKeys), 7 => Some(TenantStorageQuota::MaxDnsServers), 8 => Some(TenantStorageQuota::MaxDirectories), 9 => Some(TenantStorageQuota::MaxAcmeProviders), 10 => Some(TenantStorageQuota::MaxDiskQuota), _ => None, } } const COUNT: usize = 11; } impl serde::Serialize for TenantStorageQuota { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TenantStorageQuota { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TimeZone { fn parse(value: &str) -> Option { hashify::map! { value.as_bytes(), TimeZone, b"Africa/Abidjan" => TimeZone::AfricaAbidjan, b"Africa/Accra" => TimeZone::AfricaAccra, b"Africa/Addis_Ababa" => TimeZone::AfricaAddisAbaba, b"Africa/Algiers" => TimeZone::AfricaAlgiers, b"Africa/Asmara" => TimeZone::AfricaAsmara, b"Africa/Asmera" => TimeZone::AfricaAsmera, b"Africa/Bamako" => TimeZone::AfricaBamako, b"Africa/Bangui" => TimeZone::AfricaBangui, b"Africa/Banjul" => TimeZone::AfricaBanjul, b"Africa/Bissau" => TimeZone::AfricaBissau, b"Africa/Blantyre" => TimeZone::AfricaBlantyre, b"Africa/Brazzaville" => TimeZone::AfricaBrazzaville, b"Africa/Bujumbura" => TimeZone::AfricaBujumbura, b"Africa/Cairo" => TimeZone::AfricaCairo, b"Africa/Casablanca" => TimeZone::AfricaCasablanca, b"Africa/Ceuta" => TimeZone::AfricaCeuta, b"Africa/Conakry" => TimeZone::AfricaConakry, b"Africa/Dakar" => TimeZone::AfricaDakar, b"Africa/Dar_es_Salaam" => TimeZone::AfricaDarEsSalaam, b"Africa/Djibouti" => TimeZone::AfricaDjibouti, b"Africa/Douala" => TimeZone::AfricaDouala, b"Africa/El_Aaiun" => TimeZone::AfricaElAaiun, b"Africa/Freetown" => TimeZone::AfricaFreetown, b"Africa/Gaborone" => TimeZone::AfricaGaborone, b"Africa/Harare" => TimeZone::AfricaHarare, b"Africa/Johannesburg" => TimeZone::AfricaJohannesburg, b"Africa/Juba" => TimeZone::AfricaJuba, b"Africa/Kampala" => TimeZone::AfricaKampala, b"Africa/Khartoum" => TimeZone::AfricaKhartoum, b"Africa/Kigali" => TimeZone::AfricaKigali, b"Africa/Kinshasa" => TimeZone::AfricaKinshasa, b"Africa/Lagos" => TimeZone::AfricaLagos, b"Africa/Libreville" => TimeZone::AfricaLibreville, b"Africa/Lome" => TimeZone::AfricaLome, b"Africa/Luanda" => TimeZone::AfricaLuanda, b"Africa/Lubumbashi" => TimeZone::AfricaLubumbashi, b"Africa/Lusaka" => TimeZone::AfricaLusaka, b"Africa/Malabo" => TimeZone::AfricaMalabo, b"Africa/Maputo" => TimeZone::AfricaMaputo, b"Africa/Maseru" => TimeZone::AfricaMaseru, b"Africa/Mbabane" => TimeZone::AfricaMbabane, b"Africa/Mogadishu" => TimeZone::AfricaMogadishu, b"Africa/Monrovia" => TimeZone::AfricaMonrovia, b"Africa/Nairobi" => TimeZone::AfricaNairobi, b"Africa/Ndjamena" => TimeZone::AfricaNdjamena, b"Africa/Niamey" => TimeZone::AfricaNiamey, b"Africa/Nouakchott" => TimeZone::AfricaNouakchott, b"Africa/Ouagadougou" => TimeZone::AfricaOuagadougou, b"Africa/Porto-Novo" => TimeZone::AfricaPortoNovo, b"Africa/Sao_Tome" => TimeZone::AfricaSaoTome, b"Africa/Timbuktu" => TimeZone::AfricaTimbuktu, b"Africa/Tripoli" => TimeZone::AfricaTripoli, b"Africa/Tunis" => TimeZone::AfricaTunis, b"Africa/Windhoek" => TimeZone::AfricaWindhoek, b"America/Adak" => TimeZone::AmericaAdak, b"America/Anchorage" => TimeZone::AmericaAnchorage, b"America/Anguilla" => TimeZone::AmericaAnguilla, b"America/Antigua" => TimeZone::AmericaAntigua, b"America/Araguaina" => TimeZone::AmericaAraguaina, b"America/Argentina/Buenos_Aires" => TimeZone::AmericaArgentinaBuenosAires, b"America/Argentina/Catamarca" => TimeZone::AmericaArgentinaCatamarca, b"America/Argentina/ComodRivadavia" => TimeZone::AmericaArgentinaComodRivadavia, b"America/Argentina/Cordoba" => TimeZone::AmericaArgentinaCordoba, b"America/Argentina/Jujuy" => TimeZone::AmericaArgentinaJujuy, b"America/Argentina/La_Rioja" => TimeZone::AmericaArgentinaLaRioja, b"America/Argentina/Mendoza" => TimeZone::AmericaArgentinaMendoza, b"America/Argentina/Rio_Gallegos" => TimeZone::AmericaArgentinaRioGallegos, b"America/Argentina/Salta" => TimeZone::AmericaArgentinaSalta, b"America/Argentina/San_Juan" => TimeZone::AmericaArgentinaSanJuan, b"America/Argentina/San_Luis" => TimeZone::AmericaArgentinaSanLuis, b"America/Argentina/Tucuman" => TimeZone::AmericaArgentinaTucuman, b"America/Argentina/Ushuaia" => TimeZone::AmericaArgentinaUshuaia, b"America/Aruba" => TimeZone::AmericaAruba, b"America/Asuncion" => TimeZone::AmericaAsuncion, b"America/Atikokan" => TimeZone::AmericaAtikokan, b"America/Atka" => TimeZone::AmericaAtka, b"America/Bahia" => TimeZone::AmericaBahia, b"America/Bahia_Banderas" => TimeZone::AmericaBahiaBanderas, b"America/Barbados" => TimeZone::AmericaBarbados, b"America/Belem" => TimeZone::AmericaBelem, b"America/Belize" => TimeZone::AmericaBelize, b"America/Blanc-Sablon" => TimeZone::AmericaBlancSablon, b"America/Boa_Vista" => TimeZone::AmericaBoaVista, b"America/Bogota" => TimeZone::AmericaBogota, b"America/Boise" => TimeZone::AmericaBoise, b"America/Buenos_Aires" => TimeZone::AmericaBuenosAires, b"America/Cambridge_Bay" => TimeZone::AmericaCambridgeBay, b"America/Campo_Grande" => TimeZone::AmericaCampoGrande, b"America/Cancun" => TimeZone::AmericaCancun, b"America/Caracas" => TimeZone::AmericaCaracas, b"America/Catamarca" => TimeZone::AmericaCatamarca, b"America/Cayenne" => TimeZone::AmericaCayenne, b"America/Cayman" => TimeZone::AmericaCayman, b"America/Chicago" => TimeZone::AmericaChicago, b"America/Chihuahua" => TimeZone::AmericaChihuahua, b"America/Ciudad_Juarez" => TimeZone::AmericaCiudadJuarez, b"America/Coral_Harbour" => TimeZone::AmericaCoralHarbour, b"America/Cordoba" => TimeZone::AmericaCordoba, b"America/Costa_Rica" => TimeZone::AmericaCostaRica, b"America/Coyhaique" => TimeZone::AmericaCoyhaique, b"America/Creston" => TimeZone::AmericaCreston, b"America/Cuiaba" => TimeZone::AmericaCuiaba, b"America/Curacao" => TimeZone::AmericaCuracao, b"America/Danmarkshavn" => TimeZone::AmericaDanmarkshavn, b"America/Dawson" => TimeZone::AmericaDawson, b"America/Dawson_Creek" => TimeZone::AmericaDawsonCreek, b"America/Denver" => TimeZone::AmericaDenver, b"America/Detroit" => TimeZone::AmericaDetroit, b"America/Dominica" => TimeZone::AmericaDominica, b"America/Edmonton" => TimeZone::AmericaEdmonton, b"America/Eirunepe" => TimeZone::AmericaEirunepe, b"America/El_Salvador" => TimeZone::AmericaElSalvador, b"America/Ensenada" => TimeZone::AmericaEnsenada, b"America/Fort_Nelson" => TimeZone::AmericaFortNelson, b"America/Fort_Wayne" => TimeZone::AmericaFortWayne, b"America/Fortaleza" => TimeZone::AmericaFortaleza, b"America/Glace_Bay" => TimeZone::AmericaGlaceBay, b"America/Godthab" => TimeZone::AmericaGodthab, b"America/Goose_Bay" => TimeZone::AmericaGooseBay, b"America/Grand_Turk" => TimeZone::AmericaGrandTurk, b"America/Grenada" => TimeZone::AmericaGrenada, b"America/Guadeloupe" => TimeZone::AmericaGuadeloupe, b"America/Guatemala" => TimeZone::AmericaGuatemala, b"America/Guayaquil" => TimeZone::AmericaGuayaquil, b"America/Guyana" => TimeZone::AmericaGuyana, b"America/Halifax" => TimeZone::AmericaHalifax, b"America/Havana" => TimeZone::AmericaHavana, b"America/Hermosillo" => TimeZone::AmericaHermosillo, b"America/Indiana/Indianapolis" => TimeZone::AmericaIndianaIndianapolis, b"America/Indiana/Knox" => TimeZone::AmericaIndianaKnox, b"America/Indiana/Marengo" => TimeZone::AmericaIndianaMarengo, b"America/Indiana/Petersburg" => TimeZone::AmericaIndianaPetersburg, b"America/Indiana/Tell_City" => TimeZone::AmericaIndianaTellCity, b"America/Indiana/Vevay" => TimeZone::AmericaIndianaVevay, b"America/Indiana/Vincennes" => TimeZone::AmericaIndianaVincennes, b"America/Indiana/Winamac" => TimeZone::AmericaIndianaWinamac, b"America/Indianapolis" => TimeZone::AmericaIndianapolis, b"America/Inuvik" => TimeZone::AmericaInuvik, b"America/Iqaluit" => TimeZone::AmericaIqaluit, b"America/Jamaica" => TimeZone::AmericaJamaica, b"America/Jujuy" => TimeZone::AmericaJujuy, b"America/Juneau" => TimeZone::AmericaJuneau, b"America/Kentucky/Louisville" => TimeZone::AmericaKentuckyLouisville, b"America/Kentucky/Monticello" => TimeZone::AmericaKentuckyMonticello, b"America/Knox_IN" => TimeZone::AmericaKnoxIN, b"America/Kralendijk" => TimeZone::AmericaKralendijk, b"America/La_Paz" => TimeZone::AmericaLaPaz, b"America/Lima" => TimeZone::AmericaLima, b"America/Los_Angeles" => TimeZone::AmericaLosAngeles, b"America/Louisville" => TimeZone::AmericaLouisville, b"America/Lower_Princes" => TimeZone::AmericaLowerPrinces, b"America/Maceio" => TimeZone::AmericaMaceio, b"America/Managua" => TimeZone::AmericaManagua, b"America/Manaus" => TimeZone::AmericaManaus, b"America/Marigot" => TimeZone::AmericaMarigot, b"America/Martinique" => TimeZone::AmericaMartinique, b"America/Matamoros" => TimeZone::AmericaMatamoros, b"America/Mazatlan" => TimeZone::AmericaMazatlan, b"America/Mendoza" => TimeZone::AmericaMendoza, b"America/Menominee" => TimeZone::AmericaMenominee, b"America/Merida" => TimeZone::AmericaMerida, b"America/Metlakatla" => TimeZone::AmericaMetlakatla, b"America/Mexico_City" => TimeZone::AmericaMexicoCity, b"America/Miquelon" => TimeZone::AmericaMiquelon, b"America/Moncton" => TimeZone::AmericaMoncton, b"America/Monterrey" => TimeZone::AmericaMonterrey, b"America/Montevideo" => TimeZone::AmericaMontevideo, b"America/Montreal" => TimeZone::AmericaMontreal, b"America/Montserrat" => TimeZone::AmericaMontserrat, b"America/Nassau" => TimeZone::AmericaNassau, b"America/New_York" => TimeZone::AmericaNewYork, b"America/Nipigon" => TimeZone::AmericaNipigon, b"America/Nome" => TimeZone::AmericaNome, b"America/Noronha" => TimeZone::AmericaNoronha, b"America/North_Dakota/Beulah" => TimeZone::AmericaNorthDakotaBeulah, b"America/North_Dakota/Center" => TimeZone::AmericaNorthDakotaCenter, b"America/North_Dakota/New_Salem" => TimeZone::AmericaNorthDakotaNewSalem, b"America/Nuuk" => TimeZone::AmericaNuuk, b"America/Ojinaga" => TimeZone::AmericaOjinaga, b"America/Panama" => TimeZone::AmericaPanama, b"America/Pangnirtung" => TimeZone::AmericaPangnirtung, b"America/Paramaribo" => TimeZone::AmericaParamaribo, b"America/Phoenix" => TimeZone::AmericaPhoenix, b"America/Port-au-Prince" => TimeZone::AmericaPortAuPrince, b"America/Port_of_Spain" => TimeZone::AmericaPortOfSpain, b"America/Porto_Acre" => TimeZone::AmericaPortoAcre, b"America/Porto_Velho" => TimeZone::AmericaPortoVelho, b"America/Puerto_Rico" => TimeZone::AmericaPuertoRico, b"America/Punta_Arenas" => TimeZone::AmericaPuntaArenas, b"America/Rainy_River" => TimeZone::AmericaRainyRiver, b"America/Rankin_Inlet" => TimeZone::AmericaRankinInlet, b"America/Recife" => TimeZone::AmericaRecife, b"America/Regina" => TimeZone::AmericaRegina, b"America/Resolute" => TimeZone::AmericaResolute, b"America/Rio_Branco" => TimeZone::AmericaRioBranco, b"America/Rosario" => TimeZone::AmericaRosario, b"America/Santa_Isabel" => TimeZone::AmericaSantaIsabel, b"America/Santarem" => TimeZone::AmericaSantarem, b"America/Santiago" => TimeZone::AmericaSantiago, b"America/Santo_Domingo" => TimeZone::AmericaSantoDomingo, b"America/Sao_Paulo" => TimeZone::AmericaSaoPaulo, b"America/Scoresbysund" => TimeZone::AmericaScoresbysund, b"America/Shiprock" => TimeZone::AmericaShiprock, b"America/Sitka" => TimeZone::AmericaSitka, b"America/St_Barthelemy" => TimeZone::AmericaStBarthelemy, b"America/St_Johns" => TimeZone::AmericaStJohns, b"America/St_Kitts" => TimeZone::AmericaStKitts, b"America/St_Lucia" => TimeZone::AmericaStLucia, b"America/St_Thomas" => TimeZone::AmericaStThomas, b"America/St_Vincent" => TimeZone::AmericaStVincent, b"America/Swift_Current" => TimeZone::AmericaSwiftCurrent, b"America/Tegucigalpa" => TimeZone::AmericaTegucigalpa, b"America/Thule" => TimeZone::AmericaThule, b"America/Thunder_Bay" => TimeZone::AmericaThunderBay, b"America/Tijuana" => TimeZone::AmericaTijuana, b"America/Toronto" => TimeZone::AmericaToronto, b"America/Tortola" => TimeZone::AmericaTortola, b"America/Vancouver" => TimeZone::AmericaVancouver, b"America/Virgin" => TimeZone::AmericaVirgin, b"America/Whitehorse" => TimeZone::AmericaWhitehorse, b"America/Winnipeg" => TimeZone::AmericaWinnipeg, b"America/Yakutat" => TimeZone::AmericaYakutat, b"America/Yellowknife" => TimeZone::AmericaYellowknife, b"Antarctica/Casey" => TimeZone::AntarcticaCasey, b"Antarctica/Davis" => TimeZone::AntarcticaDavis, b"Antarctica/DumontDUrville" => TimeZone::AntarcticaDumontDUrville, b"Antarctica/Macquarie" => TimeZone::AntarcticaMacquarie, b"Antarctica/Mawson" => TimeZone::AntarcticaMawson, b"Antarctica/McMurdo" => TimeZone::AntarcticaMcMurdo, b"Antarctica/Palmer" => TimeZone::AntarcticaPalmer, b"Antarctica/Rothera" => TimeZone::AntarcticaRothera, b"Antarctica/South_Pole" => TimeZone::AntarcticaSouthPole, b"Antarctica/Syowa" => TimeZone::AntarcticaSyowa, b"Antarctica/Troll" => TimeZone::AntarcticaTroll, b"Antarctica/Vostok" => TimeZone::AntarcticaVostok, b"Arctic/Longyearbyen" => TimeZone::ArcticLongyearbyen, b"Asia/Aden" => TimeZone::AsiaAden, b"Asia/Almaty" => TimeZone::AsiaAlmaty, b"Asia/Amman" => TimeZone::AsiaAmman, b"Asia/Anadyr" => TimeZone::AsiaAnadyr, b"Asia/Aqtau" => TimeZone::AsiaAqtau, b"Asia/Aqtobe" => TimeZone::AsiaAqtobe, b"Asia/Ashgabat" => TimeZone::AsiaAshgabat, b"Asia/Ashkhabad" => TimeZone::AsiaAshkhabad, b"Asia/Atyrau" => TimeZone::AsiaAtyrau, b"Asia/Baghdad" => TimeZone::AsiaBaghdad, b"Asia/Bahrain" => TimeZone::AsiaBahrain, b"Asia/Baku" => TimeZone::AsiaBaku, b"Asia/Bangkok" => TimeZone::AsiaBangkok, b"Asia/Barnaul" => TimeZone::AsiaBarnaul, b"Asia/Beirut" => TimeZone::AsiaBeirut, b"Asia/Bishkek" => TimeZone::AsiaBishkek, b"Asia/Brunei" => TimeZone::AsiaBrunei, b"Asia/Calcutta" => TimeZone::AsiaCalcutta, b"Asia/Chita" => TimeZone::AsiaChita, b"Asia/Choibalsan" => TimeZone::AsiaChoibalsan, b"Asia/Chongqing" => TimeZone::AsiaChongqing, b"Asia/Chungking" => TimeZone::AsiaChungking, b"Asia/Colombo" => TimeZone::AsiaColombo, b"Asia/Dacca" => TimeZone::AsiaDacca, b"Asia/Damascus" => TimeZone::AsiaDamascus, b"Asia/Dhaka" => TimeZone::AsiaDhaka, b"Asia/Dili" => TimeZone::AsiaDili, b"Asia/Dubai" => TimeZone::AsiaDubai, b"Asia/Dushanbe" => TimeZone::AsiaDushanbe, b"Asia/Famagusta" => TimeZone::AsiaFamagusta, b"Asia/Gaza" => TimeZone::AsiaGaza, b"Asia/Harbin" => TimeZone::AsiaHarbin, b"Asia/Hebron" => TimeZone::AsiaHebron, b"Asia/Ho_Chi_Minh" => TimeZone::AsiaHoChiMinh, b"Asia/Hong_Kong" => TimeZone::AsiaHongKong, b"Asia/Hovd" => TimeZone::AsiaHovd, b"Asia/Irkutsk" => TimeZone::AsiaIrkutsk, b"Asia/Istanbul" => TimeZone::AsiaIstanbul, b"Asia/Jakarta" => TimeZone::AsiaJakarta, b"Asia/Jayapura" => TimeZone::AsiaJayapura, b"Asia/Jerusalem" => TimeZone::AsiaJerusalem, b"Asia/Kabul" => TimeZone::AsiaKabul, b"Asia/Kamchatka" => TimeZone::AsiaKamchatka, b"Asia/Karachi" => TimeZone::AsiaKarachi, b"Asia/Kashgar" => TimeZone::AsiaKashgar, b"Asia/Kathmandu" => TimeZone::AsiaKathmandu, b"Asia/Katmandu" => TimeZone::AsiaKatmandu, b"Asia/Khandyga" => TimeZone::AsiaKhandyga, b"Asia/Kolkata" => TimeZone::AsiaKolkata, b"Asia/Krasnoyarsk" => TimeZone::AsiaKrasnoyarsk, b"Asia/Kuala_Lumpur" => TimeZone::AsiaKualaLumpur, b"Asia/Kuching" => TimeZone::AsiaKuching, b"Asia/Kuwait" => TimeZone::AsiaKuwait, b"Asia/Macao" => TimeZone::AsiaMacao, b"Asia/Macau" => TimeZone::AsiaMacau, b"Asia/Magadan" => TimeZone::AsiaMagadan, b"Asia/Makassar" => TimeZone::AsiaMakassar, b"Asia/Manila" => TimeZone::AsiaManila, b"Asia/Muscat" => TimeZone::AsiaMuscat, b"Asia/Nicosia" => TimeZone::AsiaNicosia, b"Asia/Novokuznetsk" => TimeZone::AsiaNovokuznetsk, b"Asia/Novosibirsk" => TimeZone::AsiaNovosibirsk, b"Asia/Omsk" => TimeZone::AsiaOmsk, b"Asia/Oral" => TimeZone::AsiaOral, b"Asia/Phnom_Penh" => TimeZone::AsiaPhnomPenh, b"Asia/Pontianak" => TimeZone::AsiaPontianak, b"Asia/Pyongyang" => TimeZone::AsiaPyongyang, b"Asia/Qatar" => TimeZone::AsiaQatar, b"Asia/Qostanay" => TimeZone::AsiaQostanay, b"Asia/Qyzylorda" => TimeZone::AsiaQyzylorda, b"Asia/Rangoon" => TimeZone::AsiaRangoon, b"Asia/Riyadh" => TimeZone::AsiaRiyadh, b"Asia/Saigon" => TimeZone::AsiaSaigon, b"Asia/Sakhalin" => TimeZone::AsiaSakhalin, b"Asia/Samarkand" => TimeZone::AsiaSamarkand, b"Asia/Seoul" => TimeZone::AsiaSeoul, b"Asia/Shanghai" => TimeZone::AsiaShanghai, b"Asia/Singapore" => TimeZone::AsiaSingapore, b"Asia/Srednekolymsk" => TimeZone::AsiaSrednekolymsk, b"Asia/Taipei" => TimeZone::AsiaTaipei, b"Asia/Tashkent" => TimeZone::AsiaTashkent, b"Asia/Tbilisi" => TimeZone::AsiaTbilisi, b"Asia/Tehran" => TimeZone::AsiaTehran, b"Asia/Tel_Aviv" => TimeZone::AsiaTelAviv, b"Asia/Thimbu" => TimeZone::AsiaThimbu, b"Asia/Thimphu" => TimeZone::AsiaThimphu, b"Asia/Tokyo" => TimeZone::AsiaTokyo, b"Asia/Tomsk" => TimeZone::AsiaTomsk, b"Asia/Ujung_Pandang" => TimeZone::AsiaUjungPandang, b"Asia/Ulaanbaatar" => TimeZone::AsiaUlaanbaatar, b"Asia/Ulan_Bator" => TimeZone::AsiaUlanBator, b"Asia/Urumqi" => TimeZone::AsiaUrumqi, b"Asia/Ust-Nera" => TimeZone::AsiaUstNera, b"Asia/Vientiane" => TimeZone::AsiaVientiane, b"Asia/Vladivostok" => TimeZone::AsiaVladivostok, b"Asia/Yakutsk" => TimeZone::AsiaYakutsk, b"Asia/Yangon" => TimeZone::AsiaYangon, b"Asia/Yekaterinburg" => TimeZone::AsiaYekaterinburg, b"Asia/Yerevan" => TimeZone::AsiaYerevan, b"Atlantic/Azores" => TimeZone::AtlanticAzores, b"Atlantic/Bermuda" => TimeZone::AtlanticBermuda, b"Atlantic/Canary" => TimeZone::AtlanticCanary, b"Atlantic/Cape_Verde" => TimeZone::AtlanticCapeVerde, b"Atlantic/Faeroe" => TimeZone::AtlanticFaeroe, b"Atlantic/Faroe" => TimeZone::AtlanticFaroe, b"Atlantic/Jan_Mayen" => TimeZone::AtlanticJanMayen, b"Atlantic/Madeira" => TimeZone::AtlanticMadeira, b"Atlantic/Reykjavik" => TimeZone::AtlanticReykjavik, b"Atlantic/South_Georgia" => TimeZone::AtlanticSouthGeorgia, b"Atlantic/St_Helena" => TimeZone::AtlanticStHelena, b"Atlantic/Stanley" => TimeZone::AtlanticStanley, b"Australia/ACT" => TimeZone::AustraliaACT, b"Australia/Adelaide" => TimeZone::AustraliaAdelaide, b"Australia/Brisbane" => TimeZone::AustraliaBrisbane, b"Australia/Broken_Hill" => TimeZone::AustraliaBrokenHill, b"Australia/Canberra" => TimeZone::AustraliaCanberra, b"Australia/Currie" => TimeZone::AustraliaCurrie, b"Australia/Darwin" => TimeZone::AustraliaDarwin, b"Australia/Eucla" => TimeZone::AustraliaEucla, b"Australia/Hobart" => TimeZone::AustraliaHobart, b"Australia/LHI" => TimeZone::AustraliaLHI, b"Australia/Lindeman" => TimeZone::AustraliaLindeman, b"Australia/Lord_Howe" => TimeZone::AustraliaLordHowe, b"Australia/Melbourne" => TimeZone::AustraliaMelbourne, b"Australia/NSW" => TimeZone::AustraliaNSW, b"Australia/North" => TimeZone::AustraliaNorth, b"Australia/Perth" => TimeZone::AustraliaPerth, b"Australia/Queensland" => TimeZone::AustraliaQueensland, b"Australia/South" => TimeZone::AustraliaSouth, b"Australia/Sydney" => TimeZone::AustraliaSydney, b"Australia/Tasmania" => TimeZone::AustraliaTasmania, b"Australia/Victoria" => TimeZone::AustraliaVictoria, b"Australia/West" => TimeZone::AustraliaWest, b"Australia/Yancowinna" => TimeZone::AustraliaYancowinna, b"Brazil/Acre" => TimeZone::BrazilAcre, b"Brazil/DeNoronha" => TimeZone::BrazilDeNoronha, b"Brazil/East" => TimeZone::BrazilEast, b"Brazil/West" => TimeZone::BrazilWest, b"CET" => TimeZone::CET, b"CST6CDT" => TimeZone::CST6CDT, b"Canada/Atlantic" => TimeZone::CanadaAtlantic, b"Canada/Central" => TimeZone::CanadaCentral, b"Canada/Eastern" => TimeZone::CanadaEastern, b"Canada/Mountain" => TimeZone::CanadaMountain, b"Canada/Newfoundland" => TimeZone::CanadaNewfoundland, b"Canada/Pacific" => TimeZone::CanadaPacific, b"Canada/Saskatchewan" => TimeZone::CanadaSaskatchewan, b"Canada/Yukon" => TimeZone::CanadaYukon, b"Chile/Continental" => TimeZone::ChileContinental, b"Chile/EasterIsland" => TimeZone::ChileEasterIsland, b"Cuba" => TimeZone::Cuba, b"EET" => TimeZone::EET, b"EST" => TimeZone::EST, b"EST5EDT" => TimeZone::EST5EDT, b"Egypt" => TimeZone::Egypt, b"Eire" => TimeZone::Eire, b"Etc/GMT" => TimeZone::EtcGMT, b"Etc/GMT+0" => TimeZone::EtcGMTPlus0, b"Etc/GMT+1" => TimeZone::EtcGMTPlus1, b"Etc/GMT+10" => TimeZone::EtcGMTPlus10, b"Etc/GMT+11" => TimeZone::EtcGMTPlus11, b"Etc/GMT+12" => TimeZone::EtcGMTPlus12, b"Etc/GMT+2" => TimeZone::EtcGMTPlus2, b"Etc/GMT+3" => TimeZone::EtcGMTPlus3, b"Etc/GMT+4" => TimeZone::EtcGMTPlus4, b"Etc/GMT+5" => TimeZone::EtcGMTPlus5, b"Etc/GMT+6" => TimeZone::EtcGMTPlus6, b"Etc/GMT+7" => TimeZone::EtcGMTPlus7, b"Etc/GMT+8" => TimeZone::EtcGMTPlus8, b"Etc/GMT+9" => TimeZone::EtcGMTPlus9, b"Etc/GMT-0" => TimeZone::EtcGMTMinus0, b"Etc/GMT-1" => TimeZone::EtcGMTMinus1, b"Etc/GMT-10" => TimeZone::EtcGMTMinus10, b"Etc/GMT-11" => TimeZone::EtcGMTMinus11, b"Etc/GMT-12" => TimeZone::EtcGMTMinus12, b"Etc/GMT-13" => TimeZone::EtcGMTMinus13, b"Etc/GMT-14" => TimeZone::EtcGMTMinus14, b"Etc/GMT-2" => TimeZone::EtcGMTMinus2, b"Etc/GMT-3" => TimeZone::EtcGMTMinus3, b"Etc/GMT-4" => TimeZone::EtcGMTMinus4, b"Etc/GMT-5" => TimeZone::EtcGMTMinus5, b"Etc/GMT-6" => TimeZone::EtcGMTMinus6, b"Etc/GMT-7" => TimeZone::EtcGMTMinus7, b"Etc/GMT-8" => TimeZone::EtcGMTMinus8, b"Etc/GMT-9" => TimeZone::EtcGMTMinus9, b"Etc/GMT0" => TimeZone::EtcGMT0, b"Etc/Greenwich" => TimeZone::EtcGreenwich, b"Etc/UCT" => TimeZone::EtcUCT, b"Etc/UTC" => TimeZone::EtcUTC, b"Etc/Universal" => TimeZone::EtcUniversal, b"Etc/Zulu" => TimeZone::EtcZulu, b"Europe/Amsterdam" => TimeZone::EuropeAmsterdam, b"Europe/Andorra" => TimeZone::EuropeAndorra, b"Europe/Astrakhan" => TimeZone::EuropeAstrakhan, b"Europe/Athens" => TimeZone::EuropeAthens, b"Europe/Belfast" => TimeZone::EuropeBelfast, b"Europe/Belgrade" => TimeZone::EuropeBelgrade, b"Europe/Berlin" => TimeZone::EuropeBerlin, b"Europe/Bratislava" => TimeZone::EuropeBratislava, b"Europe/Brussels" => TimeZone::EuropeBrussels, b"Europe/Bucharest" => TimeZone::EuropeBucharest, b"Europe/Budapest" => TimeZone::EuropeBudapest, b"Europe/Busingen" => TimeZone::EuropeBusingen, b"Europe/Chisinau" => TimeZone::EuropeChisinau, b"Europe/Copenhagen" => TimeZone::EuropeCopenhagen, b"Europe/Dublin" => TimeZone::EuropeDublin, b"Europe/Gibraltar" => TimeZone::EuropeGibraltar, b"Europe/Guernsey" => TimeZone::EuropeGuernsey, b"Europe/Helsinki" => TimeZone::EuropeHelsinki, b"Europe/Isle_of_Man" => TimeZone::EuropeIsleOfMan, b"Europe/Istanbul" => TimeZone::EuropeIstanbul, b"Europe/Jersey" => TimeZone::EuropeJersey, b"Europe/Kaliningrad" => TimeZone::EuropeKaliningrad, b"Europe/Kiev" => TimeZone::EuropeKiev, b"Europe/Kirov" => TimeZone::EuropeKirov, b"Europe/Kyiv" => TimeZone::EuropeKyiv, b"Europe/Lisbon" => TimeZone::EuropeLisbon, b"Europe/Ljubljana" => TimeZone::EuropeLjubljana, b"Europe/London" => TimeZone::EuropeLondon, b"Europe/Luxembourg" => TimeZone::EuropeLuxembourg, b"Europe/Madrid" => TimeZone::EuropeMadrid, b"Europe/Malta" => TimeZone::EuropeMalta, b"Europe/Mariehamn" => TimeZone::EuropeMariehamn, b"Europe/Minsk" => TimeZone::EuropeMinsk, b"Europe/Monaco" => TimeZone::EuropeMonaco, b"Europe/Moscow" => TimeZone::EuropeMoscow, b"Europe/Nicosia" => TimeZone::EuropeNicosia, b"Europe/Oslo" => TimeZone::EuropeOslo, b"Europe/Paris" => TimeZone::EuropeParis, b"Europe/Podgorica" => TimeZone::EuropePodgorica, b"Europe/Prague" => TimeZone::EuropePrague, b"Europe/Riga" => TimeZone::EuropeRiga, b"Europe/Rome" => TimeZone::EuropeRome, b"Europe/Samara" => TimeZone::EuropeSamara, b"Europe/San_Marino" => TimeZone::EuropeSanMarino, b"Europe/Sarajevo" => TimeZone::EuropeSarajevo, b"Europe/Saratov" => TimeZone::EuropeSaratov, b"Europe/Simferopol" => TimeZone::EuropeSimferopol, b"Europe/Skopje" => TimeZone::EuropeSkopje, b"Europe/Sofia" => TimeZone::EuropeSofia, b"Europe/Stockholm" => TimeZone::EuropeStockholm, b"Europe/Tallinn" => TimeZone::EuropeTallinn, b"Europe/Tirane" => TimeZone::EuropeTirane, b"Europe/Tiraspol" => TimeZone::EuropeTiraspol, b"Europe/Ulyanovsk" => TimeZone::EuropeUlyanovsk, b"Europe/Uzhgorod" => TimeZone::EuropeUzhgorod, b"Europe/Vaduz" => TimeZone::EuropeVaduz, b"Europe/Vatican" => TimeZone::EuropeVatican, b"Europe/Vienna" => TimeZone::EuropeVienna, b"Europe/Vilnius" => TimeZone::EuropeVilnius, b"Europe/Volgograd" => TimeZone::EuropeVolgograd, b"Europe/Warsaw" => TimeZone::EuropeWarsaw, b"Europe/Zagreb" => TimeZone::EuropeZagreb, b"Europe/Zaporozhye" => TimeZone::EuropeZaporozhye, b"Europe/Zurich" => TimeZone::EuropeZurich, b"Factory" => TimeZone::Factory, b"GB" => TimeZone::GB, b"GB-Eire" => TimeZone::GBEire, b"GMT" => TimeZone::GMT, b"GMT+0" => TimeZone::GMTPlus0, b"GMT-0" => TimeZone::GMTMinus0, b"GMT0" => TimeZone::GMT0, b"Greenwich" => TimeZone::Greenwich, b"HST" => TimeZone::HST, b"Hongkong" => TimeZone::Hongkong, b"Iceland" => TimeZone::Iceland, b"Indian/Antananarivo" => TimeZone::IndianAntananarivo, b"Indian/Chagos" => TimeZone::IndianChagos, b"Indian/Christmas" => TimeZone::IndianChristmas, b"Indian/Cocos" => TimeZone::IndianCocos, b"Indian/Comoro" => TimeZone::IndianComoro, b"Indian/Kerguelen" => TimeZone::IndianKerguelen, b"Indian/Mahe" => TimeZone::IndianMahe, b"Indian/Maldives" => TimeZone::IndianMaldives, b"Indian/Mauritius" => TimeZone::IndianMauritius, b"Indian/Mayotte" => TimeZone::IndianMayotte, b"Indian/Reunion" => TimeZone::IndianReunion, b"Iran" => TimeZone::Iran, b"Israel" => TimeZone::Israel, b"Jamaica" => TimeZone::Jamaica, b"Japan" => TimeZone::Japan, b"Kwajalein" => TimeZone::Kwajalein, b"Libya" => TimeZone::Libya, b"MET" => TimeZone::MET, b"MST" => TimeZone::MST, b"MST7MDT" => TimeZone::MST7MDT, b"Mexico/BajaNorte" => TimeZone::MexicoBajaNorte, b"Mexico/BajaSur" => TimeZone::MexicoBajaSur, b"Mexico/General" => TimeZone::MexicoGeneral, b"NZ" => TimeZone::NZ, b"NZ-CHAT" => TimeZone::NZCHAT, b"Navajo" => TimeZone::Navajo, b"PRC" => TimeZone::PRC, b"PST8PDT" => TimeZone::PST8PDT, b"Pacific/Apia" => TimeZone::PacificApia, b"Pacific/Auckland" => TimeZone::PacificAuckland, b"Pacific/Bougainville" => TimeZone::PacificBougainville, b"Pacific/Chatham" => TimeZone::PacificChatham, b"Pacific/Chuuk" => TimeZone::PacificChuuk, b"Pacific/Easter" => TimeZone::PacificEaster, b"Pacific/Efate" => TimeZone::PacificEfate, b"Pacific/Enderbury" => TimeZone::PacificEnderbury, b"Pacific/Fakaofo" => TimeZone::PacificFakaofo, b"Pacific/Fiji" => TimeZone::PacificFiji, b"Pacific/Funafuti" => TimeZone::PacificFunafuti, b"Pacific/Galapagos" => TimeZone::PacificGalapagos, b"Pacific/Gambier" => TimeZone::PacificGambier, b"Pacific/Guadalcanal" => TimeZone::PacificGuadalcanal, b"Pacific/Guam" => TimeZone::PacificGuam, b"Pacific/Honolulu" => TimeZone::PacificHonolulu, b"Pacific/Johnston" => TimeZone::PacificJohnston, b"Pacific/Kanton" => TimeZone::PacificKanton, b"Pacific/Kiritimati" => TimeZone::PacificKiritimati, b"Pacific/Kosrae" => TimeZone::PacificKosrae, b"Pacific/Kwajalein" => TimeZone::PacificKwajalein, b"Pacific/Majuro" => TimeZone::PacificMajuro, b"Pacific/Marquesas" => TimeZone::PacificMarquesas, b"Pacific/Midway" => TimeZone::PacificMidway, b"Pacific/Nauru" => TimeZone::PacificNauru, b"Pacific/Niue" => TimeZone::PacificNiue, b"Pacific/Norfolk" => TimeZone::PacificNorfolk, b"Pacific/Noumea" => TimeZone::PacificNoumea, b"Pacific/Pago_Pago" => TimeZone::PacificPagoPago, b"Pacific/Palau" => TimeZone::PacificPalau, b"Pacific/Pitcairn" => TimeZone::PacificPitcairn, b"Pacific/Pohnpei" => TimeZone::PacificPohnpei, b"Pacific/Ponape" => TimeZone::PacificPonape, b"Pacific/Port_Moresby" => TimeZone::PacificPortMoresby, b"Pacific/Rarotonga" => TimeZone::PacificRarotonga, b"Pacific/Saipan" => TimeZone::PacificSaipan, b"Pacific/Samoa" => TimeZone::PacificSamoa, b"Pacific/Tahiti" => TimeZone::PacificTahiti, b"Pacific/Tarawa" => TimeZone::PacificTarawa, b"Pacific/Tongatapu" => TimeZone::PacificTongatapu, b"Pacific/Truk" => TimeZone::PacificTruk, b"Pacific/Wake" => TimeZone::PacificWake, b"Pacific/Wallis" => TimeZone::PacificWallis, b"Pacific/Yap" => TimeZone::PacificYap, b"Poland" => TimeZone::Poland, b"Portugal" => TimeZone::Portugal, b"ROC" => TimeZone::ROC, b"ROK" => TimeZone::ROK, b"Singapore" => TimeZone::Singapore, b"Turkey" => TimeZone::Turkey, b"UCT" => TimeZone::UCT, b"US/Alaska" => TimeZone::USAlaska, b"US/Aleutian" => TimeZone::USAleutian, b"US/Arizona" => TimeZone::USArizona, b"US/Central" => TimeZone::USCentral, b"US/East-Indiana" => TimeZone::USEastIndiana, b"US/Eastern" => TimeZone::USEastern, b"US/Hawaii" => TimeZone::USHawaii, b"US/Indiana-Starke" => TimeZone::USIndianaStarke, b"US/Michigan" => TimeZone::USMichigan, b"US/Mountain" => TimeZone::USMountain, b"US/Pacific" => TimeZone::USPacific, b"US/Samoa" => TimeZone::USSamoa, b"UTC" => TimeZone::UTC, b"Universal" => TimeZone::Universal, b"W-SU" => TimeZone::WSU, b"WET" => TimeZone::WET, b"Zulu" => TimeZone::Zulu, } .copied() } fn as_str(&self) -> &'static str { match self { TimeZone::AfricaAbidjan => "Africa/Abidjan", TimeZone::AfricaAccra => "Africa/Accra", TimeZone::AfricaAddisAbaba => "Africa/Addis_Ababa", TimeZone::AfricaAlgiers => "Africa/Algiers", TimeZone::AfricaAsmara => "Africa/Asmara", TimeZone::AfricaAsmera => "Africa/Asmera", TimeZone::AfricaBamako => "Africa/Bamako", TimeZone::AfricaBangui => "Africa/Bangui", TimeZone::AfricaBanjul => "Africa/Banjul", TimeZone::AfricaBissau => "Africa/Bissau", TimeZone::AfricaBlantyre => "Africa/Blantyre", TimeZone::AfricaBrazzaville => "Africa/Brazzaville", TimeZone::AfricaBujumbura => "Africa/Bujumbura", TimeZone::AfricaCairo => "Africa/Cairo", TimeZone::AfricaCasablanca => "Africa/Casablanca", TimeZone::AfricaCeuta => "Africa/Ceuta", TimeZone::AfricaConakry => "Africa/Conakry", TimeZone::AfricaDakar => "Africa/Dakar", TimeZone::AfricaDarEsSalaam => "Africa/Dar_es_Salaam", TimeZone::AfricaDjibouti => "Africa/Djibouti", TimeZone::AfricaDouala => "Africa/Douala", TimeZone::AfricaElAaiun => "Africa/El_Aaiun", TimeZone::AfricaFreetown => "Africa/Freetown", TimeZone::AfricaGaborone => "Africa/Gaborone", TimeZone::AfricaHarare => "Africa/Harare", TimeZone::AfricaJohannesburg => "Africa/Johannesburg", TimeZone::AfricaJuba => "Africa/Juba", TimeZone::AfricaKampala => "Africa/Kampala", TimeZone::AfricaKhartoum => "Africa/Khartoum", TimeZone::AfricaKigali => "Africa/Kigali", TimeZone::AfricaKinshasa => "Africa/Kinshasa", TimeZone::AfricaLagos => "Africa/Lagos", TimeZone::AfricaLibreville => "Africa/Libreville", TimeZone::AfricaLome => "Africa/Lome", TimeZone::AfricaLuanda => "Africa/Luanda", TimeZone::AfricaLubumbashi => "Africa/Lubumbashi", TimeZone::AfricaLusaka => "Africa/Lusaka", TimeZone::AfricaMalabo => "Africa/Malabo", TimeZone::AfricaMaputo => "Africa/Maputo", TimeZone::AfricaMaseru => "Africa/Maseru", TimeZone::AfricaMbabane => "Africa/Mbabane", TimeZone::AfricaMogadishu => "Africa/Mogadishu", TimeZone::AfricaMonrovia => "Africa/Monrovia", TimeZone::AfricaNairobi => "Africa/Nairobi", TimeZone::AfricaNdjamena => "Africa/Ndjamena", TimeZone::AfricaNiamey => "Africa/Niamey", TimeZone::AfricaNouakchott => "Africa/Nouakchott", TimeZone::AfricaOuagadougou => "Africa/Ouagadougou", TimeZone::AfricaPortoNovo => "Africa/Porto-Novo", TimeZone::AfricaSaoTome => "Africa/Sao_Tome", TimeZone::AfricaTimbuktu => "Africa/Timbuktu", TimeZone::AfricaTripoli => "Africa/Tripoli", TimeZone::AfricaTunis => "Africa/Tunis", TimeZone::AfricaWindhoek => "Africa/Windhoek", TimeZone::AmericaAdak => "America/Adak", TimeZone::AmericaAnchorage => "America/Anchorage", TimeZone::AmericaAnguilla => "America/Anguilla", TimeZone::AmericaAntigua => "America/Antigua", TimeZone::AmericaAraguaina => "America/Araguaina", TimeZone::AmericaArgentinaBuenosAires => "America/Argentina/Buenos_Aires", TimeZone::AmericaArgentinaCatamarca => "America/Argentina/Catamarca", TimeZone::AmericaArgentinaComodRivadavia => "America/Argentina/ComodRivadavia", TimeZone::AmericaArgentinaCordoba => "America/Argentina/Cordoba", TimeZone::AmericaArgentinaJujuy => "America/Argentina/Jujuy", TimeZone::AmericaArgentinaLaRioja => "America/Argentina/La_Rioja", TimeZone::AmericaArgentinaMendoza => "America/Argentina/Mendoza", TimeZone::AmericaArgentinaRioGallegos => "America/Argentina/Rio_Gallegos", TimeZone::AmericaArgentinaSalta => "America/Argentina/Salta", TimeZone::AmericaArgentinaSanJuan => "America/Argentina/San_Juan", TimeZone::AmericaArgentinaSanLuis => "America/Argentina/San_Luis", TimeZone::AmericaArgentinaTucuman => "America/Argentina/Tucuman", TimeZone::AmericaArgentinaUshuaia => "America/Argentina/Ushuaia", TimeZone::AmericaAruba => "America/Aruba", TimeZone::AmericaAsuncion => "America/Asuncion", TimeZone::AmericaAtikokan => "America/Atikokan", TimeZone::AmericaAtka => "America/Atka", TimeZone::AmericaBahia => "America/Bahia", TimeZone::AmericaBahiaBanderas => "America/Bahia_Banderas", TimeZone::AmericaBarbados => "America/Barbados", TimeZone::AmericaBelem => "America/Belem", TimeZone::AmericaBelize => "America/Belize", TimeZone::AmericaBlancSablon => "America/Blanc-Sablon", TimeZone::AmericaBoaVista => "America/Boa_Vista", TimeZone::AmericaBogota => "America/Bogota", TimeZone::AmericaBoise => "America/Boise", TimeZone::AmericaBuenosAires => "America/Buenos_Aires", TimeZone::AmericaCambridgeBay => "America/Cambridge_Bay", TimeZone::AmericaCampoGrande => "America/Campo_Grande", TimeZone::AmericaCancun => "America/Cancun", TimeZone::AmericaCaracas => "America/Caracas", TimeZone::AmericaCatamarca => "America/Catamarca", TimeZone::AmericaCayenne => "America/Cayenne", TimeZone::AmericaCayman => "America/Cayman", TimeZone::AmericaChicago => "America/Chicago", TimeZone::AmericaChihuahua => "America/Chihuahua", TimeZone::AmericaCiudadJuarez => "America/Ciudad_Juarez", TimeZone::AmericaCoralHarbour => "America/Coral_Harbour", TimeZone::AmericaCordoba => "America/Cordoba", TimeZone::AmericaCostaRica => "America/Costa_Rica", TimeZone::AmericaCoyhaique => "America/Coyhaique", TimeZone::AmericaCreston => "America/Creston", TimeZone::AmericaCuiaba => "America/Cuiaba", TimeZone::AmericaCuracao => "America/Curacao", TimeZone::AmericaDanmarkshavn => "America/Danmarkshavn", TimeZone::AmericaDawson => "America/Dawson", TimeZone::AmericaDawsonCreek => "America/Dawson_Creek", TimeZone::AmericaDenver => "America/Denver", TimeZone::AmericaDetroit => "America/Detroit", TimeZone::AmericaDominica => "America/Dominica", TimeZone::AmericaEdmonton => "America/Edmonton", TimeZone::AmericaEirunepe => "America/Eirunepe", TimeZone::AmericaElSalvador => "America/El_Salvador", TimeZone::AmericaEnsenada => "America/Ensenada", TimeZone::AmericaFortNelson => "America/Fort_Nelson", TimeZone::AmericaFortWayne => "America/Fort_Wayne", TimeZone::AmericaFortaleza => "America/Fortaleza", TimeZone::AmericaGlaceBay => "America/Glace_Bay", TimeZone::AmericaGodthab => "America/Godthab", TimeZone::AmericaGooseBay => "America/Goose_Bay", TimeZone::AmericaGrandTurk => "America/Grand_Turk", TimeZone::AmericaGrenada => "America/Grenada", TimeZone::AmericaGuadeloupe => "America/Guadeloupe", TimeZone::AmericaGuatemala => "America/Guatemala", TimeZone::AmericaGuayaquil => "America/Guayaquil", TimeZone::AmericaGuyana => "America/Guyana", TimeZone::AmericaHalifax => "America/Halifax", TimeZone::AmericaHavana => "America/Havana", TimeZone::AmericaHermosillo => "America/Hermosillo", TimeZone::AmericaIndianaIndianapolis => "America/Indiana/Indianapolis", TimeZone::AmericaIndianaKnox => "America/Indiana/Knox", TimeZone::AmericaIndianaMarengo => "America/Indiana/Marengo", TimeZone::AmericaIndianaPetersburg => "America/Indiana/Petersburg", TimeZone::AmericaIndianaTellCity => "America/Indiana/Tell_City", TimeZone::AmericaIndianaVevay => "America/Indiana/Vevay", TimeZone::AmericaIndianaVincennes => "America/Indiana/Vincennes", TimeZone::AmericaIndianaWinamac => "America/Indiana/Winamac", TimeZone::AmericaIndianapolis => "America/Indianapolis", TimeZone::AmericaInuvik => "America/Inuvik", TimeZone::AmericaIqaluit => "America/Iqaluit", TimeZone::AmericaJamaica => "America/Jamaica", TimeZone::AmericaJujuy => "America/Jujuy", TimeZone::AmericaJuneau => "America/Juneau", TimeZone::AmericaKentuckyLouisville => "America/Kentucky/Louisville", TimeZone::AmericaKentuckyMonticello => "America/Kentucky/Monticello", TimeZone::AmericaKnoxIN => "America/Knox_IN", TimeZone::AmericaKralendijk => "America/Kralendijk", TimeZone::AmericaLaPaz => "America/La_Paz", TimeZone::AmericaLima => "America/Lima", TimeZone::AmericaLosAngeles => "America/Los_Angeles", TimeZone::AmericaLouisville => "America/Louisville", TimeZone::AmericaLowerPrinces => "America/Lower_Princes", TimeZone::AmericaMaceio => "America/Maceio", TimeZone::AmericaManagua => "America/Managua", TimeZone::AmericaManaus => "America/Manaus", TimeZone::AmericaMarigot => "America/Marigot", TimeZone::AmericaMartinique => "America/Martinique", TimeZone::AmericaMatamoros => "America/Matamoros", TimeZone::AmericaMazatlan => "America/Mazatlan", TimeZone::AmericaMendoza => "America/Mendoza", TimeZone::AmericaMenominee => "America/Menominee", TimeZone::AmericaMerida => "America/Merida", TimeZone::AmericaMetlakatla => "America/Metlakatla", TimeZone::AmericaMexicoCity => "America/Mexico_City", TimeZone::AmericaMiquelon => "America/Miquelon", TimeZone::AmericaMoncton => "America/Moncton", TimeZone::AmericaMonterrey => "America/Monterrey", TimeZone::AmericaMontevideo => "America/Montevideo", TimeZone::AmericaMontreal => "America/Montreal", TimeZone::AmericaMontserrat => "America/Montserrat", TimeZone::AmericaNassau => "America/Nassau", TimeZone::AmericaNewYork => "America/New_York", TimeZone::AmericaNipigon => "America/Nipigon", TimeZone::AmericaNome => "America/Nome", TimeZone::AmericaNoronha => "America/Noronha", TimeZone::AmericaNorthDakotaBeulah => "America/North_Dakota/Beulah", TimeZone::AmericaNorthDakotaCenter => "America/North_Dakota/Center", TimeZone::AmericaNorthDakotaNewSalem => "America/North_Dakota/New_Salem", TimeZone::AmericaNuuk => "America/Nuuk", TimeZone::AmericaOjinaga => "America/Ojinaga", TimeZone::AmericaPanama => "America/Panama", TimeZone::AmericaPangnirtung => "America/Pangnirtung", TimeZone::AmericaParamaribo => "America/Paramaribo", TimeZone::AmericaPhoenix => "America/Phoenix", TimeZone::AmericaPortAuPrince => "America/Port-au-Prince", TimeZone::AmericaPortOfSpain => "America/Port_of_Spain", TimeZone::AmericaPortoAcre => "America/Porto_Acre", TimeZone::AmericaPortoVelho => "America/Porto_Velho", TimeZone::AmericaPuertoRico => "America/Puerto_Rico", TimeZone::AmericaPuntaArenas => "America/Punta_Arenas", TimeZone::AmericaRainyRiver => "America/Rainy_River", TimeZone::AmericaRankinInlet => "America/Rankin_Inlet", TimeZone::AmericaRecife => "America/Recife", TimeZone::AmericaRegina => "America/Regina", TimeZone::AmericaResolute => "America/Resolute", TimeZone::AmericaRioBranco => "America/Rio_Branco", TimeZone::AmericaRosario => "America/Rosario", TimeZone::AmericaSantaIsabel => "America/Santa_Isabel", TimeZone::AmericaSantarem => "America/Santarem", TimeZone::AmericaSantiago => "America/Santiago", TimeZone::AmericaSantoDomingo => "America/Santo_Domingo", TimeZone::AmericaSaoPaulo => "America/Sao_Paulo", TimeZone::AmericaScoresbysund => "America/Scoresbysund", TimeZone::AmericaShiprock => "America/Shiprock", TimeZone::AmericaSitka => "America/Sitka", TimeZone::AmericaStBarthelemy => "America/St_Barthelemy", TimeZone::AmericaStJohns => "America/St_Johns", TimeZone::AmericaStKitts => "America/St_Kitts", TimeZone::AmericaStLucia => "America/St_Lucia", TimeZone::AmericaStThomas => "America/St_Thomas", TimeZone::AmericaStVincent => "America/St_Vincent", TimeZone::AmericaSwiftCurrent => "America/Swift_Current", TimeZone::AmericaTegucigalpa => "America/Tegucigalpa", TimeZone::AmericaThule => "America/Thule", TimeZone::AmericaThunderBay => "America/Thunder_Bay", TimeZone::AmericaTijuana => "America/Tijuana", TimeZone::AmericaToronto => "America/Toronto", TimeZone::AmericaTortola => "America/Tortola", TimeZone::AmericaVancouver => "America/Vancouver", TimeZone::AmericaVirgin => "America/Virgin", TimeZone::AmericaWhitehorse => "America/Whitehorse", TimeZone::AmericaWinnipeg => "America/Winnipeg", TimeZone::AmericaYakutat => "America/Yakutat", TimeZone::AmericaYellowknife => "America/Yellowknife", TimeZone::AntarcticaCasey => "Antarctica/Casey", TimeZone::AntarcticaDavis => "Antarctica/Davis", TimeZone::AntarcticaDumontDUrville => "Antarctica/DumontDUrville", TimeZone::AntarcticaMacquarie => "Antarctica/Macquarie", TimeZone::AntarcticaMawson => "Antarctica/Mawson", TimeZone::AntarcticaMcMurdo => "Antarctica/McMurdo", TimeZone::AntarcticaPalmer => "Antarctica/Palmer", TimeZone::AntarcticaRothera => "Antarctica/Rothera", TimeZone::AntarcticaSouthPole => "Antarctica/South_Pole", TimeZone::AntarcticaSyowa => "Antarctica/Syowa", TimeZone::AntarcticaTroll => "Antarctica/Troll", TimeZone::AntarcticaVostok => "Antarctica/Vostok", TimeZone::ArcticLongyearbyen => "Arctic/Longyearbyen", TimeZone::AsiaAden => "Asia/Aden", TimeZone::AsiaAlmaty => "Asia/Almaty", TimeZone::AsiaAmman => "Asia/Amman", TimeZone::AsiaAnadyr => "Asia/Anadyr", TimeZone::AsiaAqtau => "Asia/Aqtau", TimeZone::AsiaAqtobe => "Asia/Aqtobe", TimeZone::AsiaAshgabat => "Asia/Ashgabat", TimeZone::AsiaAshkhabad => "Asia/Ashkhabad", TimeZone::AsiaAtyrau => "Asia/Atyrau", TimeZone::AsiaBaghdad => "Asia/Baghdad", TimeZone::AsiaBahrain => "Asia/Bahrain", TimeZone::AsiaBaku => "Asia/Baku", TimeZone::AsiaBangkok => "Asia/Bangkok", TimeZone::AsiaBarnaul => "Asia/Barnaul", TimeZone::AsiaBeirut => "Asia/Beirut", TimeZone::AsiaBishkek => "Asia/Bishkek", TimeZone::AsiaBrunei => "Asia/Brunei", TimeZone::AsiaCalcutta => "Asia/Calcutta", TimeZone::AsiaChita => "Asia/Chita", TimeZone::AsiaChoibalsan => "Asia/Choibalsan", TimeZone::AsiaChongqing => "Asia/Chongqing", TimeZone::AsiaChungking => "Asia/Chungking", TimeZone::AsiaColombo => "Asia/Colombo", TimeZone::AsiaDacca => "Asia/Dacca", TimeZone::AsiaDamascus => "Asia/Damascus", TimeZone::AsiaDhaka => "Asia/Dhaka", TimeZone::AsiaDili => "Asia/Dili", TimeZone::AsiaDubai => "Asia/Dubai", TimeZone::AsiaDushanbe => "Asia/Dushanbe", TimeZone::AsiaFamagusta => "Asia/Famagusta", TimeZone::AsiaGaza => "Asia/Gaza", TimeZone::AsiaHarbin => "Asia/Harbin", TimeZone::AsiaHebron => "Asia/Hebron", TimeZone::AsiaHoChiMinh => "Asia/Ho_Chi_Minh", TimeZone::AsiaHongKong => "Asia/Hong_Kong", TimeZone::AsiaHovd => "Asia/Hovd", TimeZone::AsiaIrkutsk => "Asia/Irkutsk", TimeZone::AsiaIstanbul => "Asia/Istanbul", TimeZone::AsiaJakarta => "Asia/Jakarta", TimeZone::AsiaJayapura => "Asia/Jayapura", TimeZone::AsiaJerusalem => "Asia/Jerusalem", TimeZone::AsiaKabul => "Asia/Kabul", TimeZone::AsiaKamchatka => "Asia/Kamchatka", TimeZone::AsiaKarachi => "Asia/Karachi", TimeZone::AsiaKashgar => "Asia/Kashgar", TimeZone::AsiaKathmandu => "Asia/Kathmandu", TimeZone::AsiaKatmandu => "Asia/Katmandu", TimeZone::AsiaKhandyga => "Asia/Khandyga", TimeZone::AsiaKolkata => "Asia/Kolkata", TimeZone::AsiaKrasnoyarsk => "Asia/Krasnoyarsk", TimeZone::AsiaKualaLumpur => "Asia/Kuala_Lumpur", TimeZone::AsiaKuching => "Asia/Kuching", TimeZone::AsiaKuwait => "Asia/Kuwait", TimeZone::AsiaMacao => "Asia/Macao", TimeZone::AsiaMacau => "Asia/Macau", TimeZone::AsiaMagadan => "Asia/Magadan", TimeZone::AsiaMakassar => "Asia/Makassar", TimeZone::AsiaManila => "Asia/Manila", TimeZone::AsiaMuscat => "Asia/Muscat", TimeZone::AsiaNicosia => "Asia/Nicosia", TimeZone::AsiaNovokuznetsk => "Asia/Novokuznetsk", TimeZone::AsiaNovosibirsk => "Asia/Novosibirsk", TimeZone::AsiaOmsk => "Asia/Omsk", TimeZone::AsiaOral => "Asia/Oral", TimeZone::AsiaPhnomPenh => "Asia/Phnom_Penh", TimeZone::AsiaPontianak => "Asia/Pontianak", TimeZone::AsiaPyongyang => "Asia/Pyongyang", TimeZone::AsiaQatar => "Asia/Qatar", TimeZone::AsiaQostanay => "Asia/Qostanay", TimeZone::AsiaQyzylorda => "Asia/Qyzylorda", TimeZone::AsiaRangoon => "Asia/Rangoon", TimeZone::AsiaRiyadh => "Asia/Riyadh", TimeZone::AsiaSaigon => "Asia/Saigon", TimeZone::AsiaSakhalin => "Asia/Sakhalin", TimeZone::AsiaSamarkand => "Asia/Samarkand", TimeZone::AsiaSeoul => "Asia/Seoul", TimeZone::AsiaShanghai => "Asia/Shanghai", TimeZone::AsiaSingapore => "Asia/Singapore", TimeZone::AsiaSrednekolymsk => "Asia/Srednekolymsk", TimeZone::AsiaTaipei => "Asia/Taipei", TimeZone::AsiaTashkent => "Asia/Tashkent", TimeZone::AsiaTbilisi => "Asia/Tbilisi", TimeZone::AsiaTehran => "Asia/Tehran", TimeZone::AsiaTelAviv => "Asia/Tel_Aviv", TimeZone::AsiaThimbu => "Asia/Thimbu", TimeZone::AsiaThimphu => "Asia/Thimphu", TimeZone::AsiaTokyo => "Asia/Tokyo", TimeZone::AsiaTomsk => "Asia/Tomsk", TimeZone::AsiaUjungPandang => "Asia/Ujung_Pandang", TimeZone::AsiaUlaanbaatar => "Asia/Ulaanbaatar", TimeZone::AsiaUlanBator => "Asia/Ulan_Bator", TimeZone::AsiaUrumqi => "Asia/Urumqi", TimeZone::AsiaUstNera => "Asia/Ust-Nera", TimeZone::AsiaVientiane => "Asia/Vientiane", TimeZone::AsiaVladivostok => "Asia/Vladivostok", TimeZone::AsiaYakutsk => "Asia/Yakutsk", TimeZone::AsiaYangon => "Asia/Yangon", TimeZone::AsiaYekaterinburg => "Asia/Yekaterinburg", TimeZone::AsiaYerevan => "Asia/Yerevan", TimeZone::AtlanticAzores => "Atlantic/Azores", TimeZone::AtlanticBermuda => "Atlantic/Bermuda", TimeZone::AtlanticCanary => "Atlantic/Canary", TimeZone::AtlanticCapeVerde => "Atlantic/Cape_Verde", TimeZone::AtlanticFaeroe => "Atlantic/Faeroe", TimeZone::AtlanticFaroe => "Atlantic/Faroe", TimeZone::AtlanticJanMayen => "Atlantic/Jan_Mayen", TimeZone::AtlanticMadeira => "Atlantic/Madeira", TimeZone::AtlanticReykjavik => "Atlantic/Reykjavik", TimeZone::AtlanticSouthGeorgia => "Atlantic/South_Georgia", TimeZone::AtlanticStHelena => "Atlantic/St_Helena", TimeZone::AtlanticStanley => "Atlantic/Stanley", TimeZone::AustraliaACT => "Australia/ACT", TimeZone::AustraliaAdelaide => "Australia/Adelaide", TimeZone::AustraliaBrisbane => "Australia/Brisbane", TimeZone::AustraliaBrokenHill => "Australia/Broken_Hill", TimeZone::AustraliaCanberra => "Australia/Canberra", TimeZone::AustraliaCurrie => "Australia/Currie", TimeZone::AustraliaDarwin => "Australia/Darwin", TimeZone::AustraliaEucla => "Australia/Eucla", TimeZone::AustraliaHobart => "Australia/Hobart", TimeZone::AustraliaLHI => "Australia/LHI", TimeZone::AustraliaLindeman => "Australia/Lindeman", TimeZone::AustraliaLordHowe => "Australia/Lord_Howe", TimeZone::AustraliaMelbourne => "Australia/Melbourne", TimeZone::AustraliaNSW => "Australia/NSW", TimeZone::AustraliaNorth => "Australia/North", TimeZone::AustraliaPerth => "Australia/Perth", TimeZone::AustraliaQueensland => "Australia/Queensland", TimeZone::AustraliaSouth => "Australia/South", TimeZone::AustraliaSydney => "Australia/Sydney", TimeZone::AustraliaTasmania => "Australia/Tasmania", TimeZone::AustraliaVictoria => "Australia/Victoria", TimeZone::AustraliaWest => "Australia/West", TimeZone::AustraliaYancowinna => "Australia/Yancowinna", TimeZone::BrazilAcre => "Brazil/Acre", TimeZone::BrazilDeNoronha => "Brazil/DeNoronha", TimeZone::BrazilEast => "Brazil/East", TimeZone::BrazilWest => "Brazil/West", TimeZone::CET => "CET", TimeZone::CST6CDT => "CST6CDT", TimeZone::CanadaAtlantic => "Canada/Atlantic", TimeZone::CanadaCentral => "Canada/Central", TimeZone::CanadaEastern => "Canada/Eastern", TimeZone::CanadaMountain => "Canada/Mountain", TimeZone::CanadaNewfoundland => "Canada/Newfoundland", TimeZone::CanadaPacific => "Canada/Pacific", TimeZone::CanadaSaskatchewan => "Canada/Saskatchewan", TimeZone::CanadaYukon => "Canada/Yukon", TimeZone::ChileContinental => "Chile/Continental", TimeZone::ChileEasterIsland => "Chile/EasterIsland", TimeZone::Cuba => "Cuba", TimeZone::EET => "EET", TimeZone::EST => "EST", TimeZone::EST5EDT => "EST5EDT", TimeZone::Egypt => "Egypt", TimeZone::Eire => "Eire", TimeZone::EtcGMT => "Etc/GMT", TimeZone::EtcGMTPlus0 => "Etc/GMT+0", TimeZone::EtcGMTPlus1 => "Etc/GMT+1", TimeZone::EtcGMTPlus10 => "Etc/GMT+10", TimeZone::EtcGMTPlus11 => "Etc/GMT+11", TimeZone::EtcGMTPlus12 => "Etc/GMT+12", TimeZone::EtcGMTPlus2 => "Etc/GMT+2", TimeZone::EtcGMTPlus3 => "Etc/GMT+3", TimeZone::EtcGMTPlus4 => "Etc/GMT+4", TimeZone::EtcGMTPlus5 => "Etc/GMT+5", TimeZone::EtcGMTPlus6 => "Etc/GMT+6", TimeZone::EtcGMTPlus7 => "Etc/GMT+7", TimeZone::EtcGMTPlus8 => "Etc/GMT+8", TimeZone::EtcGMTPlus9 => "Etc/GMT+9", TimeZone::EtcGMTMinus0 => "Etc/GMT-0", TimeZone::EtcGMTMinus1 => "Etc/GMT-1", TimeZone::EtcGMTMinus10 => "Etc/GMT-10", TimeZone::EtcGMTMinus11 => "Etc/GMT-11", TimeZone::EtcGMTMinus12 => "Etc/GMT-12", TimeZone::EtcGMTMinus13 => "Etc/GMT-13", TimeZone::EtcGMTMinus14 => "Etc/GMT-14", TimeZone::EtcGMTMinus2 => "Etc/GMT-2", TimeZone::EtcGMTMinus3 => "Etc/GMT-3", TimeZone::EtcGMTMinus4 => "Etc/GMT-4", TimeZone::EtcGMTMinus5 => "Etc/GMT-5", TimeZone::EtcGMTMinus6 => "Etc/GMT-6", TimeZone::EtcGMTMinus7 => "Etc/GMT-7", TimeZone::EtcGMTMinus8 => "Etc/GMT-8", TimeZone::EtcGMTMinus9 => "Etc/GMT-9", TimeZone::EtcGMT0 => "Etc/GMT0", TimeZone::EtcGreenwich => "Etc/Greenwich", TimeZone::EtcUCT => "Etc/UCT", TimeZone::EtcUTC => "Etc/UTC", TimeZone::EtcUniversal => "Etc/Universal", TimeZone::EtcZulu => "Etc/Zulu", TimeZone::EuropeAmsterdam => "Europe/Amsterdam", TimeZone::EuropeAndorra => "Europe/Andorra", TimeZone::EuropeAstrakhan => "Europe/Astrakhan", TimeZone::EuropeAthens => "Europe/Athens", TimeZone::EuropeBelfast => "Europe/Belfast", TimeZone::EuropeBelgrade => "Europe/Belgrade", TimeZone::EuropeBerlin => "Europe/Berlin", TimeZone::EuropeBratislava => "Europe/Bratislava", TimeZone::EuropeBrussels => "Europe/Brussels", TimeZone::EuropeBucharest => "Europe/Bucharest", TimeZone::EuropeBudapest => "Europe/Budapest", TimeZone::EuropeBusingen => "Europe/Busingen", TimeZone::EuropeChisinau => "Europe/Chisinau", TimeZone::EuropeCopenhagen => "Europe/Copenhagen", TimeZone::EuropeDublin => "Europe/Dublin", TimeZone::EuropeGibraltar => "Europe/Gibraltar", TimeZone::EuropeGuernsey => "Europe/Guernsey", TimeZone::EuropeHelsinki => "Europe/Helsinki", TimeZone::EuropeIsleOfMan => "Europe/Isle_of_Man", TimeZone::EuropeIstanbul => "Europe/Istanbul", TimeZone::EuropeJersey => "Europe/Jersey", TimeZone::EuropeKaliningrad => "Europe/Kaliningrad", TimeZone::EuropeKiev => "Europe/Kiev", TimeZone::EuropeKirov => "Europe/Kirov", TimeZone::EuropeKyiv => "Europe/Kyiv", TimeZone::EuropeLisbon => "Europe/Lisbon", TimeZone::EuropeLjubljana => "Europe/Ljubljana", TimeZone::EuropeLondon => "Europe/London", TimeZone::EuropeLuxembourg => "Europe/Luxembourg", TimeZone::EuropeMadrid => "Europe/Madrid", TimeZone::EuropeMalta => "Europe/Malta", TimeZone::EuropeMariehamn => "Europe/Mariehamn", TimeZone::EuropeMinsk => "Europe/Minsk", TimeZone::EuropeMonaco => "Europe/Monaco", TimeZone::EuropeMoscow => "Europe/Moscow", TimeZone::EuropeNicosia => "Europe/Nicosia", TimeZone::EuropeOslo => "Europe/Oslo", TimeZone::EuropeParis => "Europe/Paris", TimeZone::EuropePodgorica => "Europe/Podgorica", TimeZone::EuropePrague => "Europe/Prague", TimeZone::EuropeRiga => "Europe/Riga", TimeZone::EuropeRome => "Europe/Rome", TimeZone::EuropeSamara => "Europe/Samara", TimeZone::EuropeSanMarino => "Europe/San_Marino", TimeZone::EuropeSarajevo => "Europe/Sarajevo", TimeZone::EuropeSaratov => "Europe/Saratov", TimeZone::EuropeSimferopol => "Europe/Simferopol", TimeZone::EuropeSkopje => "Europe/Skopje", TimeZone::EuropeSofia => "Europe/Sofia", TimeZone::EuropeStockholm => "Europe/Stockholm", TimeZone::EuropeTallinn => "Europe/Tallinn", TimeZone::EuropeTirane => "Europe/Tirane", TimeZone::EuropeTiraspol => "Europe/Tiraspol", TimeZone::EuropeUlyanovsk => "Europe/Ulyanovsk", TimeZone::EuropeUzhgorod => "Europe/Uzhgorod", TimeZone::EuropeVaduz => "Europe/Vaduz", TimeZone::EuropeVatican => "Europe/Vatican", TimeZone::EuropeVienna => "Europe/Vienna", TimeZone::EuropeVilnius => "Europe/Vilnius", TimeZone::EuropeVolgograd => "Europe/Volgograd", TimeZone::EuropeWarsaw => "Europe/Warsaw", TimeZone::EuropeZagreb => "Europe/Zagreb", TimeZone::EuropeZaporozhye => "Europe/Zaporozhye", TimeZone::EuropeZurich => "Europe/Zurich", TimeZone::Factory => "Factory", TimeZone::GB => "GB", TimeZone::GBEire => "GB-Eire", TimeZone::GMT => "GMT", TimeZone::GMTPlus0 => "GMT+0", TimeZone::GMTMinus0 => "GMT-0", TimeZone::GMT0 => "GMT0", TimeZone::Greenwich => "Greenwich", TimeZone::HST => "HST", TimeZone::Hongkong => "Hongkong", TimeZone::Iceland => "Iceland", TimeZone::IndianAntananarivo => "Indian/Antananarivo", TimeZone::IndianChagos => "Indian/Chagos", TimeZone::IndianChristmas => "Indian/Christmas", TimeZone::IndianCocos => "Indian/Cocos", TimeZone::IndianComoro => "Indian/Comoro", TimeZone::IndianKerguelen => "Indian/Kerguelen", TimeZone::IndianMahe => "Indian/Mahe", TimeZone::IndianMaldives => "Indian/Maldives", TimeZone::IndianMauritius => "Indian/Mauritius", TimeZone::IndianMayotte => "Indian/Mayotte", TimeZone::IndianReunion => "Indian/Reunion", TimeZone::Iran => "Iran", TimeZone::Israel => "Israel", TimeZone::Jamaica => "Jamaica", TimeZone::Japan => "Japan", TimeZone::Kwajalein => "Kwajalein", TimeZone::Libya => "Libya", TimeZone::MET => "MET", TimeZone::MST => "MST", TimeZone::MST7MDT => "MST7MDT", TimeZone::MexicoBajaNorte => "Mexico/BajaNorte", TimeZone::MexicoBajaSur => "Mexico/BajaSur", TimeZone::MexicoGeneral => "Mexico/General", TimeZone::NZ => "NZ", TimeZone::NZCHAT => "NZ-CHAT", TimeZone::Navajo => "Navajo", TimeZone::PRC => "PRC", TimeZone::PST8PDT => "PST8PDT", TimeZone::PacificApia => "Pacific/Apia", TimeZone::PacificAuckland => "Pacific/Auckland", TimeZone::PacificBougainville => "Pacific/Bougainville", TimeZone::PacificChatham => "Pacific/Chatham", TimeZone::PacificChuuk => "Pacific/Chuuk", TimeZone::PacificEaster => "Pacific/Easter", TimeZone::PacificEfate => "Pacific/Efate", TimeZone::PacificEnderbury => "Pacific/Enderbury", TimeZone::PacificFakaofo => "Pacific/Fakaofo", TimeZone::PacificFiji => "Pacific/Fiji", TimeZone::PacificFunafuti => "Pacific/Funafuti", TimeZone::PacificGalapagos => "Pacific/Galapagos", TimeZone::PacificGambier => "Pacific/Gambier", TimeZone::PacificGuadalcanal => "Pacific/Guadalcanal", TimeZone::PacificGuam => "Pacific/Guam", TimeZone::PacificHonolulu => "Pacific/Honolulu", TimeZone::PacificJohnston => "Pacific/Johnston", TimeZone::PacificKanton => "Pacific/Kanton", TimeZone::PacificKiritimati => "Pacific/Kiritimati", TimeZone::PacificKosrae => "Pacific/Kosrae", TimeZone::PacificKwajalein => "Pacific/Kwajalein", TimeZone::PacificMajuro => "Pacific/Majuro", TimeZone::PacificMarquesas => "Pacific/Marquesas", TimeZone::PacificMidway => "Pacific/Midway", TimeZone::PacificNauru => "Pacific/Nauru", TimeZone::PacificNiue => "Pacific/Niue", TimeZone::PacificNorfolk => "Pacific/Norfolk", TimeZone::PacificNoumea => "Pacific/Noumea", TimeZone::PacificPagoPago => "Pacific/Pago_Pago", TimeZone::PacificPalau => "Pacific/Palau", TimeZone::PacificPitcairn => "Pacific/Pitcairn", TimeZone::PacificPohnpei => "Pacific/Pohnpei", TimeZone::PacificPonape => "Pacific/Ponape", TimeZone::PacificPortMoresby => "Pacific/Port_Moresby", TimeZone::PacificRarotonga => "Pacific/Rarotonga", TimeZone::PacificSaipan => "Pacific/Saipan", TimeZone::PacificSamoa => "Pacific/Samoa", TimeZone::PacificTahiti => "Pacific/Tahiti", TimeZone::PacificTarawa => "Pacific/Tarawa", TimeZone::PacificTongatapu => "Pacific/Tongatapu", TimeZone::PacificTruk => "Pacific/Truk", TimeZone::PacificWake => "Pacific/Wake", TimeZone::PacificWallis => "Pacific/Wallis", TimeZone::PacificYap => "Pacific/Yap", TimeZone::Poland => "Poland", TimeZone::Portugal => "Portugal", TimeZone::ROC => "ROC", TimeZone::ROK => "ROK", TimeZone::Singapore => "Singapore", TimeZone::Turkey => "Turkey", TimeZone::UCT => "UCT", TimeZone::USAlaska => "US/Alaska", TimeZone::USAleutian => "US/Aleutian", TimeZone::USArizona => "US/Arizona", TimeZone::USCentral => "US/Central", TimeZone::USEastIndiana => "US/East-Indiana", TimeZone::USEastern => "US/Eastern", TimeZone::USHawaii => "US/Hawaii", TimeZone::USIndianaStarke => "US/Indiana-Starke", TimeZone::USMichigan => "US/Michigan", TimeZone::USMountain => "US/Mountain", TimeZone::USPacific => "US/Pacific", TimeZone::USSamoa => "US/Samoa", TimeZone::UTC => "UTC", TimeZone::Universal => "Universal", TimeZone::WSU => "W-SU", TimeZone::WET => "WET", TimeZone::Zulu => "Zulu", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TimeZone::AfricaAbidjan), 1 => Some(TimeZone::AfricaAccra), 2 => Some(TimeZone::AfricaAddisAbaba), 3 => Some(TimeZone::AfricaAlgiers), 4 => Some(TimeZone::AfricaAsmara), 5 => Some(TimeZone::AfricaAsmera), 6 => Some(TimeZone::AfricaBamako), 7 => Some(TimeZone::AfricaBangui), 8 => Some(TimeZone::AfricaBanjul), 9 => Some(TimeZone::AfricaBissau), 10 => Some(TimeZone::AfricaBlantyre), 11 => Some(TimeZone::AfricaBrazzaville), 12 => Some(TimeZone::AfricaBujumbura), 13 => Some(TimeZone::AfricaCairo), 14 => Some(TimeZone::AfricaCasablanca), 15 => Some(TimeZone::AfricaCeuta), 16 => Some(TimeZone::AfricaConakry), 17 => Some(TimeZone::AfricaDakar), 18 => Some(TimeZone::AfricaDarEsSalaam), 19 => Some(TimeZone::AfricaDjibouti), 20 => Some(TimeZone::AfricaDouala), 21 => Some(TimeZone::AfricaElAaiun), 22 => Some(TimeZone::AfricaFreetown), 23 => Some(TimeZone::AfricaGaborone), 24 => Some(TimeZone::AfricaHarare), 25 => Some(TimeZone::AfricaJohannesburg), 26 => Some(TimeZone::AfricaJuba), 27 => Some(TimeZone::AfricaKampala), 28 => Some(TimeZone::AfricaKhartoum), 29 => Some(TimeZone::AfricaKigali), 30 => Some(TimeZone::AfricaKinshasa), 31 => Some(TimeZone::AfricaLagos), 32 => Some(TimeZone::AfricaLibreville), 33 => Some(TimeZone::AfricaLome), 34 => Some(TimeZone::AfricaLuanda), 35 => Some(TimeZone::AfricaLubumbashi), 36 => Some(TimeZone::AfricaLusaka), 37 => Some(TimeZone::AfricaMalabo), 38 => Some(TimeZone::AfricaMaputo), 39 => Some(TimeZone::AfricaMaseru), 40 => Some(TimeZone::AfricaMbabane), 41 => Some(TimeZone::AfricaMogadishu), 42 => Some(TimeZone::AfricaMonrovia), 43 => Some(TimeZone::AfricaNairobi), 44 => Some(TimeZone::AfricaNdjamena), 45 => Some(TimeZone::AfricaNiamey), 46 => Some(TimeZone::AfricaNouakchott), 47 => Some(TimeZone::AfricaOuagadougou), 48 => Some(TimeZone::AfricaPortoNovo), 49 => Some(TimeZone::AfricaSaoTome), 50 => Some(TimeZone::AfricaTimbuktu), 51 => Some(TimeZone::AfricaTripoli), 52 => Some(TimeZone::AfricaTunis), 53 => Some(TimeZone::AfricaWindhoek), 54 => Some(TimeZone::AmericaAdak), 55 => Some(TimeZone::AmericaAnchorage), 56 => Some(TimeZone::AmericaAnguilla), 57 => Some(TimeZone::AmericaAntigua), 58 => Some(TimeZone::AmericaAraguaina), 59 => Some(TimeZone::AmericaArgentinaBuenosAires), 60 => Some(TimeZone::AmericaArgentinaCatamarca), 61 => Some(TimeZone::AmericaArgentinaComodRivadavia), 62 => Some(TimeZone::AmericaArgentinaCordoba), 63 => Some(TimeZone::AmericaArgentinaJujuy), 64 => Some(TimeZone::AmericaArgentinaLaRioja), 65 => Some(TimeZone::AmericaArgentinaMendoza), 66 => Some(TimeZone::AmericaArgentinaRioGallegos), 67 => Some(TimeZone::AmericaArgentinaSalta), 68 => Some(TimeZone::AmericaArgentinaSanJuan), 69 => Some(TimeZone::AmericaArgentinaSanLuis), 70 => Some(TimeZone::AmericaArgentinaTucuman), 71 => Some(TimeZone::AmericaArgentinaUshuaia), 72 => Some(TimeZone::AmericaAruba), 73 => Some(TimeZone::AmericaAsuncion), 74 => Some(TimeZone::AmericaAtikokan), 75 => Some(TimeZone::AmericaAtka), 76 => Some(TimeZone::AmericaBahia), 77 => Some(TimeZone::AmericaBahiaBanderas), 78 => Some(TimeZone::AmericaBarbados), 79 => Some(TimeZone::AmericaBelem), 80 => Some(TimeZone::AmericaBelize), 81 => Some(TimeZone::AmericaBlancSablon), 82 => Some(TimeZone::AmericaBoaVista), 83 => Some(TimeZone::AmericaBogota), 84 => Some(TimeZone::AmericaBoise), 85 => Some(TimeZone::AmericaBuenosAires), 86 => Some(TimeZone::AmericaCambridgeBay), 87 => Some(TimeZone::AmericaCampoGrande), 88 => Some(TimeZone::AmericaCancun), 89 => Some(TimeZone::AmericaCaracas), 90 => Some(TimeZone::AmericaCatamarca), 91 => Some(TimeZone::AmericaCayenne), 92 => Some(TimeZone::AmericaCayman), 93 => Some(TimeZone::AmericaChicago), 94 => Some(TimeZone::AmericaChihuahua), 95 => Some(TimeZone::AmericaCiudadJuarez), 96 => Some(TimeZone::AmericaCoralHarbour), 97 => Some(TimeZone::AmericaCordoba), 98 => Some(TimeZone::AmericaCostaRica), 99 => Some(TimeZone::AmericaCoyhaique), 100 => Some(TimeZone::AmericaCreston), 101 => Some(TimeZone::AmericaCuiaba), 102 => Some(TimeZone::AmericaCuracao), 103 => Some(TimeZone::AmericaDanmarkshavn), 104 => Some(TimeZone::AmericaDawson), 105 => Some(TimeZone::AmericaDawsonCreek), 106 => Some(TimeZone::AmericaDenver), 107 => Some(TimeZone::AmericaDetroit), 108 => Some(TimeZone::AmericaDominica), 109 => Some(TimeZone::AmericaEdmonton), 110 => Some(TimeZone::AmericaEirunepe), 111 => Some(TimeZone::AmericaElSalvador), 112 => Some(TimeZone::AmericaEnsenada), 113 => Some(TimeZone::AmericaFortNelson), 114 => Some(TimeZone::AmericaFortWayne), 115 => Some(TimeZone::AmericaFortaleza), 116 => Some(TimeZone::AmericaGlaceBay), 117 => Some(TimeZone::AmericaGodthab), 118 => Some(TimeZone::AmericaGooseBay), 119 => Some(TimeZone::AmericaGrandTurk), 120 => Some(TimeZone::AmericaGrenada), 121 => Some(TimeZone::AmericaGuadeloupe), 122 => Some(TimeZone::AmericaGuatemala), 123 => Some(TimeZone::AmericaGuayaquil), 124 => Some(TimeZone::AmericaGuyana), 125 => Some(TimeZone::AmericaHalifax), 126 => Some(TimeZone::AmericaHavana), 127 => Some(TimeZone::AmericaHermosillo), 128 => Some(TimeZone::AmericaIndianaIndianapolis), 129 => Some(TimeZone::AmericaIndianaKnox), 130 => Some(TimeZone::AmericaIndianaMarengo), 131 => Some(TimeZone::AmericaIndianaPetersburg), 132 => Some(TimeZone::AmericaIndianaTellCity), 133 => Some(TimeZone::AmericaIndianaVevay), 134 => Some(TimeZone::AmericaIndianaVincennes), 135 => Some(TimeZone::AmericaIndianaWinamac), 136 => Some(TimeZone::AmericaIndianapolis), 137 => Some(TimeZone::AmericaInuvik), 138 => Some(TimeZone::AmericaIqaluit), 139 => Some(TimeZone::AmericaJamaica), 140 => Some(TimeZone::AmericaJujuy), 141 => Some(TimeZone::AmericaJuneau), 142 => Some(TimeZone::AmericaKentuckyLouisville), 143 => Some(TimeZone::AmericaKentuckyMonticello), 144 => Some(TimeZone::AmericaKnoxIN), 145 => Some(TimeZone::AmericaKralendijk), 146 => Some(TimeZone::AmericaLaPaz), 147 => Some(TimeZone::AmericaLima), 148 => Some(TimeZone::AmericaLosAngeles), 149 => Some(TimeZone::AmericaLouisville), 150 => Some(TimeZone::AmericaLowerPrinces), 151 => Some(TimeZone::AmericaMaceio), 152 => Some(TimeZone::AmericaManagua), 153 => Some(TimeZone::AmericaManaus), 154 => Some(TimeZone::AmericaMarigot), 155 => Some(TimeZone::AmericaMartinique), 156 => Some(TimeZone::AmericaMatamoros), 157 => Some(TimeZone::AmericaMazatlan), 158 => Some(TimeZone::AmericaMendoza), 159 => Some(TimeZone::AmericaMenominee), 160 => Some(TimeZone::AmericaMerida), 161 => Some(TimeZone::AmericaMetlakatla), 162 => Some(TimeZone::AmericaMexicoCity), 163 => Some(TimeZone::AmericaMiquelon), 164 => Some(TimeZone::AmericaMoncton), 165 => Some(TimeZone::AmericaMonterrey), 166 => Some(TimeZone::AmericaMontevideo), 167 => Some(TimeZone::AmericaMontreal), 168 => Some(TimeZone::AmericaMontserrat), 169 => Some(TimeZone::AmericaNassau), 170 => Some(TimeZone::AmericaNewYork), 171 => Some(TimeZone::AmericaNipigon), 172 => Some(TimeZone::AmericaNome), 173 => Some(TimeZone::AmericaNoronha), 174 => Some(TimeZone::AmericaNorthDakotaBeulah), 175 => Some(TimeZone::AmericaNorthDakotaCenter), 176 => Some(TimeZone::AmericaNorthDakotaNewSalem), 177 => Some(TimeZone::AmericaNuuk), 178 => Some(TimeZone::AmericaOjinaga), 179 => Some(TimeZone::AmericaPanama), 180 => Some(TimeZone::AmericaPangnirtung), 181 => Some(TimeZone::AmericaParamaribo), 182 => Some(TimeZone::AmericaPhoenix), 183 => Some(TimeZone::AmericaPortAuPrince), 184 => Some(TimeZone::AmericaPortOfSpain), 185 => Some(TimeZone::AmericaPortoAcre), 186 => Some(TimeZone::AmericaPortoVelho), 187 => Some(TimeZone::AmericaPuertoRico), 188 => Some(TimeZone::AmericaPuntaArenas), 189 => Some(TimeZone::AmericaRainyRiver), 190 => Some(TimeZone::AmericaRankinInlet), 191 => Some(TimeZone::AmericaRecife), 192 => Some(TimeZone::AmericaRegina), 193 => Some(TimeZone::AmericaResolute), 194 => Some(TimeZone::AmericaRioBranco), 195 => Some(TimeZone::AmericaRosario), 196 => Some(TimeZone::AmericaSantaIsabel), 197 => Some(TimeZone::AmericaSantarem), 198 => Some(TimeZone::AmericaSantiago), 199 => Some(TimeZone::AmericaSantoDomingo), 200 => Some(TimeZone::AmericaSaoPaulo), 201 => Some(TimeZone::AmericaScoresbysund), 202 => Some(TimeZone::AmericaShiprock), 203 => Some(TimeZone::AmericaSitka), 204 => Some(TimeZone::AmericaStBarthelemy), 205 => Some(TimeZone::AmericaStJohns), 206 => Some(TimeZone::AmericaStKitts), 207 => Some(TimeZone::AmericaStLucia), 208 => Some(TimeZone::AmericaStThomas), 209 => Some(TimeZone::AmericaStVincent), 210 => Some(TimeZone::AmericaSwiftCurrent), 211 => Some(TimeZone::AmericaTegucigalpa), 212 => Some(TimeZone::AmericaThule), 213 => Some(TimeZone::AmericaThunderBay), 214 => Some(TimeZone::AmericaTijuana), 215 => Some(TimeZone::AmericaToronto), 216 => Some(TimeZone::AmericaTortola), 217 => Some(TimeZone::AmericaVancouver), 218 => Some(TimeZone::AmericaVirgin), 219 => Some(TimeZone::AmericaWhitehorse), 220 => Some(TimeZone::AmericaWinnipeg), 221 => Some(TimeZone::AmericaYakutat), 222 => Some(TimeZone::AmericaYellowknife), 223 => Some(TimeZone::AntarcticaCasey), 224 => Some(TimeZone::AntarcticaDavis), 225 => Some(TimeZone::AntarcticaDumontDUrville), 226 => Some(TimeZone::AntarcticaMacquarie), 227 => Some(TimeZone::AntarcticaMawson), 228 => Some(TimeZone::AntarcticaMcMurdo), 229 => Some(TimeZone::AntarcticaPalmer), 230 => Some(TimeZone::AntarcticaRothera), 231 => Some(TimeZone::AntarcticaSouthPole), 232 => Some(TimeZone::AntarcticaSyowa), 233 => Some(TimeZone::AntarcticaTroll), 234 => Some(TimeZone::AntarcticaVostok), 235 => Some(TimeZone::ArcticLongyearbyen), 236 => Some(TimeZone::AsiaAden), 237 => Some(TimeZone::AsiaAlmaty), 238 => Some(TimeZone::AsiaAmman), 239 => Some(TimeZone::AsiaAnadyr), 240 => Some(TimeZone::AsiaAqtau), 241 => Some(TimeZone::AsiaAqtobe), 242 => Some(TimeZone::AsiaAshgabat), 243 => Some(TimeZone::AsiaAshkhabad), 244 => Some(TimeZone::AsiaAtyrau), 245 => Some(TimeZone::AsiaBaghdad), 246 => Some(TimeZone::AsiaBahrain), 247 => Some(TimeZone::AsiaBaku), 248 => Some(TimeZone::AsiaBangkok), 249 => Some(TimeZone::AsiaBarnaul), 250 => Some(TimeZone::AsiaBeirut), 251 => Some(TimeZone::AsiaBishkek), 252 => Some(TimeZone::AsiaBrunei), 253 => Some(TimeZone::AsiaCalcutta), 254 => Some(TimeZone::AsiaChita), 255 => Some(TimeZone::AsiaChoibalsan), 256 => Some(TimeZone::AsiaChongqing), 257 => Some(TimeZone::AsiaChungking), 258 => Some(TimeZone::AsiaColombo), 259 => Some(TimeZone::AsiaDacca), 260 => Some(TimeZone::AsiaDamascus), 261 => Some(TimeZone::AsiaDhaka), 262 => Some(TimeZone::AsiaDili), 263 => Some(TimeZone::AsiaDubai), 264 => Some(TimeZone::AsiaDushanbe), 265 => Some(TimeZone::AsiaFamagusta), 266 => Some(TimeZone::AsiaGaza), 267 => Some(TimeZone::AsiaHarbin), 268 => Some(TimeZone::AsiaHebron), 269 => Some(TimeZone::AsiaHoChiMinh), 270 => Some(TimeZone::AsiaHongKong), 271 => Some(TimeZone::AsiaHovd), 272 => Some(TimeZone::AsiaIrkutsk), 273 => Some(TimeZone::AsiaIstanbul), 274 => Some(TimeZone::AsiaJakarta), 275 => Some(TimeZone::AsiaJayapura), 276 => Some(TimeZone::AsiaJerusalem), 277 => Some(TimeZone::AsiaKabul), 278 => Some(TimeZone::AsiaKamchatka), 279 => Some(TimeZone::AsiaKarachi), 280 => Some(TimeZone::AsiaKashgar), 281 => Some(TimeZone::AsiaKathmandu), 282 => Some(TimeZone::AsiaKatmandu), 283 => Some(TimeZone::AsiaKhandyga), 284 => Some(TimeZone::AsiaKolkata), 285 => Some(TimeZone::AsiaKrasnoyarsk), 286 => Some(TimeZone::AsiaKualaLumpur), 287 => Some(TimeZone::AsiaKuching), 288 => Some(TimeZone::AsiaKuwait), 289 => Some(TimeZone::AsiaMacao), 290 => Some(TimeZone::AsiaMacau), 291 => Some(TimeZone::AsiaMagadan), 292 => Some(TimeZone::AsiaMakassar), 293 => Some(TimeZone::AsiaManila), 294 => Some(TimeZone::AsiaMuscat), 295 => Some(TimeZone::AsiaNicosia), 296 => Some(TimeZone::AsiaNovokuznetsk), 297 => Some(TimeZone::AsiaNovosibirsk), 298 => Some(TimeZone::AsiaOmsk), 299 => Some(TimeZone::AsiaOral), 300 => Some(TimeZone::AsiaPhnomPenh), 301 => Some(TimeZone::AsiaPontianak), 302 => Some(TimeZone::AsiaPyongyang), 303 => Some(TimeZone::AsiaQatar), 304 => Some(TimeZone::AsiaQostanay), 305 => Some(TimeZone::AsiaQyzylorda), 306 => Some(TimeZone::AsiaRangoon), 307 => Some(TimeZone::AsiaRiyadh), 308 => Some(TimeZone::AsiaSaigon), 309 => Some(TimeZone::AsiaSakhalin), 310 => Some(TimeZone::AsiaSamarkand), 311 => Some(TimeZone::AsiaSeoul), 312 => Some(TimeZone::AsiaShanghai), 313 => Some(TimeZone::AsiaSingapore), 314 => Some(TimeZone::AsiaSrednekolymsk), 315 => Some(TimeZone::AsiaTaipei), 316 => Some(TimeZone::AsiaTashkent), 317 => Some(TimeZone::AsiaTbilisi), 318 => Some(TimeZone::AsiaTehran), 319 => Some(TimeZone::AsiaTelAviv), 320 => Some(TimeZone::AsiaThimbu), 321 => Some(TimeZone::AsiaThimphu), 322 => Some(TimeZone::AsiaTokyo), 323 => Some(TimeZone::AsiaTomsk), 324 => Some(TimeZone::AsiaUjungPandang), 325 => Some(TimeZone::AsiaUlaanbaatar), 326 => Some(TimeZone::AsiaUlanBator), 327 => Some(TimeZone::AsiaUrumqi), 328 => Some(TimeZone::AsiaUstNera), 329 => Some(TimeZone::AsiaVientiane), 330 => Some(TimeZone::AsiaVladivostok), 331 => Some(TimeZone::AsiaYakutsk), 332 => Some(TimeZone::AsiaYangon), 333 => Some(TimeZone::AsiaYekaterinburg), 334 => Some(TimeZone::AsiaYerevan), 335 => Some(TimeZone::AtlanticAzores), 336 => Some(TimeZone::AtlanticBermuda), 337 => Some(TimeZone::AtlanticCanary), 338 => Some(TimeZone::AtlanticCapeVerde), 339 => Some(TimeZone::AtlanticFaeroe), 340 => Some(TimeZone::AtlanticFaroe), 341 => Some(TimeZone::AtlanticJanMayen), 342 => Some(TimeZone::AtlanticMadeira), 343 => Some(TimeZone::AtlanticReykjavik), 344 => Some(TimeZone::AtlanticSouthGeorgia), 345 => Some(TimeZone::AtlanticStHelena), 346 => Some(TimeZone::AtlanticStanley), 347 => Some(TimeZone::AustraliaACT), 348 => Some(TimeZone::AustraliaAdelaide), 349 => Some(TimeZone::AustraliaBrisbane), 350 => Some(TimeZone::AustraliaBrokenHill), 351 => Some(TimeZone::AustraliaCanberra), 352 => Some(TimeZone::AustraliaCurrie), 353 => Some(TimeZone::AustraliaDarwin), 354 => Some(TimeZone::AustraliaEucla), 355 => Some(TimeZone::AustraliaHobart), 356 => Some(TimeZone::AustraliaLHI), 357 => Some(TimeZone::AustraliaLindeman), 358 => Some(TimeZone::AustraliaLordHowe), 359 => Some(TimeZone::AustraliaMelbourne), 360 => Some(TimeZone::AustraliaNSW), 361 => Some(TimeZone::AustraliaNorth), 362 => Some(TimeZone::AustraliaPerth), 363 => Some(TimeZone::AustraliaQueensland), 364 => Some(TimeZone::AustraliaSouth), 365 => Some(TimeZone::AustraliaSydney), 366 => Some(TimeZone::AustraliaTasmania), 367 => Some(TimeZone::AustraliaVictoria), 368 => Some(TimeZone::AustraliaWest), 369 => Some(TimeZone::AustraliaYancowinna), 370 => Some(TimeZone::BrazilAcre), 371 => Some(TimeZone::BrazilDeNoronha), 372 => Some(TimeZone::BrazilEast), 373 => Some(TimeZone::BrazilWest), 374 => Some(TimeZone::CET), 375 => Some(TimeZone::CST6CDT), 376 => Some(TimeZone::CanadaAtlantic), 377 => Some(TimeZone::CanadaCentral), 378 => Some(TimeZone::CanadaEastern), 379 => Some(TimeZone::CanadaMountain), 380 => Some(TimeZone::CanadaNewfoundland), 381 => Some(TimeZone::CanadaPacific), 382 => Some(TimeZone::CanadaSaskatchewan), 383 => Some(TimeZone::CanadaYukon), 384 => Some(TimeZone::ChileContinental), 385 => Some(TimeZone::ChileEasterIsland), 386 => Some(TimeZone::Cuba), 387 => Some(TimeZone::EET), 388 => Some(TimeZone::EST), 389 => Some(TimeZone::EST5EDT), 390 => Some(TimeZone::Egypt), 391 => Some(TimeZone::Eire), 392 => Some(TimeZone::EtcGMT), 393 => Some(TimeZone::EtcGMTPlus0), 394 => Some(TimeZone::EtcGMTPlus1), 395 => Some(TimeZone::EtcGMTPlus10), 396 => Some(TimeZone::EtcGMTPlus11), 397 => Some(TimeZone::EtcGMTPlus12), 398 => Some(TimeZone::EtcGMTPlus2), 399 => Some(TimeZone::EtcGMTPlus3), 400 => Some(TimeZone::EtcGMTPlus4), 401 => Some(TimeZone::EtcGMTPlus5), 402 => Some(TimeZone::EtcGMTPlus6), 403 => Some(TimeZone::EtcGMTPlus7), 404 => Some(TimeZone::EtcGMTPlus8), 405 => Some(TimeZone::EtcGMTPlus9), 406 => Some(TimeZone::EtcGMTMinus0), 407 => Some(TimeZone::EtcGMTMinus1), 408 => Some(TimeZone::EtcGMTMinus10), 409 => Some(TimeZone::EtcGMTMinus11), 410 => Some(TimeZone::EtcGMTMinus12), 411 => Some(TimeZone::EtcGMTMinus13), 412 => Some(TimeZone::EtcGMTMinus14), 413 => Some(TimeZone::EtcGMTMinus2), 414 => Some(TimeZone::EtcGMTMinus3), 415 => Some(TimeZone::EtcGMTMinus4), 416 => Some(TimeZone::EtcGMTMinus5), 417 => Some(TimeZone::EtcGMTMinus6), 418 => Some(TimeZone::EtcGMTMinus7), 419 => Some(TimeZone::EtcGMTMinus8), 420 => Some(TimeZone::EtcGMTMinus9), 421 => Some(TimeZone::EtcGMT0), 422 => Some(TimeZone::EtcGreenwich), 423 => Some(TimeZone::EtcUCT), 424 => Some(TimeZone::EtcUTC), 425 => Some(TimeZone::EtcUniversal), 426 => Some(TimeZone::EtcZulu), 427 => Some(TimeZone::EuropeAmsterdam), 428 => Some(TimeZone::EuropeAndorra), 429 => Some(TimeZone::EuropeAstrakhan), 430 => Some(TimeZone::EuropeAthens), 431 => Some(TimeZone::EuropeBelfast), 432 => Some(TimeZone::EuropeBelgrade), 433 => Some(TimeZone::EuropeBerlin), 434 => Some(TimeZone::EuropeBratislava), 435 => Some(TimeZone::EuropeBrussels), 436 => Some(TimeZone::EuropeBucharest), 437 => Some(TimeZone::EuropeBudapest), 438 => Some(TimeZone::EuropeBusingen), 439 => Some(TimeZone::EuropeChisinau), 440 => Some(TimeZone::EuropeCopenhagen), 441 => Some(TimeZone::EuropeDublin), 442 => Some(TimeZone::EuropeGibraltar), 443 => Some(TimeZone::EuropeGuernsey), 444 => Some(TimeZone::EuropeHelsinki), 445 => Some(TimeZone::EuropeIsleOfMan), 446 => Some(TimeZone::EuropeIstanbul), 447 => Some(TimeZone::EuropeJersey), 448 => Some(TimeZone::EuropeKaliningrad), 449 => Some(TimeZone::EuropeKiev), 450 => Some(TimeZone::EuropeKirov), 451 => Some(TimeZone::EuropeKyiv), 452 => Some(TimeZone::EuropeLisbon), 453 => Some(TimeZone::EuropeLjubljana), 454 => Some(TimeZone::EuropeLondon), 455 => Some(TimeZone::EuropeLuxembourg), 456 => Some(TimeZone::EuropeMadrid), 457 => Some(TimeZone::EuropeMalta), 458 => Some(TimeZone::EuropeMariehamn), 459 => Some(TimeZone::EuropeMinsk), 460 => Some(TimeZone::EuropeMonaco), 461 => Some(TimeZone::EuropeMoscow), 462 => Some(TimeZone::EuropeNicosia), 463 => Some(TimeZone::EuropeOslo), 464 => Some(TimeZone::EuropeParis), 465 => Some(TimeZone::EuropePodgorica), 466 => Some(TimeZone::EuropePrague), 467 => Some(TimeZone::EuropeRiga), 468 => Some(TimeZone::EuropeRome), 469 => Some(TimeZone::EuropeSamara), 470 => Some(TimeZone::EuropeSanMarino), 471 => Some(TimeZone::EuropeSarajevo), 472 => Some(TimeZone::EuropeSaratov), 473 => Some(TimeZone::EuropeSimferopol), 474 => Some(TimeZone::EuropeSkopje), 475 => Some(TimeZone::EuropeSofia), 476 => Some(TimeZone::EuropeStockholm), 477 => Some(TimeZone::EuropeTallinn), 478 => Some(TimeZone::EuropeTirane), 479 => Some(TimeZone::EuropeTiraspol), 480 => Some(TimeZone::EuropeUlyanovsk), 481 => Some(TimeZone::EuropeUzhgorod), 482 => Some(TimeZone::EuropeVaduz), 483 => Some(TimeZone::EuropeVatican), 484 => Some(TimeZone::EuropeVienna), 485 => Some(TimeZone::EuropeVilnius), 486 => Some(TimeZone::EuropeVolgograd), 487 => Some(TimeZone::EuropeWarsaw), 488 => Some(TimeZone::EuropeZagreb), 489 => Some(TimeZone::EuropeZaporozhye), 490 => Some(TimeZone::EuropeZurich), 491 => Some(TimeZone::Factory), 492 => Some(TimeZone::GB), 493 => Some(TimeZone::GBEire), 494 => Some(TimeZone::GMT), 495 => Some(TimeZone::GMTPlus0), 496 => Some(TimeZone::GMTMinus0), 497 => Some(TimeZone::GMT0), 498 => Some(TimeZone::Greenwich), 499 => Some(TimeZone::HST), 500 => Some(TimeZone::Hongkong), 501 => Some(TimeZone::Iceland), 502 => Some(TimeZone::IndianAntananarivo), 503 => Some(TimeZone::IndianChagos), 504 => Some(TimeZone::IndianChristmas), 505 => Some(TimeZone::IndianCocos), 506 => Some(TimeZone::IndianComoro), 507 => Some(TimeZone::IndianKerguelen), 508 => Some(TimeZone::IndianMahe), 509 => Some(TimeZone::IndianMaldives), 510 => Some(TimeZone::IndianMauritius), 511 => Some(TimeZone::IndianMayotte), 512 => Some(TimeZone::IndianReunion), 513 => Some(TimeZone::Iran), 514 => Some(TimeZone::Israel), 515 => Some(TimeZone::Jamaica), 516 => Some(TimeZone::Japan), 517 => Some(TimeZone::Kwajalein), 518 => Some(TimeZone::Libya), 519 => Some(TimeZone::MET), 520 => Some(TimeZone::MST), 521 => Some(TimeZone::MST7MDT), 522 => Some(TimeZone::MexicoBajaNorte), 523 => Some(TimeZone::MexicoBajaSur), 524 => Some(TimeZone::MexicoGeneral), 525 => Some(TimeZone::NZ), 526 => Some(TimeZone::NZCHAT), 527 => Some(TimeZone::Navajo), 528 => Some(TimeZone::PRC), 529 => Some(TimeZone::PST8PDT), 530 => Some(TimeZone::PacificApia), 531 => Some(TimeZone::PacificAuckland), 532 => Some(TimeZone::PacificBougainville), 533 => Some(TimeZone::PacificChatham), 534 => Some(TimeZone::PacificChuuk), 535 => Some(TimeZone::PacificEaster), 536 => Some(TimeZone::PacificEfate), 537 => Some(TimeZone::PacificEnderbury), 538 => Some(TimeZone::PacificFakaofo), 539 => Some(TimeZone::PacificFiji), 540 => Some(TimeZone::PacificFunafuti), 541 => Some(TimeZone::PacificGalapagos), 542 => Some(TimeZone::PacificGambier), 543 => Some(TimeZone::PacificGuadalcanal), 544 => Some(TimeZone::PacificGuam), 545 => Some(TimeZone::PacificHonolulu), 546 => Some(TimeZone::PacificJohnston), 547 => Some(TimeZone::PacificKanton), 548 => Some(TimeZone::PacificKiritimati), 549 => Some(TimeZone::PacificKosrae), 550 => Some(TimeZone::PacificKwajalein), 551 => Some(TimeZone::PacificMajuro), 552 => Some(TimeZone::PacificMarquesas), 553 => Some(TimeZone::PacificMidway), 554 => Some(TimeZone::PacificNauru), 555 => Some(TimeZone::PacificNiue), 556 => Some(TimeZone::PacificNorfolk), 557 => Some(TimeZone::PacificNoumea), 558 => Some(TimeZone::PacificPagoPago), 559 => Some(TimeZone::PacificPalau), 560 => Some(TimeZone::PacificPitcairn), 561 => Some(TimeZone::PacificPohnpei), 562 => Some(TimeZone::PacificPonape), 563 => Some(TimeZone::PacificPortMoresby), 564 => Some(TimeZone::PacificRarotonga), 565 => Some(TimeZone::PacificSaipan), 566 => Some(TimeZone::PacificSamoa), 567 => Some(TimeZone::PacificTahiti), 568 => Some(TimeZone::PacificTarawa), 569 => Some(TimeZone::PacificTongatapu), 570 => Some(TimeZone::PacificTruk), 571 => Some(TimeZone::PacificWake), 572 => Some(TimeZone::PacificWallis), 573 => Some(TimeZone::PacificYap), 574 => Some(TimeZone::Poland), 575 => Some(TimeZone::Portugal), 576 => Some(TimeZone::ROC), 577 => Some(TimeZone::ROK), 578 => Some(TimeZone::Singapore), 579 => Some(TimeZone::Turkey), 580 => Some(TimeZone::UCT), 581 => Some(TimeZone::USAlaska), 582 => Some(TimeZone::USAleutian), 583 => Some(TimeZone::USArizona), 584 => Some(TimeZone::USCentral), 585 => Some(TimeZone::USEastIndiana), 586 => Some(TimeZone::USEastern), 587 => Some(TimeZone::USHawaii), 588 => Some(TimeZone::USIndianaStarke), 589 => Some(TimeZone::USMichigan), 590 => Some(TimeZone::USMountain), 591 => Some(TimeZone::USPacific), 592 => Some(TimeZone::USSamoa), 593 => Some(TimeZone::UTC), 594 => Some(TimeZone::Universal), 595 => Some(TimeZone::WSU), 596 => Some(TimeZone::WET), 597 => Some(TimeZone::Zulu), _ => None, } } const COUNT: usize = 598; } impl serde::Serialize for TimeZone { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TimeZone { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TlsCipherSuite { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"tls13-aes-256-gcm-sha384" => TlsCipherSuite::Tls13Aes256GcmSha384, b"tls13-aes-128-gcm-sha256" => TlsCipherSuite::Tls13Aes128GcmSha256, b"tls13-chacha20-poly1305-sha256" => TlsCipherSuite::Tls13Chacha20Poly1305Sha256, b"tls-ecdhe-ecdsa-with-aes-256-gcm-sha384" => TlsCipherSuite::TlsEcdheEcdsaWithAes256GcmSha384, b"tls-ecdhe-ecdsa-with-aes-128-gcm-sha256" => TlsCipherSuite::TlsEcdheEcdsaWithAes128GcmSha256, b"tls-ecdhe-ecdsa-with-chacha20-poly1305-sha256" => TlsCipherSuite::TlsEcdheEcdsaWithChacha20Poly1305Sha256, b"tls-ecdhe-rsa-with-aes-256-gcm-sha384" => TlsCipherSuite::TlsEcdheRsaWithAes256GcmSha384, b"tls-ecdhe-rsa-with-aes-128-gcm-sha256" => TlsCipherSuite::TlsEcdheRsaWithAes128GcmSha256, b"tls-ecdhe-rsa-with-chacha20-poly1305-sha256" => TlsCipherSuite::TlsEcdheRsaWithChacha20Poly1305Sha256, } } fn as_str(&self) -> &'static str { match self { TlsCipherSuite::Tls13Aes256GcmSha384 => "tls13-aes-256-gcm-sha384", TlsCipherSuite::Tls13Aes128GcmSha256 => "tls13-aes-128-gcm-sha256", TlsCipherSuite::Tls13Chacha20Poly1305Sha256 => "tls13-chacha20-poly1305-sha256", TlsCipherSuite::TlsEcdheEcdsaWithAes256GcmSha384 => { "tls-ecdhe-ecdsa-with-aes-256-gcm-sha384" } TlsCipherSuite::TlsEcdheEcdsaWithAes128GcmSha256 => { "tls-ecdhe-ecdsa-with-aes-128-gcm-sha256" } TlsCipherSuite::TlsEcdheEcdsaWithChacha20Poly1305Sha256 => { "tls-ecdhe-ecdsa-with-chacha20-poly1305-sha256" } TlsCipherSuite::TlsEcdheRsaWithAes256GcmSha384 => { "tls-ecdhe-rsa-with-aes-256-gcm-sha384" } TlsCipherSuite::TlsEcdheRsaWithAes128GcmSha256 => { "tls-ecdhe-rsa-with-aes-128-gcm-sha256" } TlsCipherSuite::TlsEcdheRsaWithChacha20Poly1305Sha256 => { "tls-ecdhe-rsa-with-chacha20-poly1305-sha256" } } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TlsCipherSuite::Tls13Aes256GcmSha384), 1 => Some(TlsCipherSuite::Tls13Aes128GcmSha256), 2 => Some(TlsCipherSuite::Tls13Chacha20Poly1305Sha256), 3 => Some(TlsCipherSuite::TlsEcdheEcdsaWithAes256GcmSha384), 4 => Some(TlsCipherSuite::TlsEcdheEcdsaWithAes128GcmSha256), 5 => Some(TlsCipherSuite::TlsEcdheEcdsaWithChacha20Poly1305Sha256), 6 => Some(TlsCipherSuite::TlsEcdheRsaWithAes256GcmSha384), 7 => Some(TlsCipherSuite::TlsEcdheRsaWithAes128GcmSha256), 8 => Some(TlsCipherSuite::TlsEcdheRsaWithChacha20Poly1305Sha256), _ => None, } } const COUNT: usize = 9; } impl serde::Serialize for TlsCipherSuite { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TlsCipherSuite { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TlsPolicyType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"tlsa" => TlsPolicyType::Tlsa, b"sts" => TlsPolicyType::Sts, b"noPolicyFound" => TlsPolicyType::NoPolicyFound, b"other" => TlsPolicyType::Other, } } fn as_str(&self) -> &'static str { match self { TlsPolicyType::Tlsa => "tlsa", TlsPolicyType::Sts => "sts", TlsPolicyType::NoPolicyFound => "noPolicyFound", TlsPolicyType::Other => "other", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TlsPolicyType::Tlsa), 1 => Some(TlsPolicyType::Sts), 2 => Some(TlsPolicyType::NoPolicyFound), 3 => Some(TlsPolicyType::Other), _ => None, } } const COUNT: usize = 4; } impl serde::Serialize for TlsPolicyType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TlsPolicyType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TlsResultType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"startTlsNotSupported" => TlsResultType::StartTlsNotSupported, b"certificateHostMismatch" => TlsResultType::CertificateHostMismatch, b"certificateExpired" => TlsResultType::CertificateExpired, b"certificateNotTrusted" => TlsResultType::CertificateNotTrusted, b"validationFailure" => TlsResultType::ValidationFailure, b"tlsaInvalid" => TlsResultType::TlsaInvalid, b"dnssecInvalid" => TlsResultType::DnssecInvalid, b"daneRequired" => TlsResultType::DaneRequired, b"stsPolicyFetchError" => TlsResultType::StsPolicyFetchError, b"stsPolicyInvalid" => TlsResultType::StsPolicyInvalid, b"stsWebpkiInvalid" => TlsResultType::StsWebpkiInvalid, b"other" => TlsResultType::Other, } } fn as_str(&self) -> &'static str { match self { TlsResultType::StartTlsNotSupported => "startTlsNotSupported", TlsResultType::CertificateHostMismatch => "certificateHostMismatch", TlsResultType::CertificateExpired => "certificateExpired", TlsResultType::CertificateNotTrusted => "certificateNotTrusted", TlsResultType::ValidationFailure => "validationFailure", TlsResultType::TlsaInvalid => "tlsaInvalid", TlsResultType::DnssecInvalid => "dnssecInvalid", TlsResultType::DaneRequired => "daneRequired", TlsResultType::StsPolicyFetchError => "stsPolicyFetchError", TlsResultType::StsPolicyInvalid => "stsPolicyInvalid", TlsResultType::StsWebpkiInvalid => "stsWebpkiInvalid", TlsResultType::Other => "other", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TlsResultType::StartTlsNotSupported), 1 => Some(TlsResultType::CertificateHostMismatch), 2 => Some(TlsResultType::CertificateExpired), 3 => Some(TlsResultType::CertificateNotTrusted), 4 => Some(TlsResultType::ValidationFailure), 5 => Some(TlsResultType::TlsaInvalid), 6 => Some(TlsResultType::DnssecInvalid), 7 => Some(TlsResultType::DaneRequired), 8 => Some(TlsResultType::StsPolicyFetchError), 9 => Some(TlsResultType::StsPolicyInvalid), 10 => Some(TlsResultType::StsWebpkiInvalid), 11 => Some(TlsResultType::Other), _ => None, } } const COUNT: usize = 12; } impl serde::Serialize for TlsResultType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TlsResultType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TlsVersion { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"tls12" => TlsVersion::Tls12, b"tls13" => TlsVersion::Tls13, } } fn as_str(&self) -> &'static str { match self { TlsVersion::Tls12 => "tls12", TlsVersion::Tls13 => "tls13", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TlsVersion::Tls12), 1 => Some(TlsVersion::Tls13), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for TlsVersion { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TlsVersion { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TraceValueType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"String" => TraceValueType::String, b"UnsignedInt" => TraceValueType::UnsignedInt, b"Integer" => TraceValueType::Integer, b"Boolean" => TraceValueType::Boolean, b"Float" => TraceValueType::Float, b"UTCDateTime" => TraceValueType::UTCDateTime, b"Duration" => TraceValueType::Duration, b"IpAddr" => TraceValueType::IpAddr, b"List" => TraceValueType::List, b"Event" => TraceValueType::Event, b"Null" => TraceValueType::Null, } } fn as_str(&self) -> &'static str { match self { TraceValueType::String => "String", TraceValueType::UnsignedInt => "UnsignedInt", TraceValueType::Integer => "Integer", TraceValueType::Boolean => "Boolean", TraceValueType::Float => "Float", TraceValueType::UTCDateTime => "UTCDateTime", TraceValueType::Duration => "Duration", TraceValueType::IpAddr => "IpAddr", TraceValueType::List => "List", TraceValueType::Event => "Event", TraceValueType::Null => "Null", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TraceValueType::String), 1 => Some(TraceValueType::UnsignedInt), 2 => Some(TraceValueType::Integer), 3 => Some(TraceValueType::Boolean), 4 => Some(TraceValueType::Float), 5 => Some(TraceValueType::UTCDateTime), 6 => Some(TraceValueType::Duration), 7 => Some(TraceValueType::IpAddr), 8 => Some(TraceValueType::List), 9 => Some(TraceValueType::Event), 10 => Some(TraceValueType::Null), _ => None, } } const COUNT: usize = 11; } impl serde::Serialize for TraceValueType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TraceValueType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TracerType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Log" => TracerType::Log, b"Stdout" => TracerType::Stdout, b"Journal" => TracerType::Journal, b"OtelHttp" => TracerType::OtelHttp, b"OtelGrpc" => TracerType::OtelGrpc, } } fn as_str(&self) -> &'static str { match self { TracerType::Log => "Log", TracerType::Stdout => "Stdout", TracerType::Journal => "Journal", TracerType::OtelHttp => "OtelHttp", TracerType::OtelGrpc => "OtelGrpc", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TracerType::Log), 1 => Some(TracerType::Stdout), 2 => Some(TracerType::Journal), 3 => Some(TracerType::OtelHttp), 4 => Some(TracerType::OtelGrpc), _ => None, } } const COUNT: usize = 5; } impl serde::Serialize for TracerType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TracerType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TracingLevel { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"error" => TracingLevel::Error, b"warn" => TracingLevel::Warn, b"info" => TracingLevel::Info, b"debug" => TracingLevel::Debug, b"trace" => TracingLevel::Trace, } } fn as_str(&self) -> &'static str { match self { TracingLevel::Error => "error", TracingLevel::Warn => "warn", TracingLevel::Info => "info", TracingLevel::Debug => "debug", TracingLevel::Trace => "trace", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TracingLevel::Error), 1 => Some(TracingLevel::Warn), 2 => Some(TracingLevel::Info), 3 => Some(TracingLevel::Debug), 4 => Some(TracingLevel::Trace), _ => None, } } const COUNT: usize = 5; } impl serde::Serialize for TracingLevel { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TracingLevel { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TracingLevelOpt { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"disable" => TracingLevelOpt::Disable, b"error" => TracingLevelOpt::Error, b"warn" => TracingLevelOpt::Warn, b"info" => TracingLevelOpt::Info, b"debug" => TracingLevelOpt::Debug, b"trace" => TracingLevelOpt::Trace, } } fn as_str(&self) -> &'static str { match self { TracingLevelOpt::Disable => "disable", TracingLevelOpt::Error => "error", TracingLevelOpt::Warn => "warn", TracingLevelOpt::Info => "info", TracingLevelOpt::Debug => "debug", TracingLevelOpt::Trace => "trace", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TracingLevelOpt::Disable), 1 => Some(TracingLevelOpt::Error), 2 => Some(TracingLevelOpt::Warn), 3 => Some(TracingLevelOpt::Info), 4 => Some(TracingLevelOpt::Debug), 5 => Some(TracingLevelOpt::Trace), _ => None, } } const COUNT: usize = 6; } impl serde::Serialize for TracingLevelOpt { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TracingLevelOpt { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TracingStoreType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"Disabled" => TracingStoreType::Disabled, b"Default" => TracingStoreType::Default, b"FoundationDb" => TracingStoreType::FoundationDb, b"PostgreSql" => TracingStoreType::PostgreSql, b"MySql" => TracingStoreType::MySql, } } fn as_str(&self) -> &'static str { match self { TracingStoreType::Disabled => "Disabled", TracingStoreType::Default => "Default", TracingStoreType::FoundationDb => "FoundationDb", TracingStoreType::PostgreSql => "PostgreSql", TracingStoreType::MySql => "MySql", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TracingStoreType::Disabled), 1 => Some(TracingStoreType::Default), 2 => Some(TracingStoreType::FoundationDb), 3 => Some(TracingStoreType::PostgreSql), 4 => Some(TracingStoreType::MySql), _ => None, } } const COUNT: usize = 5; } impl serde::Serialize for TracingStoreType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TracingStoreType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for TsigAlgorithm { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"hmac-md5" => TsigAlgorithm::HmacMd5, b"gss" => TsigAlgorithm::Gss, b"hmac-sha1" => TsigAlgorithm::HmacSha1, b"hmac-sha224" => TsigAlgorithm::HmacSha224, b"hmac-sha256" => TsigAlgorithm::HmacSha256, b"hmac-sha256-128" => TsigAlgorithm::HmacSha256128, b"hmac-sha384" => TsigAlgorithm::HmacSha384, b"hmac-sha384-192" => TsigAlgorithm::HmacSha384192, b"hmac-sha512" => TsigAlgorithm::HmacSha512, b"hmac-sha512-256" => TsigAlgorithm::HmacSha512256, } } fn as_str(&self) -> &'static str { match self { TsigAlgorithm::HmacMd5 => "hmac-md5", TsigAlgorithm::Gss => "gss", TsigAlgorithm::HmacSha1 => "hmac-sha1", TsigAlgorithm::HmacSha224 => "hmac-sha224", TsigAlgorithm::HmacSha256 => "hmac-sha256", TsigAlgorithm::HmacSha256128 => "hmac-sha256-128", TsigAlgorithm::HmacSha384 => "hmac-sha384", TsigAlgorithm::HmacSha384192 => "hmac-sha384-192", TsigAlgorithm::HmacSha512 => "hmac-sha512", TsigAlgorithm::HmacSha512256 => "hmac-sha512-256", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(TsigAlgorithm::HmacMd5), 1 => Some(TsigAlgorithm::Gss), 2 => Some(TsigAlgorithm::HmacSha1), 3 => Some(TsigAlgorithm::HmacSha224), 4 => Some(TsigAlgorithm::HmacSha256), 5 => Some(TsigAlgorithm::HmacSha256128), 6 => Some(TsigAlgorithm::HmacSha384), 7 => Some(TsigAlgorithm::HmacSha384192), 8 => Some(TsigAlgorithm::HmacSha512), 9 => Some(TsigAlgorithm::HmacSha512256), _ => None, } } const COUNT: usize = 10; } impl serde::Serialize for TsigAlgorithm { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for TsigAlgorithm { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for UserRolesType { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"User" => UserRolesType::User, b"Admin" => UserRolesType::Admin, b"Custom" => UserRolesType::Custom, } } fn as_str(&self) -> &'static str { match self { UserRolesType::User => "User", UserRolesType::Admin => "Admin", UserRolesType::Custom => "Custom", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(UserRolesType::User), 1 => Some(UserRolesType::Admin), 2 => Some(UserRolesType::Custom), _ => None, } } const COUNT: usize = 3; } impl serde::Serialize for UserRolesType { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for UserRolesType { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } } impl EnumImpl for VCardVersion { fn parse(value: &str) -> Option { hashify::tiny_map! { value.as_bytes(), b"v4" => VCardVersion::V4, b"v3" => VCardVersion::V3, } } fn as_str(&self) -> &'static str { match self { VCardVersion::V4 => "v4", VCardVersion::V3 => "v3", } } fn to_id(&self) -> u16 { *self as u16 } fn from_id(id: u16) -> Option { match id { 0 => Some(VCardVersion::V4), 1 => Some(VCardVersion::V3), _ => None, } } const COUNT: usize = 2; } impl serde::Serialize for VCardVersion { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de> serde::Deserialize<'de> for VCardVersion { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = Cow::::deserialize(deserializer)?; Self::parse(&s).ok_or_else(|| serde::de::Error::unknown_variant(&s, &[])) } }