Skip to main content

fidl_fuchsia_component_internal__common/
fidl_fuchsia_component_internal__common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11/// A single entry in an allowlist, expressed in one of three forms:
12///
13///   1. Exact moniker - Most entries should fall under this case,
14///      where the exact monikers of allowed components are listed.
15///      For example, "/foo/bar".
16///   2. Realm - Realms can be allowlisted such that any descendant will be
17///      allowed without being listed explicitly. For example, "/foo/**"
18///      allows any descendant of "/foo" (but not foo itself).
19///   3. Collection - Individual collections can also be allowlisted. For
20///      example, "/foo/bar:**" will allow any child in foo's "bar"
21///      collection and any descendant thereof, but not foo or other
22///      children of foo.
23pub type AllowlistEntryMoniker = String;
24
25/// 256 bits encoded in lower-cased base64 (64 chars).
26pub type InstanceId = String;
27
28/// The maximum size of the JobPolicyAllowlists entries.
29/// This value is currently set arbitrarily.
30pub const MAX_ALLOWLIST_SIZE: u64 = 128;
31
32/// The builtin resolver to use for the fuchsia-boot scheme, if any.
33#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
34#[repr(u8)]
35pub enum BuiltinBootResolver {
36    /// No builtin boot resolver is used.
37    None = 1,
38    /// Try to use the /boot directory from the namespace. Typically this is provided
39    /// to component manager during initialization of the system.
40    Boot = 2,
41}
42
43impl BuiltinBootResolver {
44    #[inline]
45    pub fn from_primitive(prim: u8) -> Option<Self> {
46        match prim {
47            1 => Some(Self::None),
48            2 => Some(Self::Boot),
49            _ => None,
50        }
51    }
52
53    #[inline]
54    pub const fn into_primitive(self) -> u8 {
55        self as u8
56    }
57}
58
59/// Where to log to.
60#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
61#[repr(u8)]
62pub enum LogDestination {
63    /// Log to syslog.
64    Syslog = 1,
65    /// Log to klog.
66    Klog = 2,
67}
68
69impl LogDestination {
70    #[inline]
71    pub fn from_primitive(prim: u8) -> Option<Self> {
72        match prim {
73            1 => Some(Self::Syslog),
74            2 => Some(Self::Klog),
75            _ => None,
76        }
77    }
78
79    #[inline]
80    pub const fn into_primitive(self) -> u8 {
81        self as u8
82    }
83}
84
85/// If and how the realm builder resolver and runner will be used.
86#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
87#[repr(u8)]
88pub enum RealmBuilderResolverAndRunner {
89    /// The realm builder resolver and runner are not used.
90    None = 1,
91    /// The realm builder resolver and runner will be accessed through component
92    /// manager's namespace, and made available to the root realm.
93    Namespace = 2,
94}
95
96impl RealmBuilderResolverAndRunner {
97    #[inline]
98    pub fn from_primitive(prim: u8) -> Option<Self> {
99        match prim {
100            1 => Some(Self::None),
101            2 => Some(Self::Namespace),
102            _ => None,
103        }
104    }
105
106    #[inline]
107    pub const fn into_primitive(self) -> u8 {
108        self as u8
109    }
110}
111
112/// Where to obtain the trace provider from.
113/// to find the trace provider to register with.
114#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
115#[repr(u8)]
116pub enum TraceProvider {
117    /// Default. Get it from the normal fuchsia.tracing.provider.Registry.
118    Namespace = 1,
119    /// Get it from the root component's exposed directory. It is expected that the root
120    /// component exposes `fuchsia.tracing.provider.Registry` protocol to its parent.
121    RootExposed = 2,
122}
123
124impl TraceProvider {
125    #[inline]
126    pub fn from_primitive(prim: u8) -> Option<Self> {
127        match prim {
128            1 => Some(Self::Namespace),
129            2 => Some(Self::RootExposed),
130            _ => None,
131        }
132    }
133
134    #[inline]
135    pub const fn into_primitive(self) -> u8 {
136        self as u8
137    }
138}
139
140/// Where to obtain the vmex resource from, if this component_manager is hosting bootfs.
141#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
142#[repr(u8)]
143pub enum VmexSource {
144    /// Get it from the PA_SYSTEM_RESOURCE handle passed to component_manager
145    SystemResource = 1,
146    /// Get it from the /svc/fuchsia.kernel.VmexResource protocol in
147    /// component_manager's namespace.
148    Namespace = 2,
149}
150
151impl VmexSource {
152    #[inline]
153    pub fn from_primitive(prim: u8) -> Option<Self> {
154        match prim {
155            1 => Some(Self::SystemResource),
156            2 => Some(Self::Namespace),
157            _ => None,
158        }
159    }
160
161    #[inline]
162    pub const fn into_primitive(self) -> u8 {
163        self as u8
164    }
165}
166
167/// The enforcement and validation policy to apply to component target ABI revisions.
168#[derive(Clone, Debug, Default, PartialEq)]
169pub struct AbiRevisionPolicy {
170    /// Allowlist entry monikers for components that will be permitted to run
171    /// even if they fail ABI revision checks. This should _never_ be used. Any
172    /// component that bypasses these checks is unsupported by the platform and
173    /// may behave in unexpected ways!
174    pub allowlist: Option<Vec<String>>,
175    #[doc(hidden)]
176    pub __source_breaking: fidl::marker::SourceBreaking,
177}
178
179impl fidl::Persistable for AbiRevisionPolicy {}
180
181#[derive(Clone, Debug, Default, PartialEq)]
182pub struct AllowlistedDirectory {
183    #[doc(hidden)]
184    pub __source_breaking: fidl::marker::SourceBreaking,
185}
186
187impl fidl::Persistable for AllowlistedDirectory {}
188
189#[derive(Clone, Debug, Default, PartialEq)]
190pub struct AllowlistedProtocol {
191    #[doc(hidden)]
192    pub __source_breaking: fidl::marker::SourceBreaking,
193}
194
195impl fidl::Persistable for AllowlistedProtocol {}
196
197#[derive(Clone, Debug, Default, PartialEq)]
198pub struct AllowlistedResolver {
199    #[doc(hidden)]
200    pub __source_breaking: fidl::marker::SourceBreaking,
201}
202
203impl fidl::Persistable for AllowlistedResolver {}
204
205#[derive(Clone, Debug, Default, PartialEq)]
206pub struct AllowlistedRunner {
207    #[doc(hidden)]
208    pub __source_breaking: fidl::marker::SourceBreaking,
209}
210
211impl fidl::Persistable for AllowlistedRunner {}
212
213#[derive(Clone, Debug, Default, PartialEq)]
214pub struct AllowlistedService {
215    #[doc(hidden)]
216    pub __source_breaking: fidl::marker::SourceBreaking,
217}
218
219impl fidl::Persistable for AllowlistedService {}
220
221#[derive(Clone, Debug, Default, PartialEq)]
222pub struct AllowlistedStorage {
223    #[doc(hidden)]
224    pub __source_breaking: fidl::marker::SourceBreaking,
225}
226
227impl fidl::Persistable for AllowlistedStorage {}
228
229/// Defines a single capability policy entry in the set of capability policy
230/// allowlists.
231#[derive(Clone, Debug, Default, PartialEq)]
232pub struct CapabilityAllowlistEntry {
233    /// The `source_moniker` represents the origin of a capability. The
234    /// `source_moniker` is either a moniker or '<component_manager>'.
235    pub source_moniker: Option<String>,
236    /// The source name of this particular capability.
237    pub source_name: Option<String>,
238    /// Represents the type of capability that is being restricted along
239    /// with any other properties required by a particular capability type.
240    pub capability: Option<AllowlistedCapability>,
241    /// The set of components, described by either exact monikers, realm, or collection,
242    /// that are allowed to use this specific capability.
243    pub target_monikers: Option<Vec<String>>,
244    /// The original source type of this capability, self or framework.
245    pub source: Option<fidl_fuchsia_component_decl__common::Ref>,
246    #[doc(hidden)]
247    pub __source_breaking: fidl::marker::SourceBreaking,
248}
249
250impl fidl::Persistable for CapabilityAllowlistEntry {}
251
252/// Defines the total set of capability allowlists. Each
253/// `source_moniker` + `capability` pair must be unique in the vector.
254#[derive(Clone, Debug, Default, PartialEq)]
255pub struct CapabilityPolicyAllowlists {
256    pub allowlist: Option<Vec<CapabilityAllowlistEntry>>,
257    #[doc(hidden)]
258    pub __source_breaking: fidl::marker::SourceBreaking,
259}
260
261impl fidl::Persistable for CapabilityPolicyAllowlists {}
262
263/// Allowlists for privileged child options.
264#[derive(Clone, Debug, Default, PartialEq)]
265pub struct ChildPolicyAllowlists {
266    /// Allowlist entry monikers of component instances allowed to have the
267    /// `on_terminate=REBOOT` in their `children` declaration.
268    pub reboot_on_terminate: Option<Vec<String>>,
269    #[doc(hidden)]
270    pub __source_breaking: fidl::marker::SourceBreaking,
271}
272
273impl fidl::Persistable for ChildPolicyAllowlists {}
274
275/// Top-level type describing the component ID index.
276#[derive(Clone, Debug, Default, PartialEq)]
277pub struct ComponentIdIndex {
278    /// A list of component ID instance entries.
279    ///
280    /// Required, but may be empty.
281    pub instances: Option<Vec<InstanceIdEntry>>,
282    #[doc(hidden)]
283    pub __source_breaking: fidl::marker::SourceBreaking,
284}
285
286impl fidl::Persistable for ComponentIdIndex {}
287
288#[derive(Clone, Debug, Default, PartialEq)]
289pub struct Config {
290    /// If true, component manager will be in debug mode. In this mode, component manager
291    /// provides the `EventSource` protocol and exposes this protocol. Component
292    /// manager will not start until it is resumed by a call to
293    /// `EventSource.StartComponentTree`.
294    ///
295    /// This is done so that an external component (say an integration test) can subscribe
296    /// to events before the root component has started.
297    pub debug: Option<bool>,
298    /// How many children, maximum, are returned by a call to `Realm.ChildIterator.next()`.
299    pub list_children_batch_size: Option<u32>,
300    /// Security policy configuration.
301    pub security_policy: Option<SecurityPolicy>,
302    /// Capabilities offered from component manager's namespace.
303    pub namespace_capabilities: Option<Vec<fidl_fuchsia_component_decl__common::Capability>>,
304    /// If true, component_manager will serve an instance of fuchsia.process.Launcher and use this
305    /// launcher for the built-in ELF component runner. The root component can additionally
306    /// use and/or offer this service using `/builtin/fuchsia.process.Launcher` from realm.
307    /// This flag exists because the built-in process launcher *only* works when
308    /// component_manager runs under a job that has ZX_POL_NEW_PROCESS set to allow, like the root
309    /// job. Otherwise, the component_manager process cannot directly create process through
310    /// zx_process_create. When we run component_manager elsewhere, like in test environments, it
311    /// has to use the fuchsia.process.Launcher service provided through its namespace instead.
312    pub use_builtin_process_launcher: Option<bool>,
313    /// If true, component_manager will maintain a UTC kernel clock and vend write handles through
314    /// an instance of `fuchsia.time.Maintenance`. This flag should only be used with the top-level
315    /// component_manager.
316    pub maintain_utc_clock: Option<bool>,
317    /// The number of threads to use for running component_manager's executor.
318    /// If not present, interpreted as 1.
319    pub num_threads: Option<u8>,
320    /// URL of the root component to launch. This field is used if the no URL
321    /// is passed to component manager. If value is passed in both places, then
322    /// an error is raised.
323    pub root_component_url: Option<String>,
324    /// Path to the component ID index. An empty value defaults to an empty index.
325    /// An invalid index causes component_manager to abort.
326    pub component_id_index_path: Option<String>,
327    /// Where to log to.
328    pub log_destination: Option<LogDestination>,
329    /// If true, component manager will log all events dispatched in the topology.
330    pub log_all_events: Option<bool>,
331    /// Which builtin resolver to use for the fuchsia-boot scheme.
332    /// If not present, interpreted as BuiltinBootResolver.NONE.
333    pub builtin_boot_resolver: Option<BuiltinBootResolver>,
334    /// If and how the realm builder resolver and runner will be used. Typically
335    /// these capabilities from realm builder are available to a nested
336    /// component manager that is undergoing an integration test.
337    pub realm_builder_resolver_and_runner: Option<RealmBuilderResolverAndRunner>,
338    /// Capabilities offered from component manager as built-in capabilities.
339    pub builtin_capabilities: Option<Vec<fidl_fuchsia_component_decl__common::Capability>>,
340    /// Enables Component Manager's introspection APIs (RealmQuery, RealmExplorer,
341    /// RouteValidator, LifecycleController, etc.) for use by components.
342    pub enable_introspection: Option<bool>,
343    /// The enforcement and validation policy to apply to component target ABI
344    /// revisions.
345    pub abi_revision_policy: Option<AbiRevisionPolicy>,
346    /// Where to obtain the vmex resource from, if this component_manager is hosting bootfs.
347    /// If not present, defaults to `VmexSource::SYSTEM_RESOURCE`.
348    pub vmex_source: Option<VmexSource>,
349    /// Information about the health checks during the update process.
350    pub health_check: Option<HealthCheck>,
351    /// Where to look for the trace provider. If missing, defaults to TraceProvider::NAMESPACE.
352    /// This is ignored on non-tracing builds.
353    pub trace_provider: Option<TraceProvider>,
354    /// Capabilities to inject into components at runtime.
355    pub inject_capabilities: Option<Vec<InjectedCapabilities>>,
356    /// Runtime configuration for Scudo heap allocation, using a 'KEY=VALUE,KEY=VALUE'
357    /// format. See Scudo flags documentation for details. It is shadowed by `SCUDO_OPTIONS`
358    pub scudo_options: Option<String>,
359    #[doc(hidden)]
360    pub __source_breaking: fidl::marker::SourceBreaking,
361}
362
363impl fidl::Persistable for Config {}
364
365/// Defines a capability policy entry in the set of debug capability policy
366/// allowlists.
367#[derive(Clone, Debug, Default, PartialEq)]
368pub struct DebugRegistrationAllowlistEntry {
369    /// The name of the capability as it's registered in the environment.
370    pub name: Option<String>,
371    /// Represents the type of capability that is being restricted along
372    /// with any other properties required by a particular capability type.
373    pub debug: Option<AllowlistedDebugRegistration>,
374    /// The moniker of the component which is allowed to register
375    /// this capability in its environment's debug sction.
376    pub moniker: Option<String>,
377    /// Name of the environment where this capability can be registered.
378    pub environment_name: Option<String>,
379    #[doc(hidden)]
380    pub __source_breaking: fidl::marker::SourceBreaking,
381}
382
383impl fidl::Persistable for DebugRegistrationAllowlistEntry {}
384
385/// Defines the total set of debug capability allowlists.
386#[derive(Clone, Debug, Default, PartialEq)]
387pub struct DebugRegistrationPolicyAllowlists {
388    pub allowlist: Option<Vec<DebugRegistrationAllowlistEntry>>,
389    #[doc(hidden)]
390    pub __source_breaking: fidl::marker::SourceBreaking,
391}
392
393impl fidl::Persistable for DebugRegistrationPolicyAllowlists {}
394
395/// This value is used internally by event stream routers, to carry information
396/// pertinent to the route.
397#[derive(Clone, Debug, Default, PartialEq)]
398pub struct EventStreamRouteMetadata {
399    /// The moniker of the component that has set a scope on this event stream.
400    /// Unset if there is no scope on the event stream.
401    pub scope_moniker: Option<String>,
402    /// The scope(s) from which the consumer of this event stream will be able
403    /// to observe events. Relative to the `scope_moniker`. Unset if there is no
404    /// scope on the event stream.
405    pub scope: Option<Vec<fidl_fuchsia_component_decl__common::Ref>>,
406    #[doc(hidden)]
407    pub __source_breaking: fidl::marker::SourceBreaking,
408}
409
410impl fidl::Persistable for EventStreamRouteMetadata {}
411
412/// Information about the health checks during the update process.
413#[derive(Clone, Debug, Default, PartialEq)]
414pub struct HealthCheck {
415    /// Component monikers that must be healthy in order to complete an OTA update.
416    pub monikers: Option<Vec<String>>,
417    #[doc(hidden)]
418    pub __source_breaking: fidl::marker::SourceBreaking,
419}
420
421impl fidl::Persistable for HealthCheck {}
422
423/// Declares a group of extra capabilities that are layered at runtime on top of
424/// those that would normally be routed to the component.
425#[derive(Clone, Debug, Default, PartialEq)]
426pub struct InjectedCapabilities {
427    /// (Required) Components that will have these capabilities injected into.
428    pub components: Option<Vec<String>>,
429    /// (Optional) Capabilities to be injected.
430    pub use_: Option<Vec<InjectedUse>>,
431    #[doc(hidden)]
432    pub __source_breaking: fidl::marker::SourceBreaking,
433}
434
435impl fidl::Persistable for InjectedCapabilities {}
436
437/// Declares a protocol to be injected into a component.
438#[derive(Clone, Debug, Default, PartialEq)]
439pub struct InjectedUseProtocol {
440    /// (Required) Name identifying the protocol within the root component.
441    pub source_name: Option<String>,
442    /// (Required) The path where the capability should be injected in the new
443    /// component's namespace.
444    ///
445    /// Must be an absolute path starting with /.
446    pub target_path: Option<String>,
447    #[doc(hidden)]
448    pub __source_breaking: fidl::marker::SourceBreaking,
449}
450
451impl fidl::Persistable for InjectedUseProtocol {}
452
453#[derive(Clone, Debug, Default, PartialEq)]
454pub struct InstanceIdEntry {
455    /// A 256-bit identifier encoded in base64 which is unique across all other
456    /// instance IDs in the index.
457    pub instance_id: Option<String>,
458    /// The moniker identifying the component instance.
459    pub moniker: Option<String>,
460    /// Do not generate an error if this entry has the same instance ID as
461    /// another.
462    pub ignore_duplicate_id: Option<bool>,
463    #[doc(hidden)]
464    pub __source_breaking: fidl::marker::SourceBreaking,
465}
466
467impl fidl::Persistable for InstanceIdEntry {}
468
469/// Allowlists for Zircon job policy.
470#[derive(Clone, Debug, Default, PartialEq)]
471pub struct JobPolicyAllowlists {
472    /// Allowlist entry monikers for components allowed to be given the
473    /// ZX_POL_AMBIENT_MARK_VMO_EXEC job policy.
474    ///
475    /// Components must request this policy by including "job_policy_ambient_mark_vmo_exec: true" in
476    /// their CML's `program` section and must be using the ELF runner.
477    /// This is equivalent to the v1 'deprecated-ambient-replace-as-executable' feature.
478    pub ambient_mark_vmo_exec: Option<Vec<String>>,
479    /// Allowlist entry monikers for components allowed to have their original process
480    /// marked as critical to component_manager's job.
481    ///
482    /// Components must request this critical marking by including "main_process_critical: true" in
483    /// their CML's `program` section and must be using the ELF runner.
484    pub main_process_critical: Option<Vec<String>>,
485    /// Allowlist entry monikers for components allowed to call zx_process_create directly
486    /// (e.g., do not have ZX_POL_NEW_PROCESS set to ZX_POL_ACTION_DENY).
487    ///
488    /// Components must request this policy by including "job_policy_create_raw_processes: true" in
489    /// their manifest's program object and must be using the ELF runner.
490    pub create_raw_processes: Option<Vec<String>>,
491    #[doc(hidden)]
492    pub __source_breaking: fidl::marker::SourceBreaking,
493}
494
495impl fidl::Persistable for JobPolicyAllowlists {}
496
497/// Runtime security policy.
498#[derive(Clone, Debug, Default, PartialEq)]
499pub struct SecurityPolicy {
500    /// Allowlists for Zircon job policy.
501    pub job_policy: Option<JobPolicyAllowlists>,
502    /// Capability access policy.
503    pub capability_policy: Option<CapabilityPolicyAllowlists>,
504    /// Debug capability registration policy.
505    pub debug_registration_policy: Option<DebugRegistrationPolicyAllowlists>,
506    /// Component child options policy.
507    pub child_policy: Option<ChildPolicyAllowlists>,
508    #[doc(hidden)]
509    pub __source_breaking: fidl::marker::SourceBreaking,
510}
511
512impl fidl::Persistable for SecurityPolicy {}
513
514/// Represents the class of capabilities supported to be allowlisted.
515#[derive(Clone, Debug)]
516pub enum AllowlistedCapability {
517    Directory(AllowlistedDirectory),
518    Protocol(AllowlistedProtocol),
519    Service(AllowlistedService),
520    Storage(AllowlistedStorage),
521    Runner(AllowlistedRunner),
522    Resolver(AllowlistedResolver),
523    #[doc(hidden)]
524    __SourceBreaking {
525        unknown_ordinal: u64,
526    },
527}
528
529/// Pattern that matches an unknown `AllowlistedCapability` member.
530#[macro_export]
531macro_rules! AllowlistedCapabilityUnknown {
532    () => {
533        _
534    };
535}
536
537// Custom PartialEq so that unknown variants are not equal to themselves.
538impl PartialEq for AllowlistedCapability {
539    fn eq(&self, other: &Self) -> bool {
540        match (self, other) {
541            (Self::Directory(x), Self::Directory(y)) => *x == *y,
542            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
543            (Self::Service(x), Self::Service(y)) => *x == *y,
544            (Self::Storage(x), Self::Storage(y)) => *x == *y,
545            (Self::Runner(x), Self::Runner(y)) => *x == *y,
546            (Self::Resolver(x), Self::Resolver(y)) => *x == *y,
547            _ => false,
548        }
549    }
550}
551
552impl AllowlistedCapability {
553    #[inline]
554    pub fn ordinal(&self) -> u64 {
555        match *self {
556            Self::Directory(_) => 1,
557            Self::Protocol(_) => 3,
558            Self::Service(_) => 4,
559            Self::Storage(_) => 5,
560            Self::Runner(_) => 6,
561            Self::Resolver(_) => 7,
562            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
563        }
564    }
565
566    #[inline]
567    pub fn unknown_variant_for_testing() -> Self {
568        Self::__SourceBreaking { unknown_ordinal: 0 }
569    }
570
571    #[inline]
572    pub fn is_unknown(&self) -> bool {
573        match self {
574            Self::__SourceBreaking { .. } => true,
575            _ => false,
576        }
577    }
578}
579
580impl fidl::Persistable for AllowlistedCapability {}
581
582/// Represents the class of capabilities supported to be allowlisted.
583#[derive(Clone, Debug)]
584pub enum AllowlistedDebugRegistration {
585    Protocol(AllowlistedProtocol),
586    #[doc(hidden)]
587    __SourceBreaking {
588        unknown_ordinal: u64,
589    },
590}
591
592/// Pattern that matches an unknown `AllowlistedDebugRegistration` member.
593#[macro_export]
594macro_rules! AllowlistedDebugRegistrationUnknown {
595    () => {
596        _
597    };
598}
599
600// Custom PartialEq so that unknown variants are not equal to themselves.
601impl PartialEq for AllowlistedDebugRegistration {
602    fn eq(&self, other: &Self) -> bool {
603        match (self, other) {
604            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
605            _ => false,
606        }
607    }
608}
609
610impl AllowlistedDebugRegistration {
611    #[inline]
612    pub fn ordinal(&self) -> u64 {
613        match *self {
614            Self::Protocol(_) => 1,
615            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
616        }
617    }
618
619    #[inline]
620    pub fn unknown_variant_for_testing() -> Self {
621        Self::__SourceBreaking { unknown_ordinal: 0 }
622    }
623
624    #[inline]
625    pub fn is_unknown(&self) -> bool {
626        match self {
627            Self::__SourceBreaking { .. } => true,
628            _ => false,
629        }
630    }
631}
632
633impl fidl::Persistable for AllowlistedDebugRegistration {}
634
635/// Declares a capability to be injected into a component.
636#[derive(Clone, Debug)]
637pub enum InjectedUse {
638    Protocol(InjectedUseProtocol),
639    #[doc(hidden)]
640    __SourceBreaking {
641        unknown_ordinal: u64,
642    },
643}
644
645/// Pattern that matches an unknown `InjectedUse` member.
646#[macro_export]
647macro_rules! InjectedUseUnknown {
648    () => {
649        _
650    };
651}
652
653// Custom PartialEq so that unknown variants are not equal to themselves.
654impl PartialEq for InjectedUse {
655    fn eq(&self, other: &Self) -> bool {
656        match (self, other) {
657            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
658            _ => false,
659        }
660    }
661}
662
663impl InjectedUse {
664    #[inline]
665    pub fn ordinal(&self) -> u64 {
666        match *self {
667            Self::Protocol(_) => 1,
668            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
669        }
670    }
671
672    #[inline]
673    pub fn unknown_variant_for_testing() -> Self {
674        Self::__SourceBreaking { unknown_ordinal: 0 }
675    }
676
677    #[inline]
678    pub fn is_unknown(&self) -> bool {
679        match self {
680            Self::__SourceBreaking { .. } => true,
681            _ => false,
682        }
683    }
684}
685
686impl fidl::Persistable for InjectedUse {}
687
688pub mod component_sandbox_retriever_ordinals {
689    pub const GET_MY_SANDBOX: u64 = 0x61ca075fb9860e84;
690}
691
692mod internal {
693    use super::*;
694    unsafe impl fidl::encoding::TypeMarker for BuiltinBootResolver {
695        type Owned = Self;
696
697        #[inline(always)]
698        fn inline_align(_context: fidl::encoding::Context) -> usize {
699            std::mem::align_of::<u8>()
700        }
701
702        #[inline(always)]
703        fn inline_size(_context: fidl::encoding::Context) -> usize {
704            std::mem::size_of::<u8>()
705        }
706
707        #[inline(always)]
708        fn encode_is_copy() -> bool {
709            true
710        }
711
712        #[inline(always)]
713        fn decode_is_copy() -> bool {
714            false
715        }
716    }
717
718    impl fidl::encoding::ValueTypeMarker for BuiltinBootResolver {
719        type Borrowed<'a> = Self;
720        #[inline(always)]
721        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
722            *value
723        }
724    }
725
726    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
727        for BuiltinBootResolver
728    {
729        #[inline]
730        unsafe fn encode(
731            self,
732            encoder: &mut fidl::encoding::Encoder<'_, D>,
733            offset: usize,
734            _depth: fidl::encoding::Depth,
735        ) -> fidl::Result<()> {
736            encoder.debug_check_bounds::<Self>(offset);
737            encoder.write_num(self.into_primitive(), offset);
738            Ok(())
739        }
740    }
741
742    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BuiltinBootResolver {
743        #[inline(always)]
744        fn new_empty() -> Self {
745            Self::None
746        }
747
748        #[inline]
749        unsafe fn decode(
750            &mut self,
751            decoder: &mut fidl::encoding::Decoder<'_, D>,
752            offset: usize,
753            _depth: fidl::encoding::Depth,
754        ) -> fidl::Result<()> {
755            decoder.debug_check_bounds::<Self>(offset);
756            let prim = decoder.read_num::<u8>(offset);
757
758            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
759            Ok(())
760        }
761    }
762    unsafe impl fidl::encoding::TypeMarker for LogDestination {
763        type Owned = Self;
764
765        #[inline(always)]
766        fn inline_align(_context: fidl::encoding::Context) -> usize {
767            std::mem::align_of::<u8>()
768        }
769
770        #[inline(always)]
771        fn inline_size(_context: fidl::encoding::Context) -> usize {
772            std::mem::size_of::<u8>()
773        }
774
775        #[inline(always)]
776        fn encode_is_copy() -> bool {
777            true
778        }
779
780        #[inline(always)]
781        fn decode_is_copy() -> bool {
782            false
783        }
784    }
785
786    impl fidl::encoding::ValueTypeMarker for LogDestination {
787        type Borrowed<'a> = Self;
788        #[inline(always)]
789        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
790            *value
791        }
792    }
793
794    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for LogDestination {
795        #[inline]
796        unsafe fn encode(
797            self,
798            encoder: &mut fidl::encoding::Encoder<'_, D>,
799            offset: usize,
800            _depth: fidl::encoding::Depth,
801        ) -> fidl::Result<()> {
802            encoder.debug_check_bounds::<Self>(offset);
803            encoder.write_num(self.into_primitive(), offset);
804            Ok(())
805        }
806    }
807
808    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LogDestination {
809        #[inline(always)]
810        fn new_empty() -> Self {
811            Self::Syslog
812        }
813
814        #[inline]
815        unsafe fn decode(
816            &mut self,
817            decoder: &mut fidl::encoding::Decoder<'_, D>,
818            offset: usize,
819            _depth: fidl::encoding::Depth,
820        ) -> fidl::Result<()> {
821            decoder.debug_check_bounds::<Self>(offset);
822            let prim = decoder.read_num::<u8>(offset);
823
824            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
825            Ok(())
826        }
827    }
828    unsafe impl fidl::encoding::TypeMarker for RealmBuilderResolverAndRunner {
829        type Owned = Self;
830
831        #[inline(always)]
832        fn inline_align(_context: fidl::encoding::Context) -> usize {
833            std::mem::align_of::<u8>()
834        }
835
836        #[inline(always)]
837        fn inline_size(_context: fidl::encoding::Context) -> usize {
838            std::mem::size_of::<u8>()
839        }
840
841        #[inline(always)]
842        fn encode_is_copy() -> bool {
843            true
844        }
845
846        #[inline(always)]
847        fn decode_is_copy() -> bool {
848            false
849        }
850    }
851
852    impl fidl::encoding::ValueTypeMarker for RealmBuilderResolverAndRunner {
853        type Borrowed<'a> = Self;
854        #[inline(always)]
855        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
856            *value
857        }
858    }
859
860    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
861        for RealmBuilderResolverAndRunner
862    {
863        #[inline]
864        unsafe fn encode(
865            self,
866            encoder: &mut fidl::encoding::Encoder<'_, D>,
867            offset: usize,
868            _depth: fidl::encoding::Depth,
869        ) -> fidl::Result<()> {
870            encoder.debug_check_bounds::<Self>(offset);
871            encoder.write_num(self.into_primitive(), offset);
872            Ok(())
873        }
874    }
875
876    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
877        for RealmBuilderResolverAndRunner
878    {
879        #[inline(always)]
880        fn new_empty() -> Self {
881            Self::None
882        }
883
884        #[inline]
885        unsafe fn decode(
886            &mut self,
887            decoder: &mut fidl::encoding::Decoder<'_, D>,
888            offset: usize,
889            _depth: fidl::encoding::Depth,
890        ) -> fidl::Result<()> {
891            decoder.debug_check_bounds::<Self>(offset);
892            let prim = decoder.read_num::<u8>(offset);
893
894            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
895            Ok(())
896        }
897    }
898    unsafe impl fidl::encoding::TypeMarker for TraceProvider {
899        type Owned = Self;
900
901        #[inline(always)]
902        fn inline_align(_context: fidl::encoding::Context) -> usize {
903            std::mem::align_of::<u8>()
904        }
905
906        #[inline(always)]
907        fn inline_size(_context: fidl::encoding::Context) -> usize {
908            std::mem::size_of::<u8>()
909        }
910
911        #[inline(always)]
912        fn encode_is_copy() -> bool {
913            true
914        }
915
916        #[inline(always)]
917        fn decode_is_copy() -> bool {
918            false
919        }
920    }
921
922    impl fidl::encoding::ValueTypeMarker for TraceProvider {
923        type Borrowed<'a> = Self;
924        #[inline(always)]
925        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
926            *value
927        }
928    }
929
930    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for TraceProvider {
931        #[inline]
932        unsafe fn encode(
933            self,
934            encoder: &mut fidl::encoding::Encoder<'_, D>,
935            offset: usize,
936            _depth: fidl::encoding::Depth,
937        ) -> fidl::Result<()> {
938            encoder.debug_check_bounds::<Self>(offset);
939            encoder.write_num(self.into_primitive(), offset);
940            Ok(())
941        }
942    }
943
944    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TraceProvider {
945        #[inline(always)]
946        fn new_empty() -> Self {
947            Self::Namespace
948        }
949
950        #[inline]
951        unsafe fn decode(
952            &mut self,
953            decoder: &mut fidl::encoding::Decoder<'_, D>,
954            offset: usize,
955            _depth: fidl::encoding::Depth,
956        ) -> fidl::Result<()> {
957            decoder.debug_check_bounds::<Self>(offset);
958            let prim = decoder.read_num::<u8>(offset);
959
960            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
961            Ok(())
962        }
963    }
964    unsafe impl fidl::encoding::TypeMarker for VmexSource {
965        type Owned = Self;
966
967        #[inline(always)]
968        fn inline_align(_context: fidl::encoding::Context) -> usize {
969            std::mem::align_of::<u8>()
970        }
971
972        #[inline(always)]
973        fn inline_size(_context: fidl::encoding::Context) -> usize {
974            std::mem::size_of::<u8>()
975        }
976
977        #[inline(always)]
978        fn encode_is_copy() -> bool {
979            true
980        }
981
982        #[inline(always)]
983        fn decode_is_copy() -> bool {
984            false
985        }
986    }
987
988    impl fidl::encoding::ValueTypeMarker for VmexSource {
989        type Borrowed<'a> = Self;
990        #[inline(always)]
991        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
992            *value
993        }
994    }
995
996    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for VmexSource {
997        #[inline]
998        unsafe fn encode(
999            self,
1000            encoder: &mut fidl::encoding::Encoder<'_, D>,
1001            offset: usize,
1002            _depth: fidl::encoding::Depth,
1003        ) -> fidl::Result<()> {
1004            encoder.debug_check_bounds::<Self>(offset);
1005            encoder.write_num(self.into_primitive(), offset);
1006            Ok(())
1007        }
1008    }
1009
1010    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VmexSource {
1011        #[inline(always)]
1012        fn new_empty() -> Self {
1013            Self::SystemResource
1014        }
1015
1016        #[inline]
1017        unsafe fn decode(
1018            &mut self,
1019            decoder: &mut fidl::encoding::Decoder<'_, D>,
1020            offset: usize,
1021            _depth: fidl::encoding::Depth,
1022        ) -> fidl::Result<()> {
1023            decoder.debug_check_bounds::<Self>(offset);
1024            let prim = decoder.read_num::<u8>(offset);
1025
1026            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1027            Ok(())
1028        }
1029    }
1030
1031    impl AbiRevisionPolicy {
1032        #[inline(always)]
1033        fn max_ordinal_present(&self) -> u64 {
1034            if let Some(_) = self.allowlist {
1035                return 1;
1036            }
1037            0
1038        }
1039    }
1040
1041    impl fidl::encoding::ValueTypeMarker for AbiRevisionPolicy {
1042        type Borrowed<'a> = &'a Self;
1043        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1044            value
1045        }
1046    }
1047
1048    unsafe impl fidl::encoding::TypeMarker for AbiRevisionPolicy {
1049        type Owned = Self;
1050
1051        #[inline(always)]
1052        fn inline_align(_context: fidl::encoding::Context) -> usize {
1053            8
1054        }
1055
1056        #[inline(always)]
1057        fn inline_size(_context: fidl::encoding::Context) -> usize {
1058            16
1059        }
1060    }
1061
1062    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AbiRevisionPolicy, D>
1063        for &AbiRevisionPolicy
1064    {
1065        unsafe fn encode(
1066            self,
1067            encoder: &mut fidl::encoding::Encoder<'_, D>,
1068            offset: usize,
1069            mut depth: fidl::encoding::Depth,
1070        ) -> fidl::Result<()> {
1071            encoder.debug_check_bounds::<AbiRevisionPolicy>(offset);
1072            // Vector header
1073            let max_ordinal: u64 = self.max_ordinal_present();
1074            encoder.write_num(max_ordinal, offset);
1075            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1076            // Calling encoder.out_of_line_offset(0) is not allowed.
1077            if max_ordinal == 0 {
1078                return Ok(());
1079            }
1080            depth.increment()?;
1081            let envelope_size = 8;
1082            let bytes_len = max_ordinal as usize * envelope_size;
1083            #[allow(unused_variables)]
1084            let offset = encoder.out_of_line_offset(bytes_len);
1085            let mut _prev_end_offset: usize = 0;
1086            if 1 > max_ordinal {
1087                return Ok(());
1088            }
1089
1090            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1091            // are envelope_size bytes.
1092            let cur_offset: usize = (1 - 1) * envelope_size;
1093
1094            // Zero reserved fields.
1095            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1096
1097            // Safety:
1098            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1099            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1100            //   envelope_size bytes, there is always sufficient room.
1101            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
1102            self.allowlist.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
1103            encoder, offset + cur_offset, depth
1104        )?;
1105
1106            _prev_end_offset = cur_offset + envelope_size;
1107
1108            Ok(())
1109        }
1110    }
1111
1112    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AbiRevisionPolicy {
1113        #[inline(always)]
1114        fn new_empty() -> Self {
1115            Self::default()
1116        }
1117
1118        unsafe fn decode(
1119            &mut self,
1120            decoder: &mut fidl::encoding::Decoder<'_, D>,
1121            offset: usize,
1122            mut depth: fidl::encoding::Depth,
1123        ) -> fidl::Result<()> {
1124            decoder.debug_check_bounds::<Self>(offset);
1125            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1126                None => return Err(fidl::Error::NotNullable),
1127                Some(len) => len,
1128            };
1129            // Calling decoder.out_of_line_offset(0) is not allowed.
1130            if len == 0 {
1131                return Ok(());
1132            };
1133            depth.increment()?;
1134            let envelope_size = 8;
1135            let bytes_len = len * envelope_size;
1136            let offset = decoder.out_of_line_offset(bytes_len)?;
1137            // Decode the envelope for each type.
1138            let mut _next_ordinal_to_read = 0;
1139            let mut next_offset = offset;
1140            let end_offset = offset + bytes_len;
1141            _next_ordinal_to_read += 1;
1142            if next_offset >= end_offset {
1143                return Ok(());
1144            }
1145
1146            // Decode unknown envelopes for gaps in ordinals.
1147            while _next_ordinal_to_read < 1 {
1148                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1149                _next_ordinal_to_read += 1;
1150                next_offset += envelope_size;
1151            }
1152
1153            let next_out_of_line = decoder.next_out_of_line();
1154            let handles_before = decoder.remaining_handles();
1155            if let Some((inlined, num_bytes, num_handles)) =
1156                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1157            {
1158                let member_inline_size = <fidl::encoding::Vector<
1159                    fidl::encoding::BoundedString<4096>,
1160                    128,
1161                > as fidl::encoding::TypeMarker>::inline_size(
1162                    decoder.context
1163                );
1164                if inlined != (member_inline_size <= 4) {
1165                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1166                }
1167                let inner_offset;
1168                let mut inner_depth = depth.clone();
1169                if inlined {
1170                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1171                    inner_offset = next_offset;
1172                } else {
1173                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1174                    inner_depth.increment()?;
1175                }
1176                let val_ref = self.allowlist.get_or_insert_with(|| {
1177                    fidl::new_empty!(
1178                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
1179                        D
1180                    )
1181                });
1182                fidl::decode!(
1183                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
1184                    D,
1185                    val_ref,
1186                    decoder,
1187                    inner_offset,
1188                    inner_depth
1189                )?;
1190                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1191                {
1192                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1193                }
1194                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1195                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1196                }
1197            }
1198
1199            next_offset += envelope_size;
1200
1201            // Decode the remaining unknown envelopes.
1202            while next_offset < end_offset {
1203                _next_ordinal_to_read += 1;
1204                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1205                next_offset += envelope_size;
1206            }
1207
1208            Ok(())
1209        }
1210    }
1211
1212    impl AllowlistedDirectory {
1213        #[inline(always)]
1214        fn max_ordinal_present(&self) -> u64 {
1215            0
1216        }
1217    }
1218
1219    impl fidl::encoding::ValueTypeMarker for AllowlistedDirectory {
1220        type Borrowed<'a> = &'a Self;
1221        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1222            value
1223        }
1224    }
1225
1226    unsafe impl fidl::encoding::TypeMarker for AllowlistedDirectory {
1227        type Owned = Self;
1228
1229        #[inline(always)]
1230        fn inline_align(_context: fidl::encoding::Context) -> usize {
1231            8
1232        }
1233
1234        #[inline(always)]
1235        fn inline_size(_context: fidl::encoding::Context) -> usize {
1236            16
1237        }
1238    }
1239
1240    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedDirectory, D>
1241        for &AllowlistedDirectory
1242    {
1243        unsafe fn encode(
1244            self,
1245            encoder: &mut fidl::encoding::Encoder<'_, D>,
1246            offset: usize,
1247            mut depth: fidl::encoding::Depth,
1248        ) -> fidl::Result<()> {
1249            encoder.debug_check_bounds::<AllowlistedDirectory>(offset);
1250            // Vector header
1251            let max_ordinal: u64 = self.max_ordinal_present();
1252            encoder.write_num(max_ordinal, offset);
1253            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1254            // Calling encoder.out_of_line_offset(0) is not allowed.
1255            if max_ordinal == 0 {
1256                return Ok(());
1257            }
1258            depth.increment()?;
1259            let envelope_size = 8;
1260            let bytes_len = max_ordinal as usize * envelope_size;
1261            #[allow(unused_variables)]
1262            let offset = encoder.out_of_line_offset(bytes_len);
1263            let mut _prev_end_offset: usize = 0;
1264
1265            Ok(())
1266        }
1267    }
1268
1269    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedDirectory {
1270        #[inline(always)]
1271        fn new_empty() -> Self {
1272            Self::default()
1273        }
1274
1275        unsafe fn decode(
1276            &mut self,
1277            decoder: &mut fidl::encoding::Decoder<'_, D>,
1278            offset: usize,
1279            mut depth: fidl::encoding::Depth,
1280        ) -> fidl::Result<()> {
1281            decoder.debug_check_bounds::<Self>(offset);
1282            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1283                None => return Err(fidl::Error::NotNullable),
1284                Some(len) => len,
1285            };
1286            // Calling decoder.out_of_line_offset(0) is not allowed.
1287            if len == 0 {
1288                return Ok(());
1289            };
1290            depth.increment()?;
1291            let envelope_size = 8;
1292            let bytes_len = len * envelope_size;
1293            let offset = decoder.out_of_line_offset(bytes_len)?;
1294            // Decode the envelope for each type.
1295            let mut _next_ordinal_to_read = 0;
1296            let mut next_offset = offset;
1297            let end_offset = offset + bytes_len;
1298
1299            // Decode the remaining unknown envelopes.
1300            while next_offset < end_offset {
1301                _next_ordinal_to_read += 1;
1302                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1303                next_offset += envelope_size;
1304            }
1305
1306            Ok(())
1307        }
1308    }
1309
1310    impl AllowlistedProtocol {
1311        #[inline(always)]
1312        fn max_ordinal_present(&self) -> u64 {
1313            0
1314        }
1315    }
1316
1317    impl fidl::encoding::ValueTypeMarker for AllowlistedProtocol {
1318        type Borrowed<'a> = &'a Self;
1319        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1320            value
1321        }
1322    }
1323
1324    unsafe impl fidl::encoding::TypeMarker for AllowlistedProtocol {
1325        type Owned = Self;
1326
1327        #[inline(always)]
1328        fn inline_align(_context: fidl::encoding::Context) -> usize {
1329            8
1330        }
1331
1332        #[inline(always)]
1333        fn inline_size(_context: fidl::encoding::Context) -> usize {
1334            16
1335        }
1336    }
1337
1338    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedProtocol, D>
1339        for &AllowlistedProtocol
1340    {
1341        unsafe fn encode(
1342            self,
1343            encoder: &mut fidl::encoding::Encoder<'_, D>,
1344            offset: usize,
1345            mut depth: fidl::encoding::Depth,
1346        ) -> fidl::Result<()> {
1347            encoder.debug_check_bounds::<AllowlistedProtocol>(offset);
1348            // Vector header
1349            let max_ordinal: u64 = self.max_ordinal_present();
1350            encoder.write_num(max_ordinal, offset);
1351            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1352            // Calling encoder.out_of_line_offset(0) is not allowed.
1353            if max_ordinal == 0 {
1354                return Ok(());
1355            }
1356            depth.increment()?;
1357            let envelope_size = 8;
1358            let bytes_len = max_ordinal as usize * envelope_size;
1359            #[allow(unused_variables)]
1360            let offset = encoder.out_of_line_offset(bytes_len);
1361            let mut _prev_end_offset: usize = 0;
1362
1363            Ok(())
1364        }
1365    }
1366
1367    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedProtocol {
1368        #[inline(always)]
1369        fn new_empty() -> Self {
1370            Self::default()
1371        }
1372
1373        unsafe fn decode(
1374            &mut self,
1375            decoder: &mut fidl::encoding::Decoder<'_, D>,
1376            offset: usize,
1377            mut depth: fidl::encoding::Depth,
1378        ) -> fidl::Result<()> {
1379            decoder.debug_check_bounds::<Self>(offset);
1380            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1381                None => return Err(fidl::Error::NotNullable),
1382                Some(len) => len,
1383            };
1384            // Calling decoder.out_of_line_offset(0) is not allowed.
1385            if len == 0 {
1386                return Ok(());
1387            };
1388            depth.increment()?;
1389            let envelope_size = 8;
1390            let bytes_len = len * envelope_size;
1391            let offset = decoder.out_of_line_offset(bytes_len)?;
1392            // Decode the envelope for each type.
1393            let mut _next_ordinal_to_read = 0;
1394            let mut next_offset = offset;
1395            let end_offset = offset + bytes_len;
1396
1397            // Decode the remaining unknown envelopes.
1398            while next_offset < end_offset {
1399                _next_ordinal_to_read += 1;
1400                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1401                next_offset += envelope_size;
1402            }
1403
1404            Ok(())
1405        }
1406    }
1407
1408    impl AllowlistedResolver {
1409        #[inline(always)]
1410        fn max_ordinal_present(&self) -> u64 {
1411            0
1412        }
1413    }
1414
1415    impl fidl::encoding::ValueTypeMarker for AllowlistedResolver {
1416        type Borrowed<'a> = &'a Self;
1417        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1418            value
1419        }
1420    }
1421
1422    unsafe impl fidl::encoding::TypeMarker for AllowlistedResolver {
1423        type Owned = Self;
1424
1425        #[inline(always)]
1426        fn inline_align(_context: fidl::encoding::Context) -> usize {
1427            8
1428        }
1429
1430        #[inline(always)]
1431        fn inline_size(_context: fidl::encoding::Context) -> usize {
1432            16
1433        }
1434    }
1435
1436    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedResolver, D>
1437        for &AllowlistedResolver
1438    {
1439        unsafe fn encode(
1440            self,
1441            encoder: &mut fidl::encoding::Encoder<'_, D>,
1442            offset: usize,
1443            mut depth: fidl::encoding::Depth,
1444        ) -> fidl::Result<()> {
1445            encoder.debug_check_bounds::<AllowlistedResolver>(offset);
1446            // Vector header
1447            let max_ordinal: u64 = self.max_ordinal_present();
1448            encoder.write_num(max_ordinal, offset);
1449            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1450            // Calling encoder.out_of_line_offset(0) is not allowed.
1451            if max_ordinal == 0 {
1452                return Ok(());
1453            }
1454            depth.increment()?;
1455            let envelope_size = 8;
1456            let bytes_len = max_ordinal as usize * envelope_size;
1457            #[allow(unused_variables)]
1458            let offset = encoder.out_of_line_offset(bytes_len);
1459            let mut _prev_end_offset: usize = 0;
1460
1461            Ok(())
1462        }
1463    }
1464
1465    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedResolver {
1466        #[inline(always)]
1467        fn new_empty() -> Self {
1468            Self::default()
1469        }
1470
1471        unsafe fn decode(
1472            &mut self,
1473            decoder: &mut fidl::encoding::Decoder<'_, D>,
1474            offset: usize,
1475            mut depth: fidl::encoding::Depth,
1476        ) -> fidl::Result<()> {
1477            decoder.debug_check_bounds::<Self>(offset);
1478            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1479                None => return Err(fidl::Error::NotNullable),
1480                Some(len) => len,
1481            };
1482            // Calling decoder.out_of_line_offset(0) is not allowed.
1483            if len == 0 {
1484                return Ok(());
1485            };
1486            depth.increment()?;
1487            let envelope_size = 8;
1488            let bytes_len = len * envelope_size;
1489            let offset = decoder.out_of_line_offset(bytes_len)?;
1490            // Decode the envelope for each type.
1491            let mut _next_ordinal_to_read = 0;
1492            let mut next_offset = offset;
1493            let end_offset = offset + bytes_len;
1494
1495            // Decode the remaining unknown envelopes.
1496            while next_offset < end_offset {
1497                _next_ordinal_to_read += 1;
1498                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1499                next_offset += envelope_size;
1500            }
1501
1502            Ok(())
1503        }
1504    }
1505
1506    impl AllowlistedRunner {
1507        #[inline(always)]
1508        fn max_ordinal_present(&self) -> u64 {
1509            0
1510        }
1511    }
1512
1513    impl fidl::encoding::ValueTypeMarker for AllowlistedRunner {
1514        type Borrowed<'a> = &'a Self;
1515        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1516            value
1517        }
1518    }
1519
1520    unsafe impl fidl::encoding::TypeMarker for AllowlistedRunner {
1521        type Owned = Self;
1522
1523        #[inline(always)]
1524        fn inline_align(_context: fidl::encoding::Context) -> usize {
1525            8
1526        }
1527
1528        #[inline(always)]
1529        fn inline_size(_context: fidl::encoding::Context) -> usize {
1530            16
1531        }
1532    }
1533
1534    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedRunner, D>
1535        for &AllowlistedRunner
1536    {
1537        unsafe fn encode(
1538            self,
1539            encoder: &mut fidl::encoding::Encoder<'_, D>,
1540            offset: usize,
1541            mut depth: fidl::encoding::Depth,
1542        ) -> fidl::Result<()> {
1543            encoder.debug_check_bounds::<AllowlistedRunner>(offset);
1544            // Vector header
1545            let max_ordinal: u64 = self.max_ordinal_present();
1546            encoder.write_num(max_ordinal, offset);
1547            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1548            // Calling encoder.out_of_line_offset(0) is not allowed.
1549            if max_ordinal == 0 {
1550                return Ok(());
1551            }
1552            depth.increment()?;
1553            let envelope_size = 8;
1554            let bytes_len = max_ordinal as usize * envelope_size;
1555            #[allow(unused_variables)]
1556            let offset = encoder.out_of_line_offset(bytes_len);
1557            let mut _prev_end_offset: usize = 0;
1558
1559            Ok(())
1560        }
1561    }
1562
1563    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedRunner {
1564        #[inline(always)]
1565        fn new_empty() -> Self {
1566            Self::default()
1567        }
1568
1569        unsafe fn decode(
1570            &mut self,
1571            decoder: &mut fidl::encoding::Decoder<'_, D>,
1572            offset: usize,
1573            mut depth: fidl::encoding::Depth,
1574        ) -> fidl::Result<()> {
1575            decoder.debug_check_bounds::<Self>(offset);
1576            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1577                None => return Err(fidl::Error::NotNullable),
1578                Some(len) => len,
1579            };
1580            // Calling decoder.out_of_line_offset(0) is not allowed.
1581            if len == 0 {
1582                return Ok(());
1583            };
1584            depth.increment()?;
1585            let envelope_size = 8;
1586            let bytes_len = len * envelope_size;
1587            let offset = decoder.out_of_line_offset(bytes_len)?;
1588            // Decode the envelope for each type.
1589            let mut _next_ordinal_to_read = 0;
1590            let mut next_offset = offset;
1591            let end_offset = offset + bytes_len;
1592
1593            // Decode the remaining unknown envelopes.
1594            while next_offset < end_offset {
1595                _next_ordinal_to_read += 1;
1596                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1597                next_offset += envelope_size;
1598            }
1599
1600            Ok(())
1601        }
1602    }
1603
1604    impl AllowlistedService {
1605        #[inline(always)]
1606        fn max_ordinal_present(&self) -> u64 {
1607            0
1608        }
1609    }
1610
1611    impl fidl::encoding::ValueTypeMarker for AllowlistedService {
1612        type Borrowed<'a> = &'a Self;
1613        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1614            value
1615        }
1616    }
1617
1618    unsafe impl fidl::encoding::TypeMarker for AllowlistedService {
1619        type Owned = Self;
1620
1621        #[inline(always)]
1622        fn inline_align(_context: fidl::encoding::Context) -> usize {
1623            8
1624        }
1625
1626        #[inline(always)]
1627        fn inline_size(_context: fidl::encoding::Context) -> usize {
1628            16
1629        }
1630    }
1631
1632    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedService, D>
1633        for &AllowlistedService
1634    {
1635        unsafe fn encode(
1636            self,
1637            encoder: &mut fidl::encoding::Encoder<'_, D>,
1638            offset: usize,
1639            mut depth: fidl::encoding::Depth,
1640        ) -> fidl::Result<()> {
1641            encoder.debug_check_bounds::<AllowlistedService>(offset);
1642            // Vector header
1643            let max_ordinal: u64 = self.max_ordinal_present();
1644            encoder.write_num(max_ordinal, offset);
1645            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1646            // Calling encoder.out_of_line_offset(0) is not allowed.
1647            if max_ordinal == 0 {
1648                return Ok(());
1649            }
1650            depth.increment()?;
1651            let envelope_size = 8;
1652            let bytes_len = max_ordinal as usize * envelope_size;
1653            #[allow(unused_variables)]
1654            let offset = encoder.out_of_line_offset(bytes_len);
1655            let mut _prev_end_offset: usize = 0;
1656
1657            Ok(())
1658        }
1659    }
1660
1661    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedService {
1662        #[inline(always)]
1663        fn new_empty() -> Self {
1664            Self::default()
1665        }
1666
1667        unsafe fn decode(
1668            &mut self,
1669            decoder: &mut fidl::encoding::Decoder<'_, D>,
1670            offset: usize,
1671            mut depth: fidl::encoding::Depth,
1672        ) -> fidl::Result<()> {
1673            decoder.debug_check_bounds::<Self>(offset);
1674            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1675                None => return Err(fidl::Error::NotNullable),
1676                Some(len) => len,
1677            };
1678            // Calling decoder.out_of_line_offset(0) is not allowed.
1679            if len == 0 {
1680                return Ok(());
1681            };
1682            depth.increment()?;
1683            let envelope_size = 8;
1684            let bytes_len = len * envelope_size;
1685            let offset = decoder.out_of_line_offset(bytes_len)?;
1686            // Decode the envelope for each type.
1687            let mut _next_ordinal_to_read = 0;
1688            let mut next_offset = offset;
1689            let end_offset = offset + bytes_len;
1690
1691            // Decode the remaining unknown envelopes.
1692            while next_offset < end_offset {
1693                _next_ordinal_to_read += 1;
1694                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1695                next_offset += envelope_size;
1696            }
1697
1698            Ok(())
1699        }
1700    }
1701
1702    impl AllowlistedStorage {
1703        #[inline(always)]
1704        fn max_ordinal_present(&self) -> u64 {
1705            0
1706        }
1707    }
1708
1709    impl fidl::encoding::ValueTypeMarker for AllowlistedStorage {
1710        type Borrowed<'a> = &'a Self;
1711        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1712            value
1713        }
1714    }
1715
1716    unsafe impl fidl::encoding::TypeMarker for AllowlistedStorage {
1717        type Owned = Self;
1718
1719        #[inline(always)]
1720        fn inline_align(_context: fidl::encoding::Context) -> usize {
1721            8
1722        }
1723
1724        #[inline(always)]
1725        fn inline_size(_context: fidl::encoding::Context) -> usize {
1726            16
1727        }
1728    }
1729
1730    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedStorage, D>
1731        for &AllowlistedStorage
1732    {
1733        unsafe fn encode(
1734            self,
1735            encoder: &mut fidl::encoding::Encoder<'_, D>,
1736            offset: usize,
1737            mut depth: fidl::encoding::Depth,
1738        ) -> fidl::Result<()> {
1739            encoder.debug_check_bounds::<AllowlistedStorage>(offset);
1740            // Vector header
1741            let max_ordinal: u64 = self.max_ordinal_present();
1742            encoder.write_num(max_ordinal, offset);
1743            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1744            // Calling encoder.out_of_line_offset(0) is not allowed.
1745            if max_ordinal == 0 {
1746                return Ok(());
1747            }
1748            depth.increment()?;
1749            let envelope_size = 8;
1750            let bytes_len = max_ordinal as usize * envelope_size;
1751            #[allow(unused_variables)]
1752            let offset = encoder.out_of_line_offset(bytes_len);
1753            let mut _prev_end_offset: usize = 0;
1754
1755            Ok(())
1756        }
1757    }
1758
1759    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedStorage {
1760        #[inline(always)]
1761        fn new_empty() -> Self {
1762            Self::default()
1763        }
1764
1765        unsafe fn decode(
1766            &mut self,
1767            decoder: &mut fidl::encoding::Decoder<'_, D>,
1768            offset: usize,
1769            mut depth: fidl::encoding::Depth,
1770        ) -> fidl::Result<()> {
1771            decoder.debug_check_bounds::<Self>(offset);
1772            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1773                None => return Err(fidl::Error::NotNullable),
1774                Some(len) => len,
1775            };
1776            // Calling decoder.out_of_line_offset(0) is not allowed.
1777            if len == 0 {
1778                return Ok(());
1779            };
1780            depth.increment()?;
1781            let envelope_size = 8;
1782            let bytes_len = len * envelope_size;
1783            let offset = decoder.out_of_line_offset(bytes_len)?;
1784            // Decode the envelope for each type.
1785            let mut _next_ordinal_to_read = 0;
1786            let mut next_offset = offset;
1787            let end_offset = offset + bytes_len;
1788
1789            // Decode the remaining unknown envelopes.
1790            while next_offset < end_offset {
1791                _next_ordinal_to_read += 1;
1792                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1793                next_offset += envelope_size;
1794            }
1795
1796            Ok(())
1797        }
1798    }
1799
1800    impl CapabilityAllowlistEntry {
1801        #[inline(always)]
1802        fn max_ordinal_present(&self) -> u64 {
1803            if let Some(_) = self.source {
1804                return 5;
1805            }
1806            if let Some(_) = self.target_monikers {
1807                return 4;
1808            }
1809            if let Some(_) = self.capability {
1810                return 3;
1811            }
1812            if let Some(_) = self.source_name {
1813                return 2;
1814            }
1815            if let Some(_) = self.source_moniker {
1816                return 1;
1817            }
1818            0
1819        }
1820    }
1821
1822    impl fidl::encoding::ValueTypeMarker for CapabilityAllowlistEntry {
1823        type Borrowed<'a> = &'a Self;
1824        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1825            value
1826        }
1827    }
1828
1829    unsafe impl fidl::encoding::TypeMarker for CapabilityAllowlistEntry {
1830        type Owned = Self;
1831
1832        #[inline(always)]
1833        fn inline_align(_context: fidl::encoding::Context) -> usize {
1834            8
1835        }
1836
1837        #[inline(always)]
1838        fn inline_size(_context: fidl::encoding::Context) -> usize {
1839            16
1840        }
1841    }
1842
1843    unsafe impl<D: fidl::encoding::ResourceDialect>
1844        fidl::encoding::Encode<CapabilityAllowlistEntry, D> for &CapabilityAllowlistEntry
1845    {
1846        unsafe fn encode(
1847            self,
1848            encoder: &mut fidl::encoding::Encoder<'_, D>,
1849            offset: usize,
1850            mut depth: fidl::encoding::Depth,
1851        ) -> fidl::Result<()> {
1852            encoder.debug_check_bounds::<CapabilityAllowlistEntry>(offset);
1853            // Vector header
1854            let max_ordinal: u64 = self.max_ordinal_present();
1855            encoder.write_num(max_ordinal, offset);
1856            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1857            // Calling encoder.out_of_line_offset(0) is not allowed.
1858            if max_ordinal == 0 {
1859                return Ok(());
1860            }
1861            depth.increment()?;
1862            let envelope_size = 8;
1863            let bytes_len = max_ordinal as usize * envelope_size;
1864            #[allow(unused_variables)]
1865            let offset = encoder.out_of_line_offset(bytes_len);
1866            let mut _prev_end_offset: usize = 0;
1867            if 1 > max_ordinal {
1868                return Ok(());
1869            }
1870
1871            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1872            // are envelope_size bytes.
1873            let cur_offset: usize = (1 - 1) * envelope_size;
1874
1875            // Zero reserved fields.
1876            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1877
1878            // Safety:
1879            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1880            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1881            //   envelope_size bytes, there is always sufficient room.
1882            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
1883            self.source_moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
1884            encoder, offset + cur_offset, depth
1885        )?;
1886
1887            _prev_end_offset = cur_offset + envelope_size;
1888            if 2 > max_ordinal {
1889                return Ok(());
1890            }
1891
1892            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1893            // are envelope_size bytes.
1894            let cur_offset: usize = (2 - 1) * envelope_size;
1895
1896            // Zero reserved fields.
1897            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1898
1899            // Safety:
1900            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1901            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1902            //   envelope_size bytes, there is always sufficient room.
1903            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
1904                self.source_name.as_ref().map(
1905                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
1906                ),
1907                encoder,
1908                offset + cur_offset,
1909                depth,
1910            )?;
1911
1912            _prev_end_offset = cur_offset + envelope_size;
1913            if 3 > max_ordinal {
1914                return Ok(());
1915            }
1916
1917            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1918            // are envelope_size bytes.
1919            let cur_offset: usize = (3 - 1) * envelope_size;
1920
1921            // Zero reserved fields.
1922            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1923
1924            // Safety:
1925            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1926            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1927            //   envelope_size bytes, there is always sufficient room.
1928            fidl::encoding::encode_in_envelope_optional::<AllowlistedCapability, D>(
1929                self.capability
1930                    .as_ref()
1931                    .map(<AllowlistedCapability as fidl::encoding::ValueTypeMarker>::borrow),
1932                encoder,
1933                offset + cur_offset,
1934                depth,
1935            )?;
1936
1937            _prev_end_offset = cur_offset + envelope_size;
1938            if 4 > max_ordinal {
1939                return Ok(());
1940            }
1941
1942            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1943            // are envelope_size bytes.
1944            let cur_offset: usize = (4 - 1) * envelope_size;
1945
1946            // Zero reserved fields.
1947            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1948
1949            // Safety:
1950            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1951            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1952            //   envelope_size bytes, there is always sufficient room.
1953            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
1954            self.target_monikers.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
1955            encoder, offset + cur_offset, depth
1956        )?;
1957
1958            _prev_end_offset = cur_offset + envelope_size;
1959            if 5 > max_ordinal {
1960                return Ok(());
1961            }
1962
1963            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1964            // are envelope_size bytes.
1965            let cur_offset: usize = (5 - 1) * envelope_size;
1966
1967            // Zero reserved fields.
1968            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1969
1970            // Safety:
1971            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1972            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1973            //   envelope_size bytes, there is always sufficient room.
1974            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl__common::Ref, D>(
1975            self.source.as_ref().map(<fidl_fuchsia_component_decl__common::Ref as fidl::encoding::ValueTypeMarker>::borrow),
1976            encoder, offset + cur_offset, depth
1977        )?;
1978
1979            _prev_end_offset = cur_offset + envelope_size;
1980
1981            Ok(())
1982        }
1983    }
1984
1985    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1986        for CapabilityAllowlistEntry
1987    {
1988        #[inline(always)]
1989        fn new_empty() -> Self {
1990            Self::default()
1991        }
1992
1993        unsafe fn decode(
1994            &mut self,
1995            decoder: &mut fidl::encoding::Decoder<'_, D>,
1996            offset: usize,
1997            mut depth: fidl::encoding::Depth,
1998        ) -> fidl::Result<()> {
1999            decoder.debug_check_bounds::<Self>(offset);
2000            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2001                None => return Err(fidl::Error::NotNullable),
2002                Some(len) => len,
2003            };
2004            // Calling decoder.out_of_line_offset(0) is not allowed.
2005            if len == 0 {
2006                return Ok(());
2007            };
2008            depth.increment()?;
2009            let envelope_size = 8;
2010            let bytes_len = len * envelope_size;
2011            let offset = decoder.out_of_line_offset(bytes_len)?;
2012            // Decode the envelope for each type.
2013            let mut _next_ordinal_to_read = 0;
2014            let mut next_offset = offset;
2015            let end_offset = offset + bytes_len;
2016            _next_ordinal_to_read += 1;
2017            if next_offset >= end_offset {
2018                return Ok(());
2019            }
2020
2021            // Decode unknown envelopes for gaps in ordinals.
2022            while _next_ordinal_to_read < 1 {
2023                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2024                _next_ordinal_to_read += 1;
2025                next_offset += envelope_size;
2026            }
2027
2028            let next_out_of_line = decoder.next_out_of_line();
2029            let handles_before = decoder.remaining_handles();
2030            if let Some((inlined, num_bytes, num_handles)) =
2031                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2032            {
2033                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2034                if inlined != (member_inline_size <= 4) {
2035                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2036                }
2037                let inner_offset;
2038                let mut inner_depth = depth.clone();
2039                if inlined {
2040                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2041                    inner_offset = next_offset;
2042                } else {
2043                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2044                    inner_depth.increment()?;
2045                }
2046                let val_ref = self.source_moniker.get_or_insert_with(|| {
2047                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
2048                });
2049                fidl::decode!(
2050                    fidl::encoding::BoundedString<4096>,
2051                    D,
2052                    val_ref,
2053                    decoder,
2054                    inner_offset,
2055                    inner_depth
2056                )?;
2057                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2058                {
2059                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2060                }
2061                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2062                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2063                }
2064            }
2065
2066            next_offset += envelope_size;
2067            _next_ordinal_to_read += 1;
2068            if next_offset >= end_offset {
2069                return Ok(());
2070            }
2071
2072            // Decode unknown envelopes for gaps in ordinals.
2073            while _next_ordinal_to_read < 2 {
2074                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2075                _next_ordinal_to_read += 1;
2076                next_offset += envelope_size;
2077            }
2078
2079            let next_out_of_line = decoder.next_out_of_line();
2080            let handles_before = decoder.remaining_handles();
2081            if let Some((inlined, num_bytes, num_handles)) =
2082                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2083            {
2084                let member_inline_size =
2085                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2086                        decoder.context,
2087                    );
2088                if inlined != (member_inline_size <= 4) {
2089                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2090                }
2091                let inner_offset;
2092                let mut inner_depth = depth.clone();
2093                if inlined {
2094                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2095                    inner_offset = next_offset;
2096                } else {
2097                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2098                    inner_depth.increment()?;
2099                }
2100                let val_ref = self
2101                    .source_name
2102                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
2103                fidl::decode!(
2104                    fidl::encoding::BoundedString<255>,
2105                    D,
2106                    val_ref,
2107                    decoder,
2108                    inner_offset,
2109                    inner_depth
2110                )?;
2111                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2112                {
2113                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2114                }
2115                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2116                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2117                }
2118            }
2119
2120            next_offset += envelope_size;
2121            _next_ordinal_to_read += 1;
2122            if next_offset >= end_offset {
2123                return Ok(());
2124            }
2125
2126            // Decode unknown envelopes for gaps in ordinals.
2127            while _next_ordinal_to_read < 3 {
2128                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2129                _next_ordinal_to_read += 1;
2130                next_offset += envelope_size;
2131            }
2132
2133            let next_out_of_line = decoder.next_out_of_line();
2134            let handles_before = decoder.remaining_handles();
2135            if let Some((inlined, num_bytes, num_handles)) =
2136                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2137            {
2138                let member_inline_size =
2139                    <AllowlistedCapability as fidl::encoding::TypeMarker>::inline_size(
2140                        decoder.context,
2141                    );
2142                if inlined != (member_inline_size <= 4) {
2143                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2144                }
2145                let inner_offset;
2146                let mut inner_depth = depth.clone();
2147                if inlined {
2148                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2149                    inner_offset = next_offset;
2150                } else {
2151                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2152                    inner_depth.increment()?;
2153                }
2154                let val_ref = self
2155                    .capability
2156                    .get_or_insert_with(|| fidl::new_empty!(AllowlistedCapability, D));
2157                fidl::decode!(
2158                    AllowlistedCapability,
2159                    D,
2160                    val_ref,
2161                    decoder,
2162                    inner_offset,
2163                    inner_depth
2164                )?;
2165                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2166                {
2167                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2168                }
2169                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2170                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2171                }
2172            }
2173
2174            next_offset += envelope_size;
2175            _next_ordinal_to_read += 1;
2176            if next_offset >= end_offset {
2177                return Ok(());
2178            }
2179
2180            // Decode unknown envelopes for gaps in ordinals.
2181            while _next_ordinal_to_read < 4 {
2182                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2183                _next_ordinal_to_read += 1;
2184                next_offset += envelope_size;
2185            }
2186
2187            let next_out_of_line = decoder.next_out_of_line();
2188            let handles_before = decoder.remaining_handles();
2189            if let Some((inlined, num_bytes, num_handles)) =
2190                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2191            {
2192                let member_inline_size = <fidl::encoding::Vector<
2193                    fidl::encoding::BoundedString<4096>,
2194                    128,
2195                > as fidl::encoding::TypeMarker>::inline_size(
2196                    decoder.context
2197                );
2198                if inlined != (member_inline_size <= 4) {
2199                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2200                }
2201                let inner_offset;
2202                let mut inner_depth = depth.clone();
2203                if inlined {
2204                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2205                    inner_offset = next_offset;
2206                } else {
2207                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2208                    inner_depth.increment()?;
2209                }
2210                let val_ref = self.target_monikers.get_or_insert_with(|| {
2211                    fidl::new_empty!(
2212                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
2213                        D
2214                    )
2215                });
2216                fidl::decode!(
2217                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
2218                    D,
2219                    val_ref,
2220                    decoder,
2221                    inner_offset,
2222                    inner_depth
2223                )?;
2224                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2225                {
2226                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2227                }
2228                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2229                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2230                }
2231            }
2232
2233            next_offset += envelope_size;
2234            _next_ordinal_to_read += 1;
2235            if next_offset >= end_offset {
2236                return Ok(());
2237            }
2238
2239            // Decode unknown envelopes for gaps in ordinals.
2240            while _next_ordinal_to_read < 5 {
2241                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2242                _next_ordinal_to_read += 1;
2243                next_offset += envelope_size;
2244            }
2245
2246            let next_out_of_line = decoder.next_out_of_line();
2247            let handles_before = decoder.remaining_handles();
2248            if let Some((inlined, num_bytes, num_handles)) =
2249                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2250            {
2251                let member_inline_size = <fidl_fuchsia_component_decl__common::Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2252                if inlined != (member_inline_size <= 4) {
2253                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2254                }
2255                let inner_offset;
2256                let mut inner_depth = depth.clone();
2257                if inlined {
2258                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2259                    inner_offset = next_offset;
2260                } else {
2261                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2262                    inner_depth.increment()?;
2263                }
2264                let val_ref = self.source.get_or_insert_with(|| {
2265                    fidl::new_empty!(fidl_fuchsia_component_decl__common::Ref, D)
2266                });
2267                fidl::decode!(
2268                    fidl_fuchsia_component_decl__common::Ref,
2269                    D,
2270                    val_ref,
2271                    decoder,
2272                    inner_offset,
2273                    inner_depth
2274                )?;
2275                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2276                {
2277                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2278                }
2279                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2280                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2281                }
2282            }
2283
2284            next_offset += envelope_size;
2285
2286            // Decode the remaining unknown envelopes.
2287            while next_offset < end_offset {
2288                _next_ordinal_to_read += 1;
2289                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2290                next_offset += envelope_size;
2291            }
2292
2293            Ok(())
2294        }
2295    }
2296
2297    impl CapabilityPolicyAllowlists {
2298        #[inline(always)]
2299        fn max_ordinal_present(&self) -> u64 {
2300            if let Some(_) = self.allowlist {
2301                return 1;
2302            }
2303            0
2304        }
2305    }
2306
2307    impl fidl::encoding::ValueTypeMarker for CapabilityPolicyAllowlists {
2308        type Borrowed<'a> = &'a Self;
2309        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2310            value
2311        }
2312    }
2313
2314    unsafe impl fidl::encoding::TypeMarker for CapabilityPolicyAllowlists {
2315        type Owned = Self;
2316
2317        #[inline(always)]
2318        fn inline_align(_context: fidl::encoding::Context) -> usize {
2319            8
2320        }
2321
2322        #[inline(always)]
2323        fn inline_size(_context: fidl::encoding::Context) -> usize {
2324            16
2325        }
2326    }
2327
2328    unsafe impl<D: fidl::encoding::ResourceDialect>
2329        fidl::encoding::Encode<CapabilityPolicyAllowlists, D> for &CapabilityPolicyAllowlists
2330    {
2331        unsafe fn encode(
2332            self,
2333            encoder: &mut fidl::encoding::Encoder<'_, D>,
2334            offset: usize,
2335            mut depth: fidl::encoding::Depth,
2336        ) -> fidl::Result<()> {
2337            encoder.debug_check_bounds::<CapabilityPolicyAllowlists>(offset);
2338            // Vector header
2339            let max_ordinal: u64 = self.max_ordinal_present();
2340            encoder.write_num(max_ordinal, offset);
2341            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2342            // Calling encoder.out_of_line_offset(0) is not allowed.
2343            if max_ordinal == 0 {
2344                return Ok(());
2345            }
2346            depth.increment()?;
2347            let envelope_size = 8;
2348            let bytes_len = max_ordinal as usize * envelope_size;
2349            #[allow(unused_variables)]
2350            let offset = encoder.out_of_line_offset(bytes_len);
2351            let mut _prev_end_offset: usize = 0;
2352            if 1 > max_ordinal {
2353                return Ok(());
2354            }
2355
2356            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2357            // are envelope_size bytes.
2358            let cur_offset: usize = (1 - 1) * envelope_size;
2359
2360            // Zero reserved fields.
2361            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2362
2363            // Safety:
2364            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2365            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2366            //   envelope_size bytes, there is always sufficient room.
2367            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D>(
2368            self.allowlist.as_ref().map(<fidl::encoding::Vector<CapabilityAllowlistEntry, 128> as fidl::encoding::ValueTypeMarker>::borrow),
2369            encoder, offset + cur_offset, depth
2370        )?;
2371
2372            _prev_end_offset = cur_offset + envelope_size;
2373
2374            Ok(())
2375        }
2376    }
2377
2378    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2379        for CapabilityPolicyAllowlists
2380    {
2381        #[inline(always)]
2382        fn new_empty() -> Self {
2383            Self::default()
2384        }
2385
2386        unsafe fn decode(
2387            &mut self,
2388            decoder: &mut fidl::encoding::Decoder<'_, D>,
2389            offset: usize,
2390            mut depth: fidl::encoding::Depth,
2391        ) -> fidl::Result<()> {
2392            decoder.debug_check_bounds::<Self>(offset);
2393            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2394                None => return Err(fidl::Error::NotNullable),
2395                Some(len) => len,
2396            };
2397            // Calling decoder.out_of_line_offset(0) is not allowed.
2398            if len == 0 {
2399                return Ok(());
2400            };
2401            depth.increment()?;
2402            let envelope_size = 8;
2403            let bytes_len = len * envelope_size;
2404            let offset = decoder.out_of_line_offset(bytes_len)?;
2405            // Decode the envelope for each type.
2406            let mut _next_ordinal_to_read = 0;
2407            let mut next_offset = offset;
2408            let end_offset = offset + bytes_len;
2409            _next_ordinal_to_read += 1;
2410            if next_offset >= end_offset {
2411                return Ok(());
2412            }
2413
2414            // Decode unknown envelopes for gaps in ordinals.
2415            while _next_ordinal_to_read < 1 {
2416                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2417                _next_ordinal_to_read += 1;
2418                next_offset += envelope_size;
2419            }
2420
2421            let next_out_of_line = decoder.next_out_of_line();
2422            let handles_before = decoder.remaining_handles();
2423            if let Some((inlined, num_bytes, num_handles)) =
2424                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2425            {
2426                let member_inline_size = <fidl::encoding::Vector<CapabilityAllowlistEntry, 128> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2427                if inlined != (member_inline_size <= 4) {
2428                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2429                }
2430                let inner_offset;
2431                let mut inner_depth = depth.clone();
2432                if inlined {
2433                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2434                    inner_offset = next_offset;
2435                } else {
2436                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2437                    inner_depth.increment()?;
2438                }
2439                let val_ref = self.allowlist.get_or_insert_with(
2440                    || fidl::new_empty!(fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D),
2441                );
2442                fidl::decode!(fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
2443                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2444                {
2445                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2446                }
2447                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2448                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2449                }
2450            }
2451
2452            next_offset += envelope_size;
2453
2454            // Decode the remaining unknown envelopes.
2455            while next_offset < end_offset {
2456                _next_ordinal_to_read += 1;
2457                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2458                next_offset += envelope_size;
2459            }
2460
2461            Ok(())
2462        }
2463    }
2464
2465    impl ChildPolicyAllowlists {
2466        #[inline(always)]
2467        fn max_ordinal_present(&self) -> u64 {
2468            if let Some(_) = self.reboot_on_terminate {
2469                return 1;
2470            }
2471            0
2472        }
2473    }
2474
2475    impl fidl::encoding::ValueTypeMarker for ChildPolicyAllowlists {
2476        type Borrowed<'a> = &'a Self;
2477        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2478            value
2479        }
2480    }
2481
2482    unsafe impl fidl::encoding::TypeMarker for ChildPolicyAllowlists {
2483        type Owned = Self;
2484
2485        #[inline(always)]
2486        fn inline_align(_context: fidl::encoding::Context) -> usize {
2487            8
2488        }
2489
2490        #[inline(always)]
2491        fn inline_size(_context: fidl::encoding::Context) -> usize {
2492            16
2493        }
2494    }
2495
2496    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChildPolicyAllowlists, D>
2497        for &ChildPolicyAllowlists
2498    {
2499        unsafe fn encode(
2500            self,
2501            encoder: &mut fidl::encoding::Encoder<'_, D>,
2502            offset: usize,
2503            mut depth: fidl::encoding::Depth,
2504        ) -> fidl::Result<()> {
2505            encoder.debug_check_bounds::<ChildPolicyAllowlists>(offset);
2506            // Vector header
2507            let max_ordinal: u64 = self.max_ordinal_present();
2508            encoder.write_num(max_ordinal, offset);
2509            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2510            // Calling encoder.out_of_line_offset(0) is not allowed.
2511            if max_ordinal == 0 {
2512                return Ok(());
2513            }
2514            depth.increment()?;
2515            let envelope_size = 8;
2516            let bytes_len = max_ordinal as usize * envelope_size;
2517            #[allow(unused_variables)]
2518            let offset = encoder.out_of_line_offset(bytes_len);
2519            let mut _prev_end_offset: usize = 0;
2520            if 1 > max_ordinal {
2521                return Ok(());
2522            }
2523
2524            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2525            // are envelope_size bytes.
2526            let cur_offset: usize = (1 - 1) * envelope_size;
2527
2528            // Zero reserved fields.
2529            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2530
2531            // Safety:
2532            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2533            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2534            //   envelope_size bytes, there is always sufficient room.
2535            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
2536            self.reboot_on_terminate.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
2537            encoder, offset + cur_offset, depth
2538        )?;
2539
2540            _prev_end_offset = cur_offset + envelope_size;
2541
2542            Ok(())
2543        }
2544    }
2545
2546    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChildPolicyAllowlists {
2547        #[inline(always)]
2548        fn new_empty() -> Self {
2549            Self::default()
2550        }
2551
2552        unsafe fn decode(
2553            &mut self,
2554            decoder: &mut fidl::encoding::Decoder<'_, D>,
2555            offset: usize,
2556            mut depth: fidl::encoding::Depth,
2557        ) -> fidl::Result<()> {
2558            decoder.debug_check_bounds::<Self>(offset);
2559            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2560                None => return Err(fidl::Error::NotNullable),
2561                Some(len) => len,
2562            };
2563            // Calling decoder.out_of_line_offset(0) is not allowed.
2564            if len == 0 {
2565                return Ok(());
2566            };
2567            depth.increment()?;
2568            let envelope_size = 8;
2569            let bytes_len = len * envelope_size;
2570            let offset = decoder.out_of_line_offset(bytes_len)?;
2571            // Decode the envelope for each type.
2572            let mut _next_ordinal_to_read = 0;
2573            let mut next_offset = offset;
2574            let end_offset = offset + bytes_len;
2575            _next_ordinal_to_read += 1;
2576            if next_offset >= end_offset {
2577                return Ok(());
2578            }
2579
2580            // Decode unknown envelopes for gaps in ordinals.
2581            while _next_ordinal_to_read < 1 {
2582                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2583                _next_ordinal_to_read += 1;
2584                next_offset += envelope_size;
2585            }
2586
2587            let next_out_of_line = decoder.next_out_of_line();
2588            let handles_before = decoder.remaining_handles();
2589            if let Some((inlined, num_bytes, num_handles)) =
2590                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2591            {
2592                let member_inline_size = <fidl::encoding::Vector<
2593                    fidl::encoding::BoundedString<4096>,
2594                    128,
2595                > as fidl::encoding::TypeMarker>::inline_size(
2596                    decoder.context
2597                );
2598                if inlined != (member_inline_size <= 4) {
2599                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2600                }
2601                let inner_offset;
2602                let mut inner_depth = depth.clone();
2603                if inlined {
2604                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2605                    inner_offset = next_offset;
2606                } else {
2607                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2608                    inner_depth.increment()?;
2609                }
2610                let val_ref = self.reboot_on_terminate.get_or_insert_with(|| {
2611                    fidl::new_empty!(
2612                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
2613                        D
2614                    )
2615                });
2616                fidl::decode!(
2617                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
2618                    D,
2619                    val_ref,
2620                    decoder,
2621                    inner_offset,
2622                    inner_depth
2623                )?;
2624                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2625                {
2626                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2627                }
2628                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2629                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2630                }
2631            }
2632
2633            next_offset += envelope_size;
2634
2635            // Decode the remaining unknown envelopes.
2636            while next_offset < end_offset {
2637                _next_ordinal_to_read += 1;
2638                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2639                next_offset += envelope_size;
2640            }
2641
2642            Ok(())
2643        }
2644    }
2645
2646    impl ComponentIdIndex {
2647        #[inline(always)]
2648        fn max_ordinal_present(&self) -> u64 {
2649            if let Some(_) = self.instances {
2650                return 2;
2651            }
2652            0
2653        }
2654    }
2655
2656    impl fidl::encoding::ValueTypeMarker for ComponentIdIndex {
2657        type Borrowed<'a> = &'a Self;
2658        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2659            value
2660        }
2661    }
2662
2663    unsafe impl fidl::encoding::TypeMarker for ComponentIdIndex {
2664        type Owned = Self;
2665
2666        #[inline(always)]
2667        fn inline_align(_context: fidl::encoding::Context) -> usize {
2668            8
2669        }
2670
2671        #[inline(always)]
2672        fn inline_size(_context: fidl::encoding::Context) -> usize {
2673            16
2674        }
2675    }
2676
2677    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ComponentIdIndex, D>
2678        for &ComponentIdIndex
2679    {
2680        unsafe fn encode(
2681            self,
2682            encoder: &mut fidl::encoding::Encoder<'_, D>,
2683            offset: usize,
2684            mut depth: fidl::encoding::Depth,
2685        ) -> fidl::Result<()> {
2686            encoder.debug_check_bounds::<ComponentIdIndex>(offset);
2687            // Vector header
2688            let max_ordinal: u64 = self.max_ordinal_present();
2689            encoder.write_num(max_ordinal, offset);
2690            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2691            // Calling encoder.out_of_line_offset(0) is not allowed.
2692            if max_ordinal == 0 {
2693                return Ok(());
2694            }
2695            depth.increment()?;
2696            let envelope_size = 8;
2697            let bytes_len = max_ordinal as usize * envelope_size;
2698            #[allow(unused_variables)]
2699            let offset = encoder.out_of_line_offset(bytes_len);
2700            let mut _prev_end_offset: usize = 0;
2701            if 2 > max_ordinal {
2702                return Ok(());
2703            }
2704
2705            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2706            // are envelope_size bytes.
2707            let cur_offset: usize = (2 - 1) * envelope_size;
2708
2709            // Zero reserved fields.
2710            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2711
2712            // Safety:
2713            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2714            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2715            //   envelope_size bytes, there is always sufficient room.
2716            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<InstanceIdEntry, 1024>, D>(
2717            self.instances.as_ref().map(<fidl::encoding::Vector<InstanceIdEntry, 1024> as fidl::encoding::ValueTypeMarker>::borrow),
2718            encoder, offset + cur_offset, depth
2719        )?;
2720
2721            _prev_end_offset = cur_offset + envelope_size;
2722
2723            Ok(())
2724        }
2725    }
2726
2727    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ComponentIdIndex {
2728        #[inline(always)]
2729        fn new_empty() -> Self {
2730            Self::default()
2731        }
2732
2733        unsafe fn decode(
2734            &mut self,
2735            decoder: &mut fidl::encoding::Decoder<'_, D>,
2736            offset: usize,
2737            mut depth: fidl::encoding::Depth,
2738        ) -> fidl::Result<()> {
2739            decoder.debug_check_bounds::<Self>(offset);
2740            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2741                None => return Err(fidl::Error::NotNullable),
2742                Some(len) => len,
2743            };
2744            // Calling decoder.out_of_line_offset(0) is not allowed.
2745            if len == 0 {
2746                return Ok(());
2747            };
2748            depth.increment()?;
2749            let envelope_size = 8;
2750            let bytes_len = len * envelope_size;
2751            let offset = decoder.out_of_line_offset(bytes_len)?;
2752            // Decode the envelope for each type.
2753            let mut _next_ordinal_to_read = 0;
2754            let mut next_offset = offset;
2755            let end_offset = offset + bytes_len;
2756            _next_ordinal_to_read += 1;
2757            if next_offset >= end_offset {
2758                return Ok(());
2759            }
2760
2761            // Decode unknown envelopes for gaps in ordinals.
2762            while _next_ordinal_to_read < 2 {
2763                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2764                _next_ordinal_to_read += 1;
2765                next_offset += envelope_size;
2766            }
2767
2768            let next_out_of_line = decoder.next_out_of_line();
2769            let handles_before = decoder.remaining_handles();
2770            if let Some((inlined, num_bytes, num_handles)) =
2771                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2772            {
2773                let member_inline_size = <fidl::encoding::Vector<InstanceIdEntry, 1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2774                if inlined != (member_inline_size <= 4) {
2775                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2776                }
2777                let inner_offset;
2778                let mut inner_depth = depth.clone();
2779                if inlined {
2780                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2781                    inner_offset = next_offset;
2782                } else {
2783                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2784                    inner_depth.increment()?;
2785                }
2786                let val_ref = self.instances.get_or_insert_with(
2787                    || fidl::new_empty!(fidl::encoding::Vector<InstanceIdEntry, 1024>, D),
2788                );
2789                fidl::decode!(fidl::encoding::Vector<InstanceIdEntry, 1024>, D, val_ref, decoder, inner_offset, inner_depth)?;
2790                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2791                {
2792                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2793                }
2794                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2795                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2796                }
2797            }
2798
2799            next_offset += envelope_size;
2800
2801            // Decode the remaining unknown envelopes.
2802            while next_offset < end_offset {
2803                _next_ordinal_to_read += 1;
2804                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2805                next_offset += envelope_size;
2806            }
2807
2808            Ok(())
2809        }
2810    }
2811
2812    impl Config {
2813        #[inline(always)]
2814        fn max_ordinal_present(&self) -> u64 {
2815            if let Some(_) = self.scudo_options {
2816                return 24;
2817            }
2818            if let Some(_) = self.inject_capabilities {
2819                return 23;
2820            }
2821            if let Some(_) = self.trace_provider {
2822                return 22;
2823            }
2824            if let Some(_) = self.health_check {
2825                return 21;
2826            }
2827            if let Some(_) = self.vmex_source {
2828                return 20;
2829            }
2830            if let Some(_) = self.abi_revision_policy {
2831                return 19;
2832            }
2833            if let Some(_) = self.enable_introspection {
2834                return 18;
2835            }
2836            if let Some(_) = self.builtin_capabilities {
2837                return 17;
2838            }
2839            if let Some(_) = self.realm_builder_resolver_and_runner {
2840                return 16;
2841            }
2842            if let Some(_) = self.builtin_boot_resolver {
2843                return 14;
2844            }
2845            if let Some(_) = self.log_all_events {
2846                return 13;
2847            }
2848            if let Some(_) = self.log_destination {
2849                return 12;
2850            }
2851            if let Some(_) = self.component_id_index_path {
2852                return 11;
2853            }
2854            if let Some(_) = self.root_component_url {
2855                return 10;
2856            }
2857            if let Some(_) = self.num_threads {
2858                return 7;
2859            }
2860            if let Some(_) = self.maintain_utc_clock {
2861                return 6;
2862            }
2863            if let Some(_) = self.use_builtin_process_launcher {
2864                return 5;
2865            }
2866            if let Some(_) = self.namespace_capabilities {
2867                return 4;
2868            }
2869            if let Some(_) = self.security_policy {
2870                return 3;
2871            }
2872            if let Some(_) = self.list_children_batch_size {
2873                return 2;
2874            }
2875            if let Some(_) = self.debug {
2876                return 1;
2877            }
2878            0
2879        }
2880    }
2881
2882    impl fidl::encoding::ValueTypeMarker for Config {
2883        type Borrowed<'a> = &'a Self;
2884        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2885            value
2886        }
2887    }
2888
2889    unsafe impl fidl::encoding::TypeMarker for Config {
2890        type Owned = Self;
2891
2892        #[inline(always)]
2893        fn inline_align(_context: fidl::encoding::Context) -> usize {
2894            8
2895        }
2896
2897        #[inline(always)]
2898        fn inline_size(_context: fidl::encoding::Context) -> usize {
2899            16
2900        }
2901    }
2902
2903    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
2904        unsafe fn encode(
2905            self,
2906            encoder: &mut fidl::encoding::Encoder<'_, D>,
2907            offset: usize,
2908            mut depth: fidl::encoding::Depth,
2909        ) -> fidl::Result<()> {
2910            encoder.debug_check_bounds::<Config>(offset);
2911            // Vector header
2912            let max_ordinal: u64 = self.max_ordinal_present();
2913            encoder.write_num(max_ordinal, offset);
2914            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2915            // Calling encoder.out_of_line_offset(0) is not allowed.
2916            if max_ordinal == 0 {
2917                return Ok(());
2918            }
2919            depth.increment()?;
2920            let envelope_size = 8;
2921            let bytes_len = max_ordinal as usize * envelope_size;
2922            #[allow(unused_variables)]
2923            let offset = encoder.out_of_line_offset(bytes_len);
2924            let mut _prev_end_offset: usize = 0;
2925            if 1 > max_ordinal {
2926                return Ok(());
2927            }
2928
2929            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2930            // are envelope_size bytes.
2931            let cur_offset: usize = (1 - 1) * envelope_size;
2932
2933            // Zero reserved fields.
2934            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2935
2936            // Safety:
2937            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2938            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2939            //   envelope_size bytes, there is always sufficient room.
2940            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2941                self.debug.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2942                encoder,
2943                offset + cur_offset,
2944                depth,
2945            )?;
2946
2947            _prev_end_offset = cur_offset + envelope_size;
2948            if 2 > max_ordinal {
2949                return Ok(());
2950            }
2951
2952            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2953            // are envelope_size bytes.
2954            let cur_offset: usize = (2 - 1) * envelope_size;
2955
2956            // Zero reserved fields.
2957            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2958
2959            // Safety:
2960            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2961            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2962            //   envelope_size bytes, there is always sufficient room.
2963            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2964                self.list_children_batch_size
2965                    .as_ref()
2966                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2967                encoder,
2968                offset + cur_offset,
2969                depth,
2970            )?;
2971
2972            _prev_end_offset = cur_offset + envelope_size;
2973            if 3 > max_ordinal {
2974                return Ok(());
2975            }
2976
2977            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2978            // are envelope_size bytes.
2979            let cur_offset: usize = (3 - 1) * envelope_size;
2980
2981            // Zero reserved fields.
2982            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2983
2984            // Safety:
2985            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2986            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2987            //   envelope_size bytes, there is always sufficient room.
2988            fidl::encoding::encode_in_envelope_optional::<SecurityPolicy, D>(
2989                self.security_policy
2990                    .as_ref()
2991                    .map(<SecurityPolicy as fidl::encoding::ValueTypeMarker>::borrow),
2992                encoder,
2993                offset + cur_offset,
2994                depth,
2995            )?;
2996
2997            _prev_end_offset = cur_offset + envelope_size;
2998            if 4 > max_ordinal {
2999                return Ok(());
3000            }
3001
3002            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3003            // are envelope_size bytes.
3004            let cur_offset: usize = (4 - 1) * envelope_size;
3005
3006            // Zero reserved fields.
3007            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3008
3009            // Safety:
3010            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3011            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3012            //   envelope_size bytes, there is always sufficient room.
3013            fidl::encoding::encode_in_envelope_optional::<
3014                fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Capability>,
3015                D,
3016            >(
3017                self.namespace_capabilities.as_ref().map(
3018                    <fidl::encoding::UnboundedVector<
3019                        fidl_fuchsia_component_decl__common::Capability,
3020                    > as fidl::encoding::ValueTypeMarker>::borrow,
3021                ),
3022                encoder,
3023                offset + cur_offset,
3024                depth,
3025            )?;
3026
3027            _prev_end_offset = cur_offset + envelope_size;
3028            if 5 > max_ordinal {
3029                return Ok(());
3030            }
3031
3032            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3033            // are envelope_size bytes.
3034            let cur_offset: usize = (5 - 1) * envelope_size;
3035
3036            // Zero reserved fields.
3037            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3038
3039            // Safety:
3040            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3041            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3042            //   envelope_size bytes, there is always sufficient room.
3043            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3044                self.use_builtin_process_launcher
3045                    .as_ref()
3046                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3047                encoder,
3048                offset + cur_offset,
3049                depth,
3050            )?;
3051
3052            _prev_end_offset = cur_offset + envelope_size;
3053            if 6 > max_ordinal {
3054                return Ok(());
3055            }
3056
3057            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3058            // are envelope_size bytes.
3059            let cur_offset: usize = (6 - 1) * envelope_size;
3060
3061            // Zero reserved fields.
3062            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3063
3064            // Safety:
3065            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3066            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3067            //   envelope_size bytes, there is always sufficient room.
3068            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3069                self.maintain_utc_clock
3070                    .as_ref()
3071                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3072                encoder,
3073                offset + cur_offset,
3074                depth,
3075            )?;
3076
3077            _prev_end_offset = cur_offset + envelope_size;
3078            if 7 > max_ordinal {
3079                return Ok(());
3080            }
3081
3082            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3083            // are envelope_size bytes.
3084            let cur_offset: usize = (7 - 1) * envelope_size;
3085
3086            // Zero reserved fields.
3087            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3088
3089            // Safety:
3090            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3091            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3092            //   envelope_size bytes, there is always sufficient room.
3093            fidl::encoding::encode_in_envelope_optional::<u8, D>(
3094                self.num_threads.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3095                encoder,
3096                offset + cur_offset,
3097                depth,
3098            )?;
3099
3100            _prev_end_offset = cur_offset + envelope_size;
3101            if 10 > max_ordinal {
3102                return Ok(());
3103            }
3104
3105            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3106            // are envelope_size bytes.
3107            let cur_offset: usize = (10 - 1) * envelope_size;
3108
3109            // Zero reserved fields.
3110            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3111
3112            // Safety:
3113            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3114            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3115            //   envelope_size bytes, there is always sufficient room.
3116            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3117            self.root_component_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3118            encoder, offset + cur_offset, depth
3119        )?;
3120
3121            _prev_end_offset = cur_offset + envelope_size;
3122            if 11 > max_ordinal {
3123                return Ok(());
3124            }
3125
3126            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3127            // are envelope_size bytes.
3128            let cur_offset: usize = (11 - 1) * envelope_size;
3129
3130            // Zero reserved fields.
3131            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3132
3133            // Safety:
3134            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3135            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3136            //   envelope_size bytes, there is always sufficient room.
3137            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, D>(
3138            self.component_id_index_path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
3139            encoder, offset + cur_offset, depth
3140        )?;
3141
3142            _prev_end_offset = cur_offset + envelope_size;
3143            if 12 > max_ordinal {
3144                return Ok(());
3145            }
3146
3147            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3148            // are envelope_size bytes.
3149            let cur_offset: usize = (12 - 1) * envelope_size;
3150
3151            // Zero reserved fields.
3152            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3153
3154            // Safety:
3155            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3156            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3157            //   envelope_size bytes, there is always sufficient room.
3158            fidl::encoding::encode_in_envelope_optional::<LogDestination, D>(
3159                self.log_destination
3160                    .as_ref()
3161                    .map(<LogDestination as fidl::encoding::ValueTypeMarker>::borrow),
3162                encoder,
3163                offset + cur_offset,
3164                depth,
3165            )?;
3166
3167            _prev_end_offset = cur_offset + envelope_size;
3168            if 13 > max_ordinal {
3169                return Ok(());
3170            }
3171
3172            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3173            // are envelope_size bytes.
3174            let cur_offset: usize = (13 - 1) * envelope_size;
3175
3176            // Zero reserved fields.
3177            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3178
3179            // Safety:
3180            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3181            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3182            //   envelope_size bytes, there is always sufficient room.
3183            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3184                self.log_all_events.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3185                encoder,
3186                offset + cur_offset,
3187                depth,
3188            )?;
3189
3190            _prev_end_offset = cur_offset + envelope_size;
3191            if 14 > max_ordinal {
3192                return Ok(());
3193            }
3194
3195            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3196            // are envelope_size bytes.
3197            let cur_offset: usize = (14 - 1) * envelope_size;
3198
3199            // Zero reserved fields.
3200            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3201
3202            // Safety:
3203            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3204            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3205            //   envelope_size bytes, there is always sufficient room.
3206            fidl::encoding::encode_in_envelope_optional::<BuiltinBootResolver, D>(
3207                self.builtin_boot_resolver
3208                    .as_ref()
3209                    .map(<BuiltinBootResolver as fidl::encoding::ValueTypeMarker>::borrow),
3210                encoder,
3211                offset + cur_offset,
3212                depth,
3213            )?;
3214
3215            _prev_end_offset = cur_offset + envelope_size;
3216            if 16 > max_ordinal {
3217                return Ok(());
3218            }
3219
3220            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3221            // are envelope_size bytes.
3222            let cur_offset: usize = (16 - 1) * envelope_size;
3223
3224            // Zero reserved fields.
3225            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3226
3227            // Safety:
3228            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3229            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3230            //   envelope_size bytes, there is always sufficient room.
3231            fidl::encoding::encode_in_envelope_optional::<RealmBuilderResolverAndRunner, D>(
3232                self.realm_builder_resolver_and_runner.as_ref().map(
3233                    <RealmBuilderResolverAndRunner as fidl::encoding::ValueTypeMarker>::borrow,
3234                ),
3235                encoder,
3236                offset + cur_offset,
3237                depth,
3238            )?;
3239
3240            _prev_end_offset = cur_offset + envelope_size;
3241            if 17 > max_ordinal {
3242                return Ok(());
3243            }
3244
3245            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3246            // are envelope_size bytes.
3247            let cur_offset: usize = (17 - 1) * envelope_size;
3248
3249            // Zero reserved fields.
3250            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3251
3252            // Safety:
3253            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3254            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3255            //   envelope_size bytes, there is always sufficient room.
3256            fidl::encoding::encode_in_envelope_optional::<
3257                fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Capability>,
3258                D,
3259            >(
3260                self.builtin_capabilities.as_ref().map(
3261                    <fidl::encoding::UnboundedVector<
3262                        fidl_fuchsia_component_decl__common::Capability,
3263                    > as fidl::encoding::ValueTypeMarker>::borrow,
3264                ),
3265                encoder,
3266                offset + cur_offset,
3267                depth,
3268            )?;
3269
3270            _prev_end_offset = cur_offset + envelope_size;
3271            if 18 > max_ordinal {
3272                return Ok(());
3273            }
3274
3275            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3276            // are envelope_size bytes.
3277            let cur_offset: usize = (18 - 1) * envelope_size;
3278
3279            // Zero reserved fields.
3280            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3281
3282            // Safety:
3283            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3284            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3285            //   envelope_size bytes, there is always sufficient room.
3286            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3287                self.enable_introspection
3288                    .as_ref()
3289                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3290                encoder,
3291                offset + cur_offset,
3292                depth,
3293            )?;
3294
3295            _prev_end_offset = cur_offset + envelope_size;
3296            if 19 > max_ordinal {
3297                return Ok(());
3298            }
3299
3300            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3301            // are envelope_size bytes.
3302            let cur_offset: usize = (19 - 1) * envelope_size;
3303
3304            // Zero reserved fields.
3305            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3306
3307            // Safety:
3308            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3309            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3310            //   envelope_size bytes, there is always sufficient room.
3311            fidl::encoding::encode_in_envelope_optional::<AbiRevisionPolicy, D>(
3312                self.abi_revision_policy
3313                    .as_ref()
3314                    .map(<AbiRevisionPolicy as fidl::encoding::ValueTypeMarker>::borrow),
3315                encoder,
3316                offset + cur_offset,
3317                depth,
3318            )?;
3319
3320            _prev_end_offset = cur_offset + envelope_size;
3321            if 20 > max_ordinal {
3322                return Ok(());
3323            }
3324
3325            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3326            // are envelope_size bytes.
3327            let cur_offset: usize = (20 - 1) * envelope_size;
3328
3329            // Zero reserved fields.
3330            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3331
3332            // Safety:
3333            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3334            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3335            //   envelope_size bytes, there is always sufficient room.
3336            fidl::encoding::encode_in_envelope_optional::<VmexSource, D>(
3337                self.vmex_source
3338                    .as_ref()
3339                    .map(<VmexSource as fidl::encoding::ValueTypeMarker>::borrow),
3340                encoder,
3341                offset + cur_offset,
3342                depth,
3343            )?;
3344
3345            _prev_end_offset = cur_offset + envelope_size;
3346            if 21 > max_ordinal {
3347                return Ok(());
3348            }
3349
3350            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3351            // are envelope_size bytes.
3352            let cur_offset: usize = (21 - 1) * envelope_size;
3353
3354            // Zero reserved fields.
3355            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3356
3357            // Safety:
3358            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3359            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3360            //   envelope_size bytes, there is always sufficient room.
3361            fidl::encoding::encode_in_envelope_optional::<HealthCheck, D>(
3362                self.health_check
3363                    .as_ref()
3364                    .map(<HealthCheck as fidl::encoding::ValueTypeMarker>::borrow),
3365                encoder,
3366                offset + cur_offset,
3367                depth,
3368            )?;
3369
3370            _prev_end_offset = cur_offset + envelope_size;
3371            if 22 > max_ordinal {
3372                return Ok(());
3373            }
3374
3375            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3376            // are envelope_size bytes.
3377            let cur_offset: usize = (22 - 1) * envelope_size;
3378
3379            // Zero reserved fields.
3380            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3381
3382            // Safety:
3383            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3384            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3385            //   envelope_size bytes, there is always sufficient room.
3386            fidl::encoding::encode_in_envelope_optional::<TraceProvider, D>(
3387                self.trace_provider
3388                    .as_ref()
3389                    .map(<TraceProvider as fidl::encoding::ValueTypeMarker>::borrow),
3390                encoder,
3391                offset + cur_offset,
3392                depth,
3393            )?;
3394
3395            _prev_end_offset = cur_offset + envelope_size;
3396            if 23 > max_ordinal {
3397                return Ok(());
3398            }
3399
3400            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3401            // are envelope_size bytes.
3402            let cur_offset: usize = (23 - 1) * envelope_size;
3403
3404            // Zero reserved fields.
3405            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3406
3407            // Safety:
3408            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3409            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3410            //   envelope_size bytes, there is always sufficient room.
3411            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<InjectedCapabilities>, D>(
3412            self.inject_capabilities.as_ref().map(<fidl::encoding::UnboundedVector<InjectedCapabilities> as fidl::encoding::ValueTypeMarker>::borrow),
3413            encoder, offset + cur_offset, depth
3414        )?;
3415
3416            _prev_end_offset = cur_offset + envelope_size;
3417            if 24 > max_ordinal {
3418                return Ok(());
3419            }
3420
3421            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3422            // are envelope_size bytes.
3423            let cur_offset: usize = (24 - 1) * envelope_size;
3424
3425            // Zero reserved fields.
3426            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3427
3428            // Safety:
3429            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3430            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3431            //   envelope_size bytes, there is always sufficient room.
3432            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3433                self.scudo_options.as_ref().map(
3434                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3435                ),
3436                encoder,
3437                offset + cur_offset,
3438                depth,
3439            )?;
3440
3441            _prev_end_offset = cur_offset + envelope_size;
3442
3443            Ok(())
3444        }
3445    }
3446
3447    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
3448        #[inline(always)]
3449        fn new_empty() -> Self {
3450            Self::default()
3451        }
3452
3453        unsafe fn decode(
3454            &mut self,
3455            decoder: &mut fidl::encoding::Decoder<'_, D>,
3456            offset: usize,
3457            mut depth: fidl::encoding::Depth,
3458        ) -> fidl::Result<()> {
3459            decoder.debug_check_bounds::<Self>(offset);
3460            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3461                None => return Err(fidl::Error::NotNullable),
3462                Some(len) => len,
3463            };
3464            // Calling decoder.out_of_line_offset(0) is not allowed.
3465            if len == 0 {
3466                return Ok(());
3467            };
3468            depth.increment()?;
3469            let envelope_size = 8;
3470            let bytes_len = len * envelope_size;
3471            let offset = decoder.out_of_line_offset(bytes_len)?;
3472            // Decode the envelope for each type.
3473            let mut _next_ordinal_to_read = 0;
3474            let mut next_offset = offset;
3475            let end_offset = offset + bytes_len;
3476            _next_ordinal_to_read += 1;
3477            if next_offset >= end_offset {
3478                return Ok(());
3479            }
3480
3481            // Decode unknown envelopes for gaps in ordinals.
3482            while _next_ordinal_to_read < 1 {
3483                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3484                _next_ordinal_to_read += 1;
3485                next_offset += envelope_size;
3486            }
3487
3488            let next_out_of_line = decoder.next_out_of_line();
3489            let handles_before = decoder.remaining_handles();
3490            if let Some((inlined, num_bytes, num_handles)) =
3491                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3492            {
3493                let member_inline_size =
3494                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3495                if inlined != (member_inline_size <= 4) {
3496                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3497                }
3498                let inner_offset;
3499                let mut inner_depth = depth.clone();
3500                if inlined {
3501                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3502                    inner_offset = next_offset;
3503                } else {
3504                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3505                    inner_depth.increment()?;
3506                }
3507                let val_ref = self.debug.get_or_insert_with(|| fidl::new_empty!(bool, D));
3508                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3509                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3510                {
3511                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3512                }
3513                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3514                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3515                }
3516            }
3517
3518            next_offset += envelope_size;
3519            _next_ordinal_to_read += 1;
3520            if next_offset >= end_offset {
3521                return Ok(());
3522            }
3523
3524            // Decode unknown envelopes for gaps in ordinals.
3525            while _next_ordinal_to_read < 2 {
3526                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3527                _next_ordinal_to_read += 1;
3528                next_offset += envelope_size;
3529            }
3530
3531            let next_out_of_line = decoder.next_out_of_line();
3532            let handles_before = decoder.remaining_handles();
3533            if let Some((inlined, num_bytes, num_handles)) =
3534                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3535            {
3536                let member_inline_size =
3537                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3538                if inlined != (member_inline_size <= 4) {
3539                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3540                }
3541                let inner_offset;
3542                let mut inner_depth = depth.clone();
3543                if inlined {
3544                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3545                    inner_offset = next_offset;
3546                } else {
3547                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3548                    inner_depth.increment()?;
3549                }
3550                let val_ref =
3551                    self.list_children_batch_size.get_or_insert_with(|| fidl::new_empty!(u32, D));
3552                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3553                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3554                {
3555                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3556                }
3557                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3558                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3559                }
3560            }
3561
3562            next_offset += envelope_size;
3563            _next_ordinal_to_read += 1;
3564            if next_offset >= end_offset {
3565                return Ok(());
3566            }
3567
3568            // Decode unknown envelopes for gaps in ordinals.
3569            while _next_ordinal_to_read < 3 {
3570                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3571                _next_ordinal_to_read += 1;
3572                next_offset += envelope_size;
3573            }
3574
3575            let next_out_of_line = decoder.next_out_of_line();
3576            let handles_before = decoder.remaining_handles();
3577            if let Some((inlined, num_bytes, num_handles)) =
3578                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3579            {
3580                let member_inline_size =
3581                    <SecurityPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3582                if inlined != (member_inline_size <= 4) {
3583                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3584                }
3585                let inner_offset;
3586                let mut inner_depth = depth.clone();
3587                if inlined {
3588                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3589                    inner_offset = next_offset;
3590                } else {
3591                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3592                    inner_depth.increment()?;
3593                }
3594                let val_ref =
3595                    self.security_policy.get_or_insert_with(|| fidl::new_empty!(SecurityPolicy, D));
3596                fidl::decode!(SecurityPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
3597                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3598                {
3599                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3600                }
3601                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3602                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3603                }
3604            }
3605
3606            next_offset += envelope_size;
3607            _next_ordinal_to_read += 1;
3608            if next_offset >= end_offset {
3609                return Ok(());
3610            }
3611
3612            // Decode unknown envelopes for gaps in ordinals.
3613            while _next_ordinal_to_read < 4 {
3614                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3615                _next_ordinal_to_read += 1;
3616                next_offset += envelope_size;
3617            }
3618
3619            let next_out_of_line = decoder.next_out_of_line();
3620            let handles_before = decoder.remaining_handles();
3621            if let Some((inlined, num_bytes, num_handles)) =
3622                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3623            {
3624                let member_inline_size = <fidl::encoding::UnboundedVector<
3625                    fidl_fuchsia_component_decl__common::Capability,
3626                > as fidl::encoding::TypeMarker>::inline_size(
3627                    decoder.context
3628                );
3629                if inlined != (member_inline_size <= 4) {
3630                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3631                }
3632                let inner_offset;
3633                let mut inner_depth = depth.clone();
3634                if inlined {
3635                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3636                    inner_offset = next_offset;
3637                } else {
3638                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3639                    inner_depth.increment()?;
3640                }
3641                let val_ref = self.namespace_capabilities.get_or_insert_with(|| {
3642                    fidl::new_empty!(
3643                        fidl::encoding::UnboundedVector<
3644                            fidl_fuchsia_component_decl__common::Capability,
3645                        >,
3646                        D
3647                    )
3648                });
3649                fidl::decode!(
3650                    fidl::encoding::UnboundedVector<
3651                        fidl_fuchsia_component_decl__common::Capability,
3652                    >,
3653                    D,
3654                    val_ref,
3655                    decoder,
3656                    inner_offset,
3657                    inner_depth
3658                )?;
3659                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3660                {
3661                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3662                }
3663                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3664                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3665                }
3666            }
3667
3668            next_offset += envelope_size;
3669            _next_ordinal_to_read += 1;
3670            if next_offset >= end_offset {
3671                return Ok(());
3672            }
3673
3674            // Decode unknown envelopes for gaps in ordinals.
3675            while _next_ordinal_to_read < 5 {
3676                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3677                _next_ordinal_to_read += 1;
3678                next_offset += envelope_size;
3679            }
3680
3681            let next_out_of_line = decoder.next_out_of_line();
3682            let handles_before = decoder.remaining_handles();
3683            if let Some((inlined, num_bytes, num_handles)) =
3684                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3685            {
3686                let member_inline_size =
3687                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3688                if inlined != (member_inline_size <= 4) {
3689                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3690                }
3691                let inner_offset;
3692                let mut inner_depth = depth.clone();
3693                if inlined {
3694                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3695                    inner_offset = next_offset;
3696                } else {
3697                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3698                    inner_depth.increment()?;
3699                }
3700                let val_ref = self
3701                    .use_builtin_process_launcher
3702                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
3703                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3704                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3705                {
3706                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3707                }
3708                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3709                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3710                }
3711            }
3712
3713            next_offset += envelope_size;
3714            _next_ordinal_to_read += 1;
3715            if next_offset >= end_offset {
3716                return Ok(());
3717            }
3718
3719            // Decode unknown envelopes for gaps in ordinals.
3720            while _next_ordinal_to_read < 6 {
3721                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3722                _next_ordinal_to_read += 1;
3723                next_offset += envelope_size;
3724            }
3725
3726            let next_out_of_line = decoder.next_out_of_line();
3727            let handles_before = decoder.remaining_handles();
3728            if let Some((inlined, num_bytes, num_handles)) =
3729                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3730            {
3731                let member_inline_size =
3732                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3733                if inlined != (member_inline_size <= 4) {
3734                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3735                }
3736                let inner_offset;
3737                let mut inner_depth = depth.clone();
3738                if inlined {
3739                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3740                    inner_offset = next_offset;
3741                } else {
3742                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3743                    inner_depth.increment()?;
3744                }
3745                let val_ref =
3746                    self.maintain_utc_clock.get_or_insert_with(|| fidl::new_empty!(bool, D));
3747                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3748                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3749                {
3750                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3751                }
3752                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3753                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3754                }
3755            }
3756
3757            next_offset += envelope_size;
3758            _next_ordinal_to_read += 1;
3759            if next_offset >= end_offset {
3760                return Ok(());
3761            }
3762
3763            // Decode unknown envelopes for gaps in ordinals.
3764            while _next_ordinal_to_read < 7 {
3765                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3766                _next_ordinal_to_read += 1;
3767                next_offset += envelope_size;
3768            }
3769
3770            let next_out_of_line = decoder.next_out_of_line();
3771            let handles_before = decoder.remaining_handles();
3772            if let Some((inlined, num_bytes, num_handles)) =
3773                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3774            {
3775                let member_inline_size =
3776                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3777                if inlined != (member_inline_size <= 4) {
3778                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3779                }
3780                let inner_offset;
3781                let mut inner_depth = depth.clone();
3782                if inlined {
3783                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3784                    inner_offset = next_offset;
3785                } else {
3786                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3787                    inner_depth.increment()?;
3788                }
3789                let val_ref = self.num_threads.get_or_insert_with(|| fidl::new_empty!(u8, D));
3790                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
3791                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3792                {
3793                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3794                }
3795                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3796                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3797                }
3798            }
3799
3800            next_offset += envelope_size;
3801            _next_ordinal_to_read += 1;
3802            if next_offset >= end_offset {
3803                return Ok(());
3804            }
3805
3806            // Decode unknown envelopes for gaps in ordinals.
3807            while _next_ordinal_to_read < 10 {
3808                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3809                _next_ordinal_to_read += 1;
3810                next_offset += envelope_size;
3811            }
3812
3813            let next_out_of_line = decoder.next_out_of_line();
3814            let handles_before = decoder.remaining_handles();
3815            if let Some((inlined, num_bytes, num_handles)) =
3816                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3817            {
3818                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3819                if inlined != (member_inline_size <= 4) {
3820                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3821                }
3822                let inner_offset;
3823                let mut inner_depth = depth.clone();
3824                if inlined {
3825                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3826                    inner_offset = next_offset;
3827                } else {
3828                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3829                    inner_depth.increment()?;
3830                }
3831                let val_ref = self.root_component_url.get_or_insert_with(|| {
3832                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
3833                });
3834                fidl::decode!(
3835                    fidl::encoding::BoundedString<4096>,
3836                    D,
3837                    val_ref,
3838                    decoder,
3839                    inner_offset,
3840                    inner_depth
3841                )?;
3842                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3843                {
3844                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3845                }
3846                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3847                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3848                }
3849            }
3850
3851            next_offset += envelope_size;
3852            _next_ordinal_to_read += 1;
3853            if next_offset >= end_offset {
3854                return Ok(());
3855            }
3856
3857            // Decode unknown envelopes for gaps in ordinals.
3858            while _next_ordinal_to_read < 11 {
3859                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3860                _next_ordinal_to_read += 1;
3861                next_offset += envelope_size;
3862            }
3863
3864            let next_out_of_line = decoder.next_out_of_line();
3865            let handles_before = decoder.remaining_handles();
3866            if let Some((inlined, num_bytes, num_handles)) =
3867                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3868            {
3869                let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3870                if inlined != (member_inline_size <= 4) {
3871                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3872                }
3873                let inner_offset;
3874                let mut inner_depth = depth.clone();
3875                if inlined {
3876                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3877                    inner_offset = next_offset;
3878                } else {
3879                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3880                    inner_depth.increment()?;
3881                }
3882                let val_ref = self.component_id_index_path.get_or_insert_with(|| {
3883                    fidl::new_empty!(fidl::encoding::BoundedString<4095>, D)
3884                });
3885                fidl::decode!(
3886                    fidl::encoding::BoundedString<4095>,
3887                    D,
3888                    val_ref,
3889                    decoder,
3890                    inner_offset,
3891                    inner_depth
3892                )?;
3893                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3894                {
3895                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3896                }
3897                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3898                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3899                }
3900            }
3901
3902            next_offset += envelope_size;
3903            _next_ordinal_to_read += 1;
3904            if next_offset >= end_offset {
3905                return Ok(());
3906            }
3907
3908            // Decode unknown envelopes for gaps in ordinals.
3909            while _next_ordinal_to_read < 12 {
3910                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3911                _next_ordinal_to_read += 1;
3912                next_offset += envelope_size;
3913            }
3914
3915            let next_out_of_line = decoder.next_out_of_line();
3916            let handles_before = decoder.remaining_handles();
3917            if let Some((inlined, num_bytes, num_handles)) =
3918                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3919            {
3920                let member_inline_size =
3921                    <LogDestination as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3922                if inlined != (member_inline_size <= 4) {
3923                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3924                }
3925                let inner_offset;
3926                let mut inner_depth = depth.clone();
3927                if inlined {
3928                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3929                    inner_offset = next_offset;
3930                } else {
3931                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3932                    inner_depth.increment()?;
3933                }
3934                let val_ref =
3935                    self.log_destination.get_or_insert_with(|| fidl::new_empty!(LogDestination, D));
3936                fidl::decode!(LogDestination, D, val_ref, decoder, inner_offset, inner_depth)?;
3937                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3938                {
3939                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3940                }
3941                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3942                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3943                }
3944            }
3945
3946            next_offset += envelope_size;
3947            _next_ordinal_to_read += 1;
3948            if next_offset >= end_offset {
3949                return Ok(());
3950            }
3951
3952            // Decode unknown envelopes for gaps in ordinals.
3953            while _next_ordinal_to_read < 13 {
3954                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3955                _next_ordinal_to_read += 1;
3956                next_offset += envelope_size;
3957            }
3958
3959            let next_out_of_line = decoder.next_out_of_line();
3960            let handles_before = decoder.remaining_handles();
3961            if let Some((inlined, num_bytes, num_handles)) =
3962                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3963            {
3964                let member_inline_size =
3965                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3966                if inlined != (member_inline_size <= 4) {
3967                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3968                }
3969                let inner_offset;
3970                let mut inner_depth = depth.clone();
3971                if inlined {
3972                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3973                    inner_offset = next_offset;
3974                } else {
3975                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3976                    inner_depth.increment()?;
3977                }
3978                let val_ref = self.log_all_events.get_or_insert_with(|| fidl::new_empty!(bool, D));
3979                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3980                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3981                {
3982                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3983                }
3984                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3985                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3986                }
3987            }
3988
3989            next_offset += envelope_size;
3990            _next_ordinal_to_read += 1;
3991            if next_offset >= end_offset {
3992                return Ok(());
3993            }
3994
3995            // Decode unknown envelopes for gaps in ordinals.
3996            while _next_ordinal_to_read < 14 {
3997                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3998                _next_ordinal_to_read += 1;
3999                next_offset += envelope_size;
4000            }
4001
4002            let next_out_of_line = decoder.next_out_of_line();
4003            let handles_before = decoder.remaining_handles();
4004            if let Some((inlined, num_bytes, num_handles)) =
4005                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4006            {
4007                let member_inline_size =
4008                    <BuiltinBootResolver as fidl::encoding::TypeMarker>::inline_size(
4009                        decoder.context,
4010                    );
4011                if inlined != (member_inline_size <= 4) {
4012                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4013                }
4014                let inner_offset;
4015                let mut inner_depth = depth.clone();
4016                if inlined {
4017                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4018                    inner_offset = next_offset;
4019                } else {
4020                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4021                    inner_depth.increment()?;
4022                }
4023                let val_ref = self
4024                    .builtin_boot_resolver
4025                    .get_or_insert_with(|| fidl::new_empty!(BuiltinBootResolver, D));
4026                fidl::decode!(BuiltinBootResolver, D, val_ref, decoder, inner_offset, inner_depth)?;
4027                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4028                {
4029                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4030                }
4031                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4032                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4033                }
4034            }
4035
4036            next_offset += envelope_size;
4037            _next_ordinal_to_read += 1;
4038            if next_offset >= end_offset {
4039                return Ok(());
4040            }
4041
4042            // Decode unknown envelopes for gaps in ordinals.
4043            while _next_ordinal_to_read < 16 {
4044                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4045                _next_ordinal_to_read += 1;
4046                next_offset += envelope_size;
4047            }
4048
4049            let next_out_of_line = decoder.next_out_of_line();
4050            let handles_before = decoder.remaining_handles();
4051            if let Some((inlined, num_bytes, num_handles)) =
4052                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4053            {
4054                let member_inline_size =
4055                    <RealmBuilderResolverAndRunner as fidl::encoding::TypeMarker>::inline_size(
4056                        decoder.context,
4057                    );
4058                if inlined != (member_inline_size <= 4) {
4059                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4060                }
4061                let inner_offset;
4062                let mut inner_depth = depth.clone();
4063                if inlined {
4064                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4065                    inner_offset = next_offset;
4066                } else {
4067                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4068                    inner_depth.increment()?;
4069                }
4070                let val_ref = self
4071                    .realm_builder_resolver_and_runner
4072                    .get_or_insert_with(|| fidl::new_empty!(RealmBuilderResolverAndRunner, D));
4073                fidl::decode!(
4074                    RealmBuilderResolverAndRunner,
4075                    D,
4076                    val_ref,
4077                    decoder,
4078                    inner_offset,
4079                    inner_depth
4080                )?;
4081                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4082                {
4083                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4084                }
4085                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4086                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4087                }
4088            }
4089
4090            next_offset += envelope_size;
4091            _next_ordinal_to_read += 1;
4092            if next_offset >= end_offset {
4093                return Ok(());
4094            }
4095
4096            // Decode unknown envelopes for gaps in ordinals.
4097            while _next_ordinal_to_read < 17 {
4098                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4099                _next_ordinal_to_read += 1;
4100                next_offset += envelope_size;
4101            }
4102
4103            let next_out_of_line = decoder.next_out_of_line();
4104            let handles_before = decoder.remaining_handles();
4105            if let Some((inlined, num_bytes, num_handles)) =
4106                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4107            {
4108                let member_inline_size = <fidl::encoding::UnboundedVector<
4109                    fidl_fuchsia_component_decl__common::Capability,
4110                > as fidl::encoding::TypeMarker>::inline_size(
4111                    decoder.context
4112                );
4113                if inlined != (member_inline_size <= 4) {
4114                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4115                }
4116                let inner_offset;
4117                let mut inner_depth = depth.clone();
4118                if inlined {
4119                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4120                    inner_offset = next_offset;
4121                } else {
4122                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4123                    inner_depth.increment()?;
4124                }
4125                let val_ref = self.builtin_capabilities.get_or_insert_with(|| {
4126                    fidl::new_empty!(
4127                        fidl::encoding::UnboundedVector<
4128                            fidl_fuchsia_component_decl__common::Capability,
4129                        >,
4130                        D
4131                    )
4132                });
4133                fidl::decode!(
4134                    fidl::encoding::UnboundedVector<
4135                        fidl_fuchsia_component_decl__common::Capability,
4136                    >,
4137                    D,
4138                    val_ref,
4139                    decoder,
4140                    inner_offset,
4141                    inner_depth
4142                )?;
4143                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4144                {
4145                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4146                }
4147                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4148                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4149                }
4150            }
4151
4152            next_offset += envelope_size;
4153            _next_ordinal_to_read += 1;
4154            if next_offset >= end_offset {
4155                return Ok(());
4156            }
4157
4158            // Decode unknown envelopes for gaps in ordinals.
4159            while _next_ordinal_to_read < 18 {
4160                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4161                _next_ordinal_to_read += 1;
4162                next_offset += envelope_size;
4163            }
4164
4165            let next_out_of_line = decoder.next_out_of_line();
4166            let handles_before = decoder.remaining_handles();
4167            if let Some((inlined, num_bytes, num_handles)) =
4168                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4169            {
4170                let member_inline_size =
4171                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4172                if inlined != (member_inline_size <= 4) {
4173                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4174                }
4175                let inner_offset;
4176                let mut inner_depth = depth.clone();
4177                if inlined {
4178                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4179                    inner_offset = next_offset;
4180                } else {
4181                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4182                    inner_depth.increment()?;
4183                }
4184                let val_ref =
4185                    self.enable_introspection.get_or_insert_with(|| fidl::new_empty!(bool, D));
4186                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4187                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4188                {
4189                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4190                }
4191                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4192                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4193                }
4194            }
4195
4196            next_offset += envelope_size;
4197            _next_ordinal_to_read += 1;
4198            if next_offset >= end_offset {
4199                return Ok(());
4200            }
4201
4202            // Decode unknown envelopes for gaps in ordinals.
4203            while _next_ordinal_to_read < 19 {
4204                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4205                _next_ordinal_to_read += 1;
4206                next_offset += envelope_size;
4207            }
4208
4209            let next_out_of_line = decoder.next_out_of_line();
4210            let handles_before = decoder.remaining_handles();
4211            if let Some((inlined, num_bytes, num_handles)) =
4212                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4213            {
4214                let member_inline_size =
4215                    <AbiRevisionPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4216                if inlined != (member_inline_size <= 4) {
4217                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4218                }
4219                let inner_offset;
4220                let mut inner_depth = depth.clone();
4221                if inlined {
4222                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4223                    inner_offset = next_offset;
4224                } else {
4225                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4226                    inner_depth.increment()?;
4227                }
4228                let val_ref = self
4229                    .abi_revision_policy
4230                    .get_or_insert_with(|| fidl::new_empty!(AbiRevisionPolicy, D));
4231                fidl::decode!(AbiRevisionPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
4232                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4233                {
4234                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4235                }
4236                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4237                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4238                }
4239            }
4240
4241            next_offset += envelope_size;
4242            _next_ordinal_to_read += 1;
4243            if next_offset >= end_offset {
4244                return Ok(());
4245            }
4246
4247            // Decode unknown envelopes for gaps in ordinals.
4248            while _next_ordinal_to_read < 20 {
4249                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4250                _next_ordinal_to_read += 1;
4251                next_offset += envelope_size;
4252            }
4253
4254            let next_out_of_line = decoder.next_out_of_line();
4255            let handles_before = decoder.remaining_handles();
4256            if let Some((inlined, num_bytes, num_handles)) =
4257                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4258            {
4259                let member_inline_size =
4260                    <VmexSource as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4261                if inlined != (member_inline_size <= 4) {
4262                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4263                }
4264                let inner_offset;
4265                let mut inner_depth = depth.clone();
4266                if inlined {
4267                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4268                    inner_offset = next_offset;
4269                } else {
4270                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4271                    inner_depth.increment()?;
4272                }
4273                let val_ref =
4274                    self.vmex_source.get_or_insert_with(|| fidl::new_empty!(VmexSource, D));
4275                fidl::decode!(VmexSource, D, val_ref, decoder, inner_offset, inner_depth)?;
4276                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4277                {
4278                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4279                }
4280                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4281                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4282                }
4283            }
4284
4285            next_offset += envelope_size;
4286            _next_ordinal_to_read += 1;
4287            if next_offset >= end_offset {
4288                return Ok(());
4289            }
4290
4291            // Decode unknown envelopes for gaps in ordinals.
4292            while _next_ordinal_to_read < 21 {
4293                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4294                _next_ordinal_to_read += 1;
4295                next_offset += envelope_size;
4296            }
4297
4298            let next_out_of_line = decoder.next_out_of_line();
4299            let handles_before = decoder.remaining_handles();
4300            if let Some((inlined, num_bytes, num_handles)) =
4301                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4302            {
4303                let member_inline_size =
4304                    <HealthCheck as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4305                if inlined != (member_inline_size <= 4) {
4306                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4307                }
4308                let inner_offset;
4309                let mut inner_depth = depth.clone();
4310                if inlined {
4311                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4312                    inner_offset = next_offset;
4313                } else {
4314                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4315                    inner_depth.increment()?;
4316                }
4317                let val_ref =
4318                    self.health_check.get_or_insert_with(|| fidl::new_empty!(HealthCheck, D));
4319                fidl::decode!(HealthCheck, D, val_ref, decoder, inner_offset, inner_depth)?;
4320                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4321                {
4322                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4323                }
4324                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4325                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4326                }
4327            }
4328
4329            next_offset += envelope_size;
4330            _next_ordinal_to_read += 1;
4331            if next_offset >= end_offset {
4332                return Ok(());
4333            }
4334
4335            // Decode unknown envelopes for gaps in ordinals.
4336            while _next_ordinal_to_read < 22 {
4337                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4338                _next_ordinal_to_read += 1;
4339                next_offset += envelope_size;
4340            }
4341
4342            let next_out_of_line = decoder.next_out_of_line();
4343            let handles_before = decoder.remaining_handles();
4344            if let Some((inlined, num_bytes, num_handles)) =
4345                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4346            {
4347                let member_inline_size =
4348                    <TraceProvider as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4349                if inlined != (member_inline_size <= 4) {
4350                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4351                }
4352                let inner_offset;
4353                let mut inner_depth = depth.clone();
4354                if inlined {
4355                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4356                    inner_offset = next_offset;
4357                } else {
4358                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4359                    inner_depth.increment()?;
4360                }
4361                let val_ref =
4362                    self.trace_provider.get_or_insert_with(|| fidl::new_empty!(TraceProvider, D));
4363                fidl::decode!(TraceProvider, D, val_ref, decoder, inner_offset, inner_depth)?;
4364                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4365                {
4366                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4367                }
4368                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4369                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4370                }
4371            }
4372
4373            next_offset += envelope_size;
4374            _next_ordinal_to_read += 1;
4375            if next_offset >= end_offset {
4376                return Ok(());
4377            }
4378
4379            // Decode unknown envelopes for gaps in ordinals.
4380            while _next_ordinal_to_read < 23 {
4381                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4382                _next_ordinal_to_read += 1;
4383                next_offset += envelope_size;
4384            }
4385
4386            let next_out_of_line = decoder.next_out_of_line();
4387            let handles_before = decoder.remaining_handles();
4388            if let Some((inlined, num_bytes, num_handles)) =
4389                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4390            {
4391                let member_inline_size = <fidl::encoding::UnboundedVector<InjectedCapabilities> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4392                if inlined != (member_inline_size <= 4) {
4393                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4394                }
4395                let inner_offset;
4396                let mut inner_depth = depth.clone();
4397                if inlined {
4398                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4399                    inner_offset = next_offset;
4400                } else {
4401                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4402                    inner_depth.increment()?;
4403                }
4404                let val_ref = self.inject_capabilities.get_or_insert_with(|| {
4405                    fidl::new_empty!(fidl::encoding::UnboundedVector<InjectedCapabilities>, D)
4406                });
4407                fidl::decode!(
4408                    fidl::encoding::UnboundedVector<InjectedCapabilities>,
4409                    D,
4410                    val_ref,
4411                    decoder,
4412                    inner_offset,
4413                    inner_depth
4414                )?;
4415                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4416                {
4417                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4418                }
4419                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4420                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4421                }
4422            }
4423
4424            next_offset += envelope_size;
4425            _next_ordinal_to_read += 1;
4426            if next_offset >= end_offset {
4427                return Ok(());
4428            }
4429
4430            // Decode unknown envelopes for gaps in ordinals.
4431            while _next_ordinal_to_read < 24 {
4432                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4433                _next_ordinal_to_read += 1;
4434                next_offset += envelope_size;
4435            }
4436
4437            let next_out_of_line = decoder.next_out_of_line();
4438            let handles_before = decoder.remaining_handles();
4439            if let Some((inlined, num_bytes, num_handles)) =
4440                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4441            {
4442                let member_inline_size =
4443                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4444                        decoder.context,
4445                    );
4446                if inlined != (member_inline_size <= 4) {
4447                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4448                }
4449                let inner_offset;
4450                let mut inner_depth = depth.clone();
4451                if inlined {
4452                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4453                    inner_offset = next_offset;
4454                } else {
4455                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4456                    inner_depth.increment()?;
4457                }
4458                let val_ref = self
4459                    .scudo_options
4460                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4461                fidl::decode!(
4462                    fidl::encoding::UnboundedString,
4463                    D,
4464                    val_ref,
4465                    decoder,
4466                    inner_offset,
4467                    inner_depth
4468                )?;
4469                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4470                {
4471                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4472                }
4473                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4474                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4475                }
4476            }
4477
4478            next_offset += envelope_size;
4479
4480            // Decode the remaining unknown envelopes.
4481            while next_offset < end_offset {
4482                _next_ordinal_to_read += 1;
4483                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4484                next_offset += envelope_size;
4485            }
4486
4487            Ok(())
4488        }
4489    }
4490
4491    impl DebugRegistrationAllowlistEntry {
4492        #[inline(always)]
4493        fn max_ordinal_present(&self) -> u64 {
4494            if let Some(_) = self.environment_name {
4495                return 4;
4496            }
4497            if let Some(_) = self.moniker {
4498                return 3;
4499            }
4500            if let Some(_) = self.debug {
4501                return 2;
4502            }
4503            if let Some(_) = self.name {
4504                return 1;
4505            }
4506            0
4507        }
4508    }
4509
4510    impl fidl::encoding::ValueTypeMarker for DebugRegistrationAllowlistEntry {
4511        type Borrowed<'a> = &'a Self;
4512        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4513            value
4514        }
4515    }
4516
4517    unsafe impl fidl::encoding::TypeMarker for DebugRegistrationAllowlistEntry {
4518        type Owned = Self;
4519
4520        #[inline(always)]
4521        fn inline_align(_context: fidl::encoding::Context) -> usize {
4522            8
4523        }
4524
4525        #[inline(always)]
4526        fn inline_size(_context: fidl::encoding::Context) -> usize {
4527            16
4528        }
4529    }
4530
4531    unsafe impl<D: fidl::encoding::ResourceDialect>
4532        fidl::encoding::Encode<DebugRegistrationAllowlistEntry, D>
4533        for &DebugRegistrationAllowlistEntry
4534    {
4535        unsafe fn encode(
4536            self,
4537            encoder: &mut fidl::encoding::Encoder<'_, D>,
4538            offset: usize,
4539            mut depth: fidl::encoding::Depth,
4540        ) -> fidl::Result<()> {
4541            encoder.debug_check_bounds::<DebugRegistrationAllowlistEntry>(offset);
4542            // Vector header
4543            let max_ordinal: u64 = self.max_ordinal_present();
4544            encoder.write_num(max_ordinal, offset);
4545            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4546            // Calling encoder.out_of_line_offset(0) is not allowed.
4547            if max_ordinal == 0 {
4548                return Ok(());
4549            }
4550            depth.increment()?;
4551            let envelope_size = 8;
4552            let bytes_len = max_ordinal as usize * envelope_size;
4553            #[allow(unused_variables)]
4554            let offset = encoder.out_of_line_offset(bytes_len);
4555            let mut _prev_end_offset: usize = 0;
4556            if 1 > max_ordinal {
4557                return Ok(());
4558            }
4559
4560            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4561            // are envelope_size bytes.
4562            let cur_offset: usize = (1 - 1) * envelope_size;
4563
4564            // Zero reserved fields.
4565            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4566
4567            // Safety:
4568            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4569            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4570            //   envelope_size bytes, there is always sufficient room.
4571            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
4572                self.name.as_ref().map(
4573                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
4574                ),
4575                encoder,
4576                offset + cur_offset,
4577                depth,
4578            )?;
4579
4580            _prev_end_offset = cur_offset + envelope_size;
4581            if 2 > max_ordinal {
4582                return Ok(());
4583            }
4584
4585            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4586            // are envelope_size bytes.
4587            let cur_offset: usize = (2 - 1) * envelope_size;
4588
4589            // Zero reserved fields.
4590            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4591
4592            // Safety:
4593            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4594            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4595            //   envelope_size bytes, there is always sufficient room.
4596            fidl::encoding::encode_in_envelope_optional::<AllowlistedDebugRegistration, D>(
4597                self.debug
4598                    .as_ref()
4599                    .map(<AllowlistedDebugRegistration as fidl::encoding::ValueTypeMarker>::borrow),
4600                encoder,
4601                offset + cur_offset,
4602                depth,
4603            )?;
4604
4605            _prev_end_offset = cur_offset + envelope_size;
4606            if 3 > max_ordinal {
4607                return Ok(());
4608            }
4609
4610            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4611            // are envelope_size bytes.
4612            let cur_offset: usize = (3 - 1) * envelope_size;
4613
4614            // Zero reserved fields.
4615            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4616
4617            // Safety:
4618            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4619            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4620            //   envelope_size bytes, there is always sufficient room.
4621            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
4622            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4623            encoder, offset + cur_offset, depth
4624        )?;
4625
4626            _prev_end_offset = cur_offset + envelope_size;
4627            if 4 > max_ordinal {
4628                return Ok(());
4629            }
4630
4631            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4632            // are envelope_size bytes.
4633            let cur_offset: usize = (4 - 1) * envelope_size;
4634
4635            // Zero reserved fields.
4636            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4637
4638            // Safety:
4639            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4640            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4641            //   envelope_size bytes, there is always sufficient room.
4642            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
4643                self.environment_name.as_ref().map(
4644                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
4645                ),
4646                encoder,
4647                offset + cur_offset,
4648                depth,
4649            )?;
4650
4651            _prev_end_offset = cur_offset + envelope_size;
4652
4653            Ok(())
4654        }
4655    }
4656
4657    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4658        for DebugRegistrationAllowlistEntry
4659    {
4660        #[inline(always)]
4661        fn new_empty() -> Self {
4662            Self::default()
4663        }
4664
4665        unsafe fn decode(
4666            &mut self,
4667            decoder: &mut fidl::encoding::Decoder<'_, D>,
4668            offset: usize,
4669            mut depth: fidl::encoding::Depth,
4670        ) -> fidl::Result<()> {
4671            decoder.debug_check_bounds::<Self>(offset);
4672            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4673                None => return Err(fidl::Error::NotNullable),
4674                Some(len) => len,
4675            };
4676            // Calling decoder.out_of_line_offset(0) is not allowed.
4677            if len == 0 {
4678                return Ok(());
4679            };
4680            depth.increment()?;
4681            let envelope_size = 8;
4682            let bytes_len = len * envelope_size;
4683            let offset = decoder.out_of_line_offset(bytes_len)?;
4684            // Decode the envelope for each type.
4685            let mut _next_ordinal_to_read = 0;
4686            let mut next_offset = offset;
4687            let end_offset = offset + bytes_len;
4688            _next_ordinal_to_read += 1;
4689            if next_offset >= end_offset {
4690                return Ok(());
4691            }
4692
4693            // Decode unknown envelopes for gaps in ordinals.
4694            while _next_ordinal_to_read < 1 {
4695                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4696                _next_ordinal_to_read += 1;
4697                next_offset += envelope_size;
4698            }
4699
4700            let next_out_of_line = decoder.next_out_of_line();
4701            let handles_before = decoder.remaining_handles();
4702            if let Some((inlined, num_bytes, num_handles)) =
4703                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4704            {
4705                let member_inline_size =
4706                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
4707                        decoder.context,
4708                    );
4709                if inlined != (member_inline_size <= 4) {
4710                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4711                }
4712                let inner_offset;
4713                let mut inner_depth = depth.clone();
4714                if inlined {
4715                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4716                    inner_offset = next_offset;
4717                } else {
4718                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4719                    inner_depth.increment()?;
4720                }
4721                let val_ref = self
4722                    .name
4723                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
4724                fidl::decode!(
4725                    fidl::encoding::BoundedString<255>,
4726                    D,
4727                    val_ref,
4728                    decoder,
4729                    inner_offset,
4730                    inner_depth
4731                )?;
4732                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4733                {
4734                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4735                }
4736                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4737                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4738                }
4739            }
4740
4741            next_offset += envelope_size;
4742            _next_ordinal_to_read += 1;
4743            if next_offset >= end_offset {
4744                return Ok(());
4745            }
4746
4747            // Decode unknown envelopes for gaps in ordinals.
4748            while _next_ordinal_to_read < 2 {
4749                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4750                _next_ordinal_to_read += 1;
4751                next_offset += envelope_size;
4752            }
4753
4754            let next_out_of_line = decoder.next_out_of_line();
4755            let handles_before = decoder.remaining_handles();
4756            if let Some((inlined, num_bytes, num_handles)) =
4757                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4758            {
4759                let member_inline_size =
4760                    <AllowlistedDebugRegistration as fidl::encoding::TypeMarker>::inline_size(
4761                        decoder.context,
4762                    );
4763                if inlined != (member_inline_size <= 4) {
4764                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4765                }
4766                let inner_offset;
4767                let mut inner_depth = depth.clone();
4768                if inlined {
4769                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4770                    inner_offset = next_offset;
4771                } else {
4772                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4773                    inner_depth.increment()?;
4774                }
4775                let val_ref = self
4776                    .debug
4777                    .get_or_insert_with(|| fidl::new_empty!(AllowlistedDebugRegistration, D));
4778                fidl::decode!(
4779                    AllowlistedDebugRegistration,
4780                    D,
4781                    val_ref,
4782                    decoder,
4783                    inner_offset,
4784                    inner_depth
4785                )?;
4786                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4787                {
4788                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4789                }
4790                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4791                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4792                }
4793            }
4794
4795            next_offset += envelope_size;
4796            _next_ordinal_to_read += 1;
4797            if next_offset >= end_offset {
4798                return Ok(());
4799            }
4800
4801            // Decode unknown envelopes for gaps in ordinals.
4802            while _next_ordinal_to_read < 3 {
4803                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4804                _next_ordinal_to_read += 1;
4805                next_offset += envelope_size;
4806            }
4807
4808            let next_out_of_line = decoder.next_out_of_line();
4809            let handles_before = decoder.remaining_handles();
4810            if let Some((inlined, num_bytes, num_handles)) =
4811                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4812            {
4813                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4814                if inlined != (member_inline_size <= 4) {
4815                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4816                }
4817                let inner_offset;
4818                let mut inner_depth = depth.clone();
4819                if inlined {
4820                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4821                    inner_offset = next_offset;
4822                } else {
4823                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4824                    inner_depth.increment()?;
4825                }
4826                let val_ref = self.moniker.get_or_insert_with(|| {
4827                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
4828                });
4829                fidl::decode!(
4830                    fidl::encoding::BoundedString<4096>,
4831                    D,
4832                    val_ref,
4833                    decoder,
4834                    inner_offset,
4835                    inner_depth
4836                )?;
4837                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4838                {
4839                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4840                }
4841                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4842                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4843                }
4844            }
4845
4846            next_offset += envelope_size;
4847            _next_ordinal_to_read += 1;
4848            if next_offset >= end_offset {
4849                return Ok(());
4850            }
4851
4852            // Decode unknown envelopes for gaps in ordinals.
4853            while _next_ordinal_to_read < 4 {
4854                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4855                _next_ordinal_to_read += 1;
4856                next_offset += envelope_size;
4857            }
4858
4859            let next_out_of_line = decoder.next_out_of_line();
4860            let handles_before = decoder.remaining_handles();
4861            if let Some((inlined, num_bytes, num_handles)) =
4862                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4863            {
4864                let member_inline_size =
4865                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
4866                        decoder.context,
4867                    );
4868                if inlined != (member_inline_size <= 4) {
4869                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4870                }
4871                let inner_offset;
4872                let mut inner_depth = depth.clone();
4873                if inlined {
4874                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4875                    inner_offset = next_offset;
4876                } else {
4877                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4878                    inner_depth.increment()?;
4879                }
4880                let val_ref = self
4881                    .environment_name
4882                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
4883                fidl::decode!(
4884                    fidl::encoding::BoundedString<255>,
4885                    D,
4886                    val_ref,
4887                    decoder,
4888                    inner_offset,
4889                    inner_depth
4890                )?;
4891                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4892                {
4893                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4894                }
4895                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4896                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4897                }
4898            }
4899
4900            next_offset += envelope_size;
4901
4902            // Decode the remaining unknown envelopes.
4903            while next_offset < end_offset {
4904                _next_ordinal_to_read += 1;
4905                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4906                next_offset += envelope_size;
4907            }
4908
4909            Ok(())
4910        }
4911    }
4912
4913    impl DebugRegistrationPolicyAllowlists {
4914        #[inline(always)]
4915        fn max_ordinal_present(&self) -> u64 {
4916            if let Some(_) = self.allowlist {
4917                return 1;
4918            }
4919            0
4920        }
4921    }
4922
4923    impl fidl::encoding::ValueTypeMarker for DebugRegistrationPolicyAllowlists {
4924        type Borrowed<'a> = &'a Self;
4925        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4926            value
4927        }
4928    }
4929
4930    unsafe impl fidl::encoding::TypeMarker for DebugRegistrationPolicyAllowlists {
4931        type Owned = Self;
4932
4933        #[inline(always)]
4934        fn inline_align(_context: fidl::encoding::Context) -> usize {
4935            8
4936        }
4937
4938        #[inline(always)]
4939        fn inline_size(_context: fidl::encoding::Context) -> usize {
4940            16
4941        }
4942    }
4943
4944    unsafe impl<D: fidl::encoding::ResourceDialect>
4945        fidl::encoding::Encode<DebugRegistrationPolicyAllowlists, D>
4946        for &DebugRegistrationPolicyAllowlists
4947    {
4948        unsafe fn encode(
4949            self,
4950            encoder: &mut fidl::encoding::Encoder<'_, D>,
4951            offset: usize,
4952            mut depth: fidl::encoding::Depth,
4953        ) -> fidl::Result<()> {
4954            encoder.debug_check_bounds::<DebugRegistrationPolicyAllowlists>(offset);
4955            // Vector header
4956            let max_ordinal: u64 = self.max_ordinal_present();
4957            encoder.write_num(max_ordinal, offset);
4958            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4959            // Calling encoder.out_of_line_offset(0) is not allowed.
4960            if max_ordinal == 0 {
4961                return Ok(());
4962            }
4963            depth.increment()?;
4964            let envelope_size = 8;
4965            let bytes_len = max_ordinal as usize * envelope_size;
4966            #[allow(unused_variables)]
4967            let offset = encoder.out_of_line_offset(bytes_len);
4968            let mut _prev_end_offset: usize = 0;
4969            if 1 > max_ordinal {
4970                return Ok(());
4971            }
4972
4973            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4974            // are envelope_size bytes.
4975            let cur_offset: usize = (1 - 1) * envelope_size;
4976
4977            // Zero reserved fields.
4978            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4979
4980            // Safety:
4981            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4982            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4983            //   envelope_size bytes, there is always sufficient room.
4984            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D>(
4985            self.allowlist.as_ref().map(<fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128> as fidl::encoding::ValueTypeMarker>::borrow),
4986            encoder, offset + cur_offset, depth
4987        )?;
4988
4989            _prev_end_offset = cur_offset + envelope_size;
4990
4991            Ok(())
4992        }
4993    }
4994
4995    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4996        for DebugRegistrationPolicyAllowlists
4997    {
4998        #[inline(always)]
4999        fn new_empty() -> Self {
5000            Self::default()
5001        }
5002
5003        unsafe fn decode(
5004            &mut self,
5005            decoder: &mut fidl::encoding::Decoder<'_, D>,
5006            offset: usize,
5007            mut depth: fidl::encoding::Depth,
5008        ) -> fidl::Result<()> {
5009            decoder.debug_check_bounds::<Self>(offset);
5010            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5011                None => return Err(fidl::Error::NotNullable),
5012                Some(len) => len,
5013            };
5014            // Calling decoder.out_of_line_offset(0) is not allowed.
5015            if len == 0 {
5016                return Ok(());
5017            };
5018            depth.increment()?;
5019            let envelope_size = 8;
5020            let bytes_len = len * envelope_size;
5021            let offset = decoder.out_of_line_offset(bytes_len)?;
5022            // Decode the envelope for each type.
5023            let mut _next_ordinal_to_read = 0;
5024            let mut next_offset = offset;
5025            let end_offset = offset + bytes_len;
5026            _next_ordinal_to_read += 1;
5027            if next_offset >= end_offset {
5028                return Ok(());
5029            }
5030
5031            // Decode unknown envelopes for gaps in ordinals.
5032            while _next_ordinal_to_read < 1 {
5033                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5034                _next_ordinal_to_read += 1;
5035                next_offset += envelope_size;
5036            }
5037
5038            let next_out_of_line = decoder.next_out_of_line();
5039            let handles_before = decoder.remaining_handles();
5040            if let Some((inlined, num_bytes, num_handles)) =
5041                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5042            {
5043                let member_inline_size = <fidl::encoding::Vector<
5044                    DebugRegistrationAllowlistEntry,
5045                    128,
5046                > as fidl::encoding::TypeMarker>::inline_size(
5047                    decoder.context
5048                );
5049                if inlined != (member_inline_size <= 4) {
5050                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5051                }
5052                let inner_offset;
5053                let mut inner_depth = depth.clone();
5054                if inlined {
5055                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5056                    inner_offset = next_offset;
5057                } else {
5058                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5059                    inner_depth.increment()?;
5060                }
5061                let val_ref =
5062                self.allowlist.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D));
5063                fidl::decode!(fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
5064                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5065                {
5066                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5067                }
5068                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5069                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5070                }
5071            }
5072
5073            next_offset += envelope_size;
5074
5075            // Decode the remaining unknown envelopes.
5076            while next_offset < end_offset {
5077                _next_ordinal_to_read += 1;
5078                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5079                next_offset += envelope_size;
5080            }
5081
5082            Ok(())
5083        }
5084    }
5085
5086    impl EventStreamRouteMetadata {
5087        #[inline(always)]
5088        fn max_ordinal_present(&self) -> u64 {
5089            if let Some(_) = self.scope {
5090                return 2;
5091            }
5092            if let Some(_) = self.scope_moniker {
5093                return 1;
5094            }
5095            0
5096        }
5097    }
5098
5099    impl fidl::encoding::ValueTypeMarker for EventStreamRouteMetadata {
5100        type Borrowed<'a> = &'a Self;
5101        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5102            value
5103        }
5104    }
5105
5106    unsafe impl fidl::encoding::TypeMarker for EventStreamRouteMetadata {
5107        type Owned = Self;
5108
5109        #[inline(always)]
5110        fn inline_align(_context: fidl::encoding::Context) -> usize {
5111            8
5112        }
5113
5114        #[inline(always)]
5115        fn inline_size(_context: fidl::encoding::Context) -> usize {
5116            16
5117        }
5118    }
5119
5120    unsafe impl<D: fidl::encoding::ResourceDialect>
5121        fidl::encoding::Encode<EventStreamRouteMetadata, D> for &EventStreamRouteMetadata
5122    {
5123        unsafe fn encode(
5124            self,
5125            encoder: &mut fidl::encoding::Encoder<'_, D>,
5126            offset: usize,
5127            mut depth: fidl::encoding::Depth,
5128        ) -> fidl::Result<()> {
5129            encoder.debug_check_bounds::<EventStreamRouteMetadata>(offset);
5130            // Vector header
5131            let max_ordinal: u64 = self.max_ordinal_present();
5132            encoder.write_num(max_ordinal, offset);
5133            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5134            // Calling encoder.out_of_line_offset(0) is not allowed.
5135            if max_ordinal == 0 {
5136                return Ok(());
5137            }
5138            depth.increment()?;
5139            let envelope_size = 8;
5140            let bytes_len = max_ordinal as usize * envelope_size;
5141            #[allow(unused_variables)]
5142            let offset = encoder.out_of_line_offset(bytes_len);
5143            let mut _prev_end_offset: usize = 0;
5144            if 1 > max_ordinal {
5145                return Ok(());
5146            }
5147
5148            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5149            // are envelope_size bytes.
5150            let cur_offset: usize = (1 - 1) * envelope_size;
5151
5152            // Zero reserved fields.
5153            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5154
5155            // Safety:
5156            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5157            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5158            //   envelope_size bytes, there is always sufficient room.
5159            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
5160            self.scope_moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
5161            encoder, offset + cur_offset, depth
5162        )?;
5163
5164            _prev_end_offset = cur_offset + envelope_size;
5165            if 2 > max_ordinal {
5166                return Ok(());
5167            }
5168
5169            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5170            // are envelope_size bytes.
5171            let cur_offset: usize = (2 - 1) * envelope_size;
5172
5173            // Zero reserved fields.
5174            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5175
5176            // Safety:
5177            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5178            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5179            //   envelope_size bytes, there is always sufficient room.
5180            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref>, D>(
5181            self.scope.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref> as fidl::encoding::ValueTypeMarker>::borrow),
5182            encoder, offset + cur_offset, depth
5183        )?;
5184
5185            _prev_end_offset = cur_offset + envelope_size;
5186
5187            Ok(())
5188        }
5189    }
5190
5191    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5192        for EventStreamRouteMetadata
5193    {
5194        #[inline(always)]
5195        fn new_empty() -> Self {
5196            Self::default()
5197        }
5198
5199        unsafe fn decode(
5200            &mut self,
5201            decoder: &mut fidl::encoding::Decoder<'_, D>,
5202            offset: usize,
5203            mut depth: fidl::encoding::Depth,
5204        ) -> fidl::Result<()> {
5205            decoder.debug_check_bounds::<Self>(offset);
5206            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5207                None => return Err(fidl::Error::NotNullable),
5208                Some(len) => len,
5209            };
5210            // Calling decoder.out_of_line_offset(0) is not allowed.
5211            if len == 0 {
5212                return Ok(());
5213            };
5214            depth.increment()?;
5215            let envelope_size = 8;
5216            let bytes_len = len * envelope_size;
5217            let offset = decoder.out_of_line_offset(bytes_len)?;
5218            // Decode the envelope for each type.
5219            let mut _next_ordinal_to_read = 0;
5220            let mut next_offset = offset;
5221            let end_offset = offset + bytes_len;
5222            _next_ordinal_to_read += 1;
5223            if next_offset >= end_offset {
5224                return Ok(());
5225            }
5226
5227            // Decode unknown envelopes for gaps in ordinals.
5228            while _next_ordinal_to_read < 1 {
5229                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5230                _next_ordinal_to_read += 1;
5231                next_offset += envelope_size;
5232            }
5233
5234            let next_out_of_line = decoder.next_out_of_line();
5235            let handles_before = decoder.remaining_handles();
5236            if let Some((inlined, num_bytes, num_handles)) =
5237                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5238            {
5239                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5240                if inlined != (member_inline_size <= 4) {
5241                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5242                }
5243                let inner_offset;
5244                let mut inner_depth = depth.clone();
5245                if inlined {
5246                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5247                    inner_offset = next_offset;
5248                } else {
5249                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5250                    inner_depth.increment()?;
5251                }
5252                let val_ref = self.scope_moniker.get_or_insert_with(|| {
5253                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
5254                });
5255                fidl::decode!(
5256                    fidl::encoding::BoundedString<4096>,
5257                    D,
5258                    val_ref,
5259                    decoder,
5260                    inner_offset,
5261                    inner_depth
5262                )?;
5263                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5264                {
5265                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5266                }
5267                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5268                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5269                }
5270            }
5271
5272            next_offset += envelope_size;
5273            _next_ordinal_to_read += 1;
5274            if next_offset >= end_offset {
5275                return Ok(());
5276            }
5277
5278            // Decode unknown envelopes for gaps in ordinals.
5279            while _next_ordinal_to_read < 2 {
5280                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5281                _next_ordinal_to_read += 1;
5282                next_offset += envelope_size;
5283            }
5284
5285            let next_out_of_line = decoder.next_out_of_line();
5286            let handles_before = decoder.remaining_handles();
5287            if let Some((inlined, num_bytes, num_handles)) =
5288                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5289            {
5290                let member_inline_size = <fidl::encoding::UnboundedVector<
5291                    fidl_fuchsia_component_decl__common::Ref,
5292                > as fidl::encoding::TypeMarker>::inline_size(
5293                    decoder.context
5294                );
5295                if inlined != (member_inline_size <= 4) {
5296                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5297                }
5298                let inner_offset;
5299                let mut inner_depth = depth.clone();
5300                if inlined {
5301                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5302                    inner_offset = next_offset;
5303                } else {
5304                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5305                    inner_depth.increment()?;
5306                }
5307                let val_ref = self.scope.get_or_insert_with(|| {
5308                    fidl::new_empty!(
5309                        fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref>,
5310                        D
5311                    )
5312                });
5313                fidl::decode!(
5314                    fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref>,
5315                    D,
5316                    val_ref,
5317                    decoder,
5318                    inner_offset,
5319                    inner_depth
5320                )?;
5321                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5322                {
5323                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5324                }
5325                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5326                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5327                }
5328            }
5329
5330            next_offset += envelope_size;
5331
5332            // Decode the remaining unknown envelopes.
5333            while next_offset < end_offset {
5334                _next_ordinal_to_read += 1;
5335                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5336                next_offset += envelope_size;
5337            }
5338
5339            Ok(())
5340        }
5341    }
5342
5343    impl HealthCheck {
5344        #[inline(always)]
5345        fn max_ordinal_present(&self) -> u64 {
5346            if let Some(_) = self.monikers {
5347                return 1;
5348            }
5349            0
5350        }
5351    }
5352
5353    impl fidl::encoding::ValueTypeMarker for HealthCheck {
5354        type Borrowed<'a> = &'a Self;
5355        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5356            value
5357        }
5358    }
5359
5360    unsafe impl fidl::encoding::TypeMarker for HealthCheck {
5361        type Owned = Self;
5362
5363        #[inline(always)]
5364        fn inline_align(_context: fidl::encoding::Context) -> usize {
5365            8
5366        }
5367
5368        #[inline(always)]
5369        fn inline_size(_context: fidl::encoding::Context) -> usize {
5370            16
5371        }
5372    }
5373
5374    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthCheck, D>
5375        for &HealthCheck
5376    {
5377        unsafe fn encode(
5378            self,
5379            encoder: &mut fidl::encoding::Encoder<'_, D>,
5380            offset: usize,
5381            mut depth: fidl::encoding::Depth,
5382        ) -> fidl::Result<()> {
5383            encoder.debug_check_bounds::<HealthCheck>(offset);
5384            // Vector header
5385            let max_ordinal: u64 = self.max_ordinal_present();
5386            encoder.write_num(max_ordinal, offset);
5387            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5388            // Calling encoder.out_of_line_offset(0) is not allowed.
5389            if max_ordinal == 0 {
5390                return Ok(());
5391            }
5392            depth.increment()?;
5393            let envelope_size = 8;
5394            let bytes_len = max_ordinal as usize * envelope_size;
5395            #[allow(unused_variables)]
5396            let offset = encoder.out_of_line_offset(bytes_len);
5397            let mut _prev_end_offset: usize = 0;
5398            if 1 > max_ordinal {
5399                return Ok(());
5400            }
5401
5402            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5403            // are envelope_size bytes.
5404            let cur_offset: usize = (1 - 1) * envelope_size;
5405
5406            // Zero reserved fields.
5407            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5408
5409            // Safety:
5410            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5411            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5412            //   envelope_size bytes, there is always sufficient room.
5413            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>, D>(
5414            self.monikers.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>> as fidl::encoding::ValueTypeMarker>::borrow),
5415            encoder, offset + cur_offset, depth
5416        )?;
5417
5418            _prev_end_offset = cur_offset + envelope_size;
5419
5420            Ok(())
5421        }
5422    }
5423
5424    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthCheck {
5425        #[inline(always)]
5426        fn new_empty() -> Self {
5427            Self::default()
5428        }
5429
5430        unsafe fn decode(
5431            &mut self,
5432            decoder: &mut fidl::encoding::Decoder<'_, D>,
5433            offset: usize,
5434            mut depth: fidl::encoding::Depth,
5435        ) -> fidl::Result<()> {
5436            decoder.debug_check_bounds::<Self>(offset);
5437            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5438                None => return Err(fidl::Error::NotNullable),
5439                Some(len) => len,
5440            };
5441            // Calling decoder.out_of_line_offset(0) is not allowed.
5442            if len == 0 {
5443                return Ok(());
5444            };
5445            depth.increment()?;
5446            let envelope_size = 8;
5447            let bytes_len = len * envelope_size;
5448            let offset = decoder.out_of_line_offset(bytes_len)?;
5449            // Decode the envelope for each type.
5450            let mut _next_ordinal_to_read = 0;
5451            let mut next_offset = offset;
5452            let end_offset = offset + bytes_len;
5453            _next_ordinal_to_read += 1;
5454            if next_offset >= end_offset {
5455                return Ok(());
5456            }
5457
5458            // Decode unknown envelopes for gaps in ordinals.
5459            while _next_ordinal_to_read < 1 {
5460                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5461                _next_ordinal_to_read += 1;
5462                next_offset += envelope_size;
5463            }
5464
5465            let next_out_of_line = decoder.next_out_of_line();
5466            let handles_before = decoder.remaining_handles();
5467            if let Some((inlined, num_bytes, num_handles)) =
5468                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5469            {
5470                let member_inline_size = <fidl::encoding::UnboundedVector<
5471                    fidl::encoding::BoundedString<255>,
5472                > as fidl::encoding::TypeMarker>::inline_size(
5473                    decoder.context
5474                );
5475                if inlined != (member_inline_size <= 4) {
5476                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5477                }
5478                let inner_offset;
5479                let mut inner_depth = depth.clone();
5480                if inlined {
5481                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5482                    inner_offset = next_offset;
5483                } else {
5484                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5485                    inner_depth.increment()?;
5486                }
5487                let val_ref = self.monikers.get_or_insert_with(|| {
5488                    fidl::new_empty!(
5489                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
5490                        D
5491                    )
5492                });
5493                fidl::decode!(
5494                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
5495                    D,
5496                    val_ref,
5497                    decoder,
5498                    inner_offset,
5499                    inner_depth
5500                )?;
5501                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5502                {
5503                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5504                }
5505                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5506                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5507                }
5508            }
5509
5510            next_offset += envelope_size;
5511
5512            // Decode the remaining unknown envelopes.
5513            while next_offset < end_offset {
5514                _next_ordinal_to_read += 1;
5515                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5516                next_offset += envelope_size;
5517            }
5518
5519            Ok(())
5520        }
5521    }
5522
5523    impl InjectedCapabilities {
5524        #[inline(always)]
5525        fn max_ordinal_present(&self) -> u64 {
5526            if let Some(_) = self.use_ {
5527                return 2;
5528            }
5529            if let Some(_) = self.components {
5530                return 1;
5531            }
5532            0
5533        }
5534    }
5535
5536    impl fidl::encoding::ValueTypeMarker for InjectedCapabilities {
5537        type Borrowed<'a> = &'a Self;
5538        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5539            value
5540        }
5541    }
5542
5543    unsafe impl fidl::encoding::TypeMarker for InjectedCapabilities {
5544        type Owned = Self;
5545
5546        #[inline(always)]
5547        fn inline_align(_context: fidl::encoding::Context) -> usize {
5548            8
5549        }
5550
5551        #[inline(always)]
5552        fn inline_size(_context: fidl::encoding::Context) -> usize {
5553            16
5554        }
5555    }
5556
5557    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InjectedCapabilities, D>
5558        for &InjectedCapabilities
5559    {
5560        unsafe fn encode(
5561            self,
5562            encoder: &mut fidl::encoding::Encoder<'_, D>,
5563            offset: usize,
5564            mut depth: fidl::encoding::Depth,
5565        ) -> fidl::Result<()> {
5566            encoder.debug_check_bounds::<InjectedCapabilities>(offset);
5567            // Vector header
5568            let max_ordinal: u64 = self.max_ordinal_present();
5569            encoder.write_num(max_ordinal, offset);
5570            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5571            // Calling encoder.out_of_line_offset(0) is not allowed.
5572            if max_ordinal == 0 {
5573                return Ok(());
5574            }
5575            depth.increment()?;
5576            let envelope_size = 8;
5577            let bytes_len = max_ordinal as usize * envelope_size;
5578            #[allow(unused_variables)]
5579            let offset = encoder.out_of_line_offset(bytes_len);
5580            let mut _prev_end_offset: usize = 0;
5581            if 1 > max_ordinal {
5582                return Ok(());
5583            }
5584
5585            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5586            // are envelope_size bytes.
5587            let cur_offset: usize = (1 - 1) * envelope_size;
5588
5589            // Zero reserved fields.
5590            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5591
5592            // Safety:
5593            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5594            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5595            //   envelope_size bytes, there is always sufficient room.
5596            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
5597            self.components.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
5598            encoder, offset + cur_offset, depth
5599        )?;
5600
5601            _prev_end_offset = cur_offset + envelope_size;
5602            if 2 > max_ordinal {
5603                return Ok(());
5604            }
5605
5606            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5607            // are envelope_size bytes.
5608            let cur_offset: usize = (2 - 1) * envelope_size;
5609
5610            // Zero reserved fields.
5611            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5612
5613            // Safety:
5614            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5615            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5616            //   envelope_size bytes, there is always sufficient room.
5617            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<InjectedUse>, D>(
5618            self.use_.as_ref().map(<fidl::encoding::UnboundedVector<InjectedUse> as fidl::encoding::ValueTypeMarker>::borrow),
5619            encoder, offset + cur_offset, depth
5620        )?;
5621
5622            _prev_end_offset = cur_offset + envelope_size;
5623
5624            Ok(())
5625        }
5626    }
5627
5628    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InjectedCapabilities {
5629        #[inline(always)]
5630        fn new_empty() -> Self {
5631            Self::default()
5632        }
5633
5634        unsafe fn decode(
5635            &mut self,
5636            decoder: &mut fidl::encoding::Decoder<'_, D>,
5637            offset: usize,
5638            mut depth: fidl::encoding::Depth,
5639        ) -> fidl::Result<()> {
5640            decoder.debug_check_bounds::<Self>(offset);
5641            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5642                None => return Err(fidl::Error::NotNullable),
5643                Some(len) => len,
5644            };
5645            // Calling decoder.out_of_line_offset(0) is not allowed.
5646            if len == 0 {
5647                return Ok(());
5648            };
5649            depth.increment()?;
5650            let envelope_size = 8;
5651            let bytes_len = len * envelope_size;
5652            let offset = decoder.out_of_line_offset(bytes_len)?;
5653            // Decode the envelope for each type.
5654            let mut _next_ordinal_to_read = 0;
5655            let mut next_offset = offset;
5656            let end_offset = offset + bytes_len;
5657            _next_ordinal_to_read += 1;
5658            if next_offset >= end_offset {
5659                return Ok(());
5660            }
5661
5662            // Decode unknown envelopes for gaps in ordinals.
5663            while _next_ordinal_to_read < 1 {
5664                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5665                _next_ordinal_to_read += 1;
5666                next_offset += envelope_size;
5667            }
5668
5669            let next_out_of_line = decoder.next_out_of_line();
5670            let handles_before = decoder.remaining_handles();
5671            if let Some((inlined, num_bytes, num_handles)) =
5672                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5673            {
5674                let member_inline_size = <fidl::encoding::Vector<
5675                    fidl::encoding::BoundedString<4096>,
5676                    128,
5677                > as fidl::encoding::TypeMarker>::inline_size(
5678                    decoder.context
5679                );
5680                if inlined != (member_inline_size <= 4) {
5681                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5682                }
5683                let inner_offset;
5684                let mut inner_depth = depth.clone();
5685                if inlined {
5686                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5687                    inner_offset = next_offset;
5688                } else {
5689                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5690                    inner_depth.increment()?;
5691                }
5692                let val_ref = self.components.get_or_insert_with(|| {
5693                    fidl::new_empty!(
5694                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
5695                        D
5696                    )
5697                });
5698                fidl::decode!(
5699                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
5700                    D,
5701                    val_ref,
5702                    decoder,
5703                    inner_offset,
5704                    inner_depth
5705                )?;
5706                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5707                {
5708                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5709                }
5710                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5711                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5712                }
5713            }
5714
5715            next_offset += envelope_size;
5716            _next_ordinal_to_read += 1;
5717            if next_offset >= end_offset {
5718                return Ok(());
5719            }
5720
5721            // Decode unknown envelopes for gaps in ordinals.
5722            while _next_ordinal_to_read < 2 {
5723                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5724                _next_ordinal_to_read += 1;
5725                next_offset += envelope_size;
5726            }
5727
5728            let next_out_of_line = decoder.next_out_of_line();
5729            let handles_before = decoder.remaining_handles();
5730            if let Some((inlined, num_bytes, num_handles)) =
5731                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5732            {
5733                let member_inline_size = <fidl::encoding::UnboundedVector<InjectedUse> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5734                if inlined != (member_inline_size <= 4) {
5735                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5736                }
5737                let inner_offset;
5738                let mut inner_depth = depth.clone();
5739                if inlined {
5740                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5741                    inner_offset = next_offset;
5742                } else {
5743                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5744                    inner_depth.increment()?;
5745                }
5746                let val_ref = self.use_.get_or_insert_with(|| {
5747                    fidl::new_empty!(fidl::encoding::UnboundedVector<InjectedUse>, D)
5748                });
5749                fidl::decode!(
5750                    fidl::encoding::UnboundedVector<InjectedUse>,
5751                    D,
5752                    val_ref,
5753                    decoder,
5754                    inner_offset,
5755                    inner_depth
5756                )?;
5757                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5758                {
5759                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5760                }
5761                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5762                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5763                }
5764            }
5765
5766            next_offset += envelope_size;
5767
5768            // Decode the remaining unknown envelopes.
5769            while next_offset < end_offset {
5770                _next_ordinal_to_read += 1;
5771                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5772                next_offset += envelope_size;
5773            }
5774
5775            Ok(())
5776        }
5777    }
5778
5779    impl InjectedUseProtocol {
5780        #[inline(always)]
5781        fn max_ordinal_present(&self) -> u64 {
5782            if let Some(_) = self.target_path {
5783                return 2;
5784            }
5785            if let Some(_) = self.source_name {
5786                return 1;
5787            }
5788            0
5789        }
5790    }
5791
5792    impl fidl::encoding::ValueTypeMarker for InjectedUseProtocol {
5793        type Borrowed<'a> = &'a Self;
5794        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5795            value
5796        }
5797    }
5798
5799    unsafe impl fidl::encoding::TypeMarker for InjectedUseProtocol {
5800        type Owned = Self;
5801
5802        #[inline(always)]
5803        fn inline_align(_context: fidl::encoding::Context) -> usize {
5804            8
5805        }
5806
5807        #[inline(always)]
5808        fn inline_size(_context: fidl::encoding::Context) -> usize {
5809            16
5810        }
5811    }
5812
5813    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InjectedUseProtocol, D>
5814        for &InjectedUseProtocol
5815    {
5816        unsafe fn encode(
5817            self,
5818            encoder: &mut fidl::encoding::Encoder<'_, D>,
5819            offset: usize,
5820            mut depth: fidl::encoding::Depth,
5821        ) -> fidl::Result<()> {
5822            encoder.debug_check_bounds::<InjectedUseProtocol>(offset);
5823            // Vector header
5824            let max_ordinal: u64 = self.max_ordinal_present();
5825            encoder.write_num(max_ordinal, offset);
5826            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5827            // Calling encoder.out_of_line_offset(0) is not allowed.
5828            if max_ordinal == 0 {
5829                return Ok(());
5830            }
5831            depth.increment()?;
5832            let envelope_size = 8;
5833            let bytes_len = max_ordinal as usize * envelope_size;
5834            #[allow(unused_variables)]
5835            let offset = encoder.out_of_line_offset(bytes_len);
5836            let mut _prev_end_offset: usize = 0;
5837            if 1 > max_ordinal {
5838                return Ok(());
5839            }
5840
5841            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5842            // are envelope_size bytes.
5843            let cur_offset: usize = (1 - 1) * envelope_size;
5844
5845            // Zero reserved fields.
5846            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5847
5848            // Safety:
5849            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5850            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5851            //   envelope_size bytes, there is always sufficient room.
5852            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
5853                self.source_name.as_ref().map(
5854                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
5855                ),
5856                encoder,
5857                offset + cur_offset,
5858                depth,
5859            )?;
5860
5861            _prev_end_offset = cur_offset + envelope_size;
5862            if 2 > max_ordinal {
5863                return Ok(());
5864            }
5865
5866            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5867            // are envelope_size bytes.
5868            let cur_offset: usize = (2 - 1) * envelope_size;
5869
5870            // Zero reserved fields.
5871            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5872
5873            // Safety:
5874            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5875            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5876            //   envelope_size bytes, there is always sufficient room.
5877            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
5878            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
5879            encoder, offset + cur_offset, depth
5880        )?;
5881
5882            _prev_end_offset = cur_offset + envelope_size;
5883
5884            Ok(())
5885        }
5886    }
5887
5888    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InjectedUseProtocol {
5889        #[inline(always)]
5890        fn new_empty() -> Self {
5891            Self::default()
5892        }
5893
5894        unsafe fn decode(
5895            &mut self,
5896            decoder: &mut fidl::encoding::Decoder<'_, D>,
5897            offset: usize,
5898            mut depth: fidl::encoding::Depth,
5899        ) -> fidl::Result<()> {
5900            decoder.debug_check_bounds::<Self>(offset);
5901            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5902                None => return Err(fidl::Error::NotNullable),
5903                Some(len) => len,
5904            };
5905            // Calling decoder.out_of_line_offset(0) is not allowed.
5906            if len == 0 {
5907                return Ok(());
5908            };
5909            depth.increment()?;
5910            let envelope_size = 8;
5911            let bytes_len = len * envelope_size;
5912            let offset = decoder.out_of_line_offset(bytes_len)?;
5913            // Decode the envelope for each type.
5914            let mut _next_ordinal_to_read = 0;
5915            let mut next_offset = offset;
5916            let end_offset = offset + bytes_len;
5917            _next_ordinal_to_read += 1;
5918            if next_offset >= end_offset {
5919                return Ok(());
5920            }
5921
5922            // Decode unknown envelopes for gaps in ordinals.
5923            while _next_ordinal_to_read < 1 {
5924                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5925                _next_ordinal_to_read += 1;
5926                next_offset += envelope_size;
5927            }
5928
5929            let next_out_of_line = decoder.next_out_of_line();
5930            let handles_before = decoder.remaining_handles();
5931            if let Some((inlined, num_bytes, num_handles)) =
5932                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5933            {
5934                let member_inline_size =
5935                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
5936                        decoder.context,
5937                    );
5938                if inlined != (member_inline_size <= 4) {
5939                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5940                }
5941                let inner_offset;
5942                let mut inner_depth = depth.clone();
5943                if inlined {
5944                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5945                    inner_offset = next_offset;
5946                } else {
5947                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5948                    inner_depth.increment()?;
5949                }
5950                let val_ref = self
5951                    .source_name
5952                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
5953                fidl::decode!(
5954                    fidl::encoding::BoundedString<100>,
5955                    D,
5956                    val_ref,
5957                    decoder,
5958                    inner_offset,
5959                    inner_depth
5960                )?;
5961                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5962                {
5963                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5964                }
5965                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5966                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5967                }
5968            }
5969
5970            next_offset += envelope_size;
5971            _next_ordinal_to_read += 1;
5972            if next_offset >= end_offset {
5973                return Ok(());
5974            }
5975
5976            // Decode unknown envelopes for gaps in ordinals.
5977            while _next_ordinal_to_read < 2 {
5978                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5979                _next_ordinal_to_read += 1;
5980                next_offset += envelope_size;
5981            }
5982
5983            let next_out_of_line = decoder.next_out_of_line();
5984            let handles_before = decoder.remaining_handles();
5985            if let Some((inlined, num_bytes, num_handles)) =
5986                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5987            {
5988                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5989                if inlined != (member_inline_size <= 4) {
5990                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5991                }
5992                let inner_offset;
5993                let mut inner_depth = depth.clone();
5994                if inlined {
5995                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5996                    inner_offset = next_offset;
5997                } else {
5998                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5999                    inner_depth.increment()?;
6000                }
6001                let val_ref = self.target_path.get_or_insert_with(|| {
6002                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
6003                });
6004                fidl::decode!(
6005                    fidl::encoding::BoundedString<1024>,
6006                    D,
6007                    val_ref,
6008                    decoder,
6009                    inner_offset,
6010                    inner_depth
6011                )?;
6012                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6013                {
6014                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6015                }
6016                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6017                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6018                }
6019            }
6020
6021            next_offset += envelope_size;
6022
6023            // Decode the remaining unknown envelopes.
6024            while next_offset < end_offset {
6025                _next_ordinal_to_read += 1;
6026                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6027                next_offset += envelope_size;
6028            }
6029
6030            Ok(())
6031        }
6032    }
6033
6034    impl InstanceIdEntry {
6035        #[inline(always)]
6036        fn max_ordinal_present(&self) -> u64 {
6037            if let Some(_) = self.ignore_duplicate_id {
6038                return 4;
6039            }
6040            if let Some(_) = self.moniker {
6041                return 3;
6042            }
6043            if let Some(_) = self.instance_id {
6044                return 1;
6045            }
6046            0
6047        }
6048    }
6049
6050    impl fidl::encoding::ValueTypeMarker for InstanceIdEntry {
6051        type Borrowed<'a> = &'a Self;
6052        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6053            value
6054        }
6055    }
6056
6057    unsafe impl fidl::encoding::TypeMarker for InstanceIdEntry {
6058        type Owned = Self;
6059
6060        #[inline(always)]
6061        fn inline_align(_context: fidl::encoding::Context) -> usize {
6062            8
6063        }
6064
6065        #[inline(always)]
6066        fn inline_size(_context: fidl::encoding::Context) -> usize {
6067            16
6068        }
6069    }
6070
6071    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InstanceIdEntry, D>
6072        for &InstanceIdEntry
6073    {
6074        unsafe fn encode(
6075            self,
6076            encoder: &mut fidl::encoding::Encoder<'_, D>,
6077            offset: usize,
6078            mut depth: fidl::encoding::Depth,
6079        ) -> fidl::Result<()> {
6080            encoder.debug_check_bounds::<InstanceIdEntry>(offset);
6081            // Vector header
6082            let max_ordinal: u64 = self.max_ordinal_present();
6083            encoder.write_num(max_ordinal, offset);
6084            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6085            // Calling encoder.out_of_line_offset(0) is not allowed.
6086            if max_ordinal == 0 {
6087                return Ok(());
6088            }
6089            depth.increment()?;
6090            let envelope_size = 8;
6091            let bytes_len = max_ordinal as usize * envelope_size;
6092            #[allow(unused_variables)]
6093            let offset = encoder.out_of_line_offset(bytes_len);
6094            let mut _prev_end_offset: usize = 0;
6095            if 1 > max_ordinal {
6096                return Ok(());
6097            }
6098
6099            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6100            // are envelope_size bytes.
6101            let cur_offset: usize = (1 - 1) * envelope_size;
6102
6103            // Zero reserved fields.
6104            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6105
6106            // Safety:
6107            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6108            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6109            //   envelope_size bytes, there is always sufficient room.
6110            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
6111                self.instance_id.as_ref().map(
6112                    <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
6113                ),
6114                encoder,
6115                offset + cur_offset,
6116                depth,
6117            )?;
6118
6119            _prev_end_offset = cur_offset + envelope_size;
6120            if 3 > max_ordinal {
6121                return Ok(());
6122            }
6123
6124            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6125            // are envelope_size bytes.
6126            let cur_offset: usize = (3 - 1) * envelope_size;
6127
6128            // Zero reserved fields.
6129            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6130
6131            // Safety:
6132            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6133            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6134            //   envelope_size bytes, there is always sufficient room.
6135            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
6136            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
6137            encoder, offset + cur_offset, depth
6138        )?;
6139
6140            _prev_end_offset = cur_offset + envelope_size;
6141            if 4 > max_ordinal {
6142                return Ok(());
6143            }
6144
6145            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6146            // are envelope_size bytes.
6147            let cur_offset: usize = (4 - 1) * envelope_size;
6148
6149            // Zero reserved fields.
6150            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6151
6152            // Safety:
6153            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6154            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6155            //   envelope_size bytes, there is always sufficient room.
6156            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6157                self.ignore_duplicate_id
6158                    .as_ref()
6159                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6160                encoder,
6161                offset + cur_offset,
6162                depth,
6163            )?;
6164
6165            _prev_end_offset = cur_offset + envelope_size;
6166
6167            Ok(())
6168        }
6169    }
6170
6171    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InstanceIdEntry {
6172        #[inline(always)]
6173        fn new_empty() -> Self {
6174            Self::default()
6175        }
6176
6177        unsafe fn decode(
6178            &mut self,
6179            decoder: &mut fidl::encoding::Decoder<'_, D>,
6180            offset: usize,
6181            mut depth: fidl::encoding::Depth,
6182        ) -> fidl::Result<()> {
6183            decoder.debug_check_bounds::<Self>(offset);
6184            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6185                None => return Err(fidl::Error::NotNullable),
6186                Some(len) => len,
6187            };
6188            // Calling decoder.out_of_line_offset(0) is not allowed.
6189            if len == 0 {
6190                return Ok(());
6191            };
6192            depth.increment()?;
6193            let envelope_size = 8;
6194            let bytes_len = len * envelope_size;
6195            let offset = decoder.out_of_line_offset(bytes_len)?;
6196            // Decode the envelope for each type.
6197            let mut _next_ordinal_to_read = 0;
6198            let mut next_offset = offset;
6199            let end_offset = offset + bytes_len;
6200            _next_ordinal_to_read += 1;
6201            if next_offset >= end_offset {
6202                return Ok(());
6203            }
6204
6205            // Decode unknown envelopes for gaps in ordinals.
6206            while _next_ordinal_to_read < 1 {
6207                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6208                _next_ordinal_to_read += 1;
6209                next_offset += envelope_size;
6210            }
6211
6212            let next_out_of_line = decoder.next_out_of_line();
6213            let handles_before = decoder.remaining_handles();
6214            if let Some((inlined, num_bytes, num_handles)) =
6215                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6216            {
6217                let member_inline_size =
6218                    <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
6219                        decoder.context,
6220                    );
6221                if inlined != (member_inline_size <= 4) {
6222                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6223                }
6224                let inner_offset;
6225                let mut inner_depth = depth.clone();
6226                if inlined {
6227                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6228                    inner_offset = next_offset;
6229                } else {
6230                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6231                    inner_depth.increment()?;
6232                }
6233                let val_ref = self
6234                    .instance_id
6235                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
6236                fidl::decode!(
6237                    fidl::encoding::BoundedString<64>,
6238                    D,
6239                    val_ref,
6240                    decoder,
6241                    inner_offset,
6242                    inner_depth
6243                )?;
6244                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6245                {
6246                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6247                }
6248                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6249                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6250                }
6251            }
6252
6253            next_offset += envelope_size;
6254            _next_ordinal_to_read += 1;
6255            if next_offset >= end_offset {
6256                return Ok(());
6257            }
6258
6259            // Decode unknown envelopes for gaps in ordinals.
6260            while _next_ordinal_to_read < 3 {
6261                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6262                _next_ordinal_to_read += 1;
6263                next_offset += envelope_size;
6264            }
6265
6266            let next_out_of_line = decoder.next_out_of_line();
6267            let handles_before = decoder.remaining_handles();
6268            if let Some((inlined, num_bytes, num_handles)) =
6269                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6270            {
6271                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6272                if inlined != (member_inline_size <= 4) {
6273                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6274                }
6275                let inner_offset;
6276                let mut inner_depth = depth.clone();
6277                if inlined {
6278                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6279                    inner_offset = next_offset;
6280                } else {
6281                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6282                    inner_depth.increment()?;
6283                }
6284                let val_ref = self.moniker.get_or_insert_with(|| {
6285                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
6286                });
6287                fidl::decode!(
6288                    fidl::encoding::BoundedString<4096>,
6289                    D,
6290                    val_ref,
6291                    decoder,
6292                    inner_offset,
6293                    inner_depth
6294                )?;
6295                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6296                {
6297                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6298                }
6299                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6300                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6301                }
6302            }
6303
6304            next_offset += envelope_size;
6305            _next_ordinal_to_read += 1;
6306            if next_offset >= end_offset {
6307                return Ok(());
6308            }
6309
6310            // Decode unknown envelopes for gaps in ordinals.
6311            while _next_ordinal_to_read < 4 {
6312                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6313                _next_ordinal_to_read += 1;
6314                next_offset += envelope_size;
6315            }
6316
6317            let next_out_of_line = decoder.next_out_of_line();
6318            let handles_before = decoder.remaining_handles();
6319            if let Some((inlined, num_bytes, num_handles)) =
6320                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6321            {
6322                let member_inline_size =
6323                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6324                if inlined != (member_inline_size <= 4) {
6325                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6326                }
6327                let inner_offset;
6328                let mut inner_depth = depth.clone();
6329                if inlined {
6330                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6331                    inner_offset = next_offset;
6332                } else {
6333                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6334                    inner_depth.increment()?;
6335                }
6336                let val_ref =
6337                    self.ignore_duplicate_id.get_or_insert_with(|| fidl::new_empty!(bool, D));
6338                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6339                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6340                {
6341                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6342                }
6343                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6344                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6345                }
6346            }
6347
6348            next_offset += envelope_size;
6349
6350            // Decode the remaining unknown envelopes.
6351            while next_offset < end_offset {
6352                _next_ordinal_to_read += 1;
6353                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6354                next_offset += envelope_size;
6355            }
6356
6357            Ok(())
6358        }
6359    }
6360
6361    impl JobPolicyAllowlists {
6362        #[inline(always)]
6363        fn max_ordinal_present(&self) -> u64 {
6364            if let Some(_) = self.create_raw_processes {
6365                return 3;
6366            }
6367            if let Some(_) = self.main_process_critical {
6368                return 2;
6369            }
6370            if let Some(_) = self.ambient_mark_vmo_exec {
6371                return 1;
6372            }
6373            0
6374        }
6375    }
6376
6377    impl fidl::encoding::ValueTypeMarker for JobPolicyAllowlists {
6378        type Borrowed<'a> = &'a Self;
6379        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6380            value
6381        }
6382    }
6383
6384    unsafe impl fidl::encoding::TypeMarker for JobPolicyAllowlists {
6385        type Owned = Self;
6386
6387        #[inline(always)]
6388        fn inline_align(_context: fidl::encoding::Context) -> usize {
6389            8
6390        }
6391
6392        #[inline(always)]
6393        fn inline_size(_context: fidl::encoding::Context) -> usize {
6394            16
6395        }
6396    }
6397
6398    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JobPolicyAllowlists, D>
6399        for &JobPolicyAllowlists
6400    {
6401        unsafe fn encode(
6402            self,
6403            encoder: &mut fidl::encoding::Encoder<'_, D>,
6404            offset: usize,
6405            mut depth: fidl::encoding::Depth,
6406        ) -> fidl::Result<()> {
6407            encoder.debug_check_bounds::<JobPolicyAllowlists>(offset);
6408            // Vector header
6409            let max_ordinal: u64 = self.max_ordinal_present();
6410            encoder.write_num(max_ordinal, offset);
6411            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6412            // Calling encoder.out_of_line_offset(0) is not allowed.
6413            if max_ordinal == 0 {
6414                return Ok(());
6415            }
6416            depth.increment()?;
6417            let envelope_size = 8;
6418            let bytes_len = max_ordinal as usize * envelope_size;
6419            #[allow(unused_variables)]
6420            let offset = encoder.out_of_line_offset(bytes_len);
6421            let mut _prev_end_offset: usize = 0;
6422            if 1 > max_ordinal {
6423                return Ok(());
6424            }
6425
6426            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6427            // are envelope_size bytes.
6428            let cur_offset: usize = (1 - 1) * envelope_size;
6429
6430            // Zero reserved fields.
6431            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6432
6433            // Safety:
6434            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6435            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6436            //   envelope_size bytes, there is always sufficient room.
6437            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
6438            self.ambient_mark_vmo_exec.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
6439            encoder, offset + cur_offset, depth
6440        )?;
6441
6442            _prev_end_offset = cur_offset + envelope_size;
6443            if 2 > max_ordinal {
6444                return Ok(());
6445            }
6446
6447            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6448            // are envelope_size bytes.
6449            let cur_offset: usize = (2 - 1) * envelope_size;
6450
6451            // Zero reserved fields.
6452            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6453
6454            // Safety:
6455            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6456            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6457            //   envelope_size bytes, there is always sufficient room.
6458            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
6459            self.main_process_critical.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
6460            encoder, offset + cur_offset, depth
6461        )?;
6462
6463            _prev_end_offset = cur_offset + envelope_size;
6464            if 3 > max_ordinal {
6465                return Ok(());
6466            }
6467
6468            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6469            // are envelope_size bytes.
6470            let cur_offset: usize = (3 - 1) * envelope_size;
6471
6472            // Zero reserved fields.
6473            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6474
6475            // Safety:
6476            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6477            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6478            //   envelope_size bytes, there is always sufficient room.
6479            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
6480            self.create_raw_processes.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
6481            encoder, offset + cur_offset, depth
6482        )?;
6483
6484            _prev_end_offset = cur_offset + envelope_size;
6485
6486            Ok(())
6487        }
6488    }
6489
6490    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JobPolicyAllowlists {
6491        #[inline(always)]
6492        fn new_empty() -> Self {
6493            Self::default()
6494        }
6495
6496        unsafe fn decode(
6497            &mut self,
6498            decoder: &mut fidl::encoding::Decoder<'_, D>,
6499            offset: usize,
6500            mut depth: fidl::encoding::Depth,
6501        ) -> fidl::Result<()> {
6502            decoder.debug_check_bounds::<Self>(offset);
6503            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6504                None => return Err(fidl::Error::NotNullable),
6505                Some(len) => len,
6506            };
6507            // Calling decoder.out_of_line_offset(0) is not allowed.
6508            if len == 0 {
6509                return Ok(());
6510            };
6511            depth.increment()?;
6512            let envelope_size = 8;
6513            let bytes_len = len * envelope_size;
6514            let offset = decoder.out_of_line_offset(bytes_len)?;
6515            // Decode the envelope for each type.
6516            let mut _next_ordinal_to_read = 0;
6517            let mut next_offset = offset;
6518            let end_offset = offset + bytes_len;
6519            _next_ordinal_to_read += 1;
6520            if next_offset >= end_offset {
6521                return Ok(());
6522            }
6523
6524            // Decode unknown envelopes for gaps in ordinals.
6525            while _next_ordinal_to_read < 1 {
6526                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6527                _next_ordinal_to_read += 1;
6528                next_offset += envelope_size;
6529            }
6530
6531            let next_out_of_line = decoder.next_out_of_line();
6532            let handles_before = decoder.remaining_handles();
6533            if let Some((inlined, num_bytes, num_handles)) =
6534                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6535            {
6536                let member_inline_size = <fidl::encoding::Vector<
6537                    fidl::encoding::BoundedString<4096>,
6538                    128,
6539                > as fidl::encoding::TypeMarker>::inline_size(
6540                    decoder.context
6541                );
6542                if inlined != (member_inline_size <= 4) {
6543                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6544                }
6545                let inner_offset;
6546                let mut inner_depth = depth.clone();
6547                if inlined {
6548                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6549                    inner_offset = next_offset;
6550                } else {
6551                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6552                    inner_depth.increment()?;
6553                }
6554                let val_ref = self.ambient_mark_vmo_exec.get_or_insert_with(|| {
6555                    fidl::new_empty!(
6556                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
6557                        D
6558                    )
6559                });
6560                fidl::decode!(
6561                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
6562                    D,
6563                    val_ref,
6564                    decoder,
6565                    inner_offset,
6566                    inner_depth
6567                )?;
6568                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6569                {
6570                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6571                }
6572                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6573                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6574                }
6575            }
6576
6577            next_offset += envelope_size;
6578            _next_ordinal_to_read += 1;
6579            if next_offset >= end_offset {
6580                return Ok(());
6581            }
6582
6583            // Decode unknown envelopes for gaps in ordinals.
6584            while _next_ordinal_to_read < 2 {
6585                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6586                _next_ordinal_to_read += 1;
6587                next_offset += envelope_size;
6588            }
6589
6590            let next_out_of_line = decoder.next_out_of_line();
6591            let handles_before = decoder.remaining_handles();
6592            if let Some((inlined, num_bytes, num_handles)) =
6593                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6594            {
6595                let member_inline_size = <fidl::encoding::Vector<
6596                    fidl::encoding::BoundedString<4096>,
6597                    128,
6598                > as fidl::encoding::TypeMarker>::inline_size(
6599                    decoder.context
6600                );
6601                if inlined != (member_inline_size <= 4) {
6602                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6603                }
6604                let inner_offset;
6605                let mut inner_depth = depth.clone();
6606                if inlined {
6607                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6608                    inner_offset = next_offset;
6609                } else {
6610                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6611                    inner_depth.increment()?;
6612                }
6613                let val_ref = self.main_process_critical.get_or_insert_with(|| {
6614                    fidl::new_empty!(
6615                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
6616                        D
6617                    )
6618                });
6619                fidl::decode!(
6620                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
6621                    D,
6622                    val_ref,
6623                    decoder,
6624                    inner_offset,
6625                    inner_depth
6626                )?;
6627                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6628                {
6629                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6630                }
6631                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6632                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6633                }
6634            }
6635
6636            next_offset += envelope_size;
6637            _next_ordinal_to_read += 1;
6638            if next_offset >= end_offset {
6639                return Ok(());
6640            }
6641
6642            // Decode unknown envelopes for gaps in ordinals.
6643            while _next_ordinal_to_read < 3 {
6644                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6645                _next_ordinal_to_read += 1;
6646                next_offset += envelope_size;
6647            }
6648
6649            let next_out_of_line = decoder.next_out_of_line();
6650            let handles_before = decoder.remaining_handles();
6651            if let Some((inlined, num_bytes, num_handles)) =
6652                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6653            {
6654                let member_inline_size = <fidl::encoding::Vector<
6655                    fidl::encoding::BoundedString<4096>,
6656                    128,
6657                > as fidl::encoding::TypeMarker>::inline_size(
6658                    decoder.context
6659                );
6660                if inlined != (member_inline_size <= 4) {
6661                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6662                }
6663                let inner_offset;
6664                let mut inner_depth = depth.clone();
6665                if inlined {
6666                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6667                    inner_offset = next_offset;
6668                } else {
6669                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6670                    inner_depth.increment()?;
6671                }
6672                let val_ref = self.create_raw_processes.get_or_insert_with(|| {
6673                    fidl::new_empty!(
6674                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
6675                        D
6676                    )
6677                });
6678                fidl::decode!(
6679                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
6680                    D,
6681                    val_ref,
6682                    decoder,
6683                    inner_offset,
6684                    inner_depth
6685                )?;
6686                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6687                {
6688                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6689                }
6690                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6691                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6692                }
6693            }
6694
6695            next_offset += envelope_size;
6696
6697            // Decode the remaining unknown envelopes.
6698            while next_offset < end_offset {
6699                _next_ordinal_to_read += 1;
6700                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6701                next_offset += envelope_size;
6702            }
6703
6704            Ok(())
6705        }
6706    }
6707
6708    impl SecurityPolicy {
6709        #[inline(always)]
6710        fn max_ordinal_present(&self) -> u64 {
6711            if let Some(_) = self.child_policy {
6712                return 4;
6713            }
6714            if let Some(_) = self.debug_registration_policy {
6715                return 3;
6716            }
6717            if let Some(_) = self.capability_policy {
6718                return 2;
6719            }
6720            if let Some(_) = self.job_policy {
6721                return 1;
6722            }
6723            0
6724        }
6725    }
6726
6727    impl fidl::encoding::ValueTypeMarker for SecurityPolicy {
6728        type Borrowed<'a> = &'a Self;
6729        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6730            value
6731        }
6732    }
6733
6734    unsafe impl fidl::encoding::TypeMarker for SecurityPolicy {
6735        type Owned = Self;
6736
6737        #[inline(always)]
6738        fn inline_align(_context: fidl::encoding::Context) -> usize {
6739            8
6740        }
6741
6742        #[inline(always)]
6743        fn inline_size(_context: fidl::encoding::Context) -> usize {
6744            16
6745        }
6746    }
6747
6748    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecurityPolicy, D>
6749        for &SecurityPolicy
6750    {
6751        unsafe fn encode(
6752            self,
6753            encoder: &mut fidl::encoding::Encoder<'_, D>,
6754            offset: usize,
6755            mut depth: fidl::encoding::Depth,
6756        ) -> fidl::Result<()> {
6757            encoder.debug_check_bounds::<SecurityPolicy>(offset);
6758            // Vector header
6759            let max_ordinal: u64 = self.max_ordinal_present();
6760            encoder.write_num(max_ordinal, offset);
6761            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6762            // Calling encoder.out_of_line_offset(0) is not allowed.
6763            if max_ordinal == 0 {
6764                return Ok(());
6765            }
6766            depth.increment()?;
6767            let envelope_size = 8;
6768            let bytes_len = max_ordinal as usize * envelope_size;
6769            #[allow(unused_variables)]
6770            let offset = encoder.out_of_line_offset(bytes_len);
6771            let mut _prev_end_offset: usize = 0;
6772            if 1 > max_ordinal {
6773                return Ok(());
6774            }
6775
6776            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6777            // are envelope_size bytes.
6778            let cur_offset: usize = (1 - 1) * envelope_size;
6779
6780            // Zero reserved fields.
6781            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6782
6783            // Safety:
6784            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6785            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6786            //   envelope_size bytes, there is always sufficient room.
6787            fidl::encoding::encode_in_envelope_optional::<JobPolicyAllowlists, D>(
6788                self.job_policy
6789                    .as_ref()
6790                    .map(<JobPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
6791                encoder,
6792                offset + cur_offset,
6793                depth,
6794            )?;
6795
6796            _prev_end_offset = cur_offset + envelope_size;
6797            if 2 > max_ordinal {
6798                return Ok(());
6799            }
6800
6801            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6802            // are envelope_size bytes.
6803            let cur_offset: usize = (2 - 1) * envelope_size;
6804
6805            // Zero reserved fields.
6806            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6807
6808            // Safety:
6809            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6810            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6811            //   envelope_size bytes, there is always sufficient room.
6812            fidl::encoding::encode_in_envelope_optional::<CapabilityPolicyAllowlists, D>(
6813                self.capability_policy
6814                    .as_ref()
6815                    .map(<CapabilityPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
6816                encoder,
6817                offset + cur_offset,
6818                depth,
6819            )?;
6820
6821            _prev_end_offset = cur_offset + envelope_size;
6822            if 3 > max_ordinal {
6823                return Ok(());
6824            }
6825
6826            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6827            // are envelope_size bytes.
6828            let cur_offset: usize = (3 - 1) * envelope_size;
6829
6830            // Zero reserved fields.
6831            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6832
6833            // Safety:
6834            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6835            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6836            //   envelope_size bytes, there is always sufficient room.
6837            fidl::encoding::encode_in_envelope_optional::<DebugRegistrationPolicyAllowlists, D>(
6838                self.debug_registration_policy.as_ref().map(
6839                    <DebugRegistrationPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow,
6840                ),
6841                encoder,
6842                offset + cur_offset,
6843                depth,
6844            )?;
6845
6846            _prev_end_offset = cur_offset + envelope_size;
6847            if 4 > max_ordinal {
6848                return Ok(());
6849            }
6850
6851            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6852            // are envelope_size bytes.
6853            let cur_offset: usize = (4 - 1) * envelope_size;
6854
6855            // Zero reserved fields.
6856            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6857
6858            // Safety:
6859            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6860            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6861            //   envelope_size bytes, there is always sufficient room.
6862            fidl::encoding::encode_in_envelope_optional::<ChildPolicyAllowlists, D>(
6863                self.child_policy
6864                    .as_ref()
6865                    .map(<ChildPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
6866                encoder,
6867                offset + cur_offset,
6868                depth,
6869            )?;
6870
6871            _prev_end_offset = cur_offset + envelope_size;
6872
6873            Ok(())
6874        }
6875    }
6876
6877    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecurityPolicy {
6878        #[inline(always)]
6879        fn new_empty() -> Self {
6880            Self::default()
6881        }
6882
6883        unsafe fn decode(
6884            &mut self,
6885            decoder: &mut fidl::encoding::Decoder<'_, D>,
6886            offset: usize,
6887            mut depth: fidl::encoding::Depth,
6888        ) -> fidl::Result<()> {
6889            decoder.debug_check_bounds::<Self>(offset);
6890            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6891                None => return Err(fidl::Error::NotNullable),
6892                Some(len) => len,
6893            };
6894            // Calling decoder.out_of_line_offset(0) is not allowed.
6895            if len == 0 {
6896                return Ok(());
6897            };
6898            depth.increment()?;
6899            let envelope_size = 8;
6900            let bytes_len = len * envelope_size;
6901            let offset = decoder.out_of_line_offset(bytes_len)?;
6902            // Decode the envelope for each type.
6903            let mut _next_ordinal_to_read = 0;
6904            let mut next_offset = offset;
6905            let end_offset = offset + bytes_len;
6906            _next_ordinal_to_read += 1;
6907            if next_offset >= end_offset {
6908                return Ok(());
6909            }
6910
6911            // Decode unknown envelopes for gaps in ordinals.
6912            while _next_ordinal_to_read < 1 {
6913                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6914                _next_ordinal_to_read += 1;
6915                next_offset += envelope_size;
6916            }
6917
6918            let next_out_of_line = decoder.next_out_of_line();
6919            let handles_before = decoder.remaining_handles();
6920            if let Some((inlined, num_bytes, num_handles)) =
6921                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6922            {
6923                let member_inline_size =
6924                    <JobPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
6925                        decoder.context,
6926                    );
6927                if inlined != (member_inline_size <= 4) {
6928                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6929                }
6930                let inner_offset;
6931                let mut inner_depth = depth.clone();
6932                if inlined {
6933                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6934                    inner_offset = next_offset;
6935                } else {
6936                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6937                    inner_depth.increment()?;
6938                }
6939                let val_ref =
6940                    self.job_policy.get_or_insert_with(|| fidl::new_empty!(JobPolicyAllowlists, D));
6941                fidl::decode!(JobPolicyAllowlists, D, val_ref, decoder, inner_offset, inner_depth)?;
6942                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6943                {
6944                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6945                }
6946                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6947                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6948                }
6949            }
6950
6951            next_offset += envelope_size;
6952            _next_ordinal_to_read += 1;
6953            if next_offset >= end_offset {
6954                return Ok(());
6955            }
6956
6957            // Decode unknown envelopes for gaps in ordinals.
6958            while _next_ordinal_to_read < 2 {
6959                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6960                _next_ordinal_to_read += 1;
6961                next_offset += envelope_size;
6962            }
6963
6964            let next_out_of_line = decoder.next_out_of_line();
6965            let handles_before = decoder.remaining_handles();
6966            if let Some((inlined, num_bytes, num_handles)) =
6967                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6968            {
6969                let member_inline_size =
6970                    <CapabilityPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
6971                        decoder.context,
6972                    );
6973                if inlined != (member_inline_size <= 4) {
6974                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6975                }
6976                let inner_offset;
6977                let mut inner_depth = depth.clone();
6978                if inlined {
6979                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6980                    inner_offset = next_offset;
6981                } else {
6982                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6983                    inner_depth.increment()?;
6984                }
6985                let val_ref = self
6986                    .capability_policy
6987                    .get_or_insert_with(|| fidl::new_empty!(CapabilityPolicyAllowlists, D));
6988                fidl::decode!(
6989                    CapabilityPolicyAllowlists,
6990                    D,
6991                    val_ref,
6992                    decoder,
6993                    inner_offset,
6994                    inner_depth
6995                )?;
6996                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6997                {
6998                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6999                }
7000                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7001                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7002                }
7003            }
7004
7005            next_offset += envelope_size;
7006            _next_ordinal_to_read += 1;
7007            if next_offset >= end_offset {
7008                return Ok(());
7009            }
7010
7011            // Decode unknown envelopes for gaps in ordinals.
7012            while _next_ordinal_to_read < 3 {
7013                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7014                _next_ordinal_to_read += 1;
7015                next_offset += envelope_size;
7016            }
7017
7018            let next_out_of_line = decoder.next_out_of_line();
7019            let handles_before = decoder.remaining_handles();
7020            if let Some((inlined, num_bytes, num_handles)) =
7021                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7022            {
7023                let member_inline_size =
7024                    <DebugRegistrationPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
7025                        decoder.context,
7026                    );
7027                if inlined != (member_inline_size <= 4) {
7028                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7029                }
7030                let inner_offset;
7031                let mut inner_depth = depth.clone();
7032                if inlined {
7033                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7034                    inner_offset = next_offset;
7035                } else {
7036                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7037                    inner_depth.increment()?;
7038                }
7039                let val_ref = self
7040                    .debug_registration_policy
7041                    .get_or_insert_with(|| fidl::new_empty!(DebugRegistrationPolicyAllowlists, D));
7042                fidl::decode!(
7043                    DebugRegistrationPolicyAllowlists,
7044                    D,
7045                    val_ref,
7046                    decoder,
7047                    inner_offset,
7048                    inner_depth
7049                )?;
7050                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7051                {
7052                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7053                }
7054                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7055                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7056                }
7057            }
7058
7059            next_offset += envelope_size;
7060            _next_ordinal_to_read += 1;
7061            if next_offset >= end_offset {
7062                return Ok(());
7063            }
7064
7065            // Decode unknown envelopes for gaps in ordinals.
7066            while _next_ordinal_to_read < 4 {
7067                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7068                _next_ordinal_to_read += 1;
7069                next_offset += envelope_size;
7070            }
7071
7072            let next_out_of_line = decoder.next_out_of_line();
7073            let handles_before = decoder.remaining_handles();
7074            if let Some((inlined, num_bytes, num_handles)) =
7075                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7076            {
7077                let member_inline_size =
7078                    <ChildPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
7079                        decoder.context,
7080                    );
7081                if inlined != (member_inline_size <= 4) {
7082                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7083                }
7084                let inner_offset;
7085                let mut inner_depth = depth.clone();
7086                if inlined {
7087                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7088                    inner_offset = next_offset;
7089                } else {
7090                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7091                    inner_depth.increment()?;
7092                }
7093                let val_ref = self
7094                    .child_policy
7095                    .get_or_insert_with(|| fidl::new_empty!(ChildPolicyAllowlists, D));
7096                fidl::decode!(
7097                    ChildPolicyAllowlists,
7098                    D,
7099                    val_ref,
7100                    decoder,
7101                    inner_offset,
7102                    inner_depth
7103                )?;
7104                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7105                {
7106                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7107                }
7108                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7109                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7110                }
7111            }
7112
7113            next_offset += envelope_size;
7114
7115            // Decode the remaining unknown envelopes.
7116            while next_offset < end_offset {
7117                _next_ordinal_to_read += 1;
7118                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7119                next_offset += envelope_size;
7120            }
7121
7122            Ok(())
7123        }
7124    }
7125
7126    impl fidl::encoding::ValueTypeMarker for AllowlistedCapability {
7127        type Borrowed<'a> = &'a Self;
7128        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7129            value
7130        }
7131    }
7132
7133    unsafe impl fidl::encoding::TypeMarker for AllowlistedCapability {
7134        type Owned = Self;
7135
7136        #[inline(always)]
7137        fn inline_align(_context: fidl::encoding::Context) -> usize {
7138            8
7139        }
7140
7141        #[inline(always)]
7142        fn inline_size(_context: fidl::encoding::Context) -> usize {
7143            16
7144        }
7145    }
7146
7147    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedCapability, D>
7148        for &AllowlistedCapability
7149    {
7150        #[inline]
7151        unsafe fn encode(
7152            self,
7153            encoder: &mut fidl::encoding::Encoder<'_, D>,
7154            offset: usize,
7155            _depth: fidl::encoding::Depth,
7156        ) -> fidl::Result<()> {
7157            encoder.debug_check_bounds::<AllowlistedCapability>(offset);
7158            encoder.write_num::<u64>(self.ordinal(), offset);
7159            match self {
7160                AllowlistedCapability::Directory(ref val) => {
7161                    fidl::encoding::encode_in_envelope::<AllowlistedDirectory, D>(
7162                        <AllowlistedDirectory as fidl::encoding::ValueTypeMarker>::borrow(val),
7163                        encoder,
7164                        offset + 8,
7165                        _depth,
7166                    )
7167                }
7168                AllowlistedCapability::Protocol(ref val) => {
7169                    fidl::encoding::encode_in_envelope::<AllowlistedProtocol, D>(
7170                        <AllowlistedProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
7171                        encoder,
7172                        offset + 8,
7173                        _depth,
7174                    )
7175                }
7176                AllowlistedCapability::Service(ref val) => {
7177                    fidl::encoding::encode_in_envelope::<AllowlistedService, D>(
7178                        <AllowlistedService as fidl::encoding::ValueTypeMarker>::borrow(val),
7179                        encoder,
7180                        offset + 8,
7181                        _depth,
7182                    )
7183                }
7184                AllowlistedCapability::Storage(ref val) => {
7185                    fidl::encoding::encode_in_envelope::<AllowlistedStorage, D>(
7186                        <AllowlistedStorage as fidl::encoding::ValueTypeMarker>::borrow(val),
7187                        encoder,
7188                        offset + 8,
7189                        _depth,
7190                    )
7191                }
7192                AllowlistedCapability::Runner(ref val) => {
7193                    fidl::encoding::encode_in_envelope::<AllowlistedRunner, D>(
7194                        <AllowlistedRunner as fidl::encoding::ValueTypeMarker>::borrow(val),
7195                        encoder,
7196                        offset + 8,
7197                        _depth,
7198                    )
7199                }
7200                AllowlistedCapability::Resolver(ref val) => {
7201                    fidl::encoding::encode_in_envelope::<AllowlistedResolver, D>(
7202                        <AllowlistedResolver as fidl::encoding::ValueTypeMarker>::borrow(val),
7203                        encoder,
7204                        offset + 8,
7205                        _depth,
7206                    )
7207                }
7208                AllowlistedCapability::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7209            }
7210        }
7211    }
7212
7213    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedCapability {
7214        #[inline(always)]
7215        fn new_empty() -> Self {
7216            Self::__SourceBreaking { unknown_ordinal: 0 }
7217        }
7218
7219        #[inline]
7220        unsafe fn decode(
7221            &mut self,
7222            decoder: &mut fidl::encoding::Decoder<'_, D>,
7223            offset: usize,
7224            mut depth: fidl::encoding::Depth,
7225        ) -> fidl::Result<()> {
7226            decoder.debug_check_bounds::<Self>(offset);
7227            #[allow(unused_variables)]
7228            let next_out_of_line = decoder.next_out_of_line();
7229            let handles_before = decoder.remaining_handles();
7230            let (ordinal, inlined, num_bytes, num_handles) =
7231                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7232
7233            let member_inline_size = match ordinal {
7234                1 => <AllowlistedDirectory as fidl::encoding::TypeMarker>::inline_size(
7235                    decoder.context,
7236                ),
7237                3 => <AllowlistedProtocol as fidl::encoding::TypeMarker>::inline_size(
7238                    decoder.context,
7239                ),
7240                4 => {
7241                    <AllowlistedService as fidl::encoding::TypeMarker>::inline_size(decoder.context)
7242                }
7243                5 => {
7244                    <AllowlistedStorage as fidl::encoding::TypeMarker>::inline_size(decoder.context)
7245                }
7246                6 => {
7247                    <AllowlistedRunner as fidl::encoding::TypeMarker>::inline_size(decoder.context)
7248                }
7249                7 => <AllowlistedResolver as fidl::encoding::TypeMarker>::inline_size(
7250                    decoder.context,
7251                ),
7252                0 => return Err(fidl::Error::UnknownUnionTag),
7253                _ => num_bytes as usize,
7254            };
7255
7256            if inlined != (member_inline_size <= 4) {
7257                return Err(fidl::Error::InvalidInlineBitInEnvelope);
7258            }
7259            let _inner_offset;
7260            if inlined {
7261                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7262                _inner_offset = offset + 8;
7263            } else {
7264                depth.increment()?;
7265                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7266            }
7267            match ordinal {
7268                1 => {
7269                    #[allow(irrefutable_let_patterns)]
7270                    if let AllowlistedCapability::Directory(_) = self {
7271                        // Do nothing, read the value into the object
7272                    } else {
7273                        // Initialize `self` to the right variant
7274                        *self = AllowlistedCapability::Directory(fidl::new_empty!(
7275                            AllowlistedDirectory,
7276                            D
7277                        ));
7278                    }
7279                    #[allow(irrefutable_let_patterns)]
7280                    if let AllowlistedCapability::Directory(ref mut val) = self {
7281                        fidl::decode!(AllowlistedDirectory, D, val, decoder, _inner_offset, depth)?;
7282                    } else {
7283                        unreachable!()
7284                    }
7285                }
7286                3 => {
7287                    #[allow(irrefutable_let_patterns)]
7288                    if let AllowlistedCapability::Protocol(_) = self {
7289                        // Do nothing, read the value into the object
7290                    } else {
7291                        // Initialize `self` to the right variant
7292                        *self = AllowlistedCapability::Protocol(fidl::new_empty!(
7293                            AllowlistedProtocol,
7294                            D
7295                        ));
7296                    }
7297                    #[allow(irrefutable_let_patterns)]
7298                    if let AllowlistedCapability::Protocol(ref mut val) = self {
7299                        fidl::decode!(AllowlistedProtocol, D, val, decoder, _inner_offset, depth)?;
7300                    } else {
7301                        unreachable!()
7302                    }
7303                }
7304                4 => {
7305                    #[allow(irrefutable_let_patterns)]
7306                    if let AllowlistedCapability::Service(_) = self {
7307                        // Do nothing, read the value into the object
7308                    } else {
7309                        // Initialize `self` to the right variant
7310                        *self =
7311                            AllowlistedCapability::Service(fidl::new_empty!(AllowlistedService, D));
7312                    }
7313                    #[allow(irrefutable_let_patterns)]
7314                    if let AllowlistedCapability::Service(ref mut val) = self {
7315                        fidl::decode!(AllowlistedService, D, val, decoder, _inner_offset, depth)?;
7316                    } else {
7317                        unreachable!()
7318                    }
7319                }
7320                5 => {
7321                    #[allow(irrefutable_let_patterns)]
7322                    if let AllowlistedCapability::Storage(_) = self {
7323                        // Do nothing, read the value into the object
7324                    } else {
7325                        // Initialize `self` to the right variant
7326                        *self =
7327                            AllowlistedCapability::Storage(fidl::new_empty!(AllowlistedStorage, D));
7328                    }
7329                    #[allow(irrefutable_let_patterns)]
7330                    if let AllowlistedCapability::Storage(ref mut val) = self {
7331                        fidl::decode!(AllowlistedStorage, D, val, decoder, _inner_offset, depth)?;
7332                    } else {
7333                        unreachable!()
7334                    }
7335                }
7336                6 => {
7337                    #[allow(irrefutable_let_patterns)]
7338                    if let AllowlistedCapability::Runner(_) = self {
7339                        // Do nothing, read the value into the object
7340                    } else {
7341                        // Initialize `self` to the right variant
7342                        *self =
7343                            AllowlistedCapability::Runner(fidl::new_empty!(AllowlistedRunner, D));
7344                    }
7345                    #[allow(irrefutable_let_patterns)]
7346                    if let AllowlistedCapability::Runner(ref mut val) = self {
7347                        fidl::decode!(AllowlistedRunner, D, val, decoder, _inner_offset, depth)?;
7348                    } else {
7349                        unreachable!()
7350                    }
7351                }
7352                7 => {
7353                    #[allow(irrefutable_let_patterns)]
7354                    if let AllowlistedCapability::Resolver(_) = self {
7355                        // Do nothing, read the value into the object
7356                    } else {
7357                        // Initialize `self` to the right variant
7358                        *self = AllowlistedCapability::Resolver(fidl::new_empty!(
7359                            AllowlistedResolver,
7360                            D
7361                        ));
7362                    }
7363                    #[allow(irrefutable_let_patterns)]
7364                    if let AllowlistedCapability::Resolver(ref mut val) = self {
7365                        fidl::decode!(AllowlistedResolver, D, val, decoder, _inner_offset, depth)?;
7366                    } else {
7367                        unreachable!()
7368                    }
7369                }
7370                #[allow(deprecated)]
7371                ordinal => {
7372                    for _ in 0..num_handles {
7373                        decoder.drop_next_handle()?;
7374                    }
7375                    *self = AllowlistedCapability::__SourceBreaking { unknown_ordinal: ordinal };
7376                }
7377            }
7378            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7379                return Err(fidl::Error::InvalidNumBytesInEnvelope);
7380            }
7381            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7382                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7383            }
7384            Ok(())
7385        }
7386    }
7387
7388    impl fidl::encoding::ValueTypeMarker for AllowlistedDebugRegistration {
7389        type Borrowed<'a> = &'a Self;
7390        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7391            value
7392        }
7393    }
7394
7395    unsafe impl fidl::encoding::TypeMarker for AllowlistedDebugRegistration {
7396        type Owned = Self;
7397
7398        #[inline(always)]
7399        fn inline_align(_context: fidl::encoding::Context) -> usize {
7400            8
7401        }
7402
7403        #[inline(always)]
7404        fn inline_size(_context: fidl::encoding::Context) -> usize {
7405            16
7406        }
7407    }
7408
7409    unsafe impl<D: fidl::encoding::ResourceDialect>
7410        fidl::encoding::Encode<AllowlistedDebugRegistration, D> for &AllowlistedDebugRegistration
7411    {
7412        #[inline]
7413        unsafe fn encode(
7414            self,
7415            encoder: &mut fidl::encoding::Encoder<'_, D>,
7416            offset: usize,
7417            _depth: fidl::encoding::Depth,
7418        ) -> fidl::Result<()> {
7419            encoder.debug_check_bounds::<AllowlistedDebugRegistration>(offset);
7420            encoder.write_num::<u64>(self.ordinal(), offset);
7421            match self {
7422                AllowlistedDebugRegistration::Protocol(ref val) => {
7423                    fidl::encoding::encode_in_envelope::<AllowlistedProtocol, D>(
7424                        <AllowlistedProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
7425                        encoder,
7426                        offset + 8,
7427                        _depth,
7428                    )
7429                }
7430                AllowlistedDebugRegistration::__SourceBreaking { .. } => {
7431                    Err(fidl::Error::UnknownUnionTag)
7432                }
7433            }
7434        }
7435    }
7436
7437    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7438        for AllowlistedDebugRegistration
7439    {
7440        #[inline(always)]
7441        fn new_empty() -> Self {
7442            Self::__SourceBreaking { unknown_ordinal: 0 }
7443        }
7444
7445        #[inline]
7446        unsafe fn decode(
7447            &mut self,
7448            decoder: &mut fidl::encoding::Decoder<'_, D>,
7449            offset: usize,
7450            mut depth: fidl::encoding::Depth,
7451        ) -> fidl::Result<()> {
7452            decoder.debug_check_bounds::<Self>(offset);
7453            #[allow(unused_variables)]
7454            let next_out_of_line = decoder.next_out_of_line();
7455            let handles_before = decoder.remaining_handles();
7456            let (ordinal, inlined, num_bytes, num_handles) =
7457                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7458
7459            let member_inline_size = match ordinal {
7460                1 => <AllowlistedProtocol as fidl::encoding::TypeMarker>::inline_size(
7461                    decoder.context,
7462                ),
7463                0 => return Err(fidl::Error::UnknownUnionTag),
7464                _ => num_bytes as usize,
7465            };
7466
7467            if inlined != (member_inline_size <= 4) {
7468                return Err(fidl::Error::InvalidInlineBitInEnvelope);
7469            }
7470            let _inner_offset;
7471            if inlined {
7472                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7473                _inner_offset = offset + 8;
7474            } else {
7475                depth.increment()?;
7476                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7477            }
7478            match ordinal {
7479                1 => {
7480                    #[allow(irrefutable_let_patterns)]
7481                    if let AllowlistedDebugRegistration::Protocol(_) = self {
7482                        // Do nothing, read the value into the object
7483                    } else {
7484                        // Initialize `self` to the right variant
7485                        *self = AllowlistedDebugRegistration::Protocol(fidl::new_empty!(
7486                            AllowlistedProtocol,
7487                            D
7488                        ));
7489                    }
7490                    #[allow(irrefutable_let_patterns)]
7491                    if let AllowlistedDebugRegistration::Protocol(ref mut val) = self {
7492                        fidl::decode!(AllowlistedProtocol, D, val, decoder, _inner_offset, depth)?;
7493                    } else {
7494                        unreachable!()
7495                    }
7496                }
7497                #[allow(deprecated)]
7498                ordinal => {
7499                    for _ in 0..num_handles {
7500                        decoder.drop_next_handle()?;
7501                    }
7502                    *self =
7503                        AllowlistedDebugRegistration::__SourceBreaking { unknown_ordinal: ordinal };
7504                }
7505            }
7506            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7507                return Err(fidl::Error::InvalidNumBytesInEnvelope);
7508            }
7509            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7510                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7511            }
7512            Ok(())
7513        }
7514    }
7515
7516    impl fidl::encoding::ValueTypeMarker for InjectedUse {
7517        type Borrowed<'a> = &'a Self;
7518        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7519            value
7520        }
7521    }
7522
7523    unsafe impl fidl::encoding::TypeMarker for InjectedUse {
7524        type Owned = Self;
7525
7526        #[inline(always)]
7527        fn inline_align(_context: fidl::encoding::Context) -> usize {
7528            8
7529        }
7530
7531        #[inline(always)]
7532        fn inline_size(_context: fidl::encoding::Context) -> usize {
7533            16
7534        }
7535    }
7536
7537    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InjectedUse, D>
7538        for &InjectedUse
7539    {
7540        #[inline]
7541        unsafe fn encode(
7542            self,
7543            encoder: &mut fidl::encoding::Encoder<'_, D>,
7544            offset: usize,
7545            _depth: fidl::encoding::Depth,
7546        ) -> fidl::Result<()> {
7547            encoder.debug_check_bounds::<InjectedUse>(offset);
7548            encoder.write_num::<u64>(self.ordinal(), offset);
7549            match self {
7550                InjectedUse::Protocol(ref val) => {
7551                    fidl::encoding::encode_in_envelope::<InjectedUseProtocol, D>(
7552                        <InjectedUseProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
7553                        encoder,
7554                        offset + 8,
7555                        _depth,
7556                    )
7557                }
7558                InjectedUse::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7559            }
7560        }
7561    }
7562
7563    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InjectedUse {
7564        #[inline(always)]
7565        fn new_empty() -> Self {
7566            Self::__SourceBreaking { unknown_ordinal: 0 }
7567        }
7568
7569        #[inline]
7570        unsafe fn decode(
7571            &mut self,
7572            decoder: &mut fidl::encoding::Decoder<'_, D>,
7573            offset: usize,
7574            mut depth: fidl::encoding::Depth,
7575        ) -> fidl::Result<()> {
7576            decoder.debug_check_bounds::<Self>(offset);
7577            #[allow(unused_variables)]
7578            let next_out_of_line = decoder.next_out_of_line();
7579            let handles_before = decoder.remaining_handles();
7580            let (ordinal, inlined, num_bytes, num_handles) =
7581                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7582
7583            let member_inline_size = match ordinal {
7584                1 => <InjectedUseProtocol as fidl::encoding::TypeMarker>::inline_size(
7585                    decoder.context,
7586                ),
7587                0 => return Err(fidl::Error::UnknownUnionTag),
7588                _ => num_bytes as usize,
7589            };
7590
7591            if inlined != (member_inline_size <= 4) {
7592                return Err(fidl::Error::InvalidInlineBitInEnvelope);
7593            }
7594            let _inner_offset;
7595            if inlined {
7596                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7597                _inner_offset = offset + 8;
7598            } else {
7599                depth.increment()?;
7600                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7601            }
7602            match ordinal {
7603                1 => {
7604                    #[allow(irrefutable_let_patterns)]
7605                    if let InjectedUse::Protocol(_) = self {
7606                        // Do nothing, read the value into the object
7607                    } else {
7608                        // Initialize `self` to the right variant
7609                        *self = InjectedUse::Protocol(fidl::new_empty!(InjectedUseProtocol, D));
7610                    }
7611                    #[allow(irrefutable_let_patterns)]
7612                    if let InjectedUse::Protocol(ref mut val) = self {
7613                        fidl::decode!(InjectedUseProtocol, D, val, decoder, _inner_offset, depth)?;
7614                    } else {
7615                        unreachable!()
7616                    }
7617                }
7618                #[allow(deprecated)]
7619                ordinal => {
7620                    for _ in 0..num_handles {
7621                        decoder.drop_next_handle()?;
7622                    }
7623                    *self = InjectedUse::__SourceBreaking { unknown_ordinal: ordinal };
7624                }
7625            }
7626            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7627                return Err(fidl::Error::InvalidNumBytesInEnvelope);
7628            }
7629            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7630                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7631            }
7632            Ok(())
7633        }
7634    }
7635}