text: #ifndef _CISCO_IOS_XR_MPLS_TE_OPER_32_
  #define _CISCO_IOS_XR_MPLS_TE_OPER_32_
  
  #include <memory>
  #include <vector>
  #include <string>
  #include <ydk/types.hpp>
  #include <ydk/errors.hpp>
  
  #include "Cisco_IOS_XR_mpls_te_oper_0.hpp"
  #include "Cisco_IOS_XR_mpls_te_oper_31.hpp"
  
  namespace cisco_ios_xr {
  namespace Cisco_IOS_XR_mpls_te_oper {
  
  
  class MplsTe::SignallingCounters::Signallings::Signalling::TeSignallingFilterData::TeSignallingFilterLsp::S2lStatistic::Statistics : public ydk::Entity
  {
      public:
          Statistics();
          ~Statistics();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf tx_event_unknown; //type: uint32
          ydk::YLeaf tx_path_create_event; //type: uint32
          ydk::YLeaf tx_path_change_event; //type: uint32
          ydk::YLeaf tx_path_delete_event; //type: uint32
          ydk::YLeaf tx_path_error_event; //type: uint32
          ydk::YLeaf tx_resv_create_event; //type: uint32
          ydk::YLeaf tx_resv_change_event; //type: uint32
          ydk::YLeaf tx_resv_delete_event; //type: uint32
          ydk::YLeaf tx_resv_error_event; //type: uint32
          ydk::YLeaf tx_path_reeval_query_event; //type: uint32
          ydk::YLeaf rx_event_unknown; //type: uint32
          ydk::YLeaf rx_path_create_event; //type: uint32
          ydk::YLeaf rx_path_change_event; //type: uint32
          ydk::YLeaf rx_path_delete_event; //type: uint32
          ydk::YLeaf rx_path_error_event; //type: uint32
          ydk::YLeaf rx_resv_create_event; //type: uint32
          ydk::YLeaf rx_resv_change_event; //type: uint32
          ydk::YLeaf rx_resv_delete_event; //type: uint32
          ydk::YLeaf rx_resv_error_event; //type: uint32
          ydk::YLeaf rx_path_reeval_query_event; //type: uint32
          ydk::YLeaf tx_backup_assign_event; //type: uint32
          ydk::YLeaf rx_backup_assign_err_event; //type: uint32
          ydk::YLeaf events_total_count; //type: uint32
          ydk::YLeaf events_count; //type: uint32
  
  }; // MplsTe::SignallingCounters::Signallings::Signalling::TeSignallingFilterData::TeSignallingFilterLsp::S2lStatistic::Statistics
  
  
  class MplsTe::SignallingCounters::SignallingSummary : public ydk::Entity
  {
      public:
          SignallingSummary();
          ~SignallingSummary();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf tx_event_unknown; //type: uint32
          ydk::YLeaf tx_path_create_event; //type: uint32
          ydk::YLeaf tx_path_change_event; //type: uint32
          ydk::YLeaf tx_path_delete_event; //type: uint32
          ydk::YLeaf tx_path_error_event; //type: uint32
          ydk::YLeaf tx_resv_create_event; //type: uint32
          ydk::YLeaf tx_resv_change_event; //type: uint32
          ydk::YLeaf tx_resv_delete_event; //type: uint32
          ydk::YLeaf tx_resv_error_event; //type: uint32
          ydk::YLeaf tx_path_reeval_query_event; //type: uint32
          ydk::YLeaf rx_event_unknown; //type: uint32
          ydk::YLeaf rx_path_create_event; //type: uint32
          ydk::YLeaf rx_path_change_event; //type: uint32
          ydk::YLeaf rx_path_delete_event; //type: uint32
          ydk::YLeaf rx_path_error_event; //type: uint32
          ydk::YLeaf rx_resv_create_event; //type: uint32
          ydk::YLeaf rx_resv_change_event; //type: uint32
          ydk::YLeaf rx_resv_delete_event; //type: uint32
          ydk::YLeaf rx_resv_error_event; //type: uint32
          ydk::YLeaf rx_path_reeval_query_event; //type: uint32
          ydk::YLeaf tx_backup_assign_event; //type: uint32
          ydk::YLeaf rx_backup_assign_err_event; //type: uint32
          ydk::YLeaf events_total_count; //type: uint32
          ydk::YLeaf events_count; //type: uint32
  
  }; // MplsTe::SignallingCounters::SignallingSummary
  
  
  class MplsTe::DiffServTeClasses : public ydk::Entity
  {
      public:
          DiffServTeClasses();
          ~DiffServTeClasses();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class TeClass; //type: MplsTe::DiffServTeClasses::TeClass
  
          ydk::YList te_class;
          
  }; // MplsTe::DiffServTeClasses
  
  
  class MplsTe::DiffServTeClasses::TeClass : public ydk::Entity
  {
      public:
          TeClass();
          ~TeClass();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf class_number; //type: uint8
          ydk::YLeaf class_type; //type: uint8
          ydk::YLeaf priority; //type: uint8
          ydk::YLeaf class_status; //type: MplsTeDsteClassStatus
  
  }; // MplsTe::DiffServTeClasses::TeClass
  
  
  class MplsTe::Issu : public ydk::Entity
  {
      public:
          Issu();
          ~Issu();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class Status; //type: MplsTe::Issu::Status
          class Detail; //type: MplsTe::Issu::Detail
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Status> status;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Detail> detail;
          
  }; // MplsTe::Issu
  
  
  class MplsTe::Issu::Status : public ydk::Entity
  {
      public:
          Status();
          ~Status();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf role; //type: TeProcRole
          class SyncStatusInformation; //type: MplsTe::Issu::Status::SyncStatusInformation
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Status::SyncStatusInformation> sync_status_information;
          
  }; // MplsTe::Issu::Status
  
  
  class MplsTe::Issu::Status::SyncStatusInformation : public ydk::Entity
  {
      public:
          SyncStatusInformation();
          ~SyncStatusInformation();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf sync_show_type; //type: TeSyncStatusShow
          class SlaveSyncInformation; //type: MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation
          class MasterSyncInformation; //type: MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation> slave_sync_information;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation> master_sync_information;
          
  }; // MplsTe::Issu::Status::SyncStatusInformation
  
  
  class MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation : public ydk::Entity
  {
      public:
          SlaveSyncInformation();
          ~SlaveSyncInformation();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf insync_tunnels; //type: uint32
          ydk::YLeaf insync_sub_ls_ps; //type: uint32
          ydk::YLeaf pending_tunnels; //type: uint32
          ydk::YLeaf pending_sub_ls_ps; //type: uint32
          class Idt; //type: MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::Idt
          class VifPending; //type: MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::VifPending
          class S2lPending; //type: MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::S2lPending
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::Idt> idt;
          ydk::YList vif_pending;
          ydk::YList s2l_pending;
          
  }; // MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation
  
  
  class MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::Idt : public ydk::Entity
  {
      public:
          Idt();
          ~Idt();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class CurrentIdtInfo; //type: MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::Idt::CurrentIdtInfo
          class PreviousIdtStatus; //type: MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::Idt::PreviousIdtStatus
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::Idt::CurrentIdtInfo> current_idt_info;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::Idt::PreviousIdtStatus> previous_idt_status;
          
  }; // MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::Idt
  
  
  class MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::Idt::CurrentIdtInfo : public ydk::Entity
  {
      public:
          CurrentIdtInfo();
          ~CurrentIdtInfo();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf is_ready_status; //type: boolean
          ydk::YLeaf reason; //type: TeSyncNotReadyReason
          ydk::YLeaf idt_start_time; //type: uint32
          ydk::YLeaf idt_end_time; //type: uint32
          ydk::YLeaf declare_time; //type: uint32
          ydk::YLeaf withdraw_time; //type: uint32
  
  }; // MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::Idt::CurrentIdtInfo
  
  
  class MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::Idt::PreviousIdtStatus : public ydk::Entity
  {
      public:
          PreviousIdtStatus();
          ~PreviousIdtStatus();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf is_ready_status; //type: boolean
          ydk::YLeaf reason; //type: TeSyncNotReadyReason
          ydk::YLeaf idt_start_time; //type: uint32
          ydk::YLeaf idt_end_time; //type: uint32
          ydk::YLeaf declare_time; //type: uint32
          ydk::YLeaf withdraw_time; //type: uint32
  
  }; // MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::Idt::PreviousIdtStatus
  
  
  class MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::VifPending : public ydk::Entity
  {
      public:
          VifPending();
          ~VifPending();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf pending_reason; //type: TeSyncPendingReason
          ydk::YLeaf tunnel_name; //type: string
  
  }; // MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::VifPending
  
  
  class MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::S2lPending : public ydk::Entity
  {
      public:
          S2lPending();
          ~S2lPending();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf pending_reason; //type: TeSyncPendingReason
          ydk::YLeaf signaled_name; //type: string
          ydk::YLeaf s2l_role; //type: MplsTeTunnelRole
  
  }; // MplsTe::Issu::Status::SyncStatusInformation::SlaveSyncInformation::S2lPending
  
  
  class MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation : public ydk::Entity
  {
      public:
          MasterSyncInformation();
          ~MasterSyncInformation();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class Idt; //type: MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation::Idt
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation::Idt> idt;
          
  }; // MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation
  
  
  class MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation::Idt : public ydk::Entity
  {
      public:
          Idt();
          ~Idt();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class CurrentIdtInfo; //type: MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation::Idt::CurrentIdtInfo
          class PreviousIdtStatus; //type: MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation::Idt::PreviousIdtStatus
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation::Idt::CurrentIdtInfo> current_idt_info;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation::Idt::PreviousIdtStatus> previous_idt_status;
          
  }; // MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation::Idt
  
  
  class MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation::Idt::CurrentIdtInfo : public ydk::Entity
  {
      public:
          CurrentIdtInfo();
          ~CurrentIdtInfo();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf is_ready_status; //type: boolean
          ydk::YLeaf reason; //type: TeSyncNotReadyReason
          ydk::YLeaf idt_start_time; //type: uint32
          ydk::YLeaf idt_end_time; //type: uint32
          ydk::YLeaf declare_time; //type: uint32
          ydk::YLeaf withdraw_time; //type: uint32
  
  }; // MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation::Idt::CurrentIdtInfo
  
  
  class MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation::Idt::PreviousIdtStatus : public ydk::Entity
  {
      public:
          PreviousIdtStatus();
          ~PreviousIdtStatus();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf is_ready_status; //type: boolean
          ydk::YLeaf reason; //type: TeSyncNotReadyReason
          ydk::YLeaf idt_start_time; //type: uint32
          ydk::YLeaf idt_end_time; //type: uint32
          ydk::YLeaf declare_time; //type: uint32
          ydk::YLeaf withdraw_time; //type: uint32
  
  }; // MplsTe::Issu::Status::SyncStatusInformation::MasterSyncInformation::Idt::PreviousIdtStatus
  
  
  class MplsTe::Issu::Detail : public ydk::Entity
  {
      public:
          Detail();
          ~Detail();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf role; //type: TeProcRole
          class SyncStatusInformation; //type: MplsTe::Issu::Detail::SyncStatusInformation
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Detail::SyncStatusInformation> sync_status_information;
          
  }; // MplsTe::Issu::Detail
  
  
  class MplsTe::Issu::Detail::SyncStatusInformation : public ydk::Entity
  {
      public:
          SyncStatusInformation();
          ~SyncStatusInformation();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf sync_show_type; //type: TeSyncStatusShow
          class SlaveSyncInformation; //type: MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation
          class MasterSyncInformation; //type: MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation> slave_sync_information;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation> master_sync_information;
          
  }; // MplsTe::Issu::Detail::SyncStatusInformation
  
  
  class MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation : public ydk::Entity
  {
      public:
          SlaveSyncInformation();
          ~SlaveSyncInformation();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf insync_tunnels; //type: uint32
          ydk::YLeaf insync_sub_ls_ps; //type: uint32
          ydk::YLeaf pending_tunnels; //type: uint32
          ydk::YLeaf pending_sub_ls_ps; //type: uint32
          class Idt; //type: MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::Idt
          class VifPending; //type: MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::VifPending
          class S2lPending; //type: MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::S2lPending
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::Idt> idt;
          ydk::YList vif_pending;
          ydk::YList s2l_pending;
          
  }; // MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation
  
  
  class MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::Idt : public ydk::Entity
  {
      public:
          Idt();
          ~Idt();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class CurrentIdtInfo; //type: MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::Idt::CurrentIdtInfo
          class PreviousIdtStatus; //type: MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::Idt::PreviousIdtStatus
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::Idt::CurrentIdtInfo> current_idt_info;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::Idt::PreviousIdtStatus> previous_idt_status;
          
  }; // MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::Idt
  
  
  class MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::Idt::CurrentIdtInfo : public ydk::Entity
  {
      public:
          CurrentIdtInfo();
          ~CurrentIdtInfo();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf is_ready_status; //type: boolean
          ydk::YLeaf reason; //type: TeSyncNotReadyReason
          ydk::YLeaf idt_start_time; //type: uint32
          ydk::YLeaf idt_end_time; //type: uint32
          ydk::YLeaf declare_time; //type: uint32
          ydk::YLeaf withdraw_time; //type: uint32
  
  }; // MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::Idt::CurrentIdtInfo
  
  
  class MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::Idt::PreviousIdtStatus : public ydk::Entity
  {
      public:
          PreviousIdtStatus();
          ~PreviousIdtStatus();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf is_ready_status; //type: boolean
          ydk::YLeaf reason; //type: TeSyncNotReadyReason
          ydk::YLeaf idt_start_time; //type: uint32
          ydk::YLeaf idt_end_time; //type: uint32
          ydk::YLeaf declare_time; //type: uint32
          ydk::YLeaf withdraw_time; //type: uint32
  
  }; // MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::Idt::PreviousIdtStatus
  
  
  class MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::VifPending : public ydk::Entity
  {
      public:
          VifPending();
          ~VifPending();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf pending_reason; //type: TeSyncPendingReason
          ydk::YLeaf tunnel_name; //type: string
  
  }; // MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::VifPending
  
  
  class MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::S2lPending : public ydk::Entity
  {
      public:
          S2lPending();
          ~S2lPending();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf pending_reason; //type: TeSyncPendingReason
          ydk::YLeaf signaled_name; //type: string
          ydk::YLeaf s2l_role; //type: MplsTeTunnelRole
  
  }; // MplsTe::Issu::Detail::SyncStatusInformation::SlaveSyncInformation::S2lPending
  
  
  class MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation : public ydk::Entity
  {
      public:
          MasterSyncInformation();
          ~MasterSyncInformation();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class Idt; //type: MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation::Idt
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation::Idt> idt;
          
  }; // MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation
  
  
  class MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation::Idt : public ydk::Entity
  {
      public:
          Idt();
          ~Idt();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class CurrentIdtInfo; //type: MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation::Idt::CurrentIdtInfo
          class PreviousIdtStatus; //type: MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation::Idt::PreviousIdtStatus
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation::Idt::CurrentIdtInfo> current_idt_info;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation::Idt::PreviousIdtStatus> previous_idt_status;
          
  }; // MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation::Idt
  
  
  class MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation::Idt::CurrentIdtInfo : public ydk::Entity
  {
      public:
          CurrentIdtInfo();
          ~CurrentIdtInfo();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf is_ready_status; //type: boolean
          ydk::YLeaf reason; //type: TeSyncNotReadyReason
          ydk::YLeaf idt_start_time; //type: uint32
          ydk::YLeaf idt_end_time; //type: uint32
          ydk::YLeaf declare_time; //type: uint32
          ydk::YLeaf withdraw_time; //type: uint32
  
  }; // MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation::Idt::CurrentIdtInfo
  
  
  class MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation::Idt::PreviousIdtStatus : public ydk::Entity
  {
      public:
          PreviousIdtStatus();
          ~PreviousIdtStatus();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf is_ready_status; //type: boolean
          ydk::YLeaf reason; //type: TeSyncNotReadyReason
          ydk::YLeaf idt_start_time; //type: uint32
          ydk::YLeaf idt_end_time; //type: uint32
          ydk::YLeaf declare_time; //type: uint32
          ydk::YLeaf withdraw_time; //type: uint32
  
  }; // MplsTe::Issu::Detail::SyncStatusInformation::MasterSyncInformation::Idt::PreviousIdtStatus
  
  
  class MplsTe::AutoRouteDestinationEntries : public ydk::Entity
  {
      public:
          AutoRouteDestinationEntries();
          ~AutoRouteDestinationEntries();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class AutoRouteDestinationEntry; //type: MplsTe::AutoRouteDestinationEntries::AutoRouteDestinationEntry
  
          ydk::YList auto_route_destination_entry;
          
  }; // MplsTe::AutoRouteDestinationEntries
  
  
  class MplsTe::AutoRouteDestinationEntries::AutoRouteDestinationEntry : public ydk::Entity
  {
      public:
          AutoRouteDestinationEntry();
          ~AutoRouteDestinationEntry();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf tunnel_id; //type: uint32
          ydk::YLeaf tunnel_id_xr; //type: uint16
          ydk::YLeaf tunnel_name; //type: string
          class TunnelAutorouteDest; //type: MplsTe::AutoRouteDestinationEntries::AutoRouteDestinationEntry::TunnelAutorouteDest
  
          ydk::YList tunnel_autoroute_dest;
          
  }; // MplsTe::AutoRouteDestinationEntries::AutoRouteDestinationEntry
  
  
  class MplsTe::AutoRouteDestinationEntries::AutoRouteDestinationEntry::TunnelAutorouteDest : public ydk::Entity
  {
      public:
          TunnelAutorouteDest();
          ~TunnelAutorouteDest();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf prefix_address; //type: string
          ydk::YLeaf prefix_length; //type: uint32
          ydk::YLeaf metric; //type: uint32
          ydk::YLeaf install_time; //type: uint32
          ydk::YLeaf interface_handle; //type: string
  
  }; // MplsTe::AutoRouteDestinationEntries::AutoRouteDestinationEntry::TunnelAutorouteDest
  
  
  class MplsTe::FastReroute : public ydk::Entity
  {
      public:
          FastReroute();
          ~FastReroute();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class BackupTunnels; //type: MplsTe::FastReroute::BackupTunnels
          class ProtectedInterfaces; //type: MplsTe::FastReroute::ProtectedInterfaces
          class Protections; //type: MplsTe::FastReroute::Protections
          class Promotion; //type: MplsTe::FastReroute::Promotion
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::FastReroute::BackupTunnels> backup_tunnels;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::FastReroute::ProtectedInterfaces> protected_interfaces;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::FastReroute::Protections> protections;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::FastReroute::Promotion> promotion;
          
  }; // MplsTe::FastReroute
  
  
  class MplsTe::FastReroute::BackupTunnels : public ydk::Entity
  {
      public:
          BackupTunnels();
          ~BackupTunnels();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class BackupTunnel; //type: MplsTe::FastReroute::BackupTunnels::BackupTunnel
  
          ydk::YList backup_tunnel;
          
  }; // MplsTe::FastReroute::BackupTunnels
  
  
  class MplsTe::FastReroute::BackupTunnels::BackupTunnel : public ydk::Entity
  {
      public:
          BackupTunnel();
          ~BackupTunnel();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf tunnel_name; //type: string
          ydk::YLeaf interface_name; //type: string
          ydk::YLeaf backup_tunnel_id; //type: uint32
          ydk::YLeaf backup_tunnel_name_xr; //type: string
          ydk::YLeaf backup_status; //type: MplsTeBackupStatus
          ydk::YLeaf backup_type; //type: MplsTeBackup
          ydk::YLeaf backup_usage; //type: MplsTeBackupUsage
          ydk::YLeaf prot_interface_autobackup_config; //type: AutoBackupProtection
          ydk::YLeaf prot_interface_srlg_config; //type: AutoBackupSrlgMode
          ydk::YLeaf tunnel_attribute_set_name; //type: string
          ydk::YLeaf has_attribute_set; //type: boolean
          ydk::YLeaf is_attribute_set_in_db; //type: boolean
          ydk::YLeaf recreate_timer_is_running; //type: boolean
          ydk::YLeaf recreate_remaining_time; //type: uint32
          ydk::YLeaf source_address; //type: string
          ydk::YLeaf destination_address; //type: string
          ydk::YLeaf general_status; //type: MplsTeTunnelState
          ydk::YLeaf connection_status; //type: MplsTeTunnelState
          ydk::YLeaf output_interface_name; //type: string
          ydk::YLeaf bandwidth_pool_type; //type: MplsTeBwPool
          ydk::YLeaf bandwidth_limit_type; //type: MplsTeBwLimit
          ydk::YLeaf bandwidth; //type: uint32
          ydk::YLeaf tunnel_instance; //type: uint32
          ydk::YLeaf in_use_bandwidth; //type: uint32
          ydk::YLeaf soft_preempted_in_use_bandwidth; //type: uint32
          ydk::YLeaf ls_ps; //type: uint32
          ydk::YLeaf s2l_families; //type: uint32
          ydk::YLeaf s2_ls; //type: uint32
          ydk::YLeaf frr_active_ls_ps; //type: uint32
          ydk::YLeaf frr_active_soft_preempted_ls_ps; //type: uint32
  
  }; // MplsTe::FastReroute::BackupTunnels::BackupTunnel
  
  
  class MplsTe::FastReroute::ProtectedInterfaces : public ydk::Entity
  {
      public:
          ProtectedInterfaces();
          ~ProtectedInterfaces();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class ProtectedInterface; //type: MplsTe::FastReroute::ProtectedInterfaces::ProtectedInterface
  
          ydk::YList protected_interface;
          
  }; // MplsTe::FastReroute::ProtectedInterfaces
  
  
  class MplsTe::FastReroute::ProtectedInterfaces::ProtectedInterface : public ydk::Entity
  {
      public:
          ProtectedInterface();
          ~ProtectedInterface();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf interface_name; //type: string
          ydk::YLeaf backup_tunnel_name; //type: string
          ydk::YLeaf backup_tunnel_id; //type: uint32
          ydk::YLeaf backup_tunnel_name_xr; //type: string
          ydk::YLeaf backup_status; //type: MplsTeBackupStatus
          ydk::YLeaf backup_type; //type: MplsTeBackup
          ydk::YLeaf backup_usage; //type: MplsTeBackupUsage
          ydk::YLeaf prot_interface_autobackup_config; //type: AutoBackupProtection
          ydk::YLeaf prot_interface_srlg_config; //type: AutoBackupSrlgMode
          ydk::YLeaf tunnel_attribute_set_name; //type: string
          ydk::YLeaf has_attribute_set; //type: boolean
          ydk::YLeaf is_attribute_set_in_db; //type: boolean
          ydk::YLeaf recreate_timer_is_running; //type: boolean
          ydk::YLeaf recreate_remaining_time; //type: uint32
          ydk::YLeaf source_address; //type: string
          ydk::YLeaf destination_address; //type: string
          ydk::YLeaf general_status; //type: MplsTeTunnelState
          ydk::YLeaf connection_status; //type: MplsTeTunnelState
          ydk::YLeaf output_interface_name; //type: string
          ydk::YLeaf bandwidth_pool_type; //type: MplsTeBwPool
          ydk::YLeaf bandwidth_limit_type; //type: MplsTeBwLimit
          ydk::YLeaf bandwidth; //type: uint32
          ydk::YLeaf tunnel_instance; //type: uint32
          ydk::YLeaf in_use_bandwidth; //type: uint32
          ydk::YLeaf soft_preempted_in_use_bandwidth; //type: uint32
          ydk::YLeaf ls_ps; //type: uint32
          ydk::YLeaf s2l_families; //type: uint32
          ydk::YLeaf s2_ls; //type: uint32
          ydk::YLeaf frr_active_ls_ps; //type: uint32
          ydk::YLeaf frr_active_soft_preempted_ls_ps; //type: uint32
  
  }; // MplsTe::FastReroute::ProtectedInterfaces::ProtectedInterface
  
  
  class MplsTe::FastReroute::Protections : public ydk::Entity
  {
      public:
          Protections();
          ~Protections();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class Protection; //type: MplsTe::FastReroute::Protections::Protection
  
          ydk::YList protection;
          
  }; // MplsTe::FastReroute::Protections
  
  
  class MplsTe::FastReroute::Protections::Protection : public ydk::Entity
  {
      public:
          Protection();
          ~Protection();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf source_address; //type: string
          ydk::YLeaf destination_address; //type: string
          ydk::YLeaf tunnel_id; //type: uint32
          ydk::YLeaf extended_tunnel_id; //type: string
          ydk::YLeaf lsp_id; //type: uint32
          ydk::YLeaf sub_group_id; //type: uint32
          ydk::YLeaf sub_group_originator; //type: string
          ydk::YLeaf p2mp_id; //type: uint32
          ydk::YLeaf session_type; //type: uint32
          ydk::YLeaf source_address_xr; //type: string
          ydk::YLeaf destination_address_xr; //type: string
          ydk::YLeaf tunnel_id_xr; //type: uint32
          ydk::YLeaf extended_tunnel_id_xr; //type: string
          ydk::YLeaf tunnel_name; //type: string
          ydk::YLeaf tunnel_instance; //type: uint32
          ydk::YLeaf role; //type: MplsTeTunnelRole
          ydk::YLeaf admin_status; //type: MplsTeTunnelState
          ydk::YLeaf operation_status; //type: MplsTeTunnelState
          ydk::YLeaf is_signalled; //type: boolean
          ydk::YLeaf is_frr_requested; //type: boolean
          ydk::YLeaf outbound_frr_state; //type: MplsTeFrrState
          ydk::YLeaf inbound_frr_state; //type: MplsTeFrrState
          ydk::YLeaf output_interface_lsp; //type: string
          ydk::YLeaf output_label; //type: uint32
          ydk::YLeaf next_hop_address; //type: string
          ydk::YLeaf frr_output_tunnel_interface; //type: string
          ydk::YLeaf frr_output_label; //type: uint32
          ydk::YLeaf backup_status; //type: MplsTeBackupStatus
          ydk::YLeaf bandwidth_pool_type; //type: MplsTeBwPool
          ydk::YLeaf bandwidth_limit_type; //type: MplsTeBwLimit
          ydk::YLeaf original_input_interface; //type: string
          ydk::YLeaf input_label; //type: uint32
          ydk::YLeaf previous_hop_address; //type: string
          ydk::YLeaf backup_bandwidth; //type: uint32
          ydk::YLeaf frr_output_interface; //type: string
          ydk::YLeaf backup_next_hop_address; //type: string
          ydk::YLeaf lsp_bandwidth_type; //type: MplsTeBwPool
          ydk::YLeaf sharing_type; //type: MplsTeFrrSharing
          ydk::YLeaf is_p2mp_tunnel; //type: boolean
          ydk::YLeaf sub_group_original_id; //type: string
          ydk::YLeaf sub_group_id_xr; //type: uint16
          ydk::YLeaf p2mp_id_xr; //type: uint32
  
  }; // MplsTe::FastReroute::Protections::Protection
  
  
  class MplsTe::FastReroute::Promotion : public ydk::Entity
  {
      public:
          Promotion();
          ~Promotion();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf promotion_period; //type: uint32
          ydk::YLeaf remaining_time; //type: uint32
          ydk::YLeaf is_configured; //type: boolean
  
  }; // MplsTe::FastReroute::Promotion
  
  
  class MplsTe::AttributeSets : public ydk::Entity
  {
      public:
          AttributeSets();
          ~AttributeSets();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class AttributeSet; //type: MplsTe::AttributeSets::AttributeSet
  
          ydk::YList attribute_set;
          
  }; // MplsTe::AttributeSets
  
  
  class MplsTe::AttributeSets::AttributeSet : public ydk::Entity
  {
      public:
          AttributeSet();
          ~AttributeSet();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf attribute_set_type; //type: MplsTeAttrSet
          ydk::YLeaf attribute_set_name; //type: string
          ydk::YLeaf tunnel_attribute_set_name; //type: string
          ydk::YLeaf tunnel_attribute_set_name_crc32; //type: uint32
          class AttributeSetUnion; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion> attribute_set_union;
          
  }; // MplsTe::AttributeSets::AttributeSet
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion : public ydk::Entity
  {
      public:
          AttributeSetUnion();
          ~AttributeSetUnion();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf tunnel_attribute_set_type; //type: TunnelAttributeSet
          class AttributeSetPathOption; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption
          class AttributeSetAutobackup; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup
          class AttributeSetAutomesh; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh
          class AttributeSetXro; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro
          class AttributeSetP2mpte; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte
          class AttributeSetApsPp; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetApsPp
          class AttributeSetP2pTe; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption> attribute_set_path_option;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup> attribute_set_autobackup;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh> attribute_set_automesh;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro> attribute_set_xro;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte> attribute_set_p2mpte;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetApsPp> attribute_set_aps_pp;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe> attribute_set_p2p_te;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption : public ydk::Entity
  {
      public:
          AttributeSetPathOption();
          ~AttributeSetPathOption();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf configured_bandwidth; //type: uint32
          ydk::YLeaf cost_limit; //type: uint32
          ydk::YLeaf dste_class_type; //type: uint8
          ydk::YLeaf bandwidth_type; //type: MplsTeBwPool
          ydk::YLeaf is_bandwidth_configured; //type: boolean
          ydk::YLeaf is_cost_limit_configured; //type: boolean
          ydk::YLeaf is_affinity_configured; //type: boolean
          ydk::YLeaf generation; //type: uint32
          ydk::YLeaf path_invalidation_timeout; //type: uint32
          ydk::YLeaf path_invalidation_action; //type: uint32
          ydk::YLeaf is_path_invalidation_timeout_configured; //type: boolean
          ydk::YLeaf is_path_invalidation_action_configured; //type: boolean
          ydk::YLeaf exclude_list_name; //type: string
          ydk::YLeaf is_exclude_list_name_configured; //type: boolean
          ydk::YLeaf is_pce_configured; //type: boolean
          ydk::YLeaf is_pce_disj_source_configured; //type: boolean
          ydk::YLeaf is_pce_disj_type_configured; //type: boolean
          ydk::YLeaf is_pce_disj_group_id_configured; //type: boolean
          ydk::YLeaf pcedp_source_address; //type: uint32
          ydk::YLeaf pcedp_type; //type: TePceDisjoint
          ydk::YLeaf pcedp_group_id; //type: uint32
          ydk::YLeaf is_pceb_dj_source_configured; //type: boolean
          ydk::YLeaf is_pcebd_group_id_configured; //type: boolean
          ydk::YLeaf pcebd_source_address; //type: uint32
          ydk::YLeaf pcebd_group_id; //type: uint32
          ydk::YLeaf is_bfd_reverse_pat_configured; //type: boolean
          ydk::YLeaf is_delay_limit_configured; //type: boolean
          ydk::YLeaf delay_limit; //type: uint32
          class Affinity; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::Affinity
          class BfdReversePath; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::BfdReversePath
          class TunnelId; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::TunnelId
          class VersionInfo; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::VersionInfo
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::Affinity> affinity;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::BfdReversePath> bfd_reverse_path;
          ydk::YList tunnel_id;
          ydk::YList version_info;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::Affinity : public ydk::Entity
  {
      public:
          Affinity();
          ~Affinity();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf affinity_bits; //type: uint32
          ydk::YLeaf affinity_mask; //type: uint32
          class NamedAffinity; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::Affinity::NamedAffinity
  
          ydk::YList named_affinity;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::Affinity
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::Affinity::NamedAffinity : public ydk::Entity
  {
      public:
          NamedAffinity();
          ~NamedAffinity();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf constraint_type; //type: uint8
          ydk::YLeaf constraint_value; //type: uint32
          ydk::YLeaf forward_ref_value; //type: uint32
          class ConstraintExtendedValue; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::Affinity::NamedAffinity::ConstraintExtendedValue
          class ExtendedForwardRefValue; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::Affinity::NamedAffinity::ExtendedForwardRefValue
  
          ydk::YList constraint_extended_value;
          ydk::YList extended_forward_ref_value;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::Affinity::NamedAffinity
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::Affinity::NamedAffinity::ConstraintExtendedValue : public ydk::Entity
  {
      public:
          ConstraintExtendedValue();
          ~ConstraintExtendedValue();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::Affinity::NamedAffinity::ConstraintExtendedValue
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::Affinity::NamedAffinity::ExtendedForwardRefValue : public ydk::Entity
  {
      public:
          ExtendedForwardRefValue();
          ~ExtendedForwardRefValue();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::Affinity::NamedAffinity::ExtendedForwardRefValue
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::BfdReversePath : public ydk::Entity
  {
      public:
          BfdReversePath();
          ~BfdReversePath();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf path_type; //type: TeBfdReversePath
          ydk::YLeaf binding_label; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::BfdReversePath
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::TunnelId : public ydk::Entity
  {
      public:
          TunnelId();
          ~TunnelId();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint16
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::TunnelId
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::VersionInfo : public ydk::Entity
  {
      public:
          VersionInfo();
          ~VersionInfo();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf attribute_type; //type: string
          ydk::YLeaf generation; //type: uint32
          ydk::YLeaf is_default; //type: boolean
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetPathOption::VersionInfo
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup : public ydk::Entity
  {
      public:
          AttributeSetAutobackup();
          ~AttributeSetAutobackup();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf is_signalled_name_configured; //type: boolean
          ydk::YLeaf setup_priority; //type: uint8
          ydk::YLeaf hold_priority; //type: uint8
          ydk::YLeaf is_priority_configured; //type: boolean
          ydk::YLeaf policy_class; //type: uint8
          ydk::YLeaf is_policyclass_configured; //type: boolean
          ydk::YLeaf is_affinity_configured; //type: boolean
          ydk::YLeaf record_route; //type: boolean
          class SignalledName; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::SignalledName
          class Affinity; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Affinity
          class Logging; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Logging
          class PolicyClassEntry; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::PolicyClassEntry
          class TunnelId; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::TunnelId
          class ProtectedInterface; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::ProtectedInterface
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::SignalledName> signalled_name;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Affinity> affinity;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Logging> logging;
          ydk::YList policy_class_entry;
          ydk::YList tunnel_id;
          ydk::YList protected_interface;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::SignalledName : public ydk::Entity
  {
      public:
          SignalledName();
          ~SignalledName();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf name; //type: string
          ydk::YLeaf source_type; //type: TeSigNameAppend
          ydk::YLeaf protected_interface_type; //type: TeSigNameAppend
          ydk::YLeaf is_mp_addresses; //type: boolean
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::SignalledName
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Affinity : public ydk::Entity
  {
      public:
          Affinity();
          ~Affinity();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf affinity_bits; //type: uint32
          ydk::YLeaf affinity_mask; //type: uint32
          class NamedAffinity; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Affinity::NamedAffinity
  
          ydk::YList named_affinity;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Affinity
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Affinity::NamedAffinity : public ydk::Entity
  {
      public:
          NamedAffinity();
          ~NamedAffinity();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf constraint_type; //type: uint8
          ydk::YLeaf constraint_value; //type: uint32
          ydk::YLeaf forward_ref_value; //type: uint32
          class ConstraintExtendedValue; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Affinity::NamedAffinity::ConstraintExtendedValue
          class ExtendedForwardRefValue; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Affinity::NamedAffinity::ExtendedForwardRefValue
  
          ydk::YList constraint_extended_value;
          ydk::YList extended_forward_ref_value;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Affinity::NamedAffinity
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Affinity::NamedAffinity::ConstraintExtendedValue : public ydk::Entity
  {
      public:
          ConstraintExtendedValue();
          ~ConstraintExtendedValue();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Affinity::NamedAffinity::ConstraintExtendedValue
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Affinity::NamedAffinity::ExtendedForwardRefValue : public ydk::Entity
  {
      public:
          ExtendedForwardRefValue();
          ~ExtendedForwardRefValue();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Affinity::NamedAffinity::ExtendedForwardRefValue
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Logging : public ydk::Entity
  {
      public:
          Logging();
          ~Logging();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf lsp_state; //type: boolean
          ydk::YLeaf s2l_state; //type: boolean
          ydk::YLeaf lsp_re_route; //type: boolean
          ydk::YLeaf lsp_re_opt; //type: boolean
          ydk::YLeaf lsp_insufficient_bw; //type: boolean
          ydk::YLeaf lsp_bandwidth_change; //type: boolean
          ydk::YLeaf lsp_pcalc_failure_logging_enabled; //type: boolean
          ydk::YLeaf all_logging_enabled; //type: boolean
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::Logging
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::PolicyClassEntry : public ydk::Entity
  {
      public:
          PolicyClassEntry();
          ~PolicyClassEntry();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint8
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::PolicyClassEntry
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::TunnelId : public ydk::Entity
  {
      public:
          TunnelId();
          ~TunnelId();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint16
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::TunnelId
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::ProtectedInterface : public ydk::Entity
  {
      public:
          ProtectedInterface();
          ~ProtectedInterface();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf protected_interface; //type: string
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutobackup::ProtectedInterface
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh : public ydk::Entity
  {
      public:
          AttributeSetAutomesh();
          ~AttributeSetAutomesh();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf configured_bandwidth; //type: uint32
          ydk::YLeaf dste_class_type; //type: uint8
          ydk::YLeaf is_bandwidth_configured; //type: boolean
          ydk::YLeaf setup_priority; //type: uint8
          ydk::YLeaf hold_priority; //type: uint8
          ydk::YLeaf is_priority_configured; //type: boolean
          ydk::YLeaf policy_class; //type: uint8
          ydk::YLeaf is_policyclass_configured; //type: boolean
          ydk::YLeaf forward_class; //type: uint32
          ydk::YLeaf is_forward_class_configured; //type: boolean
          ydk::YLeaf is_affinity_configured; //type: boolean
          ydk::YLeaf fast_reroute; //type: boolean
          ydk::YLeaf frr_node_protection; //type: boolean
          ydk::YLeaf frr_bandwidth_protection; //type: boolean
          ydk::YLeaf record_route; //type: boolean
          ydk::YLeaf auto_bandwidth_collect; //type: boolean
          ydk::YLeaf auto_route_announce; //type: boolean
          ydk::YLeaf soft_preemption_configured; //type: boolean
          ydk::YLeaf bandwidth; //type: uint32
          ydk::YLeaf load_share; //type: uint32
          ydk::YLeaf is_interface_bw_configured; //type: boolean
          class Affinity; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Affinity
          class Logging; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Logging
          class PolicyClassEntry; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::PolicyClassEntry
          class MeshGroupId; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::MeshGroupId
          class TunnelId; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::TunnelId
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Affinity> affinity;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Logging> logging;
          ydk::YList policy_class_entry;
          ydk::YList mesh_group_id;
          ydk::YList tunnel_id;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Affinity : public ydk::Entity
  {
      public:
          Affinity();
          ~Affinity();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf affinity_bits; //type: uint32
          ydk::YLeaf affinity_mask; //type: uint32
          class NamedAffinity; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Affinity::NamedAffinity
  
          ydk::YList named_affinity;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Affinity
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Affinity::NamedAffinity : public ydk::Entity
  {
      public:
          NamedAffinity();
          ~NamedAffinity();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf constraint_type; //type: uint8
          ydk::YLeaf constraint_value; //type: uint32
          ydk::YLeaf forward_ref_value; //type: uint32
          class ConstraintExtendedValue; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Affinity::NamedAffinity::ConstraintExtendedValue
          class ExtendedForwardRefValue; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Affinity::NamedAffinity::ExtendedForwardRefValue
  
          ydk::YList constraint_extended_value;
          ydk::YList extended_forward_ref_value;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Affinity::NamedAffinity
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Affinity::NamedAffinity::ConstraintExtendedValue : public ydk::Entity
  {
      public:
          ConstraintExtendedValue();
          ~ConstraintExtendedValue();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Affinity::NamedAffinity::ConstraintExtendedValue
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Affinity::NamedAffinity::ExtendedForwardRefValue : public ydk::Entity
  {
      public:
          ExtendedForwardRefValue();
          ~ExtendedForwardRefValue();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Affinity::NamedAffinity::ExtendedForwardRefValue
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Logging : public ydk::Entity
  {
      public:
          Logging();
          ~Logging();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf lsp_state; //type: boolean
          ydk::YLeaf s2l_state; //type: boolean
          ydk::YLeaf lsp_re_route; //type: boolean
          ydk::YLeaf lsp_re_opt; //type: boolean
          ydk::YLeaf lsp_insufficient_bw; //type: boolean
          ydk::YLeaf lsp_bandwidth_change; //type: boolean
          ydk::YLeaf lsp_pcalc_failure_logging_enabled; //type: boolean
          ydk::YLeaf all_logging_enabled; //type: boolean
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::Logging
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::PolicyClassEntry : public ydk::Entity
  {
      public:
          PolicyClassEntry();
          ~PolicyClassEntry();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint8
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::PolicyClassEntry
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::MeshGroupId : public ydk::Entity
  {
      public:
          MeshGroupId();
          ~MeshGroupId();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::MeshGroupId
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::TunnelId : public ydk::Entity
  {
      public:
          TunnelId();
          ~TunnelId();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint16
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetAutomesh::TunnelId
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro : public ydk::Entity
  {
      public:
          AttributeSetXro();
          ~AttributeSetXro();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          class Xro; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro> xro;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro : public ydk::Entity
  {
      public:
          Xro();
          ~Xro();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf mutual_diversity_flag; //type: boolean
          class XroSubobject; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject
  
          ydk::YList xro_subobject;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject : public ydk::Entity
  {
      public:
          XroSubobject();
          ~XroSubobject();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf type; //type: TeXroSubobj
          class Ipv4Subobject; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::Ipv4Subobject
          class Ipv6Subobject; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::Ipv6Subobject
          class UnnumberedSubobject; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::UnnumberedSubobject
          class AsSubobject; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::AsSubobject
          class SrlgSubobject; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::SrlgSubobject
          class LspSubobject; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::LspSubobject
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::Ipv4Subobject> ipv4_subobject;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::Ipv6Subobject> ipv6_subobject;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::UnnumberedSubobject> unnumbered_subobject;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::AsSubobject> as_subobject;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::SrlgSubobject> srlg_subobject;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::LspSubobject> lsp_subobject;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::Ipv4Subobject : public ydk::Entity
  {
      public:
          Ipv4Subobject();
          ~Ipv4Subobject();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf address; //type: string
          ydk::YLeaf prefix_len; //type: uint8
          ydk::YLeaf attribute; //type: TeXroAttribute
          ydk::YLeaf exclusion_type; //type: TeXroExclusion
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::Ipv4Subobject
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::Ipv6Subobject : public ydk::Entity
  {
      public:
          Ipv6Subobject();
          ~Ipv6Subobject();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf address; //type: string
          ydk::YLeaf prefix_len; //type: uint8
          ydk::YLeaf attribute; //type: TeXroAttribute
          ydk::YLeaf exclusion_type; //type: TeXroExclusion
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::Ipv6Subobject
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::UnnumberedSubobject : public ydk::Entity
  {
      public:
          UnnumberedSubobject();
          ~UnnumberedSubobject();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf te_router_id; //type: string
          ydk::YLeaf interface_id; //type: uint32
          ydk::YLeaf attribute; //type: TeXroAttribute
          ydk::YLeaf exclusion_type; //type: TeXroExclusion
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::UnnumberedSubobject
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::AsSubobject : public ydk::Entity
  {
      public:
          AsSubobject();
          ~AsSubobject();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf as_number; //type: uint16
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::AsSubobject
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::SrlgSubobject : public ydk::Entity
  {
      public:
          SrlgSubobject();
          ~SrlgSubobject();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf srlg_id; //type: uint32
          ydk::YLeaf exclusion_type; //type: TeXroExclusion
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::SrlgSubobject
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::LspSubobject : public ydk::Entity
  {
      public:
          LspSubobject();
          ~LspSubobject();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf ignore_lsp_id; //type: boolean
          ydk::YLeaf processing_node_exception; //type: boolean
          ydk::YLeaf penultimate_node_exception; //type: boolean
          ydk::YLeaf destination_node_exception; //type: boolean
          ydk::YLeaf exclusion_type; //type: TeXroExclusion
          class Fec; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::LspSubobject::Fec
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::LspSubobject::Fec> fec;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::LspSubobject
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::LspSubobject::Fec : public ydk::Entity
  {
      public:
          Fec();
          ~Fec();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf fec_lsp_id; //type: uint16
          ydk::YLeaf fec_tunnel_id; //type: uint16
          ydk::YLeaf fec_extended_tunnel_id; //type: string
          ydk::YLeaf fec_source; //type: string
          ydk::YLeaf fec_vrf; //type: string
          class FecDestinationInfo; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::LspSubobject::Fec::FecDestinationInfo
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::LspSubobject::Fec::FecDestinationInfo> fec_destination_info;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::LspSubobject::Fec
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::LspSubobject::Fec::FecDestinationInfo : public ydk::Entity
  {
      public:
          FecDestinationInfo();
          ~FecDestinationInfo();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf fec_ctype; //type: MplsLibC
          ydk::YLeaf p2p_lsp_destination; //type: string
          ydk::YLeaf fec_destination_p2mp_id; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetXro::Xro::XroSubobject::LspSubobject::Fec::FecDestinationInfo
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte : public ydk::Entity
  {
      public:
          AttributeSetP2mpte();
          ~AttributeSetP2mpte();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf fast_reroute; //type: boolean
          ydk::YLeaf frr_bandwidth_protection; //type: boolean
          ydk::YLeaf setup_priority; //type: uint8
          ydk::YLeaf hold_priority; //type: uint8
          ydk::YLeaf is_priority_configured; //type: boolean
          ydk::YLeaf configured_bandwidth; //type: uint32
          ydk::YLeaf dste_class_type; //type: uint8
          ydk::YLeaf is_bandwidth_configured; //type: boolean
          ydk::YLeaf is_affinity_configured; //type: boolean
          class Affinity; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::Affinity
          class TunnelId; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::TunnelId
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::Affinity> affinity;
          ydk::YList tunnel_id;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::Affinity : public ydk::Entity
  {
      public:
          Affinity();
          ~Affinity();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf affinity_bits; //type: uint32
          ydk::YLeaf affinity_mask; //type: uint32
          class NamedAffinity; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::Affinity::NamedAffinity
  
          ydk::YList named_affinity;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::Affinity
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::Affinity::NamedAffinity : public ydk::Entity
  {
      public:
          NamedAffinity();
          ~NamedAffinity();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf constraint_type; //type: uint8
          ydk::YLeaf constraint_value; //type: uint32
          ydk::YLeaf forward_ref_value; //type: uint32
          class ConstraintExtendedValue; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::Affinity::NamedAffinity::ConstraintExtendedValue
          class ExtendedForwardRefValue; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::Affinity::NamedAffinity::ExtendedForwardRefValue
  
          ydk::YList constraint_extended_value;
          ydk::YList extended_forward_ref_value;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::Affinity::NamedAffinity
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::Affinity::NamedAffinity::ConstraintExtendedValue : public ydk::Entity
  {
      public:
          ConstraintExtendedValue();
          ~ConstraintExtendedValue();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::Affinity::NamedAffinity::ConstraintExtendedValue
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::Affinity::NamedAffinity::ExtendedForwardRefValue : public ydk::Entity
  {
      public:
          ExtendedForwardRefValue();
          ~ExtendedForwardRefValue();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::Affinity::NamedAffinity::ExtendedForwardRefValue
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::TunnelId : public ydk::Entity
  {
      public:
          TunnelId();
          ~TunnelId();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint16
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2mpte::TunnelId
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetApsPp : public ydk::Entity
  {
      public:
          AttributeSetApsPp();
          ~AttributeSetApsPp();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf snc_mode; //type: TeApsSncMode
          ydk::YLeaf tcm_id; //type: uint32
          ydk::YLeaf protection_type; //type: TeProtect
          ydk::YLeaf protection_mode; //type: TePnrRevertOptions
          ydk::YLeaf wait_to_restore_time; //type: uint32
          ydk::YLeaf hold_off_time; //type: uint32
          ydk::YLeaf path_prot_profile_type; //type: TePathProtProfile
          ydk::YLeaf restoration_style; //type: TeRestorationStyle
          class RevertSchedule; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetApsPp::RevertSchedule
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetApsPp::RevertSchedule> revert_schedule;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetApsPp
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetApsPp::RevertSchedule : public ydk::Entity
  {
      public:
          RevertSchedule();
          ~RevertSchedule();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf schedulename; //type: string
          ydk::YLeaf schedule_date; //type: uint32
          ydk::YLeaf schedule_frequency; //type: TeSchFreq
          ydk::YLeaf duration; //type: uint32
          ydk::YLeaf max_tries; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetApsPp::RevertSchedule
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe : public ydk::Entity
  {
      public:
          AttributeSetP2pTe();
          ~AttributeSetP2pTe();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf is_affinity_configured; //type: boolean
          ydk::YLeaf path_selection_segment_routing_adjacency_protection; //type: TeS2lSrPathSelection
          ydk::YLeaf is_path_selection_segment_routing_adjacency_protection_configured; //type: boolean
          ydk::YLeaf path_invalidation_timeout; //type: uint32
          ydk::YLeaf path_selection_invalidation_action; //type: TePathInvalAction
          ydk::YLeaf is_path_invalidation_timeout_configured; //type: boolean
          ydk::YLeaf is_path_invalidation_action_configured; //type: boolean
          ydk::YLeaf path_selection_metric; //type: MplsTeMetric
          ydk::YLeaf is_path_selection_metric_configured; //type: boolean
          ydk::YLeaf path_selection_segment_routing_margin; //type: uint32
          ydk::YLeaf is_path_selection_segment_routing_margin_relative; //type: boolean
          ydk::YLeaf is_path_selection_segment_routing_margin_configured; //type: boolean
          ydk::YLeaf path_selection_segment_routing_segment_limit; //type: uint32
          ydk::YLeaf is_path_selection_segment_routing_segment_limit_configured; //type: boolean
          ydk::YLeaf is_path_select_configured; //type: boolean
          ydk::YLeaf is_prepend_list_configured; //type: boolean
          ydk::YLeaf is_pce_configured; //type: boolean
          ydk::YLeaf is_pce_disj_source_configured; //type: boolean
          ydk::YLeaf is_pce_disj_type_configured; //type: boolean
          ydk::YLeaf is_pce_disj_group_id_configured; //type: boolean
          ydk::YLeaf pcedp_source_address; //type: uint32
          ydk::YLeaf pcedp_type; //type: TePceDisjoint
          ydk::YLeaf pcedp_group_id; //type: uint32
          ydk::YLeaf is_pceb_dj_source_configured; //type: boolean
          ydk::YLeaf is_pcebd_group_id_configured; //type: boolean
          ydk::YLeaf pcebd_source_address; //type: uint32
          ydk::YLeaf pcebd_group_id; //type: uint32
          class Affinity; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Affinity
          class Logging; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Logging
          class PrependList; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::PrependList
          class TunnelId; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::TunnelId
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Affinity> affinity;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Logging> logging;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::PrependList> prepend_list;
          ydk::YList tunnel_id;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Affinity : public ydk::Entity
  {
      public:
          Affinity();
          ~Affinity();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf affinity_bits; //type: uint32
          ydk::YLeaf affinity_mask; //type: uint32
          class NamedAffinity; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Affinity::NamedAffinity
  
          ydk::YList named_affinity;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Affinity
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Affinity::NamedAffinity : public ydk::Entity
  {
      public:
          NamedAffinity();
          ~NamedAffinity();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf constraint_type; //type: uint8
          ydk::YLeaf constraint_value; //type: uint32
          ydk::YLeaf forward_ref_value; //type: uint32
          class ConstraintExtendedValue; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Affinity::NamedAffinity::ConstraintExtendedValue
          class ExtendedForwardRefValue; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Affinity::NamedAffinity::ExtendedForwardRefValue
  
          ydk::YList constraint_extended_value;
          ydk::YList extended_forward_ref_value;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Affinity::NamedAffinity
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Affinity::NamedAffinity::ConstraintExtendedValue : public ydk::Entity
  {
      public:
          ConstraintExtendedValue();
          ~ConstraintExtendedValue();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Affinity::NamedAffinity::ConstraintExtendedValue
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Affinity::NamedAffinity::ExtendedForwardRefValue : public ydk::Entity
  {
      public:
          ExtendedForwardRefValue();
          ~ExtendedForwardRefValue();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Affinity::NamedAffinity::ExtendedForwardRefValue
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Logging : public ydk::Entity
  {
      public:
          Logging();
          ~Logging();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf lsp_state; //type: boolean
          ydk::YLeaf s2l_state; //type: boolean
          ydk::YLeaf lsp_re_route; //type: boolean
          ydk::YLeaf lsp_re_opt; //type: boolean
          ydk::YLeaf lsp_insufficient_bw; //type: boolean
          ydk::YLeaf lsp_bandwidth_change; //type: boolean
          ydk::YLeaf lsp_pcalc_failure_logging_enabled; //type: boolean
          ydk::YLeaf all_logging_enabled; //type: boolean
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::Logging
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::PrependList : public ydk::Entity
  {
      public:
          PrependList();
          ~PrependList();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          class PrependEntry; //type: MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::PrependList::PrependEntry
  
          ydk::YList prepend_entry;
          
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::PrependList
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::PrependList::PrependEntry : public ydk::Entity
  {
      public:
          PrependEntry();
          ~PrependEntry();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf type; //type: TeAttributeSetSrPrepend
          ydk::YLeaf index_; //type: uint32
          ydk::YLeaf next_label; //type: uint32
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::PrependList::PrependEntry
  
  
  class MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::TunnelId : public ydk::Entity
  {
      public:
          TunnelId();
          ~TunnelId();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: uint16
  
  }; // MplsTe::AttributeSets::AttributeSet::AttributeSetUnion::AttributeSetP2pTe::TunnelId
  
  
  class MplsTe::IgpAreaBriefs : public ydk::Entity
  {
      public:
          IgpAreaBriefs();
          ~IgpAreaBriefs();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class IgpAreaBrief; //type: MplsTe::IgpAreaBriefs::IgpAreaBrief
  
          ydk::YList igp_area_brief;
          
  }; // MplsTe::IgpAreaBriefs
  
  
  class MplsTe::IgpAreaBriefs::IgpAreaBrief : public ydk::Entity
  {
      public:
          IgpAreaBrief();
          ~IgpAreaBrief();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf protocol; //type: MplsTeIgpProtocol
          ydk::YLeaf process_tag; //type: string
          ydk::YLeaf igp_type; //type: IgpProtocol
          ydk::YLeaf instance_name; //type: string
          ydk::YLeaf igp_system_id; //type: string
          ydk::YLeaf configured_te_router_id; //type: string
          ydk::YLeaf global_router_id; //type: string
          ydk::YLeaf globall_router_id_optical; //type: string
          ydk::YLeaf in_use_te_router_id; //type: string
          ydk::YLeaf is_connection_up; //type: boolean
          ydk::YLeaf connection_up_count; //type: uint32
          ydk::YLeaf connection_down_count; //type: uint32
          class SecondaryRouterId; //type: MplsTe::IgpAreaBriefs::IgpAreaBrief::SecondaryRouterId
          class Area; //type: MplsTe::IgpAreaBriefs::IgpAreaBrief::Area
  
          ydk::YList secondary_router_id;
          ydk::YList area;
          
  }; // MplsTe::IgpAreaBriefs::IgpAreaBrief
  
  
  class MplsTe::IgpAreaBriefs::IgpAreaBrief::SecondaryRouterId : public ydk::Entity
  {
      public:
          SecondaryRouterId();
          ~SecondaryRouterId();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf entry; //type: string
  
  }; // MplsTe::IgpAreaBriefs::IgpAreaBrief::SecondaryRouterId
  
  
  class MplsTe::IgpAreaBriefs::IgpAreaBrief::Area : public ydk::Entity
  {
      public:
          Area();
          ~Area();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf area_index; //type: uint32
          ydk::YLeaf area_number; //type: uint32
          ydk::YLeaf area_format; //type: IgpOspfAreaFormat
          ydk::YLeaf is_config_ready; //type: boolean
          class ActiveData; //type: MplsTe::IgpAreaBriefs::IgpAreaBrief::Area::ActiveData
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::IgpAreaBriefs::IgpAreaBrief::Area::ActiveData> active_data;
          
  }; // MplsTe::IgpAreaBriefs::IgpAreaBrief::Area
  
  
  class MplsTe::IgpAreaBriefs::IgpAreaBrief::Area::ActiveData : public ydk::Entity
  {
      public:
          ActiveData();
          ~ActiveData();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf interfaces_count; //type: uint32
          ydk::YLeaf link_idt_received; //type: boolean
          ydk::YLeaf topology_idt_received; //type: boolean
          ydk::YLeaf sr_strict; //type: boolean
          ydk::YLeaf p2p_heads_count; //type: uint32
          ydk::YLeaf p2p_autoroute_announced_count; //type: uint32
          ydk::YLeaf p2p_forwarding_adjacency_count; //type: uint32
          ydk::YLeaf p2mp_destination_count; //type: uint32
          ydk::YLeaf tunnel_loose_hops; //type: uint32
          class AreaStatistics; //type: MplsTe::IgpAreaBriefs::IgpAreaBrief::Area::ActiveData::AreaStatistics
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::IgpAreaBriefs::IgpAreaBrief::Area::ActiveData::AreaStatistics> area_statistics;
          
  }; // MplsTe::IgpAreaBriefs::IgpAreaBrief::Area::ActiveData
  
  
  class MplsTe::IgpAreaBriefs::IgpAreaBrief::Area::ActiveData::AreaStatistics : public ydk::Entity
  {
      public:
          AreaStatistics();
          ~AreaStatistics();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf area_adjacency_request_messages; //type: uint32
          ydk::YLeaf area_adjacency_announce_messages; //type: uint32
          ydk::YLeaf area_flood_messages; //type: uint32
          ydk::YLeaf area_lsa_announce_messages; //type: uint32
          ydk::YLeaf area_lsa_fragment_announce_messages; //type: uint32
          ydk::YLeaf area_lsa_delete_messages; //type: uint32
          ydk::YLeaf area_lsa_fragment_delete_messages; //type: uint32
          ydk::YLeaf area_tunnel_announce_messages; //type: uint32
  
  }; // MplsTe::IgpAreaBriefs::IgpAreaBrief::Area::ActiveData::AreaStatistics
  
  
  class MplsTe::BandwidthAccountingCounters : public ydk::Entity
  {
      public:
          BandwidthAccountingCounters();
          ~BandwidthAccountingCounters();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf last_cleared_timestamp; //type: uint32
          ydk::YLeaf bandwidth_application_count; //type: uint32
          ydk::YLeaf bandwidth_sample_count; //type: uint32
          ydk::YLeaf invalid_sample_count; //type: uint32
          ydk::YLeaf skipped_application_count; //type: uint32
          ydk::YLeaf capped_sample_count; //type: uint32
          ydk::YLeaf high_latency_count; //type: uint32
  
  }; // MplsTe::BandwidthAccountingCounters
  
  
  class MplsTe::Tunnels : public ydk::Entity
  {
      public:
          Tunnels();
          ~Tunnels();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class TunnelFlexLsps; //type: MplsTe::Tunnels::TunnelFlexLsps
          class TunnelAutoBandwidths; //type: MplsTe::Tunnels::TunnelAutoBandwidths
          class Summary; //type: MplsTe::Tunnels::Summary
          class TunnelPathProtections; //type: MplsTe::Tunnels::TunnelPathProtections
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps> tunnel_flex_lsps;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelAutoBandwidths> tunnel_auto_bandwidths;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary> summary;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelPathProtections> tunnel_path_protections;
          
  }; // MplsTe::Tunnels
  
  
  class MplsTe::Tunnels::TunnelFlexLsps : public ydk::Entity
  {
      public:
          TunnelFlexLsps();
          ~TunnelFlexLsps();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class TunnelFlexLsp; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp
  
          ydk::YList tunnel_flex_lsp;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp : public ydk::Entity
  {
      public:
          TunnelFlexLsp();
          ~TunnelFlexLsp();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf ctype; //type: Ctype
          ydk::YLeaf tunnel_id; //type: uint32
          ydk::YLeaf tunnel_name; //type: string
          ydk::YLeaf is_tunnel_up; //type: boolean
          ydk::YLeaf tun_id; //type: uint16
          ydk::YLeaf source_address; //type: string
          ydk::YLeaf destination_address; //type: string
          ydk::YLeaf extended_tunnel_id; //type: string
          class WorkingLsp; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp
          class ProtectLsp; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp> working_lsp;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp> protect_lsp;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp : public ydk::Entity
  {
      public:
          WorkingLsp();
          ~WorkingLsp();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf is_operational; //type: boolean
          ydk::YLeaf lsp_uptime; //type: uint32
          ydk::YLeaf path_protection_lsp_id; //type: uint32
          ydk::YLeaf lsp_mode; //type: MplsTeLspMode
          ydk::YLeaf lsp_local_label; //type: uint32
          ydk::YLeaf lsp_output_interface; //type: string
          ydk::YLeaf lsp_output_label; //type: uint32
          ydk::YLeaf lsp_state; //type: MplsTeTunnelState
          class FlexInfo; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::FlexInfo
          class Association; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::Association
          class Protection; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::Protection
          class ReverseLsp; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp
          class LspHop; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::LspHop
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::FlexInfo> flex_info;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::Association> association;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::Protection> protection;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp> reverse_lsp;
          ydk::YList lsp_hop;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::FlexInfo : public ydk::Entity
  {
      public:
          FlexInfo();
          ~FlexInfo();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf entry_exists; //type: boolean
          ydk::YLeaf in_label; //type: uint32
          ydk::YLeaf bfd_created; //type: boolean
          ydk::YLeaf bfd_up; //type: boolean
          ydk::YLeaf oam_created; //type: boolean
          ydk::YLeaf bfd_next_hop; //type: string
          ydk::YLeaf bfd_tun_ifh; //type: string
          ydk::YLeaf bfd_out_ifh; //type: string
          ydk::YLeaf bfd_int_label; //type: uint32
          ydk::YLeaf bfd_egress_label; //type: uint32
          ydk::YLeaf fault_ldi_lockout; //type: boolean
          ydk::YLeaf fault_ldi; //type: boolean
          ydk::YLeaf fault_lkr; //type: boolean
          ydk::YLeaf fault_ais; //type: boolean
          ydk::YLeaf fault_time; //type: uint32
          class FlexFec; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::FlexInfo::FlexFec
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::FlexInfo::FlexFec> flex_fec;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::FlexInfo
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::FlexInfo::FlexFec : public ydk::Entity
  {
      public:
          FlexFec();
          ~FlexFec();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf s2l_fec_subgroup_id; //type: uint16
          ydk::YLeaf s2l_fec_lsp_id; //type: uint16
          ydk::YLeaf s2l_fec_tunnel_id; //type: uint16
          ydk::YLeaf s2l_fec_extended_tunnel_id; //type: string
          ydk::YLeaf s2l_fec_source; //type: string
          ydk::YLeaf s2l_fec_dest; //type: string
          ydk::YLeaf s2l_fec_p2mp_id; //type: uint32
          ydk::YLeaf s2l_fec_subgroup_originator; //type: string
          ydk::YLeaf s2l_fec_ctype; //type: MplsLibC
          ydk::YLeaf s2l_fec_vrf; //type: string
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::FlexInfo::FlexFec
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::Association : public ydk::Entity
  {
      public:
          Association();
          ~Association();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf s2l_association_type; //type: uint16
          ydk::YLeaf s2l_association_tie_role; //type: TeAssociationTieRole
          ydk::YLeaf s2l_association_id; //type: uint16
          ydk::YLeaf s2l_association_source; //type: string
          ydk::YLeaf s2l_global_source; //type: uint32
          class S2lExtendedId; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::Association::S2lExtendedId
  
          ydk::YList s2l_extended_id;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::Association
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::Association::S2lExtendedId : public ydk::Entity
  {
      public:
          S2lExtendedId();
          ~S2lExtendedId();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::Association::S2lExtendedId
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::Protection : public ydk::Entity
  {
      public:
          Protection();
          ~Protection();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf s2l_secondary; //type: boolean
          ydk::YLeaf s2l_protecting; //type: boolean
          ydk::YLeaf s2l_notification; //type: boolean
          ydk::YLeaf s2l_operational; //type: boolean
          ydk::YLeaf enhanced; //type: boolean
          ydk::YLeaf ded1_plus1; //type: boolean
          ydk::YLeaf ded1_to1; //type: boolean
          ydk::YLeaf shared; //type: boolean
          ydk::YLeaf link_unprotected; //type: boolean
          ydk::YLeaf extra_traffic; //type: boolean
          ydk::YLeaf any; //type: boolean
          ydk::YLeaf rerouting; //type: boolean
          ydk::YLeaf rerouting_no_et; //type: boolean
          ydk::YLeaf one_to_n_protection_et; //type: boolean
          ydk::YLeaf one_plus_one_uni; //type: boolean
          ydk::YLeaf one_plus_one_bi; //type: boolean
          ydk::YLeaf lsp_unprotected; //type: boolean
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::Protection
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp : public ydk::Entity
  {
      public:
          ReverseLsp();
          ~ReverseLsp();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf reverse_lsp_present; //type: boolean
          ydk::YLeaf reverse_lsp_connected; //type: boolean
          class ReverseLspFec; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::ReverseLspFec
          class Association; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::Association
          class Protection; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::Protection
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::ReverseLspFec> reverse_lsp_fec;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::Association> association;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::Protection> protection;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::ReverseLspFec : public ydk::Entity
  {
      public:
          ReverseLspFec();
          ~ReverseLspFec();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf fec_lsp_id; //type: uint16
          ydk::YLeaf fec_tunnel_id; //type: uint16
          ydk::YLeaf fec_extended_tunnel_id; //type: string
          ydk::YLeaf fec_source; //type: string
          ydk::YLeaf fec_vrf; //type: string
          class FecDestinationInfo; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::ReverseLspFec::FecDestinationInfo
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::ReverseLspFec::FecDestinationInfo> fec_destination_info;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::ReverseLspFec
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::ReverseLspFec::FecDestinationInfo : public ydk::Entity
  {
      public:
          FecDestinationInfo();
          ~FecDestinationInfo();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf fec_ctype; //type: MplsLibC
          ydk::YLeaf p2p_lsp_destination; //type: string
          ydk::YLeaf fec_destination_p2mp_id; //type: uint32
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::ReverseLspFec::FecDestinationInfo
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::Association : public ydk::Entity
  {
      public:
          Association();
          ~Association();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf s2l_association_type; //type: uint16
          ydk::YLeaf s2l_association_tie_role; //type: TeAssociationTieRole
          ydk::YLeaf s2l_association_id; //type: uint16
          ydk::YLeaf s2l_association_source; //type: string
          ydk::YLeaf s2l_global_source; //type: uint32
          class S2lExtendedId; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::Association::S2lExtendedId
  
          ydk::YList s2l_extended_id;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::Association
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::Association::S2lExtendedId : public ydk::Entity
  {
      public:
          S2lExtendedId();
          ~S2lExtendedId();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::Association::S2lExtendedId
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::Protection : public ydk::Entity
  {
      public:
          Protection();
          ~Protection();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf s2l_secondary; //type: boolean
          ydk::YLeaf s2l_protecting; //type: boolean
          ydk::YLeaf s2l_notification; //type: boolean
          ydk::YLeaf s2l_operational; //type: boolean
          ydk::YLeaf enhanced; //type: boolean
          ydk::YLeaf ded1_plus1; //type: boolean
          ydk::YLeaf ded1_to1; //type: boolean
          ydk::YLeaf shared; //type: boolean
          ydk::YLeaf link_unprotected; //type: boolean
          ydk::YLeaf extra_traffic; //type: boolean
          ydk::YLeaf any; //type: boolean
          ydk::YLeaf rerouting; //type: boolean
          ydk::YLeaf rerouting_no_et; //type: boolean
          ydk::YLeaf one_to_n_protection_et; //type: boolean
          ydk::YLeaf one_plus_one_uni; //type: boolean
          ydk::YLeaf one_plus_one_bi; //type: boolean
          ydk::YLeaf lsp_unprotected; //type: boolean
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::ReverseLsp::Protection
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::LspHop : public ydk::Entity
  {
      public:
          LspHop();
          ~LspHop();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf ero_type; //type: RsvpMgmtEroSubobj
          class Ipv4eroSubObject; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::LspHop::Ipv4eroSubObject
          class UnnumberedEroSubObject; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::LspHop::UnnumberedEroSubObject
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::LspHop::Ipv4eroSubObject> ipv4ero_sub_object;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::LspHop::UnnumberedEroSubObject> unnumbered_ero_sub_object;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::LspHop
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::LspHop::Ipv4eroSubObject : public ydk::Entity
  {
      public:
          Ipv4eroSubObject();
          ~Ipv4eroSubObject();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf is_strict_route; //type: boolean
          ydk::YLeaf ero_address; //type: string
          ydk::YLeaf prefix_length; //type: uint8
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::LspHop::Ipv4eroSubObject
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::LspHop::UnnumberedEroSubObject : public ydk::Entity
  {
      public:
          UnnumberedEroSubObject();
          ~UnnumberedEroSubObject();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf is_strict_route; //type: boolean
          ydk::YLeaf ero_interface_id; //type: uint32
          ydk::YLeaf ero_router_id; //type: string
          ydk::YLeaf status; //type: RsvpMgmtEroSubobjStatus
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::WorkingLsp::LspHop::UnnumberedEroSubObject
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp : public ydk::Entity
  {
      public:
          ProtectLsp();
          ~ProtectLsp();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf is_operational; //type: boolean
          ydk::YLeaf lsp_uptime; //type: uint32
          ydk::YLeaf path_protection_lsp_id; //type: uint32
          ydk::YLeaf lsp_mode; //type: MplsTeLspMode
          ydk::YLeaf lsp_local_label; //type: uint32
          ydk::YLeaf lsp_output_interface; //type: string
          ydk::YLeaf lsp_output_label; //type: uint32
          ydk::YLeaf lsp_state; //type: MplsTeTunnelState
          class FlexInfo; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::FlexInfo
          class Association; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::Association
          class Protection; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::Protection
          class ReverseLsp; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp
          class LspHop; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::LspHop
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::FlexInfo> flex_info;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::Association> association;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::Protection> protection;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp> reverse_lsp;
          ydk::YList lsp_hop;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::FlexInfo : public ydk::Entity
  {
      public:
          FlexInfo();
          ~FlexInfo();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf entry_exists; //type: boolean
          ydk::YLeaf in_label; //type: uint32
          ydk::YLeaf bfd_created; //type: boolean
          ydk::YLeaf bfd_up; //type: boolean
          ydk::YLeaf oam_created; //type: boolean
          ydk::YLeaf bfd_next_hop; //type: string
          ydk::YLeaf bfd_tun_ifh; //type: string
          ydk::YLeaf bfd_out_ifh; //type: string
          ydk::YLeaf bfd_int_label; //type: uint32
          ydk::YLeaf bfd_egress_label; //type: uint32
          ydk::YLeaf fault_ldi_lockout; //type: boolean
          ydk::YLeaf fault_ldi; //type: boolean
          ydk::YLeaf fault_lkr; //type: boolean
          ydk::YLeaf fault_ais; //type: boolean
          ydk::YLeaf fault_time; //type: uint32
          class FlexFec; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::FlexInfo::FlexFec
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::FlexInfo::FlexFec> flex_fec;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::FlexInfo
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::FlexInfo::FlexFec : public ydk::Entity
  {
      public:
          FlexFec();
          ~FlexFec();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf s2l_fec_subgroup_id; //type: uint16
          ydk::YLeaf s2l_fec_lsp_id; //type: uint16
          ydk::YLeaf s2l_fec_tunnel_id; //type: uint16
          ydk::YLeaf s2l_fec_extended_tunnel_id; //type: string
          ydk::YLeaf s2l_fec_source; //type: string
          ydk::YLeaf s2l_fec_dest; //type: string
          ydk::YLeaf s2l_fec_p2mp_id; //type: uint32
          ydk::YLeaf s2l_fec_subgroup_originator; //type: string
          ydk::YLeaf s2l_fec_ctype; //type: MplsLibC
          ydk::YLeaf s2l_fec_vrf; //type: string
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::FlexInfo::FlexFec
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::Association : public ydk::Entity
  {
      public:
          Association();
          ~Association();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf s2l_association_type; //type: uint16
          ydk::YLeaf s2l_association_tie_role; //type: TeAssociationTieRole
          ydk::YLeaf s2l_association_id; //type: uint16
          ydk::YLeaf s2l_association_source; //type: string
          ydk::YLeaf s2l_global_source; //type: uint32
          class S2lExtendedId; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::Association::S2lExtendedId
  
          ydk::YList s2l_extended_id;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::Association
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::Association::S2lExtendedId : public ydk::Entity
  {
      public:
          S2lExtendedId();
          ~S2lExtendedId();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::Association::S2lExtendedId
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::Protection : public ydk::Entity
  {
      public:
          Protection();
          ~Protection();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf s2l_secondary; //type: boolean
          ydk::YLeaf s2l_protecting; //type: boolean
          ydk::YLeaf s2l_notification; //type: boolean
          ydk::YLeaf s2l_operational; //type: boolean
          ydk::YLeaf enhanced; //type: boolean
          ydk::YLeaf ded1_plus1; //type: boolean
          ydk::YLeaf ded1_to1; //type: boolean
          ydk::YLeaf shared; //type: boolean
          ydk::YLeaf link_unprotected; //type: boolean
          ydk::YLeaf extra_traffic; //type: boolean
          ydk::YLeaf any; //type: boolean
          ydk::YLeaf rerouting; //type: boolean
          ydk::YLeaf rerouting_no_et; //type: boolean
          ydk::YLeaf one_to_n_protection_et; //type: boolean
          ydk::YLeaf one_plus_one_uni; //type: boolean
          ydk::YLeaf one_plus_one_bi; //type: boolean
          ydk::YLeaf lsp_unprotected; //type: boolean
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::Protection
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp : public ydk::Entity
  {
      public:
          ReverseLsp();
          ~ReverseLsp();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf reverse_lsp_present; //type: boolean
          ydk::YLeaf reverse_lsp_connected; //type: boolean
          class ReverseLspFec; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::ReverseLspFec
          class Association; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::Association
          class Protection; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::Protection
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::ReverseLspFec> reverse_lsp_fec;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::Association> association;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::Protection> protection;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::ReverseLspFec : public ydk::Entity
  {
      public:
          ReverseLspFec();
          ~ReverseLspFec();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf fec_lsp_id; //type: uint16
          ydk::YLeaf fec_tunnel_id; //type: uint16
          ydk::YLeaf fec_extended_tunnel_id; //type: string
          ydk::YLeaf fec_source; //type: string
          ydk::YLeaf fec_vrf; //type: string
          class FecDestinationInfo; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::ReverseLspFec::FecDestinationInfo
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::ReverseLspFec::FecDestinationInfo> fec_destination_info;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::ReverseLspFec
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::ReverseLspFec::FecDestinationInfo : public ydk::Entity
  {
      public:
          FecDestinationInfo();
          ~FecDestinationInfo();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf fec_ctype; //type: MplsLibC
          ydk::YLeaf p2p_lsp_destination; //type: string
          ydk::YLeaf fec_destination_p2mp_id; //type: uint32
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::ReverseLspFec::FecDestinationInfo
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::Association : public ydk::Entity
  {
      public:
          Association();
          ~Association();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf s2l_association_type; //type: uint16
          ydk::YLeaf s2l_association_tie_role; //type: TeAssociationTieRole
          ydk::YLeaf s2l_association_id; //type: uint16
          ydk::YLeaf s2l_association_source; //type: string
          ydk::YLeaf s2l_global_source; //type: uint32
          class S2lExtendedId; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::Association::S2lExtendedId
  
          ydk::YList s2l_extended_id;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::Association
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::Association::S2lExtendedId : public ydk::Entity
  {
      public:
          S2lExtendedId();
          ~S2lExtendedId();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf entry; //type: uint32
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::Association::S2lExtendedId
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::Protection : public ydk::Entity
  {
      public:
          Protection();
          ~Protection();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf s2l_secondary; //type: boolean
          ydk::YLeaf s2l_protecting; //type: boolean
          ydk::YLeaf s2l_notification; //type: boolean
          ydk::YLeaf s2l_operational; //type: boolean
          ydk::YLeaf enhanced; //type: boolean
          ydk::YLeaf ded1_plus1; //type: boolean
          ydk::YLeaf ded1_to1; //type: boolean
          ydk::YLeaf shared; //type: boolean
          ydk::YLeaf link_unprotected; //type: boolean
          ydk::YLeaf extra_traffic; //type: boolean
          ydk::YLeaf any; //type: boolean
          ydk::YLeaf rerouting; //type: boolean
          ydk::YLeaf rerouting_no_et; //type: boolean
          ydk::YLeaf one_to_n_protection_et; //type: boolean
          ydk::YLeaf one_plus_one_uni; //type: boolean
          ydk::YLeaf one_plus_one_bi; //type: boolean
          ydk::YLeaf lsp_unprotected; //type: boolean
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::ReverseLsp::Protection
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::LspHop : public ydk::Entity
  {
      public:
          LspHop();
          ~LspHop();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf ero_type; //type: RsvpMgmtEroSubobj
          class Ipv4eroSubObject; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::LspHop::Ipv4eroSubObject
          class UnnumberedEroSubObject; //type: MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::LspHop::UnnumberedEroSubObject
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::LspHop::Ipv4eroSubObject> ipv4ero_sub_object;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::LspHop::UnnumberedEroSubObject> unnumbered_ero_sub_object;
          
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::LspHop
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::LspHop::Ipv4eroSubObject : public ydk::Entity
  {
      public:
          Ipv4eroSubObject();
          ~Ipv4eroSubObject();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf is_strict_route; //type: boolean
          ydk::YLeaf ero_address; //type: string
          ydk::YLeaf prefix_length; //type: uint8
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::LspHop::Ipv4eroSubObject
  
  
  class MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::LspHop::UnnumberedEroSubObject : public ydk::Entity
  {
      public:
          UnnumberedEroSubObject();
          ~UnnumberedEroSubObject();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf is_strict_route; //type: boolean
          ydk::YLeaf ero_interface_id; //type: uint32
          ydk::YLeaf ero_router_id; //type: string
          ydk::YLeaf status; //type: RsvpMgmtEroSubobjStatus
  
  }; // MplsTe::Tunnels::TunnelFlexLsps::TunnelFlexLsp::ProtectLsp::LspHop::UnnumberedEroSubObject
  
  
  class MplsTe::Tunnels::TunnelAutoBandwidths : public ydk::Entity
  {
      public:
          TunnelAutoBandwidths();
          ~TunnelAutoBandwidths();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          class TunnelAutoBandwidth; //type: MplsTe::Tunnels::TunnelAutoBandwidths::TunnelAutoBandwidth
  
          ydk::YList tunnel_auto_bandwidth;
          
  }; // MplsTe::Tunnels::TunnelAutoBandwidths
  
  
  class MplsTe::Tunnels::TunnelAutoBandwidths::TunnelAutoBandwidth : public ydk::Entity
  {
      public:
          TunnelAutoBandwidth();
          ~TunnelAutoBandwidth();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf tunnel_name; //type: string
          ydk::YLeaf tunnel_name_xr; //type: string
          ydk::YLeaf signaled_name; //type: string
          ydk::YLeaf tunnel_lsp_id; //type: uint32
          ydk::YLeaf bandwidth_applications; //type: uint32
          ydk::YLeaf last_bandwidth_applied; //type: uint32
          ydk::YLeaf tunnel_requested_bandwidth; //type: uint32
          ydk::YLeaf signalled_bandwidth; //type: uint32
          ydk::YLeaf highest_bandwidth; //type: uint32
          ydk::YLeaf last_sample_bandwidth; //type: uint32
          ydk::YLeaf samples_collected; //type: uint32
          ydk::YLeaf time_left_application; //type: uint32
          class AutoBandwidthStatus; //type: MplsTe::Tunnels::TunnelAutoBandwidths::TunnelAutoBandwidth::AutoBandwidthStatus
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::TunnelAutoBandwidths::TunnelAutoBandwidth::AutoBandwidthStatus> auto_bandwidth_status;
          
  }; // MplsTe::Tunnels::TunnelAutoBandwidths::TunnelAutoBandwidth
  
  
  class MplsTe::Tunnels::TunnelAutoBandwidths::TunnelAutoBandwidth::AutoBandwidthStatus : public ydk::Entity
  {
      public:
          AutoBandwidthStatus();
          ~AutoBandwidthStatus();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
  
          ydk::YLeaf is_auto_bandwidth_enabled; //type: boolean
          ydk::YLeaf reactivation_time; //type: uint32
  
  }; // MplsTe::Tunnels::TunnelAutoBandwidths::TunnelAutoBandwidth::AutoBandwidthStatus
  
  
  class MplsTe::Tunnels::Summary : public ydk::Entity
  {
      public:
          Summary();
          ~Summary();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf pcalc_tie_breaker_type; //type: TePathSelectionTiebreaker
          ydk::YLeaf pcalc_tiebreaker; //type: uint32
          ydk::YLeaf tiebreaker_qualifier; //type: MplsTeMetricQualifier
          ydk::YLeaf te_process_status; //type: MplsTeTunnelsProcessStatus
          ydk::YLeaf is_rsvp_process_enabled; //type: boolean
          ydk::YLeaf is_forwarding_enabled; //type: boolean
          ydk::YLeaf activated_heads; //type: uint32
          ydk::YLeaf deactivated_heads; //type: uint32
          ydk::YLeaf recovered_heads; //type: uint32
          ydk::YLeaf is_periodic_reoptimization_on; //type: boolean
          ydk::YLeaf reoptimization_period; //type: uint32
          ydk::YLeaf next_reoptimization_timer; //type: uint32
          ydk::YLeaf auto_bandwidth_tunnels; //type: uint32
          ydk::YLeaf auto_bandwidth_collection_period; //type: uint32
          ydk::YLeaf is_promotion_on; //type: boolean
          ydk::YLeaf promotion_period; //type: uint32
          ydk::YLeaf next_promotion_timer; //type: uint32
          ydk::YLeaf tunnel_check_period; //type: uint32
          ydk::YLeaf next_check_time; //type: uint32
          ydk::YLeaf tunnel_verify_period; //type: uint32
          ydk::YLeaf next_verify_timer; //type: uint32
          ydk::YLeaf frr_head_tunnels; //type: uint32
          ydk::YLeaf protected_head_tunnels; //type: uint32
          ydk::YLeaf rerouted_head_tunnels; //type: uint32
          ydk::YLeaf frr_mid_point_tunnels; //type: uint32
          ydk::YLeaf protected_mid_point_tunnels; //type: uint32
          ydk::YLeaf rerouted_mid_point_tunnels; //type: uint32
          ydk::YLeaf link_protected_tunnels; //type: uint32
          ydk::YLeaf node_protected_tunnels; //type: uint32
          ydk::YLeaf bw_protected_tunnels; //type: uint32
          ydk::YLeaf frr_p2p_head_tunnels; //type: uint32
          ydk::YLeaf protected_p2p_head_tunnels; //type: uint32
          ydk::YLeaf rerouted_p2p_head_tunnels; //type: uint32
          ydk::YLeaf frr_p2p_mid_point_tunnels; //type: uint32
          ydk::YLeaf protected_p2p_mid_point_tunnels; //type: uint32
          ydk::YLeaf rerouted_p2p_mid_point_tunnels; //type: uint32
          ydk::YLeaf link_protected_p2p_tunnels; //type: uint32
          ydk::YLeaf node_protected_p2p_tunnels; //type: uint32
          ydk::YLeaf bw_protected_p2p_tunnels; //type: uint32
          ydk::YLeaf backup_tunnels; //type: uint32
          ydk::YLeaf backups_assigned; //type: uint32
          ydk::YLeaf frr_protected_interfaces; //type: uint32
          ydk::YLeaf rerouted_interfaces; //type: uint32
          ydk::YLeaf p2p_head_tunnels; //type: uint32
          ydk::YLeaf up_p2p_head_tunnels; //type: uint32
          ydk::YLeaf dynamic_up_p2p_head_tunnels; //type: uint32
          ydk::YLeaf frr_config_p2p_head_tunnels; //type: uint32
          ydk::YLeaf p2p_head_destinations; //type: uint32
          ydk::YLeaf p2p_head_destinations_up; //type: uint32
          ydk::YLeaf bw_protected_p2p_s2_ls; //type: uint32
          ydk::YLeaf link_protected_p2p_s2_ls; //type: uint32
          ydk::YLeaf up_p2p_head_s2_ls; //type: uint32
          ydk::YLeaf proceeding_p2p_head_s2_ls; //type: uint32
          ydk::YLeaf recovering_p2p_head_s2_ls; //type: uint32
          ydk::YLeaf frr_p2p_head_s2_ls; //type: uint32
          ydk::YLeaf protected_p2p_head_s2_ls; //type: uint32
          ydk::YLeaf rerouted_p2p_head_s2_ls; //type: uint32
          ydk::YLeaf p2p_mid_point_s2_ls; //type: uint32
          ydk::YLeaf up_p2p_mid_point_s2_ls; //type: uint32
          ydk::YLeaf proceeding_p2p_mid_point_s2_ls; //type: uint32
          ydk::YLeaf frr_p2p_mid_point_s2_ls; //type: uint32
          ydk::YLeaf protected_p2p_mid_point_s2_ls; //type: uint32
          ydk::YLeaf rerouted_p2p_mid_point_s2_ls; //type: uint32
          ydk::YLeaf p2p_tail_s2_ls; //type: uint32
          ydk::YLeaf up_p2p_tail_s2_ls; //type: uint32
          ydk::YLeaf p2p_tail_tunnels; //type: uint32
          ydk::YLeaf path_protect_configured_tunnels; //type: uint16
          ydk::YLeaf path_protect_configured_tunnels_up; //type: uint16
          ydk::YLeaf path_protect_configured_tunnels_standby_up; //type: uint16
          ydk::YLeaf link_diverse_paths; //type: uint16
          ydk::YLeaf node_diverse_paths; //type: uint16
          ydk::YLeaf link_and_node_diverse_paths; //type: uint16
          ydk::YLeaf user_defined_paths; //type: uint16
          ydk::YLeaf p2mp_head_tunnels; //type: uint32
          ydk::YLeaf up_p2mp_head_tunnels; //type: uint32
          ydk::YLeaf frr_config_p2mp_head_tunnels; //type: uint32
          ydk::YLeaf p2mp_head_destinations; //type: uint32
          ydk::YLeaf up_p2mp_head_destinations; //type: uint32
          ydk::YLeaf bw_protected_p2mp_s2_ls; //type: uint32
          ydk::YLeaf link_protected_p2mp_s2_ls; //type: uint32
          ydk::YLeaf up_p2mp_head_s2_ls; //type: uint32
          ydk::YLeaf proceeding_p2mp_head_s2_ls; //type: uint32
          ydk::YLeaf frr_p2mp_head_s2_ls; //type: uint32
          ydk::YLeaf protected_p2mp_head_s2_ls; //type: uint32
          ydk::YLeaf rerouted_p2mp_head_s2_ls; //type: uint32
          ydk::YLeaf p2mp_mid_point_s2_ls; //type: uint32
          ydk::YLeaf up_p2mp_mid_point_s2_ls; //type: uint32
          ydk::YLeaf proceeding_p2mp_mid_point_s2_ls; //type: uint32
          ydk::YLeaf frr_p2mp_mid_point_s2_ls; //type: uint32
          ydk::YLeaf protected_p2mp_mid_point_s2_ls; //type: uint32
          ydk::YLeaf rerouted_p2mp_mid_point_s2_ls; //type: uint32
          ydk::YLeaf p2mp_tail_s2_ls; //type: uint32
          ydk::YLeaf up_p2mp_tail_s2_ls; //type: uint32
          ydk::YLeaf bidir_head_tunnels; //type: uint32
          ydk::YLeaf bidir_head_tunnels_up; //type: uint32
          ydk::YLeaf bidir_head_tunnels_associated; //type: uint32
          ydk::YLeaf bidir_head_tunnels_corouted; //type: uint32
          ydk::YLeaf bidir_head_ls_ps_up; //type: uint32
          ydk::YLeaf bidir_head_ls_ps_proceeding; //type: uint32
          ydk::YLeaf bidir_head_ls_ps_associated; //type: uint32
          ydk::YLeaf bidir_head_ls_ps_standby; //type: uint32
          ydk::YLeaf bidir_mid_tunnels; //type: uint32
          ydk::YLeaf bidir_mid_tunnels_up; //type: uint32
          ydk::YLeaf bidir_mid_ls_ps_proceeding; //type: uint32
          ydk::YLeaf bidir_mid_ls_ps_associated; //type: uint32
          ydk::YLeaf bidir_mid_ls_ps_standby; //type: uint32
          ydk::YLeaf bidir_tail_ls_ps; //type: uint32
          ydk::YLeaf bidir_tail_ls_ps_up; //type: uint32
          ydk::YLeaf bidir_tail_ls_ps_proceeding; //type: uint32
          ydk::YLeaf bidir_tail_ls_ps_associated; //type: uint32
          ydk::YLeaf bidir_tail_ls_ps_standby; //type: uint32
          ydk::YLeaf bidir_tail_ls_ps_corouted; //type: uint32
          class AutobackupSummary; //type: MplsTe::Tunnels::Summary::AutobackupSummary
          class AutoMeshSummary; //type: MplsTe::Tunnels::Summary::AutoMeshSummary
          class AutoMeshOneHopSummary; //type: MplsTe::Tunnels::Summary::AutoMeshOneHopSummary
          class GmplsUniSummary; //type: MplsTe::Tunnels::Summary::GmplsUniSummary
          class GmplsNniSummary; //type: MplsTe::Tunnels::Summary::GmplsNniSummary
          class CurrentTunnelConvergenceSummary; //type: MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary
          class LastTunnelConvergenceSummary; //type: MplsTe::Tunnels::Summary::LastTunnelConvergenceSummary
          class AutoTunServerSummary; //type: MplsTe::Tunnels::Summary::AutoTunServerSummary
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary::AutobackupSummary> autobackup_summary;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary::AutoMeshSummary> auto_mesh_summary;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary::AutoMeshOneHopSummary> auto_mesh_one_hop_summary;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary::GmplsUniSummary> gmpls_uni_summary;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary::GmplsNniSummary> gmpls_nni_summary;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary> current_tunnel_convergence_summary;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary::LastTunnelConvergenceSummary> last_tunnel_convergence_summary;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary::AutoTunServerSummary> auto_tun_server_summary;
          
  }; // MplsTe::Tunnels::Summary
  
  
  class MplsTe::Tunnels::Summary::AutobackupSummary : public ydk::Entity
  {
      public:
          AutobackupSummary();
          ~AutobackupSummary();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf autobackups; //type: uint32
          ydk::YLeaf up_autobackups; //type: uint32
          ydk::YLeaf down_autobackups; //type: uint32
          ydk::YLeaf unused_autobackups; //type: uint32
          ydk::YLeaf next_hop_autobackups; //type: uint32
          ydk::YLeaf next_next_hop_autobackups; //type: uint32
          ydk::YLeaf srlg_strict_autobackups; //type: uint32
          ydk::YLeaf srlg_preferred_autobackups; //type: uint32
          ydk::YLeaf srlg_weighted_autobackups; //type: uint32
          ydk::YLeaf next_hop_autobackup_protected_ls_ps; //type: uint32
          ydk::YLeaf next_next_hop_autobackup_protected_ls_ps; //type: uint32
          ydk::YLeaf next_hop_srlg_autobackup_protected_ls_ps; //type: uint32
          ydk::YLeaf next_next_hop_srlg_autobackup_protected_ls_ps; //type: uint32
          ydk::YLeaf next_hop_autobackup_protected_s2l_families; //type: uint32
          ydk::YLeaf next_next_hop_autobackup_protected_s2l_families; //type: uint32
          ydk::YLeaf next_hop_srlg_autobackup_protected_s2l_families; //type: uint32
          ydk::YLeaf next_next_hop_srlg_autobackup_protected_s2l_families; //type: uint32
          ydk::YLeaf next_hop_autobackup_protected_s2_ls; //type: uint32
          ydk::YLeaf next_next_hop_autobackup_protected_s2_ls; //type: uint32
          ydk::YLeaf next_hop_srlg_autobackup_protected_s2_ls; //type: uint32
          ydk::YLeaf next_next_hop_srlg_autobackup_protected_s2_ls; //type: uint32
  
  }; // MplsTe::Tunnels::Summary::AutobackupSummary
  
  
  class MplsTe::Tunnels::Summary::AutoMeshSummary : public ydk::Entity
  {
      public:
          AutoMeshSummary();
          ~AutoMeshSummary();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf auto_mesh_tunnels; //type: uint32
          ydk::YLeaf up_auto_mesh_tunnels; //type: uint32
          ydk::YLeaf down_auto_mesh_tunnels; //type: uint32
          ydk::YLeaf frr_auto_mesh_tunnels; //type: uint32
          ydk::YLeaf auto_mesh_groups; //type: uint32
          ydk::YLeaf auto_mesh_destinations; //type: uint32
  
  }; // MplsTe::Tunnels::Summary::AutoMeshSummary
  
  
  class MplsTe::Tunnels::Summary::AutoMeshOneHopSummary : public ydk::Entity
  {
      public:
          AutoMeshOneHopSummary();
          ~AutoMeshOneHopSummary();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf auto_mesh_one_hop_tunnels; //type: uint32
          ydk::YLeaf up_auto_mesh_one_hop_tunnels; //type: uint32
          ydk::YLeaf down_auto_mesh_one_hop_tunnels; //type: uint32
          ydk::YLeaf frr_auto_mesh_tunnels; //type: uint32
          ydk::YLeaf auto_mesh_one_hop_groups; //type: uint32
          ydk::YLeaf auto_mesh_one_hop_destinations; //type: uint32
  
  }; // MplsTe::Tunnels::Summary::AutoMeshOneHopSummary
  
  
  class MplsTe::Tunnels::Summary::GmplsUniSummary : public ydk::Entity
  {
      public:
          GmplsUniSummary();
          ~GmplsUniSummary();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf heads_up; //type: uint32
          ydk::YLeaf heads_down; //type: uint32
          ydk::YLeaf tails_up; //type: uint32
          ydk::YLeaf tails_down; //type: uint32
  
  }; // MplsTe::Tunnels::Summary::GmplsUniSummary
  
  
  class MplsTe::Tunnels::Summary::GmplsNniSummary : public ydk::Entity
  {
      public:
          GmplsNniSummary();
          ~GmplsNniSummary();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf heads_up; //type: uint32
          ydk::YLeaf heads_down; //type: uint32
          ydk::YLeaf mids_up; //type: uint32
          ydk::YLeaf mids_down; //type: uint32
          ydk::YLeaf tails_up; //type: uint32
          ydk::YLeaf tails_down; //type: uint32
  
  }; // MplsTe::Tunnels::Summary::GmplsNniSummary
  
  
  class MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary : public ydk::Entity
  {
      public:
          CurrentTunnelConvergenceSummary();
          ~CurrentTunnelConvergenceSummary();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
          ydk::YLeaf tunnel_frr_active_count; //type: uint32
          ydk::YLeaf tunnel_frr_total_count; //type: uint32
          ydk::YLeaf tunnel_converged_count; //type: uint32
          ydk::YLeaf tunnel_total_convergence_complete_time; //type: uint64
          class TablePathOut; //type: MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TablePathOut
          class TableResvIn; //type: MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TableResvIn
          class TableLabelRewrite; //type: MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TableLabelRewrite
          class TablePcalc; //type: MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TablePcalc
          class TableTunnelRewrite; //type: MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TableTunnelRewrite
          class TableFrrTrigger; //type: MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TableFrrTrigger
  
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TablePathOut> table_path_out;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TableResvIn> table_resv_in;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TableLabelRewrite> table_label_rewrite;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TablePcalc> table_pcalc;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TableTunnelRewrite> table_tunnel_rewrite;
          std::shared_ptr<cisco_ios_xr::Cisco_IOS_XR_mpls_te_oper::MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TableFrrTrigger> table_frr_trigger;
          
  }; // MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary
  
  
  class MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TablePathOut : public ydk::Entity
  {
      public:
          TablePathOut();
          ~TablePathOut();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
  
  }; // MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TablePathOut
  
  
  class MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TableResvIn : public ydk::Entity
  {
      public:
          TableResvIn();
          ~TableResvIn();
  
          bool has_data() const override;
          bool has_operation() const override;
          std::vector<std::pair<std::string, ydk::LeafData> > get_name_leaf_data() const override;
          std::string get_segment_path() const override;
          std::shared_ptr<ydk::Entity> get_child_by_name(const std::string & yang_name, const std::string & segment_path) override;
          void set_value(const std::string & value_path, const std::string & value, const std::string & name_space, const std::string & name_space_prefix) override;
          void set_filter(const std::string & value_path, ydk::YFilter yfliter) override;
          std::map<std::string, std::shared_ptr<ydk::Entity>> get_children() const override;
          bool has_leaf_or_child_of_name(const std::string & name) const override;
          std::string get_absolute_path() const override;
  
  
  }; // MplsTe::Tunnels::Summary::CurrentTunnelConvergenceSummary::TableResvIn
  
  
  }
  }
  
  #endif /* _CISCO_IOS_XR_MPLS_TE_OPER_32_ */
  
  